Nuxeo Server

Upgrade from 5.8 to 6.0

Updated: March 18, 2024

For the general upgrade process, see the How to Upgrade Nuxeo page.

You may also be interested in the 6.0 Release Notes.

This chapter highlights some major information about upgrade from Nuxeo Platform 5.8 LTS to Nuxeo Platform 6.0 LTS. We strongly encourage you to also have a quick read of the detailed list ofupgrade notes for 6.0.

1. Updating Your Target Platform in Studio to Nuxeo Platform 6.0

You can read how to Update the Version of Your Target Platform in Studio. Due to some feature moves, you should also report to the page Specific Upgrade Instructions to migrate your project.

2. Defining Your Base Application

Upgrade your Nuxeo Packages dependency list. Several feature moves have been done between 5.8 LTS and 6.0 LTS, with some features being moved in separate packages, some deprecated, some "migrated". You should read the page packages changes and deprecation.

3. Deciding How You Would like to Use Elasticsearch

Nuxeo Platform 6.0 comes with Elasticsearch, which brings you more scalability and new features in terms of search experience (more accurate full text search + facets and aggregates).

Page Providers and Content Views

It is easy to override existing queries of your application to define the ones that should hit the Elasticsearch index.

You can also read the page How to Configure a Search Filter With Facets and Other Aggregates for configuring facets (aka aggregates) on a given content view.

Migrating Negative Permissions

In Nuxeo Platform 6.0, negative permissions (i.e. Deny Read to John) are disabled by default.

Elasticsearch is not compliant with negative permissions. If some code or Nuxeo Studio configuration sets such negative permissions, you should remove those part of code/configuration. More generally, if you were using negative ACLs in your previous version of the Nuxeo Platform, you will need to reorganize your security policy.

If you don’t use Elasticsearch, you can re-enable negative ACL (deny permissions) in the UI by adding the following line to your nuxeo.conf:

nuxeo.security.allowNegativeACL=true

Upgrading Your Production Architecture

Elasticsearch is not mandatory: you can keep on querying VCS (the database) and use the database full-text index.

If you want to benefit from the Elasticsearch Indexing Service in production, which is enabled by default, you should setup an Elasticsearch cluster and you need to index the existing content.

4. Migrating Your Custom Java Code

Migrating to Maven 3

Nuxeo Platform now uses Maven 3 for building.

Migrating Your Custom Code and Templates

Nuxeo Platform has been migrated to JSF2. If you have implemented some custom UI templates, you should migrate them to JSF2 too. A tool is provided to help you auditing what has been done.

More information on the page Upgrade to JSF2.

Tooltip Library Change

Tooltip library has been changed from jQuery tooltip to tipsy, see NXP-13842.

If you were using this library, you should remove calls similar too:

<script>
  jQuery(document).ready(function() {
    jQuery(".widgetHelpLabel").tooltip({relative: true, position: 'bottom center'});
  });
</script>

To enable a tooltip on any HTML element, specify the tooltip content in the 'title' attribute and add 'tipsyShow' css style class, for example:

<h:outputText value="#{myLabel}"
  styleClass="tipsyShow tipsyGravityNW" />

Migrating your Security Policy or Versioning Service

If you have Java code implementing a SecurityPolicy (defined using the policies extension point), or a VersioningService (defined using the versioningService extension point), your code uses the low-level Document interface which changed a bit in Nuxeo Platform 6.0. In particular, to get a property's value you need to use the getPropertyValue) method directly, as the getProperty method doesn't exist anymore. This does not impact functionality.

5. Setting up Caches for Directories

If your directories, wether for vocabularies, users or groups, were already using a cache, you must update them to use new caches.

  1. Define two new core caches (one for entry with references, another for entry without references) contributed to org.nuxeo.ecm.core.cache.CacheServiceImpl.
  2. In these caches define your implementation class, maxSize, ttl and concurrencyLevel.
  3. Remove the deprecated tags from the directory config file:
    • cacheMaxSize
    • cacheTimeOut
  4. Add new tags with your cache name in the directory config file:
    • cacheEntryName
    • cacheEntryWithoutReferencesName

6. If You Were Using the REST API in 5.8

  • "Rest Contributors" have been renamed "Content Enrichers”, and the extension points has been modified. See the Content Enricher page.
  • The Nuxeo Platform now returns all the properties by default on the Rest API. if you want to limit the schemas you want to get client side, you should specify them explicitly using the X-NXDocumentProperties header.
  • URL of the binary that is given in the “data” property of the JSON object has changed: see https://jira.nuxeo.com/browse/NXP-13616.

Noteworthy

CMIS Join

If you use CMIS Join operator in CMISQL queries, you need to switch the way CMIS queries are transformed. To re-enable the previous mode allowing JOINs and using VCS, set the following property in nuxeo.conf:

org.nuxeo.cmis.joins=true

Multi-Tenant

If you use multi-tenant, you should pay attention to https://jira.nuxeo.com/browse/NXP-13724

Virtual Navigation

The Multi-navigation view that came with Virtual Navigation (to add new tabs beside the tree) has been moved to CAP. See https://jira.nuxeo.com/browse/NXP-15242 for details. ## Fast Track Versions Upgrade Notes

The Fast Track per Fast Track upgrade notes path is still available below:

You may also want to have a look at the release notes: