Enabling versioning in content apps

Magnolia versions pages, assets and contacts by default when they are published and unpublished. You can also configure versioning for any other content type.

A fresh Magnolia installation does not have versioned content. Demo content is bootstrapped and immediately marked as published. You see a green publication status icon but no publication has actually happened.

Configuring versioning

You can enable versioning in a content app by triggering the activate/deactivate command chains in the versions catalog instead of the activate/deactivate commands in the default catalog. Here is the process to enable versioning in the Categories app.

In the Configuration app > /modules/categorization/apps/categories/subApps/browser:

  1. Change the activate and deactivate action definitions.
    In the /actions/activate and /deactivate nodes add a catalog property and set the value to versioned. This calls the chained version command configured in the activation module in modules/activation/commands/versioned/activate and /deactivate.

    Enabling version of the Categories app in the Configuration app

  2. Add the Show versions action configuration.

    In the /actions node add the /showVersions configuration as shown below. Alternatively, you can simply extend the configuration in another content app, for example the configuration in the Contacts app configured in /modules/contacts/apps/contacts/subApps/browser/actions/showVersions.

    Adding Showing versions action configuration

  3. Add the Show versions action to the action bar.
    In the /actionbar/sections/category/groups node, add the /versionsActions configuration shown below. Alternatively, you can simply extend the configuration in another content app, for example, the configuration in the Contacts app configured in /modules/contacts/apps/contacts/subApps/browser/actionbar/sections/contact/groups/versionsActions.

    Adding the Show versions action to the action bar

  4. In the Categories app, create a few versions by publishing and unpublishing an item and then execute the Show versions action to open the VERSIONS dialog.

Number of versions

The number of versions you can create depends on the Magnolia edition:

  • In the Community Edition, the number of versions is set to 3 and this is not configurable.

  • In DX Core, the number of versions is unlimited and you can set it in the configuration. By default, 10 versions are stored.

The number of versions is configured in /server/versions:

The number of versions in the Configuration app


  • active enables and disables versioning.

  • maxVersionIndex sets the number of versions to store.

Previous versions are deleted when you change to a smaller number and create a version. It’s OK to change the number. The index won’t be affected until a new version is created. For example, if node A has 10 versions and you change the max version index to 2, you will still see all 10 versions until the next versioning occurs. Once node A is versioned again, all previous 9 versions will be removed.

Version command

Versions are created when info.magnolia.commands.impl.VersionCommand is triggered. A new version of the content is created and added to the version file. VersionCommand provides for standard and recursive versioning, and the addition of a version comment.

Command chains

Command definitions that call versionCommand are configured for the publish and unpublish command chains in the Publishing module.

The command chains are triggered when the Publish, Unpublish and Publish deletion actions are executed in the various apps that use them.

Diff implementation

Version comparison relies on functionality provided by the Diff module. The module uses the daisydiff java library to compare HTML files.

Related topics

DX Core



This widget lets you know where you are on the docs site.

You are currently perusing through the DX Core docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules
6.3 beta

Magnolia 6.3 beta

Magnolia 6.3 is in beta. We are updating docs based on development and feedback. Consider the 6.3 docs currently in a state of progress and not final.

We are working on some 6.3-beta known issues during this phase.