Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: DOCU-2673

...

clearboth
width275px
alignright
classmenu

...

This page contains the information you should be aware of when you are upgrading to Magnolia 5.7.x from any previous and currently supported version.

...

Table of Contents
maxLevel4
minLevel2

What to update

Anchor
adding-privacy-modules
adding-privacy-modules
Add

...

privacy modules

If you have an Enterprise license, add the new Privacy privacy modules that help you make your websites GDPR-compliant:.

Expand
titleClick to see how to install the Privacy modules

Multiexcerpt include
MultiExcerptNameinstallation
PageWithExcerptPrivacy module

...

Changes on add-on modules 

Include Page
_what is an add-on

...

module
_what is an add-on module

Updated add on modules

With Magnolia 5.7 we also have updated the Backup module to version 2.3. If you want to use the backup module, you must upgrade it to 2.3.

Anchor
anc-outdated-addons
anc-outdated-addons
Outdated add-on modules

In Magnolia 5.7 we removed several add-on modules (not bundled). We recommend you remove them too. 

This is the list of the add-on modules removed:

  • magnolia-jndi-1.0.2
  • magnolia-module-newsletter-bundle-2.2
  • magnolia-module-webdav-2.1.3
  • magnolia-templating-samples-5.4.1

With Magnolia 5.7 we have removed a few modules that were not bundled but which were added as add-ons. We recommend you remove them. 

Here is the list of the removed add-on modules:

  • magnolia-jndi-1.0.2
  • magnolia-module-newsletter-bundle-2.2
  • magnolia-module-webdav-2.1.3
  • magnolia-templating-samples-5.4.1

See also 

Jira
serverMagnolia - Issue tracker
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId500b06a6-e204-3125-b989-2d75b973d05f
keyMGNLEE-533
.

Webdav

...

Anchor
anc-webdav-deprecation
anc-webdav-deprecation
WebDAV

You must remove the magnolia-module-webdav

...

module.

Jackrabbit 2.

...

16 removed the HttpClient3 based WebDAV API and introduced a completely new WebDAV API.

You can do many common WebDAV tasks with light development. You can store web resources such as CSS and JS files, template scripts and many more items in a light module and edit them comfortably as local files with your favorite editor. When you are done with the changes, push and commit the files to Git and configure Magnolia to watch for changes in the remote Git directory. Magnolia will register changes in light modules instantly.

Anchor
anc-check-custom-fields-based-on-magnolia-fields
anc-check-custom-fields-based-on-magnolia-fields
Check custom fields extending or decorating Magnolia fields

We have changed some names for field definitions. The name of a field definition is the node name if defined via JCR in the folder modules/some-module/fieldTypes or the file name of a YAML based definition. Field definitions which have been defined via JCR and which we have renamed now are defined with YAML files. This was part of the initiative to reference fields by its "short" name with the property fieldType (see Referencing fields). 

If you have custom fields which reuse an existing Magnolia configuration via YAML includeYAML inheritJCR extends or by decoration, your custom definition may be broken now if you reference to a field which has changed its name.

Expand
titleClick here to expand to see the complete list of changed field names

Include Page
_field names shortening
_field names shortening

Use the Definitions app to check for problems.

Check the magnolia.properties file

(info) Between Magnolia 5.6.6 and Magnolia 5.7, the magnolia.properties file has not changed.

Tip

When upgrading Magnolia, it is always worth comparing your magnolia.properties file with the one from the newly released Magnolia bundles.

Below are the latest versions of the magnolia.properties files for the Magnolia 5.7.x series: 

Artifact resource link
rangeHigherVersion6.0
groupIdinfo.magnolia.bundle
artifactId

The magnolia.properties file

Todo
  • Remove the SNAPSHOT version on the artifact macro displaying the latest 5.7.x version
  • fetch the proper version of the properties files based on the latest tagged version after the release.
Tip

When upgrading Magnolia - its is always worth to compare your magnolia.properties file with the one coming from freshly released Magnolia bundles.

