Skip to main content


Migrating AEM Content with Groovy Resizeimage 1 1

Migrating content into AEM is nobody’s idea if fun. Creating experiences and authoring content in the powerful AEM authoring experience is great, but identifying, classifying and mapping legacy content? Not so much.
AEM’s repository structure contributes to this challenge. AEM, being based on the Java Content Repository (JCR) offers a massively more flexible content taxonomy than relational-based repositories, however, paraphrasing Uncle Ben, “with great flexibility, comes great mapping efforts”
Web content generally doesn’t deal with massive volumes of content, if your web CMS is the system is record for large amounts of structured content, you should have a discussion about what is the most appropriate system of record. The combination is the complex structure and relatively small volume makes traditional ETL tools such as Pentaho, Kapow or Apache Nifi a poor fit for migrating content to AEM as they are designed for high volume, predictable data.
Wouldn’t it be nice if there were a tool that made it easy to map legacy content into AEM with a simple, flexible and concise templating language? That would be

Austin Powers thinks it's Groovy, Baby Yeah!

I’ve been working on a migration script which is exactly that. The script allows migration developers to define flexible mappings to convert legacy content to AEM pages and components. From there, the migration team uses CSV spreadsheets to manage how content is migrated. The script is designed for Web content migraine and is best utilized for migrating moderate amounts of content which can be exported as XML.
Not surprisingly, the script is written in Groovy and uses Groovy for the transformation of legacy content to AEM. I’ve provided a .commons.groovy file to handle some of the more common mappings such as setting page properties, handling the JCR Namespaces and creating a simple component.

Using the Migration Script

Using the Migration Script is fairly straight forward. I’ve written a quickstart guide to using the script and have recorded a video to walk through using the AEM Migration tool:

Getting Started

The AEM Migration Script is available free on the Perficient Digital GitHub and can be extended and used under the GPLv3 license.

Thoughts on “Migrating AEM Content with Groovy”

  1. Rajendra Jadhav

    Hi Dan

    We are looking to migrate content from dotCMS 5.2.8 to AEM current version. Can you please show us light how we can do it?


  2. Can this tool be used to migrate aem 6.2 content to 6.5? Considering Templates and Workflows are residing in different folder structure.

  3. @Rollins,

    Yes, you could use it to migrate between AEM versions, though honestly, unless you are significantly changing the structure of the content, it would probably be easier to use package / VLT migration and then cleanup with ACS Commons MCPs.

  4. Saravanan Rajendran

    Hi Dan, We are trying to bring in WordPress to AEM, Upon using the code from git repo am getting Could not find matching constructor for:, File). Am I missing anything here?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Dan Klco, Adobe Digital Marketing Technical Director

Dan is a certified Adobe Digital Marketing Technologist, Architect, and Advisor, having led multiple successful digital marketing programs on the Adobe Experience Cloud. He's passionate about solving complex problems and building innovative digital marketing solutions. Dan is a PMC Member of the Apache Sling project, frequent Adobe Beta participant and committer to ACS AEM Commons, allowing a unique insight into the cutting edge of the Adobe Experience Cloud platform.

More from this Author

Follow Us