MIGRATION GUIDE

DIGITAL EXPERIENCE MANAGER 7.2

1

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

SUMMARY

1 INTRODUCTION ...... 4

2 HOW TO UPGRADE FROM DIGITAL EXPERIENCE MANAGER 7.1 TO 7.2 ...... 5

2.1 Code base review and potential impacts ...... 5 2.2 Deployment scripts/procedure review ...... 5

2.3 Test environment migration ...... 5

3 RENDER FILTER CHANGE ...... 6

3.1 Render Filters priority is now a Float instead of an Integer ...... 6

3.1.1 Impact on the migration to Digital Experience 7.2...... 6

4 CUSTOM IMPLEMENTATIONS OF USERS AND GROUPS PROVIDERS ...... 7

5 CODE THAT NEEDS TO BE UPGRADED ...... 8

5.1 Overridden jmix:list’s hidden.header views need to be upgraded ...... 8 5.2 Apache PDFBox was upgraded to version 2.0.3 with API changes ...... 8

5.3 osgi:list interface needs to be changed ...... 8 5.4 Interface of ExternalUserGroupService.setConfiguration changed...... 9 5.5 Interface UserGroupProviderConfiguration changed ...... 9 5.6 dependencies in modules ...... 9 5.7 Methods that implement JCRReferenceDecorator.getContextualizedNode() need to catch the exceptions ...... 10 5.8 Dropped dependencies ...... 10

6 MODULE DEPLOYMENT ...... 21

© 2002 – 2017 Jahia Solutions Group SA Page 2 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

6.1 What’s new ...... 21

6.2 Cluster deployment ...... 21 6.3 digital-factory-data/modules deployment changed ...... 21 6.4 Auto start mode for new modules dropped ...... 22

6.5 Transitive dependencies automatically RESOLVED ...... 22 6.6 Tools OSGi console now for troubleshooting purposes only...... 23 6.7 Module definition / imports now being processed when bundles are RESOLVED 23 6.8 Default OSGi state of a stopped bundle is now INSTALLED instead of RESOLVED 24 6.9 Explicit imports package are not modified to "optional" anymore...... 24

7 NEW MODULE BEHAVIOUR ...... 26

7.1 Legacy WAR modules support is dropped...... 26

8 NEW SEARCH BEHAVIOUR ...... 27

9 INFRASTRUCTURE CHANGES ...... 28

9.1 MySQL users need to upgrade their JDBC driver ...... 28 9.2 New network port needs to be opened ...... 28 9.3 Support for JBoss EAP 6.2 discontinued. JBoss EAP 6.4 now officially

supporte 28

9.4 Minimum version of Maven is now 3.3 ...... 29 9.5 A new license is required to start Digital Experience Manager 7.2...... 29 9.6 OSGi SSH console ...... 29

© 2002 – 2017 Jahia Solutions Group SA Page 3 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

1 INTRODUCTION

Before considering migrating to Digital Experience 7.2, please be aware of some product modifications that might impact the current codebase of both your custom modules or deployment scripts. This guide aims to provide a comprehensive checklist, as well as concrete examples of things to consider before migrating an environment.

Should you have more questions, the Jahia team will be happy to assist you! Please get in touch with your account manager or our support team.

© 2002 – 2017 Jahia Solutions Group SA Page 4 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

2 HOW TO UPGRADE FROM DIGITAL EXPERIENCE MANAGER 7.1 TO 7.2

2.1 CODE BASE REVIEW AND POTENTIAL IMPACTS

Please read this guide carefully, it will guide you through the product’s improvements and changes, and highlight the potential impact to your codebase and environments.

Even though it not necessary to upgrade all your modules to inherit from org.jahia.modules:jahia-modules:7.2.0.0 right away, it can be a good test for you to recompile your modules to target that version. It will give you a good indication of the interface changes

that might impact your project.

2.2 DEPLOYMENT SCRIPTS/PROCEDURE REVIEW

Digital Experience Manager 7.2 introduces brand new features such as a cluster module deployment and a new underlying OSGi platform (Apache Karaf 4.0.7). Please take the time to review the “Module deployment” section since the new behavior is likely to have an impact on

your current deployment procedures and scripts.

2.3 TEST ENVIRONMENT MIGRATION

It is essential that a dry run is performed on a test environment before migrating to Digital Experience Manager 7.2 in production. In the unlikely event that one of your modules isn’t behaving the same way as before, you may need to upgrade it. This guide will help you

understand the necessary steps.

© 2002 – 2017 Jahia Solutions Group SA Page 5 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

3 RENDER FILTER CHANGE

3.1 RENDER FILTERS PRIORITY IS NOW A FLOAT INSTEAD OF AN INTEGER

The priority of Render Filters is now a Float variable, instead of the Integer. Filters extending the abstract AbstractFilter class won’t be affected by that change. However, modules that implemented RenderFilter directly will experience a ClassCastException or a NoSuchMethodError at runtime.

3.1.1 Impact on the migration to Digital Experience 7.2

It is best to extend AbstractFilter to avoid such problems in the future. However, a quick fix for classes extending RenderFilter is to re-create the setter and getter applying the priority of type Float.

© 2002 – 2017 Jahia Solutions Group SA Page 6 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

4 CUSTOM IMPLEMENTATIONS OF USERS AND GROUPS PROVIDERS

Please refer to the section “Interface of ExternalUserGroupService.setConfiguration changed” to make sure that your LDAP provider or any other user provider remains compatible with Digital Experience Manager 7.2.

© 2002 – 2017 Jahia Solutions Group SA Page 7 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

5 CODE THAT NEEDS TO BE UPGRADED

5.1 OVERRIDDEN JMIX:LIST’S HIDDEN.HEADER VIEWS NEED TO BE UPGRADED

The content of list.hidden.header.jsp changed in the default module to reflect the new Render Chain behaviour. Any project that overrides this view needs to reflect these new changes in overriden view.

A project that does not declare a list.hidden.header.jsp file won’t require changes.

5.2 APACHE PDFBOX WAS UPGRADED TO VERSION 2.0.3 WITH API CHANGES

PDFBox was upgraded to version 2.0.3 to benefit from its security patches. This migration might involve some API changes that need to be taken into account if used inside a project.

Apache PDFBox provides migration guidelines that can be reviewed.

5.3 OSGI:LIST INTERFACE NEEDS TO BE CHANGED

In order to prevent osgi:list from falling into a dead lock (osgi:list waits for the Spring context, the Spring context waits for the osgi:list tag to return), the interface of osgi:list in the context of a Spring file needs to be updated by adding the availability="optional" parameter.

© 2002 – 2017 Jahia Solutions Group SA Page 8 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

5.4 INTERFACE OF ExternalUserGroupService.setConfiguration CHANGED

Custom implementations of an LDAP provider or any External and Group providers might use the setConfiguration() method which has been removed from the ExternalUserGroupService

interface.

Please refer to the new implementation of the LDAP provider to ensure your existing implementation is compatible.

5.5 INTERFACE UserGroupProviderConfiguration CHANGED

Custom implementations of the external user/group provider, which supply custom UI for provider configuration (like our LDAP module) and which implement

UserGroupProviderConfiguration interface in the module, will have to add a new method implementation: String getProviderClass().

5.6 LOG4J DEPENDENCIES IN MODULES

Internal Log4j classes are no longer exposed to modules in DX 7.2. If a module is using org.apache.log4j.Logger, it will continue to work correctly in the 7.2. But if a module is e.g.

implementing a custom Appender or using directly the LogManager, then, in DX 7.2, there will be an issue with the class visibility.

© 2002 – 2017 Jahia Solutions Group SA Page 9 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

5.7 METHODS THAT IMPLEMENT JCRREFERENCEDECORATOR.GETCONTEXTUALIZEDNODE() NEED TO CATCH THE EXCEPTIONS

It is important that methods that implement JCRReferenceDecorator.getContextualizedNode() catch the exceptions instead of throwing them. Not doing so will result in infinite loops for content referencing themselves or their parents.

5.8 DROPPED DEPENDENCIES