(info) Between Magnolia 5.6.6 and Magnolia 5.7 - the magnolia.properties file has not changed.

Below find the latest versions of  the magnolia.properties files of the Magnolia 5.7 series: 

Artifact resource link
groupIdinfo.magnolia.bundle
artifactIdmagnolia-bundle-parent
label$version
renderTypedisplay_only
versionSNAPSHOT
resourceTypePOM

Magnolia CE / Magnolia EE Standard *

Code Pro
profilebitbucket-ee
languagetext
titlece/magnolia-empty-webapp/src/main/webapp/WEB-INF/config/default/magnolia.properties
collapsetrue
urlhttps://git.magnolia-cms.com/projects/PLATFORM/repos/ce/raw/magnolia-empty-webapp/src/main/webapp/WEB-INF/config/default/magnolia.properties?at=masterrefs%2Ftags%2Fmagnolia-bundle-5.7.3

*) Magnolia CE and Magnolia EE Standard are using use the same magnolia.properties file.

...

Code Pro
profilebitbucket-ee
languagetext
titleee/magnolia-enterprise-pro-webapp/src/main/webapp/WEB-INF/config/default/magnolia.properties
collapsetrue
urlhttps://git.magnolia-cms.com/projects/PLATFORM/repos/ee/raw/magnolia-enterprise-pro-webapp/src/main/webapp/WEB-INF/config/default/magnolia.properties?at=masterrefs%2Ftags%2Fmagnolia-enterprise-bundle-5.7.3

Apache Tomcat 9.0.8

If you are using use Apache Tomcat - : we have upgraded to Apache Tomcat 9.0.8.

In case If you are using another servlet container - have a look at the Certified stack.

...

use another servlet container, check the certified stack for supported versions.

Anchor
anc-library-updates
anc-library-updates
Third-party libraries

Jackrabbit 2.16.1

If you want to run Magnolia on Java 9 or 10, you must use Jackrabbit 2.16.1.

  • jackrabbit-api-2.16.1
  • jackrabbit-core-2.16.1
  • jackrabbit-data-2.16.1
  • jackrabbit-jcr-commons-2.16.1
  • jackrabbit-spi-2.16.1
  • jackrabbit-spi-commons-2.16.1

Vaadin 8.4.2

If you come are migrating from Magnolia 5.5.x or even lower, please read the instructions to upgrade for upgrading to Magnolia 5.6.x concerning for custom modules and the widget set toowidgetset.

  • vaadin-compatibility-aceeditor-1.0
  • vaadin-compatibility-ckeditor-1.0
  • vaadin-compatibility-client-8.4.2
  • vaadin-compatibility-context-menu-1.0
  • vaadin-compatibility-expandingtextarea-1.0
  • vaadin-compatibility-server-8.4.2
  • vaadin-compatibility-shared-8.4.2
  • vaadin-compatibility-themes-8.4.2
  • vaadin-compatibility-tokenfield-1.0
  • vaadin-server-8.4.2
  • vaadin-shared-8.4.2
  • validation-api-1.1.0.Final

...

Include Page
_groovy 2.5 update for magnolia-groovy 2.7
_groovy 2.5 update for magnolia-groovy 2.7

...

Other third-party libraries

  • commons-lang3-3.7
  • freemarker-2.3.25-incubating38
  • gson-2.2.2
  • guice-4.2.0
  • guice-multibindings-4.2.0
  • jackson-databind-2.9.5
  • jsoup-1.8.3
  • mycila-guice-closeable-4.0
  • mycila-guice-injection-4.0
  • mycila-guice-jsr-4.0
  • snakeyaml-1.21
  • xercesImpl-2.12
  • -4.0
  • snakeyaml-1.21

We removed Apache Xerces (xercesImpl) due to the fact that Java (since Java SE 7) already contains Java API for XML Processing (JAXP).

How to update

Recommendations

  • Update to

...

  • the latest minor release version first before

...

  • upgrading to the most recent major release.
    A June 2018 example: a customer is considering an upgrade from 5.5.8 to 5.7. The correct upgrade sequence

...

  • is: 5.5.8 → 

    Artifact resource link
    rangeHigherVersion5.6
    groupIdinfo.magnolia.bundle
    artifactIdmagnolia-bundle-parent
    label$version
    renderTypedisplay_only
    resourceTypePOM
     → 
    Artifact resource link
    rangeHigherVersion5.7
    groupIdinfo.magnolia.bundle
    artifactIdmagnolia-bundle-parent
    label$version
    renderTypedisplay_only
    resourceTypePOM
     → 5.7.x

  • Update all external libraries required by the Magnolia release to which you intend to upgrade

...

  • .
  • Because the upgrade process takes time and is vulnerable to incidents,

...

  • we recommend you minimize the risk by cleaning up your system, removing unused data, reindexing everything and doing a full backup first.
Tip

Once Magnolia is running, check the Definitions app for deprecated or problematic definitions.

Updating manually

  1. Stop the application server.
  2. Extract the new Magnolia bundle.
  3. Replace JAR files in the WEB-INF/lib folder of your old Magnolia instances with new JARs from the bundle. Also replace modules coming from the add-ons bundle (magnolia-enterprise-addons-bundle), in case you are using any of these.
    (warning) Magnolia 5.7 updates numerous 3rd-party libraries - , see Java 8, 9 and 10 runtime compatibility and library updates.
  4. Remove any module JARs you had previously removed from your instances. Add any modules you might may have previously added.
    (warning) We have removed a few modules from the several add-ons. Some of them you must remove. See Removing on modules. You must also remove some. See Remove outdated add-on modules.
  5. Add new introduced modules - see Adding Magnolia modules. See Add the privacy modules.
  6. Optional: Delete all indexes to give them a little boost. Delete the index folder under each workspace directory: repositories/magnolia/workspaces/<workspace>/index. Indexes are recreated on startup, which might take a while depending on the size of your repository.
  7. If you customized customized your magnolia.properties files, compare the changes to the file in the new bundle. Properties may have been added and or removed.
  8. Read Read the release notes for all intermediary intermediate versions for any additional update tasks.
  9. Restart the application server.
  10. Using In your browser, go to the Magnolia instances and run the Web web update.

Updating Maven managed webapps

On In this section we assume that you use Maven to manage your (custom) webapp. How you do this depends on how you have organized your pom files.

...

The most typical use case is , that your custom webapp is based on one of Magnolias preconfigured webapps. The structure of the Maven project which is managing that manages your webapp could may look like this:

Code Pro
linenumberstrue
custom-ee/
├── custom-ee-webapp
│   ├── pom.xml
│   └── src
└── pom.xml

Line 3: custom-ee/custom-ee-webapp/pom.xml is the pom file of your custom webapp.

Expand
titleClick to see a possible an example
Code Pro
languagexml
titlecustom-ee/custom-ee-webapp/pom.xml
linenumberstrue
-ee-webapp/pom.xml
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>custom-ee</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  <artifactId>custom-ee-webapp</artifactId>
  <name>custom-ee: webapp</name>
  <packaging>war</packaging>

  <dependencies>
    <dependency>
      <groupId>info.magnolia.eebundle</groupId>
      <artifactId>magnolia-enterprise-pro-webapp</artifactId>
      <type>war</type>
    </dependency>
    <dependency>
      <groupId>info.magnolia.eebundle</groupId>
      <artifactId>magnolia-enterprise-pro-webapp</artifactId>
      <type>pom</type>
    </dependency>
    <!-- More custom modules here -->
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>foobar-module</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <!-- exclude jars copied "physically" from the webapp overlay - so we only get those resolved by Maven's dependency management -->
          <dependentWarExcludes>WEB-INF/lib/*.jar</dependentWarExcludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Line 5: custom-ee/pom.xml is the " parent pom file " of your custom webapp - this file is managing . This file manages the dependencies and its their versions. 

Expand
titleClick to see a possible an example
Code Pro
languagexml
titlecustom-ee/pom.xml
linenumberstrue
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>custom-ee</artifactId>
  <name>custom-ee (parent pom)</name>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
    <magnoliaBundleVersion>5.6.6</magnoliaBundleVersion>
    <foobarModuleVersion>1.2</foobarModuleVersion>
    <javaVersion>1.8</javaVersion>
  </properties>

  <!-- Fill the following in, so you can use the release plugin -->
  <scm>
    <connection/>
    <developerConnection/>
    <url/>
  </scm>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>info.magnolia.eebundle</groupId>
        <artifactId>magnolia-enterprise-bundle-parent</artifactId>
        <version>${magnoliaBundleVersion}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- More dependencies for your custom modules here -->
      <dependency>
        <groupId>com.example</groupId>
        <artifactId>foobar-module</artifactId>
        <version>${foobarModuleVersion}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>


  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>${javaVersion}</source>
          <target>${javaVersion}</target>
        </configuration>
      </plugin>
    </plugins>

    <!-- default resources configuration which will filter your module descriptors -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </resource>
      <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
        <includes>
          <include>META-INF/magnolia/*</include>
        </includes>
      </resource>
    </resources>
  </build>

  <repositories>
    <repository>
      <id>magnolia.public</id>
      <url>https://nexus.magnolia-cms.com/content/groups/public</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>magnolia.enterprise.releases</id>
      <url>https://nexus.magnolia-cms.com/content/repositories/magnolia.enterprise.releases</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>vaadin-addons</id>
      <url>https://maven.vaadin.com/vaadin-addons</url>
    </repository>
  </repositories>

  <modules>
    <module>custom-ee-webapp</module>
  </modules>
</project>

Note that the " parent pom " (custom-ee/pom.xml) is managing manages all versions for Magnolia modules as well as for 3rdthird-party libraries.

It

...

imports info.magnolia.eebundle:magnolia-enterprise-bundle-parent

...

, which manages Magnolia Enterprise

...

module versions and imports the following:

  • info.magnolia.bundle:magnolia-bundle-parent (which manages the versions of the - manages Magnolia CE modules) and module versions.
  • info.magnolia.boms:magnolia-external-dependencies (which manages the versions of the 3rd-party libraries) - manages third-party library versions.

If the pom files for your custom webapp are organized as shown in this example - , you must only need to change only one property. In the <properties> section of your parent pom, change the version of the magnoliaBundleVersion property:

Code Pro
languagexml
linenumberstrue
<properties>
  <magnoliaBundleVersion>5.7.7<1</magnoliaBundleVersion>
  <foobarModuleVersion>1.2</foobarModuleVersion>
  <javaVersion>1.8</javaVersion>
</properties>

Line 2: Set the magnoliaBundleVersion to your required version. That 's is all you must need to change on in the pom files of your webapp.

Checking the Maven dependency tree

Whether Regardless of how your Maven project is shown as above or whether it is done in a different way, in any case:

...

organized, building the Maven dependency tree helps you

...

analyze the versions of all the Magnolia modules and all

...

the third-party libraries of your custom webapp.

Open a shell, go to the directory of your webapp and execute the Maven command for the dependency tree.:

Code Block
cd /Users/jdoe/dev/repo/custom-mgnl-webapps/custom-ee/custom-ee-webapp
mvn dependency:tree

...

dependency:tree

Anchor
anc-known-issues
anc-known-issues
Known issues

Tomcat 8 using BCEL may throw class format exception

Multiexcerpt include
MultiExcerptNameissue
PageWithExcerpt_known issue with tomcat 8.5x JAVA EE and BCEL

If you encounter other problems, check the Known issues page.

Virtual URI mappings not working if too many are configured

To mitigate an issue caused by having more than 500 configured virtual URI mappings in light modules, a WARN-level message is now logged when a DirectoryWatcher overflow occurs (MAGNOLIA-7762). We recommend to keep the number of files in a single folder below 100 and to use folder hierarchies whenever possible. For the upcoming fix, see  MAGNOLIA-7798

...

If you encounter problems, please check the Known issues page first.