Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »


Content Synchronization module for Magnolia CMS Copyright (C) 2018

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see


This module requires Enterprise Edition of Magnolia. The module can be added as a Maven dependency in the main and webapp POM file:


Additionally a dependency from your main module descriptor is necessary:


Versions and compatibility table

Module VersionMagnolia Version


This module has to be installed on both source and target instance to work. Workspaces as well as nodes can both be synchronised in one go. Configuration is stored in JCR and done in node /modules/content-synchronisation/config/. Please remember that rest role (or any other that is going to be used) should be configured correctly - endpoint: /.rest/content-synchronization/v1* should be allowed for GET/POST.

Logger configuration

To write all module logs to separate log file, please add Log4j config to your project:

<appender name="sync-log-content-synchronization" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="${magnolia.logs.dir}/magnolia-content-synchronization.log"/>
    <param name="MaxFileSize" value="1MB"/>
    <param name="MaxBackupIndex" value="5"/>
    <param name="Append" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p  %d{dd.MM.yyyy HH:mm:ss} %m%n"/>
<appender name="log-content-synchronization" class="org.apache.log4j.AsyncAppender">
    <appender-ref ref="sync-log-content-synchronization"/>
<category name="" additivity="false">
    <appender-ref ref="log-content-synchronization"/>
    <priority value="INFO"/>


The Content Synchronization Module is used to get content from a source instance into a target instance. For example, you can get content from a PRODuction environment sync'ed (i.e. pulled) into a TEST environment.

When having a full DTAP environment in place for a customer and developing nice new things and improving existing functionality, often there is the need for 'actual' content to properly test all kinds of changes. This modules will save time to have all content exported and imported manually.

To start synchronization with the app, make sure all needed workspaces and nodes are configured, enter the credentials of a user that has all needed permissions on both source and target, and then click the button 'START SYNCHRONISATION'.

Synchronization first removes configured workspaces/nodes on the target instance, then pulls content from source instance. After synchronization, all imported content is published. Synchronization works in a PULL manner, so it imports content to the instance where user starts it. It does NOT push anything.

User credentials

The user that you use needs to have the next permissions:

  1. read/write permissions on selected workspaces/nodes of target instance
  2. read permission on selected workspaces/nodes of source instance
  3. and permission to access REST endpoint on source instance
  • No labels