Nuxeo Server

Upgrade from LTS 2016 following Fast Tracks

Updated: September 22, 2017 Page Information Edit on GitHub

From LTS 2016 to 9.1

Reindex the full repository following Rebuilding the repository index page, or using Nuxeo Dev Tools Extension. See NXP-21279.

Installation and Configuration

Requirements

Parameters to Update

Parameter Modification Reference
org.nuxeo.cmis.proxies New Default Value to true NXP-21828

Nuxeo Studio Application Definition

Make sure your Nuxeo Studio project depends on the Nuxeo JSF UI target package. See the pages How to Update the Version of Your Target Platform in Studio and Specific Upgrade Instructions for more details.

Code Changes

Automation Scripting

Backward Compatibility was broken for 9.1 (NXP-21508): parameters are no longer extracted from the context of the params object when calling the scripting operation. You have to explicitly set each parameter in the operation definition. Follow NXP-22190 for resolution.

Started from 9.2: you can set the parameter nuxeo.automation.scripting.inline-context-in-params to true in order to get back compatibility with scripts created before 9.1.

Code Behavior Changes

  • Setting a property value to null now always sets it to the default value if a default value is configured for the schema field. See NXP-19466.

  • Expression Language artifact has been renamed from org.nuxeo.ecm.platform:nuxeo-platform-el to org.nuxeo.ecm.core:nuxeo-core-el. See NXP-21713.

  • When using the feature RepositoryElasticSearchFeature, you need to add a test Maven dependency on org.nuxeo.ecm.automation:nuxeo-automation-server:

      <dependency>
        <groupId>org.nuxeo.ecm.automation</groupId>
        <artifactId>nuxeo-automation-server</artifactId>
        <scope>test</scope>
      <dependency>
    

    See NXP-21186.

Operation Changes

  • Operations Services.CreateUser and Services.QueryUsers are now part of the base platform. They have been renamed into User.CreateOrUpdate and User.Query.
    Aliases with old names have been kept for compatibility. See NXP-21962

  • Tag.Suggestion operation no longer requires JSF; You have to pass the target document using the new parameter document. See NXP-21717.

  • Document.AddPermission operation: The existence of the input user name or group name is now checked before adding a permission. See NXP-21559.

Deprecated APIs

Fields file:filename and common:size Removed

Documents exports made before 9.1 won’t be importable starting from 9.1.

To fix exports, manually edit the ZIP file (prior to 9.1) by removing <common:size> and <file:filename> elements from the files document.xml. See NXP-21025.

Scoped DocumentModel Context Data

Any usage of ScopedMap or ScopeType is deprecated and will be removed in the future.

  • Instead of ScopedMap, use Map<String, Serializable>.
  • Instead of ScopeType in getContextData and putContextData, use equivalent methods without a scope.

See NXP-21570.

LoginScreenHelper Mobile Methods

Removed:

  • LoginScreenHelper#NUXEO_PROTOCOL
  • LoginScreenHelper#getURLForMobileApplication(HttpServletRequest request)
  • LoginScreenHelper#getURLForMobileApplication(String baseURL, String requestedURL)

Use org.nuxeo.ecm.platform.web.common.MobileBannerHelper instead. See NXP-21679.

FileManager Can Now Prevent Overwriting Existing Document

Added:

  • FileManager#createFolder(CoreSession documentManager, String fullname, String path, boolean overwrite)
  • FileManagerService#defaultCreateFolder(CoreSession documentManager, String fullname, String path, boolean overwrite)
  • FileManagerService#defaultCreateFolder(CoreSession documentManager, String fullname, String path, String containerTypeName, boolean checkAllowedSubTypes, boolean overwrite)

Deprecated:

  • FileManager#createFolder(CoreSession documentManager, String fullname, String path)
  • FileManagerService#defaultCreateFolder(CoreSession documentManager, String fullname, String path)
  • FileManagerService#defaultCreateFolder(CoreSession documentManager, String fullname, String path, String containerTypeName, boolean checkAllowedSubTypes)

See NXP-21853.

BlobDispatcher Can Now Dispatch Depending on Document's XPath

Added:

  • BlobDispatcher#getBlobProvider(Document doc, Blob blob, String xpath)

Deprecated:

  • BlobDispatcher#getBlobProvider(Document doc, Blob blob)

See NXP-21891.

Automatic Versioning

We introduced a new automatic versioning system in 9.1. We deprecated versioningRules extension point. You now have to use new extension points, see documentation.

Nuxeo provides a backward compatibility mechanism, but it could be not accurate.

