For the general upgrade process, see the How to Upgrade Nuxeo page.
This chapter highlights some major information about upgrade from Nuxeo Platform 6.0 LTS to Nuxeo Platform LTS 2015 (7.10). We strongly encourage you to also have a quick read of the detailed list of upgrade notes for each Fast Track version.
Installation & Configuration
JDK Upgrade
JDK 1.8 update 40 (8u40) is required.
Elasticsearch Upgrade
Upgrading Elasticsearch to the latest 1.5.x is not mandatory but advised (1.1.x is still supported).
Elasticsearch for Audit Logs
We chose to use Elasticsearch for audit logs as of Nuxeo 7.3: this improves scalability especially when using Nuxeo Drive with a large set of users.
Elasticsearch for audit logs is set as the default back-end for new install but not for upgrades. If you choose to enable it, it is an important change that implies to:
Activate Elasticsearch for audit logs:
nuxeoctl config audit.elasticsearch.enabled true
Migrate data from the SQL database to an Elasticsearch index:
nuxeoctl config audit.elasticsearch.migration true
This launches a background job at server startup to migrate data from the
nxp_logs
,nxp_logs_extinfo
andnxp_logs_mapextinfo
tables of the SQL database to the${audit.elasticsearch.indexName}
Elasticsearch index.Note: Migration uses batch processing. The number of log entries processed per batch can be configured by
audit.elasticsearch.migration.batchSize
property. Default value is 1000. As an example, we successfully tested migration of 22,000,000 log entries with an average speed of 1,500 entries / second usingaudit.elasticsearch.migration.batchSize=10000
on a Linux virtual machine with two cores, 4 GB RAM, a local PostgreSQL instance and an embedded Elasticsearch instance.Once the migration is done:
nuxeoctl config audit.elasticsearch.migration false
Take into account the audit related Elasticsearch indexes when backing up / restoring a Nuxeo instance, so make sure you read the Backing Up and Restoring the Audit Elasticsearch Index section.
Related Configuration Parameters
Parameter | Default value | Description |
---|---|---|
audit.elasticsearch.enabled
| false | true | Since Nuxeo 7.3. See Disabling Elasticsearch for Audit Logs Defaults to false on server upgrade, true on new install. |
audit.elasticsearch.migration | false | See Triggering SQL to Elasticsearch Audit Logs Migration |
audit.elasticsearch.migration.batchSize | 1000 | See Triggering SQL to Elasticsearch Audit Logs Migration |
audit.elasticsearch.indexName | ${elasticsearch.indexName}-audit | See Configuring Nuxeo to Access the Cluster |
ACL Factorization
Only available for PostgreSQL, the ACLR should be factorized as "Everyone". Rebuild the ACLR table with nx_rebuild_read_acls
stored procedure:
SELECT nx_rebuild_read_acls();
Cluster
Quartz Upgrade
Quartz library has been upgraded from 1.8.6 to 2.2.2. Therefore the table structure has changed and you need to run a migration script as explained in the Quartz 1.8.x to Quartz 2.0 Migration Guide, paragraph "Making Changes For Setups Using JDBCJobStore".
Run the script to upgrade Quartz tables from 1.8.6 to 2.2.2 (also available in your Nuxeo distribution):
$ psql -U <nuxeo_user> <nuxeo_db> -f $NUXEO_HOME/bin/upgrade-6.0-7.10/7.3-quartz-1.8.6-2.2.2.sql
Node ID
With clustering enabled, it is now highly recommended to set an explicit unique node id on each cluster node:
nuxeoctl config repository.clustering.id 12345
The id can be a string on Oracle, but must be an integer on other databases.
The cluster node id should be defined explicitly because this way it's stable, known to the server administrator, and has no risk of collision with another randomly-generated one.
Note that if a cluster node crashes, cleaning the cluster_nodes
and cluster_invals
tables must be done manually by a DBA as Nuxeo has no way of knowing what nodes are currently connected or not and which should be cleaned.
See NXP-17180 for details.
Notification Subscriptions Upgrade
Notification subscriptions have to be migrated using the migrate_notifications.sql
script, only available for PostgreSQL and Oracle databases.
Run the script file to migrate notification subscriptions (PostgreSQL, Oracle) (also available in your Nuxeo distribution):
Postgresql
$ psql -U <nuxeo_user> <nuxeo_db> -f $NUXEO_HOME/bin/upgrade-6.0-7.10/notification-subscriptions-migration.psql.sql
See: NXP-16704.
Oracle
$ sqlplus <nuxeo_user>/<nuxeo_password> @$NUXEO_HOME/bin/upgrade-6.0-7.10/notification-subscriptions-migration.oracle.sql
Blob Management
Repository config must define a default blob provider. If you define your own default-repository-config, you must align it on default-repository-config.xml.nxftl
<extension target="org.nuxeo.ecm.core.blob.BlobManager" point="configuration">
<blobprovider name="default">
<class>${nuxeo.core.binarymanager}</class>
<property name="path">${repository.binary.store}</property>
<property name="key">${nuxeo.core.binarymanager_key}</property>
</blobprovider>
</extension>
New Configuration Parameters
Parameter | Default value | Description |
---|---|---|
org.nuxeo.cmis.enableComplexProperties | false | When true, complex properties are exposed as JSON-encoded strings. |
nuxeo.lock.manager | redis | If Redis is used, lock management is done through it. |
org.nuxeo.cmis.elasticsearch | false | To send the CMISQL queries to Elasticsearch, set to true. |
nuxeo.server.tomcat_admin.host
| localhost | Tomcat server's "admin" host. This is the address on which the server waits for a shutdown command. |
nuxeo.virtual.host | This parameter can be used to replace the nuxeo-virtual-host request header (usually when using HTTPS) when it is not possible to set it at the reverse-proxy level. The use of the header is still preferred as the parameter forces your Nuxeo instance to be accessible from one URL only. Example: https://my.nuxeo.com/ | |
seqgen.elasticsearch.indexName | ${elasticsearch.indexName}-uidgen | See Configuring Nuxeo to Access the Cluster |
Data Migration
You must update the size of the column DATA
in table CONTENT
, which has changed in Nuxeo Platform LTS 2015, from 40 to 250. For instance for PostgreSQL:
In Nuxeo Platform 6.0:
data character varying(40)
In Nuxeo Platform LTS 2015:
data character varying(250)
Code Migration
New Configuration Service
A new runtime configuration service is available to ease up documenting and overriding miscellaneous application properties.
The following error will appear at startup if your server nuxeo.conf
file still references properties that have been moved to this service. A typical error will look like:
ERROR [OSGiRuntimeService] Nuxeo Platform Started
======================================================================
= Component Loading Errors:
* Property 'nuxeo.jsf.useAjaxTabs' should now be contributed to extension point 'org.nuxeo.runtime.ConfigurationService', using target 'configuration'
To fix this error:
- Remove the property from
nuxeo.conf
. Add an XML contribution to
org.nuxeo.runtime.ConfigurationService#configuration
.Sample XML contribution to configure nuxeo.jsf.useAjaxTabs<?xml version="1.0"?> <component name="org.nuxeo.ecm.platform.ajaxified.tabs.config"> <!-- require the original component declaring the property --> <require>org.nuxeo.ecm.platform.ui.web.configuration.default</require> <extension target="org.nuxeo.runtime.ConfigurationService" point="configuration"> <property name="nuxeo.jsf.useAjaxTabs">true</property> </extension> </component>
Example of properties which have been migrated to ConfigurationService:
Parameter | Default value | Description |
---|---|---|
nuxeo.automation.properties.value.trim | true | The Properties in automation, are of the form key=myvalue . This property allows trimming of spaces around the value. For example key = myvalue , would result in the value being "myvalue" or " myvalue" (note the space at the beginning of the value), depending on this configuration. |
New Batch Upload API
The batch upload API has changed to be exposed as a REST resource endpoint. The old API using /site/automation/batch/upload
is deprecated but kept for backward compatibility.
For security reasons, the old API does not allow to use a client-side generated batch id passed as a request header, see NXP-18030 for details.Therefore it is strongly recommended to upgrade to the new batch upload API.
If this is not possible for any reason and you absolutely need to keep using the old API you have two options:
- Not passing the
X-Batch-Id
header. The batch id will then be automatically generated server-side. - Setting the
allowClientGeneratedBatchId
configuration property totrue
(not recommended).
Removal of the IPTC Schema
Most IPTC metadata have been removed. Only legend, source and copyright have been kept and are mapped to fields dc:description
, dc:source
and dc:rights
.
See the page Binary Metadata for more information.
Migrating Theme and Web Resources
Please refer to the dedicated documentation at Theme Upgrade to LTS 2015.
Migrating Inline JavaScript Declarations
When migrating from 7.4 to 7.10, a new mechanism to defer loading of JavaScript resources might break inline JavaScript declarations: most of JavaScript resources will be loaded at the end of the page body to optimize page rendering (except a few libraries like jQuery,JSF and RichFaces).
If you get an error when loading JavaScript resources, the original template should be modified to rely on the h:outputScript
tag instead a simple script
HTML tag, and to use a variable available to all default pages for resource re-targeting. Here is a sample migration:
HTML5 Drag and Drop Customization
Some deprecated parameters have been removed in 7.10. Therefore you have to update the link defined for the Chain.FileManager.ImportWithMetaDataInSeam
action:
- Replace the
layout
parameter bylayouts
. - Replace the
schema
parameter byschemas
.
See the page How to Customize the HTML5 Drag and Drop Import with Metadata Form.
End of Life Nuxeo Packages
The following Nuxeo Packages are no longer released:
- Automated Document Categorization
- Nuxeo - BIRT Integration
- Faceted search
- Nuxeo DAM PDF Export
- Nuxeo DAMCompat
- Nuxeo OpenSocial
- Nuxeo Poll
- Nuxeo RSS Reader
- Nuxeo Shared Bookmarks
- Nuxeo Sites and Blogs
- Nuxeo Social Collaboration
- Nuxeo Web Mobile (SC)
Live Edit
Live Edit is no longer maintained. For office document offline editing, Nuxeo Drive provides a Direct Edit feature that enables users to edit files stored in the Nuxeo Platform using their native application.
7.x Upgrade and Release Notes
Upgrade notes:
Release notes: