This chapter aims at instructing you how to upgrade eXo Platform from 3.0 to 3.5, especially when your system is an extension of eXo Platform 3.0 with many customizations related to configurations, components and added features.

The following topics are covered:

Before upgrading, you first need to understand how to create a project which is based on eXo Platform 3.5. For more details, refer to the eXo Platform Developer Guide.

And now, you need to gather all requirements for your upgraded project by clarifying the following questions:

  • Do you actually need to migrate your project sources?

  • Have you created any new portal containers in your system?

  • Have you made any lifetime-related changes on eXo Platform? Would you like to keep these changes?

  • Have you developed a custom application? Where have you stored your application data?

  • Have you configured a dedicated JCR workspace?

  • Which eXo APIs are you using in your code?

  • Have you overridden any files of eXo Platform?

  • Have you disabled any services of eXo Platform?

  • Which Kernel configurations have you customized?

eXo Platform include many components, so if you want to update your eXo Platform extension to use eXo Platform 3.5, you need to update all dependencies version in the POM files, and select dependencies version which are compatible with the eXo Platform 3.5. For example, eXo Platform 3.5.1 needs to have the following main dependencies:



<!-- kernel -->
<dependency>
    <groupId>org.exoplatform.kernel</groupId>
    <artifactId>kernel-parent</artifactId>
    <version>2.3.5-GA</version>
</dependency>
<!-- core -->
<dependency>
   <groupId>org.exoplatform.core</groupId>
   <artifactId>core-parent</artifactId>
   <version>2.4.5-GA</version>
</dependency>
<!-- ws -->
<dependency>
   <groupId>org.exoplatform.ws</groupId>
   <artifactId>ws-parent</artifactId>
   <version>2.2.5-GA</version>
</dependency>

<!-- jcr -->
<dependency>
  <groupId>org.exoplatform.jcr</groupId>
  <artifactId>jcr-parent</artifactId>
  <version>1.14.5-GA</version>
</dependency>

<!-- jcr service -->
<dependency>
  <groupId>org.exoplatform</groupId>
  <artifactId>exo-jcr-services</artifactId>
  <version>1.14.5-GA</version>
</dependency>

<!-- commons -->
<dependency>
  <groupId>org.exoplatform.commons</groupId>
  <artifactId>exo.platform.commons</artifactId>
  <version>1.1.5</version>
</dependency>

<!-- exogtn -->
<dependency>
   <groupId>org.exoplatform.portal</groupId>
   <artifactId>exo.portal.parent</artifactId>
   <version>3.2.2-PLF</version>
</dependency>

<!-- webos -->
<dependency>
  <groupId>org.exoplatform.webos</groupId>
  <artifactId>webos-parent</artifactId>
  <version>2.0.2</version>
</dependency>

<!-- ecms -->
<dependency>
  <groupId>org.exoplatform.ecms</groupId>
  <artifactId>exo-ecms</artifactId>
  <version>2.3.5</version>
</dependency>

<!-- ide -->
<dependency>
   <groupId>org.exoplatform.ide</groupId>
   <artifactId>exo-ide-parent</artifactId>
   <version>1.1.4</version>
</dependency>

<!-- cs -->
<dependency>
  <groupId>org.exoplatform.cs</groupId>
  <artifactId>cs</artifactId>
  <version>2.2.7</version>
</dependency>

<!-- ks -->
<dependency>
  <groupId>org.exoplatform.ks</groupId>
  <artifactId>ks</artifactId>
  <version>2.2.7</version>
</dependency>

<!-- social -->
<dependency>
  <groupId>org.exoplatform.social</groupId>
  <artifactId>social-project</artifactId>
  <version>1.2.7</version>
</dependency>

<!-- integration -->
<dependency>
  <groupId>org.exoplatform.integration</groupId>
  <artifactId>integ</artifactId>
  <version>1.0.5</version>
</dependency>

After updating Maven dependencies, you need to update configurations via answering two questions:

After that, you can put them into $PLATFORM-TOMCAT-HOME/gatein/conf.

  • In your eXo Platform extension, did you override anything in $PLATFORM-TOMCAT-HOME/bin?

    • If NO, you can skip this step, and simply keep all configurations in $PLATFORM-TOMCAT-HOME/bin.

    • If YES, you first need to keep all eXo Platform 3.5's origin configurations, then add/remove/update your extension configuration into it.

Note

$PLATFORM-TOMCAT-HOME/bin/gatein.sh and $PLATFORM-TOMCAT-HOME/bin/gatein.bat are no longer used. Therefore, you should add your customized configurations in a more official way to set environment variables via setenv.sh or setenv.bat.

There are many components in eXo Platform, so if you update your eXo Platform extension to eXo Platform 3.5, you need to update the version of all eXo Platform 3.5's components. To do so, simply configure the Maven POM file that allows you to use the artifacts (eXo Platform 3.5 and its components). For more details, see the Update project Maven dependencies section. All eXo Platform 3.5's components will be automatically included in your eXo Platform extension.

There are some new components in eXo Platform 3.5 that have not been existing in eXo Platform 3.0, including Webos, Wiki, and Gadget-pack. To use these components, simply activate their profiles. For more details, see the Profiles of eXo Platform section.

In eXo Platform 3.5, the "intranet" portal is defined in the acme-intranet.war file (not in the office-portal.war file of eXo Platform 3.0). So if you have overridden anything in the "intranet" portal, you need to synchronize your extension with the acme-intranet.war file of eXo Platform-3.5.

This section details how to update your custom eXo Platform extension, including updating Kernel XML Schema, portal and APIs.

Processing the portal data import includes the following tasks:

  • Improve the current data import strategy so that it becomes more flexible in various scenarios.

  • Deploy an extension after you have initialized the portal that allows the extension to contribute its entities to an existing site.

  • Reimport data by overwriting an existing entire configuration at each startup.

What's new?

Previous behaviorNew behavior

The previous mode for navigations is defined using the overridden configuration.

  • Merge: Merge data from the XML descriptor to the existing data.

  • Override: Destroy any existing data, and create new ones.

The previous mode has two main issues:

  • The behavior for instance disables the "always merge data" usecase. It means that it is always impossible to merge new navigations nodes from XML to MOP.

  • The behavior is configured by the overridden parameter.

The new behavior which is configured at the import level with a field parameter would have the following values:

  • conserve: Import data. However, if the navigation has been existing, it will be kept.

  • insert: Insert the missing descriptor data by adding new nodes without any modifications on the existing nodes.

  • merge: Merge the descriptor data, add missing nodes and update the nodes of the same name.

  • overwrite: Always destroy the previous data and create new ones.

For example, if you want to merge the new portal navigation from the configuration file and the existing portal navigation into the current eXo Platform, you can configure as below:



<object-param>
  <name>portal.configuration</name>
  <object type="org.exoplatform.portal.config.NewPortalConfig">
    <field name="predefinedOwner">
     <collection type="java.util.HashSet">
       <value><string>classic</string></value>
     </collection>
    </field>
    <field name="ownerType">
      <string>portal</string>
    </field>
    <field name="templateLocation">
      <string>war:/conf/portal</string>
    </field>
    <field name="importMode">
      <string>merge</string>
    </field>
  </object>
</object-param>

Note

When a mode is not specified, the default mode will be conserve.

eXo Platform 3.5 uses a new authentication mechanism so-called the WCI authentication mechanism. This change from GateIn into the WCI module is because:

If there are other new portal containers in your eXo Platform extension, you need to update the authentication mechanism in the $PLATFORM-TOMCAT-HOME/conf/jaas.conf file. For example, in case you have added a new portal container named "company" to eXo Platform, you need to configure the new authentication module for the new portal container as follows:

For more details, see the Change the JAAS realm section.