Previous automatic versioning mechanisms were removed or upgraded to new system:

  • File manager and bulk edit don't automatically version documents since 9.1, you could put back this behavior by contributing a new rule and use source parameter to restrict versioning to this functionalities (for instance use: fileimporter-{name-of-your-importer} or bulkEdit)
  • Nuxeo Drive is not responsible of automatic versioning anymore. The last contributor rule is now a default policy, and delay rule is introduced by Nuxeo Drive and rely on source parameter mechanism.

All configuration parameters relative to automatic versioning were removed without backward compatibility.

It's the case for:

  • nuxeo.drive.force.versioning
  • versioningDelay and versioningOption used in DefaultFileSystemItemFactory.
    Note that VersioningFileSystemItemFactory is deprecated.

Addons

Nuxeo Drive - Server APIs Changes

Added:

  • FileSystemItemManager#createFolder(String parentId, String name, Principal principal, boolean overwrite)
  • FileSystemItemManager#createFile(String parentId, Blob blob, Principal principal, boolean overwrite)
  • FolderItem#createFolder(String parentId, String name, Principal principal, boolean overwrite)
  • FolderItem#createFile(String parentId, Blob blob, Principal principal, boolean overwrite)
  • the overwrite parameter to the NuxeoDrive.CreateFolder operation
  • the overwrite parameter to the NuxeoDrive.CreateFile operation

Deprecated:

  • FileSystemItemManager#createFolder(String parentId, String name, Principal principal)
  • FileSystemItemManager#createFile(String parentId, Blob blob, Principal principal)
  • FolderItem#createFolder(String parentId, String name, Principal principal)
  • FolderItem#createFile(String parentId, Blob blob, Principal principal)

See NXP-21854.

Nuxeo Drive - Synchronization Root Behavior

Synchronization root is now reset with a copied document. In LTS 2016 and earlier, copying a synchronization root Document resulted in creating a new synchronization root.

To re-activate the old behavior:

<extension target="org.nuxeo.runtime.ConfigurationService" point="configuration">
    <property name="org.nuxeo.drive.resetSyncRootsOnCopy">false</property>
</extension>

See NXP-21676.

Complementary Information

From 9.1 to 9.2

Installation and Configuration

With VCS, delete the column hierarchy.changetoken so that it is regenerated with the correct type. For instance: ALTER TABLE hierarchy DROP COLUMN changetoken. See NXP-22259.

New Parameters

Parameter Default Reference
org.nuxeo.runtime.reload_strategy Default Value to restart NXP-19326
nuxeo.automation.scripting.inline-context-in-params Default Value to false NXP-22190
nuxeo.automation.allowVirtualUser Default Value to false NXP-21889

nuxeo.conf

Add the following parameter in order to keep consistency with the previous hot-reload strategy: org.nuxeo.runtime.reload_strategy=unstash.

Data

Directories

SQL Directories

If you did not use an explicit SQL configuration template (postgresql, mssql, mysql or mariadb), you must add the new sql template in your nuxeo.conf, in addition to the default template. You should at least have:

nuxeo.templates=default,sql

MongoDB Directories

Directories are now stored in MongoDB when enabling the mongodb template. You don't need to install the addon Nuxeo MongoDB Audit and Directories anymore, which is only needed for Audit now. See NXP-21582.

Migrating your directories to MongoDB

To migrate your custom directories to MongoDB, enable the mongodb template and use the extension point org.nuxeo.ecm.directory.GenericDirectory instead of org.nuxeo.ecm.directory.sql.SQLDirectoryFactory. See NXP-19175.

Using MongoDB with SQL directories

If you want to keep your custom SQL directories, contribute them to the extension point org.nuxeo.ecm.directory.sql.SQLDirectoryFactory.

Code Changes

Code Behavior Changes

  • Class org.nuxeo.ecm.core.blob.BlobManager.BlobInfo moved to org.nuxeo.ecm.core.blob.BlobInfo. See NXP-22217.

  • In nuxeoctl, the register-trial command reads parameters: ./nuxectl register-trial [<firstname> <lastname> <email> <company> <project>]. See NXP-22550.

  • During OAuth2 challenge (as identity provider), parameters state and redirect_uri are now mandatory for security reason. See NXP-22183 and NXP-22186.

Deprecated APIs

OAuth2Client

  • Constructor OAuth2Client(String name, String id, String secret) is deprecated. See NXP-22183.

Addons

Segment.io - Updated

Nuxeo Segment.io plugin is now aligned on com.github.segmentio:analytics:1.0.7, thus it has received a big update and breaks backward compatibility. See NXP-22462 and NXP-22212.

Complementary Information

3 days ago manonlumeau NXDOC-1323: Update BDE doc
History: Created by manonlumeau