The DX core distribution in 7.2 is no longer including several 3rd party libraries. If your module is using one of them, you might consider including it into the module itself or deploying it as an

additional bundle, providing it.

Here is a list of libraries, no longer shipped with DX core:

• AspectJ (https://eclipse.org/aspectj/) • Freemarker (http://freemarker.org/) • MP4 Parser (https://github.com/sannies/mp4parser) • java-libpst (https://github.com/rjohnsondev/java-libpst) • JHighlight (https://github.com/codelibs/jhighlight) • Rhino JS [org.mozilla.javascript] (https://developer.mozilla.org/en- US/docs/Mozilla/Projects/Rhino) • Phloc CSS parser (https://github.com/phlocbg/phloc-css) • XZ data compression (http://tukaani.org/xz/java.html) • JMatIO - Matlab's MAT-file I/O in JAVA (https://www.mathworks.com/matlabcentral/fileexchange/10759-jmatio-matlab-s-mat- file-i-o-in-java) • FindBugs Annotations (http://findbugs.sourceforge.net/)

Additionally to the libraries, listed above, the following packages are also no longer exposed by DX 7.2 core to the modules:

codelists;version\="4.0.9"

eu.infomas.annotation

© 2002 – 2017 Jahia Solutions Group SA Page 10 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

javax.ejb

jline;version\="0.9.94"

oauth.signpost

oauth.signpost.basic

oauth.signpost.commonshttp

oauth.signpost.exception

oauth.signpost.http

org.apache.catalina.connector

org.apache.catalina.util

org.apache.catalina.websocket

org.apache.coyote.http11.upgrade

org.apache.felix.framework;version\="4.6.1"

org.apache.felix.framework.cache;version\="4.6.1"

org.apache.felix.framework.capabilityset;version\="4.6.1"

org.apache.felix.framework.ext;version\="4.6.1"

org.apache.felix.framework.resolver;version\="4.6.1"

org.apache.felix.framework.util;version\="4.6.1"

org.apache.felix.framework.util.manifestparser;version\="4.6.1"

org.apache.felix.framework.wiring;version\="4.6.1"

org.apache.felix.http.proxy;version\="2.2.1"

org.apache.log4j;version\="1.2.17"

org.apache.log4j.chainsaw;version\="1.2.17"

org.apache.log4j.component;version\="1.2.17"

org.apache.log4j.component.helpers;version\="1.2.17"

© 2002 – 2017 Jahia Solutions Group SA Page 11 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.apache.log4j.component.plugins;version\="1.2.17"

org.apache.log4j.component.scheduler;version\="1.2.17"

org.apache.log4j.component.spi;version\="1.2.17"

org.apache.log4j.config;version\="1.2.17"

org.apache.log4j.extras;version\="1.2.17"

org.apache.log4j.filter;version\="1.2.17"

org.apache.log4j.helpers;version\="1.2.17"

org.apache.log4j.jdbc;version\="1.2.17"

org.apache.log4j.jmx;version\="1.2.17"

org.apache.log4j.lf5;version\="1.2.17"

org.apache.log4j.lf5.config;version\="1.2.17"

org.apache.log4j.lf5.util;version\="1.2.17"

org.apache.log4j.lf5.viewer;version\="1.2.17"

org.apache.log4j.lf5.viewer.categoryexplorer;version\="1.2.17"

org.apache.log4j.lf5.viewer.configure;version\="1.2.17"

org.apache.log4j.lf5.viewer.images;version\="1.2.17"

org.apache.log4j.net;version\="1.2.17"

org.apache.log4j.nt;version\="1.2.17"

org.apache.log4j.or;version\="1.2.17"

org.apache.log4j.or.jms;version\="1.2.17"

org.apache.log4j.or.sax;version\="1.2.17"

org.apache.log4j.pattern;version\="1.2.17"

org.apache.log4j.receivers.db;version\="1.2.17"

org.apache.log4j.receivers.db.dialect;version\="1.2.17"

© 2002 – 2017 Jahia Solutions Group SA Page 12 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.apache.log4j.receivers.helpers;version\="1.2.17"

org.apache.log4j.receivers.net;version\="1.2.17"

org.apache.log4j.receivers.rewrite;version\="1.2.17"

org.apache.log4j.receivers.spi;version\="1.2.17"

org.apache.log4j.receivers.varia;version\="1.2.17"

org.apache.log4j.receivers.xml;version\="1.2.17"

org.apache.log4j.rewrite;version\="1.2.17"

org.apache.log4j.rolling;version\="1.2.17"

org.apache.log4j.rolling.helper;version\="1.2.17"

org.apache.log4j.rule;version\="1.2.17"

org.apache.log4j.spi;version\="1.2.17"

org.apache.log4j.varia;version\="1.2.17"

org.apache.log4j.xml;version\="1.2.17"

org.bouncycastle;version\="1.45.0"

org.bouncycastle.asn1;version\="1.45.0"

org.bouncycastle.asn1.bc;version\="1.45.0"

org.bouncycastle.asn1.cmp;version\="1.45.0"

org.bouncycastle.asn1.cms;version\="1.45.0"

org.bouncycastle.asn1.cms.ecc;version\="1.45.0"

org.bouncycastle.asn1.crmf;version\="1.45.0"

org.bouncycastle.asn1.cryptopro;version\="1.45.0"

org.bouncycastle.asn1.eac;version\="1.45.0"

org.bouncycastle.asn1.esf;version\="1.45.0"

org.bouncycastle.asn1.ess;version\="1.45.0"

© 2002 – 2017 Jahia Solutions Group SA Page 13 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.bouncycastle.asn1.gnu;version\="1.45.0"

org.bouncycastle.asn1.iana;version\="1.45.0"

org.bouncycastle.asn1.icao;version\="1.45.0"

org.bouncycastle.asn1.isismtt;version\="1.45.0"

org.bouncycastle.asn1.isismtt.ocsp;version\="1.45.0"

org.bouncycastle.asn1.isismtt.x509;version\="1.45.0"

org.bouncycastle.asn1.kisa;version\="1.45.0"

org.bouncycastle.asn1.microsoft;version\="1.45.0"

org.bouncycastle.asn1.misc;version\="1.45.0"

org.bouncycastle.asn1.mozilla;version\="1.45.0"

org.bouncycastle.asn1.nist;version\="1.45.0"

org.bouncycastle.asn1.ntt;version\="1.45.0"

org.bouncycastle.asn1.ocsp;version\="1.45.0"

org.bouncycastle.asn1.oiw;version\="1.45.0"

org.bouncycastle.asn1.pkcs;version\="1.45.0"

org.bouncycastle.asn1.sec;version\="1.45.0"

org.bouncycastle.asn1.smime;version\="1.45.0"

org.bouncycastle.asn1.teletrust;version\="1.45.0"

org.bouncycastle.asn1.tsp;version\="1.45.0"

org.bouncycastle.asn1.util;version\="1.45.0"

org.bouncycastle.asn1.x500;version\="1.45.0"

org.bouncycastle.asn1.x509;version\="1.45.0"

org.bouncycastle.asn1.x509.qualified;version\="1.45.0"

org.bouncycastle.asn1.x509.sigi;version\="1.45.0"

© 2002 – 2017 Jahia Solutions Group SA Page 14 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.bouncycastle.asn1.x9;version\="1.45.0"

org.bouncycastle.cms;version\="1.45.0"

org.bouncycastle.crypto;version\="1.45.0"

org.bouncycastle.crypto.agreement;version\="1.45.0"

org.bouncycastle.crypto.agreement.kdf;version\="1.45.0"

org.bouncycastle.crypto.agreement.srp;version\="1.45.0"

org.bouncycastle.crypto.digests;version\="1.45.0"

org.bouncycastle.crypto.encodings;version\="1.45.0"

org.bouncycastle.crypto.engines;version\="1.45.0"

org.bouncycastle.crypto.examples;version\="1.45.0"

org.bouncycastle.crypto.generators;version\="1.45.0"

org.bouncycastle.crypto.io;version\="1.45.0"

org.bouncycastle.crypto.macs;version\="1.45.0"

org.bouncycastle.crypto.modes;version\="1.45.0"

org.bouncycastle.crypto.modes.gcm;version\="1.45.0"

org.bouncycastle.crypto.paddings;version\="1.45.0"

org.bouncycastle.crypto.params;version\="1.45.0"

org.bouncycastle.crypto.prng;version\="1.45.0"

org.bouncycastle.crypto.signers;version\="1.45.0"

org.bouncycastle.crypto.tls;version\="1.45.0"

org.bouncycastle.crypto.util;version\="1.45.0"

org.bouncycastle.i18n;version\="1.45.0"

org.bouncycastle.i18n.filter;version\="1.45.0"

org.bouncycastle.jce;version\="1.45.0"

© 2002 – 2017 Jahia Solutions Group SA Page 15 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.bouncycastle.jce.examples;version\="1.45.0"

org.bouncycastle.jce.exception;version\="1.45.0"

org.bouncycastle.jce.interfaces;version\="1.45.0"

org.bouncycastle.jce.netscape;version\="1.45.0"

org.bouncycastle.jce.provider;version\="1.45.0"

org.bouncycastle.jce.provider.asymmetric;version\="1.45.0"

org.bouncycastle.jce.provider.asymmetric.ec;version\="1.45.0"

org.bouncycastle.jce.provider.symmetric;version\="1.45.0"

org.bouncycastle.jce.provider.util;version\="1.45.0"

org.bouncycastle.jce.spec;version\="1.45.0"

org.bouncycastle.mail.smime;version\="1.45.0"

org.bouncycastle.mail.smime.examples;version\="1.45.0"

org.bouncycastle.mail.smime.handlers;version\="1.45.0"

org.bouncycastle.mail.smime.util;version\="1.45.0"

org.bouncycastle.mail.smime.validator;version\="1.45.0"

org.bouncycastle.math.ec;version\="1.45.0"

org.bouncycastle.mozilla;version\="1.45.0"

org.bouncycastle.ocsp;version\="1.45.0"

org.bouncycastle.openssl;version\="1.45.0"

org.bouncycastle.sasn1;version\="1.45.0"

org.bouncycastle.sasn1.cms;version\="1.45.0"

org.bouncycastle.util;version\="1.45.0"

org.bouncycastle.util.encoders;version\="1.45.0"

org.bouncycastle.util.io;version\="1.45.0"

© 2002 – 2017 Jahia Solutions Group SA Page 16 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.bouncycastle.util.test;version\="1.45.0"

org.bouncycastle.voms;version\="1.45.0"

org.bouncycastle.x509;version\="1.45.0"

org.bouncycastle.x509.examples;version\="1.45.0"

org.bouncycastle.x509.extension;version\="1.45.0"

org.bouncycastle.x509.util;version\="1.45.0"

org.eclipse.compare.internal;version\="1.1.0"

org.eclipse.compare.rangedifferencer;version\="1.1.0"

org.eclipse.core.runtime;version\="20070801.0.0"

org.eclipse.jdt.core;version\="3.7.2"

org.eclipse.jdt.core.compiler;version\="3.7.2"

org.eclipse.jdt.core.compiler.batch;version\="3.7.2"

org.eclipse.jdt.internal.antadapter;version\="3.7.2"

org.eclipse.jdt.internal.compiler;version\="3.7.2"

org.eclipse.jdt.internal.compiler.apt.dispatch;version\="3.7.2"

org.eclipse.jdt.internal.compiler.apt.model;version\="3.7.2"

org.eclipse.jdt.internal.compiler.apt.util;version\="3.7.2"

org.eclipse.jdt.internal.compiler.ast;version\="3.7.2"

org.eclipse.jdt.internal.compiler.batch;version\="3.7.2"

org.eclipse.jdt.internal.compiler.classfmt;version\="3.7.2"

org.eclipse.jdt.internal.compiler.codegen;version\="3.7.2"

org.eclipse.jdt.internal.compiler.env;version\="3.7.2"

org.eclipse.jdt.internal.compiler.flow;version\="3.7.2"

org.eclipse.jdt.internal.compiler.impl;version\="3.7.2"

© 2002 – 2017 Jahia Solutions Group SA Page 17 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.eclipse.jdt.internal.compiler.lookup;version\="3.7.2"

org.eclipse.jdt.internal.compiler.parser;version\="3.7.2"

org.eclipse.jdt.internal.compiler.parser.diagnose;version\="3.7.2"

org.eclipse.jdt.internal.compiler.parser.unicode;version\="3.7.2"

org.eclipse.jdt.internal.compiler.parser.unicode6;version\="3.7.2"

org.eclipse.jdt.internal.compiler.problem;version\="3.7.2"

org.eclipse.jdt.internal.compiler.tool;version\="3.7.2"

org.eclipse.jdt.internal.compiler.util;version\="3.7.2"

org.eclipse.jetty.continuation

org.eclipse.jetty.websocket

org.glassfish.grizzly

org.glassfish.grizzly.comet

org.glassfish.grizzly.filterchain

org.glassfish.grizzly.http

org.glassfish.grizzly.http.server

org.glassfish.grizzly.http.server.util

org.glassfish.grizzly.http.util

org.glassfish.grizzly.servlet

org.glassfish.grizzly.utils

org.glassfish.grizzly.websockets

org.mortbay.util.ajax

org.mozilla.classfile;version\="1.0.0.7R2"

org.mozilla.javascript;version\="1.0.0.7R2"

org.mozilla.javascript.debug;version\="1.0.0.7R2"

© 2002 – 2017 Jahia Solutions Group SA Page 18 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.mozilla.javascript.jdk13;version\="1.0.0.7R2"

org.mozilla.javascript.jdk15;version\="1.0.0.7R2"

org.mozilla.javascript.optimizer;version\="1.0.0.7R2"

org.mozilla.javascript.regexp;version\="1.0.0.7R2"

org.mozilla.javascript.resources;version\="1.0.0.7R2"

org.mozilla.javascript.serialize;version\="1.0.0.7R2"

org.mozilla.javascript.tools;version\="1.0.0.7R2"

org.mozilla.javascript.tools.debugger;version\="1.0.0.7R2"

org.mozilla.javascript.tools.debugger.treetable;version\="1.0.0.7R2"

org.mozilla.javascript.tools.idswitch;version\="1.0.0.7R2"

org.mozilla.javascript.tools.jsc;version\="1.0.0.7R2"

org.mozilla.javascript.tools.resources;version\="1.0.0.7R2"

org.mozilla.javascript.tools.shell;version\="1.0.0.7R2"

org.mozilla.javascript.xml;version\="1.0.0.7R2"

org.mozilla.javascript.xml.impl.xmlbeans;version\="1.0.0.7R2"

org.mozilla.javascript.xmlimpl;version\="1.0.0.7R2"

org.objectweb.asm.attrs;version\="4.1.0"

org.objectweb.asm.commons;version\="4.1.0"

org.objectweb.asm.tree;version\="4.1.0"

org.objectweb.asm.tree.analysis;version\="4.1.0"

org.objectweb.asm.util;version\="4.1.0"

org.objectweb.asm.xml;version\="4.1.0"

org.slf4j;version\="1.6.6"

org.slf4j.agent;version\="1.6.6"

© 2002 – 2017 Jahia Solutions Group SA Page 19 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.slf4j.cal10n;version\="1.6.6"

org.slf4j.ext;version\="1.6.6"

org.slf4j.helpers;version\="1.6.6"

org.slf4j.impl;version\="1.6.6"

org.slf4j.instrumentation;version\="1.6.6"

org.slf4j.profiler;version\="1.6.6"

org.slf4j.spi;version\="1.6.6"

repackage;version\="2.6.0"

© 2002 – 2017 Jahia Solutions Group SA Page 20 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

6 MODULE DEPLOYMENT

6.1 WHAT’S NEW

Module deployment has been enhanced to allow native clustered module deployment as well as better predictability in the states of the modules and bundle wiring. For that to happen, a new framework was introduced: was replaced with Apache Karaf.

Please read this section very carefully, changes in Digital Experience Manager 7.2 may require you to update your automated module deployment scripts as well as to review your deployment procedures.

6.2 CLUSTER DEPLOYMENT

Deployment of module in cluster is now available. Please refer to the chapter “Modules” which includes a subsection “Cluster deployment” of the “Configuration and Fine Tuning Guide - Digital Experience Manager 7.2.0” document.

6.3 DIGITAL-FACTORY-DATA/MODULES DEPLOYMENT CHANGED

Module deployment by dropping a jar file in the digital-factory-data/modules folder is still

available, but the underlying deployment process has changed. Please refer to the “Cluster deployment” and the “Auto start mode for new modules dropped” sections for more details about potential impacts.

© 2002 – 2017 Jahia Solutions Group SA Page 21 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

6.4 AUTO START MODE FOR NEW MODULES DROPPED

The generic flag (autoStartNewModuleVersion in jahia.properties) to auto start new modules has been discontinued and will now be ignored. By default, new modules will end up in an “INSTALLED” state. Please refer to the section “Modules are now in INSTALLED state after a

deployment” for more details.

New APIs and interfaces now allow you to explicitly specify the auto start behavior for each deployment. Please refer to the “New REST API” section for more details.

This new option was introduced to auto start bundles dropped in digital-factory-data/modules only.

“jahia.modules.fileinstall.bundles.new.start = true” can be added into jahia.properties. Its default value is “false” in production mode and “true” in development mode.

Please refer to the section “Notes about deployment into /modules folder” of the “Configuration and Fine Tuning Guide - Digital Experience Manager 7.2.0” document.

6.5 TRANSITIVE DEPENDENCIES AUTOMATICALLY RESOLVED

Modules with an explicit dependency to other deployed modules in INSTALLED state will now automatically switch these modules to the RESOLVED state. This behavior is transitive and will traverse all dependencies.

© 2002 – 2017 Jahia Solutions Group SA Page 22 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

6.6 TOOLS OSGI CONSOLE NOW FOR TROUBLESHOOTING PURPOSES ONLY

The Jahia OSGi console in the Tools is no longer meant to be used on a day-to-day basis for general module administration purposes. Unlike the REST API and the module administration interface, the bundle operations via OSGi console have only local influence and not a cluster- wide nature, and thus the OSGi console may not offer module state behaviour consistent with what is documented in this guide.

The OSGi console is still a legitimate way to interact with OSGi bundles for troubleshooting and development purposes.

6.7 MODULE DEFINITION / IMPORTS NOW BEING PROCESSED WHEN BUNDLES ARE RESOLVED

Jackrabbit definitions and repository import files are now processed during the RESOLVED state

of the lifecycle of a Bundle. This operation was performed in the INSTALLED state before Digital

© 2002 – 2017 Jahia Solutions Group SA Page 23 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

Experience Manager 7.2. This means that a module that failed to resolve its dependencies will

no longer import data to the JCR.

6.8 DEFAULT OSGI STATE OF A STOPPED BUNDLE IS NOW INSTALLED INSTEAD OF RESOLVED

To provide a better predictability in the bundle wiring, “INSTALLED” is now the default state of a stopped module. “INSTALLED” bundles don’t expose any packages, won’t import nodetype

definitions or data into the JCR and won’t expose OSGi Services.

This new behavior will help make it easier to maintain several versions of the same module deployed on the platform at the same time.

Please refer to the section “OSGi and Digital Experience Manager Module States” of the “OSGi Module Development - Digital Experience Manager 7.2.0” document.

6.9 EXPLICIT IMPORTS PACKAGE ARE NOT MODIFIED TO "OPTIONAL" ANYMORE.

Since Jahia DX 7.2, the "optional" clause is not added to explicit imports package. This was an issue, and the behavior now is more consistent.

Before, defining this entry in your pom.xml:

org.apache.jsp was transform in the MANIFEST into:

Import-Package: org.apache.jsp;resolution:=optional It's not the case anymore, since 7.2, this import will be correctly transform in the MANIFEST into:

Import-Package: org.apache.jsp If you manually set the resolution in your pom.xml, then it will be correctly transpose in the MANIFEST. Exemple:

© 2002 – 2017 Jahia Solutions Group SA Page 24 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

org.apache.jsp;resolution:=optional will be transformed in the MANIFEST to:

Import-Package: org.apache.jsp;resolution:=optional

© 2002 – 2017 Jahia Solutions Group SA Page 25 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

7 NEW MODULE BEHAVIOUR

7.1 LEGACY WAR MODULES SUPPORT IS DROPPED

Support for WAR modules that were automatically migrated by the fixapplier between Jahia 6.6 and Digital Experience 7.0 without being manually recompiled for Digital Experience 7.0.0.0 has been dropped. These modules will need to be properly re-packaged/re-compiled with a target

version to Digital Experience 7.2.

© 2002 – 2017 Jahia Solutions Group SA Page 26 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

8 NEW SEARCH BEHAVIOUR

In Digital Experience Manager 7.2 and above, search hits that relate to content that is not visible are no longer part of the search results. These nodes were displayed before.

To allow better backward compatibility, a legacy mode was introduced to ensure there were no

behaviour changes:

In jahia.properties: ## Nodes under an invisible node will be displayed in the search results

search.displayableNodeCompat = true

This flag will automatically be switched to “true” after a migration whereas a new installation will set it to “false”.

© 2002 – 2017 Jahia Solutions Group SA Page 27 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

9 INFRASTRUCTURE CHANGES

9.1 MYSQL USERS NEED TO UPGRADE THEIR JDBC DRIVER

Starting from Digital Experience Manager 7.2, the MySQL JDBC driver needs to be upgraded to version 5.1.40. In order to do so, please:

• Download mysql-connector-java in version 5.1.40

• Put the jar file inside your application server’s lib folder (tomcat/lib in tomcat’s case) This operation needs to be performed once the fix applier has been applied.

9.2 NEW NETWORK PORT NEEDS TO BE OPENED

Enhanced clustered module deployment behaviour requires a new communication port to be opened between each server in a cluster. The default port number is 7860 but it can be

configured in jahia.node.properties:

# Hazelcast-based clustered communication for bundle deployment #cluster.hazelcast.bindPort = 7860

Please make sure that this port is opened from a network perspective between all Jahia servers before upgrading to Digital Experience 7.2.

9.3 SUPPORT FOR JBOSS EAP 6.2 DISCONTINUED. JBOSS EAP 6.4 NOW OFFICIALLY SUPPORTE

JBoss users upgrading to Digital Experience Manager 7.2 will be required to upgrade JBoss EAP 6.4 before first starting the application.

© 2002 – 2017 Jahia Solutions Group SA Page 28 / 29

MIGRATION GUIDE DIGITAL EXPERIENCE MANAGER 7.2

JBoss EAP 6.4 brings full compatibility with JDK 8.

9.4 MINIMUM VERSION OF MAVEN IS NOW 3.3

In order to build Digital Experience Manager modules, developers need to run maven 3.3 or above. Support for lower versions is deprecated.

9.5 A NEW LICENSE IS REQUIRED TO START DIGITAL EXPERIENCE MANAGER 7.2

Please get in touch with your account manager before upgrading to Digital Experience Manager

7.2, your current 7.1 license key will not allow you to upgrade to the latest version.

Note that your license is only limited in time and not in version, no additional costs will be applied.

9.6 OSGI SSH CONSOLE

In DX 7.2 the Felix gogo shell (Telnet-based) was replaced with the more powerful, flexible and

secure Apache Karaf SSH shell.

The SSH shell is enabled by default and listens, for the sake of security, by default only on host 127.0.0.1, i.e. on connections from localhost. The default port number is 8101.

For configuration details, please, refer to the section “OSGi SSH Console” of the “Configuration

and Fine Tuning Guide - Digital Experience Manager 7.2.0” document.

© 2002 – 2017 Jahia Solutions Group SA Page 29 / 29