Upgrading from Magnolia 6.2 to 6.4
|
This guide is under active development and will be finalized for the Magnolia 6.4 GA release. Steps and details may change. |
This guide walks you through upgrading Magnolia DX Core from 6.2 to 6.4 in a single, unified process. Follow each section in order. Use the checkpoints at the end of every section before proceeding. Critical steps are indicated with a icon.
| This guide is for developers, integrators, and DevOps engineers with in-depth Magnolia experience who manage project code, configuration, and runtime environments. |
Prerequisites
This section lists what you must review and prepare before starting the upgrade.
Before you upgrade:
Environment and backups
This section covers preparing the runtime environment and creating and verifying full backups.
-
Upgrade to the latest patch of your current Magnolia version (for example, if on 6.2.x, go to the latest 6.2.x before starting the 6.2→6.4 upgrade).
-
Clean and optimize your Magnolia instance: remove unused modules/data, reindex JCR.
-
Test the backup and the ability to restore or roll back.
-
Verify that your Java environment is 17 (or newer, as certified by Magnolia 6.4).
-
Review the certified stack again for server, servlet container (Tomcat 10/11), and database support.
Dependency and platform updates
This section guides you through updating Magnolia, Jakarta, servlet container, and related build dependencies.
-
If you have custom code, add the
rewrite-maven-pluginto yourpom.xmlfile to automate the migration fromjavaxtojakartapackages. This step effectively alters your code.Click to see how to declare the
rewrite-maven-plugin -
Update the parent
pom.xmlin your webapp. Set<magnoliaBundleVersion>to 6.4.0-rc3. -
If you use extension modules, either update their versions individually or use the latest extensions BOM compatible with 6.4.
-
Replace
javax.*dependencies with their Jakarta EE 10 equivalents in all modules.How to update Maven dependencies from
javaxgroup IDs to their Jakarta equivalents -
Compare your
magnolia.propertiesfile to the current defaults for 6.4 and merge in any required new properties. See the Magnolia CE and DX Core base files. -
If using custom Docker images, update to use base images certified for Magnolia 6.4.
Code and configuration updates
This section details project-level code and pre-startup configuration changes required for 6.4, including MicroProfile configuration, security, search, forms, sites, REST endpoints, database settings, and scripts/automation updates.
-
Update all publishing receiver and external configuration sources as required. Since 6.3, Magnolia uses MicroProfile Config, adding state-of-the-art flexibility for external instance configuration. Magnolia expects MicroProfile-managed publishing receiver configs for instance clustering.
How to configure publishing receivers
-
If you use AI Accelerator or Cloudinary External DAM, obtain your new 6.4 license and set it in your instances before launching Magnolia for the first time.
-
If you configured IP security, update your filter configuration to use MicroProfile config. Magnolia 6.4 no longer bootstraps
ipSecurityby default. Either remove the filter manually or migrate the configuration to MicroProfile; otherwise, logs will contain repeated warnings. See IP security. -
If you have custom Java-based REST endpoints, update them to use the REST 3.0+ packages, such as:
-
info.magnolia.rest.delivery.DeliveryContext(deprecated:info.magnolia.rest.delivery.jcr.v2.DeliveryContext). -
info.magnolia.rest.delivery.OutputStreamWrapper(deprecated:info.magnolia.rest.delivery.jcr.OutputStreamWrapper).
-
-
Global Search replaces Find Bar and is managed in the
periscope-coremodule. -
If you want to use the JavaScript UI module custom fields, enable the New UI Forms integration and remove legacy listeners.
-
Add the integration dependency to your webapp
pom.xml(the version is managed by the Magnolia BOM):<dependency> <groupId>info.magnolia.ui</groupId> <artifactId>magnolia-ui-framework-javascript-warp-integration</artifactId> </dependency> -
A form that includes a
javascriptFieldprobably has theimplementationClass: info.magnolia.ui.javascript.form.FormViewWithChangeListener, which causes the form to fall back to Vaadin. If you want to upgrade the form to the New UI, follow these steps:-
Comment out all the JS fields.
-
Comment out the
implementationClass. -
Check whether the form renders in the New UI. If not, adjust the form definition until it does.
-
Uncomment the JS fields.
-
Delete the
implementationClass.
The above steps avoid the state where some other problem forces a fallback to Vaadin, but the
implementationClassis missing, which causes the JS fieldschangeListenerto not work. -
-
-
If you rely on MySQL, update the repository config to use Connector/J. For MySQL Connector/J 8.x (and later), use
jackrabbit-bundle-mysql8-search.xml, available at/WEB-INF/config/repo-conf/.
Module updates
This section explains module-specific migrations and removals needed to align with 6.4-compatible modules.
-
Remove old compatibility modules (categorization, diff, workflow compatibility, etc.).
-
If you use CKEditor 4 customizations, we recommend you migrate to CKEditor 5. New UI forms require CKEditor 5, which is the default in Magnolia 6.4.
If you must keep CKEditor 4, set
ckEditorVersion: CKEDITOR_4. See rich text field properties for details.How to migrate to CKEditor 5
-
If you use SSO 3.1 or earlier, you must migrate configurations per the model introduced in 4.0.0. This includes compatibility adjustments, mandatory configuration changes, removal of certain classes, optional enhancements like JCR-based fallback login, and considerations for users of the SSO Login Extension module. For specific actions and modifications needed to ensure a smooth upgrade, see Upgrading to SSO 4.0.0. Once these steps are followed, you can upgrade to Magnolia 6.4-compatible version SSO 5.0.
-
If you use Hybrid Assets incubator, the functionality offered by the incubator module is replaced by DAM 5.0 and later. If you used the incubator module, you can optionally use the migration scripts to move your assets to the new implementation.
-
If you use DAM Focal incubator (
dam-focal): In 6.2 and 6.3, DAM Focal was provided as an incubator module. In 6.4, it is promoted to a DX Core extension with a new module nameimage-focal. The Magnolia 6.4-compatible version of this extension is 2.0. To upgrade, uninstall thedam-focalincubator module and update dependency management to use theimage-focalextension version 2.0.x. Existing focal point data is preserved when switching modules. -
If you use Live Copy, Dynamic Forms, or other incubator modules that configured a custom
I18nAuthoringSupportin JCR, you must provide it via your module descriptor from 6.3 on. Deprecated methods have been removed and default implementations consolidated. Configure your class as a regular component mapping instead of an observed JCR component.Example: Configure custom I18nAuthoringSupport in the module descriptor
-
If you use Content Editor module, migrate all v1 definitions to v2 and update multilanguage stories as needed.
-
If you use CTSX DeepL Translator incubator, move the translation provider configuration from
/modules/content-translation-support-ext-deepl/config/Deeplto/modules/content-translation-support-ext-deepl/config/translationProviders/Deepl.
Verification and runtime updates
This section covers starting Magnolia on a staging instance and completing runtime configuration updates. Use logs and the Definitions app to validate changes (roles, sites, REST, scripts) and confirm the system is ready for go-live.
-
Start Magnolia 6.4 in a non-production (staging) environment.
-
Review and update group and role assignments: Magnolia roles and groups changed in 6.3 and later. Magnolia 6.3 introduced a unified role naming convention
<module>-<privilege>(for example,pages-publisher,admincentral-editor). Review and update your user groups and roles to align with the new scheme.Click to see role and group changes
-
Update all site/multisite configurations. Since Magnolia 6.3, multisite definitions work like any other definition type: they’re collected in a conventional registry, support YAML definitions natively, and are displayed in the Definitions app. YAML is now required for new features, and decorations of legacy JCR multisite configurations are no longer supported.
How to update site and multisite configurations
-
Review configuration decorations. All YAML decorations must have
configin the filename. Make sure that your decorating configuration files haveconfigin the filename, for example,/rest-services/decorations/cache/config.contentCaching.yaml. -
Update App Launcher layout.
-
Remove deprecated properties, such as group color, and old group IDs used in automation.
-
Align launcher groups, categories, and app references with the 6.3+ launcher model.
-
Confirm that generated layout nodes or files match current IDs.
-
-
Review app workbench and search configuration. In-app search and filters are now enabled by default in browser subapps. If your custom apps rely on column-level
filterComponentdefinitions or have custom data providers, update them to use the new workbench-level filters structure and update your custom data provider implementation to support the unified search behavior.Click to see details about app workbench and search configuration changes
-
For custom deletion actions in apps: Magnolia 6.4 standardizes deletion dialogs and confirmation steps. For most users, no configuration changes are needed and the existing actions and dialogs are automatically updated. If you have extended default actions, you may have to revalidate behavior. This automatic replacement doesn’t apply to the following apps: Campaign Publisher, Configuration, Cookies, External DAM, JCR, Security, and Tags.
Click to see details of cases requiring configuration updates
-
Update your delivery endpoint definitions. Ensure each endpoint uses the correct
$type(jcrDeliveryEndpoint_v2orjcrPagesDeliveryEndpoint_v2) and note the new defaults for the following properties:depthInReferencedNode = 1andmaxLimit = 100. -
Magnolia 6.4 brings a New UI (based on React) to the forms in content apps, automatically. Most form features are supported in the New UI. If a feature isn’t supported, the form falls back to the Vaadin UI. Because of this, typically all forms work. You don’t need to make any changes to your forms.
To be certain, test your content app forms to ensure they are working correctly. If not, you can force a form to fall back to Vaadin by adding
$type: vaadinFormto the form configuration.If a form is rendered in the Vaadin UI, you can choose whether and when to invest time in adjusting the form definition to display it in the New UI.
For more details, see Migrating to New UI Forms.
-
Use the Definitions app, Problems tab, and logs to audit for unsupported, deprecated, or un-migrated configs/modules.
-
Run a full regression and smoke test according to your test plan (core features, content management, user logins/roles, publishing, custom integrations, REST endpoints, asset upload/download, etc.).
