Migration guide

Guide: Moving from AEM to Magnolia DXP

Architecture, cutover strategies, phases and effort: what an AEM to Magnolia migration involves.

Moving from Adobe Experience Manager (AEM) to Magnolia is a structured project with a known shape. Both platforms store content in a Java Content Repository (JCR), so most content can move by script. The real work sits in components, templates and integrations.

This guide covers architecture, concept mapping, cutover strategies, migration phases, the role of AI, and how to estimate effort.

About this guide

About this guide

About this guide

Moving from Adobe Experience Manager (AEM) to Magnolia is a structured project with a known shape. Both platforms store content in a Java Content Repository (JCR), so most content can move by script. The real work sits in components, templates and integrations.

This guide is for teams evaluating Magnolia who want to know what a migration involves before they commit. It covers:

  • how the two platforms compare at an architectural level

  • how AEM concepts translate to Magnolia

  • the cutover strategies you can choose from, and how to pick one

  • the stages of a migration and what happens in each

  • where AI helps, and where it deliberately stays out

  • how to estimate effort, team and timeline

The guide assumes an AEM Sites estate built on the page and component model. If parts of your estate keep content outside the repository, discovery defines a separate extraction path for them.

Common ground

Common ground

What the two platforms have in common

AEM and Magnolia share a Java and JCR foundation, which is what makes a largely automated content migration possible. Concepts your team already knows have a direct counterpart.

Area AEM Magnolia What it means for the migration
Content repository JCR, implemented with Apache Jackrabbit Oak JCR, implemented with Apache Jackrabbit Content is a tree of nodes and properties in both, so scripts can extract, transform and load it
Language and extensibility Java Java Your team's Java skills carry over, and some business logic can be adapted rather than rewritten
Delivery tiers Author and publish tiers Author and public instances Editors and administrators keep a familiar operating model
Page building Pages assembled from components with authoring dialogs Pages assembled from areas and components with authoring dialogs Pages can be mapped component by component
Structured content Content fragments based on content fragment models Content type items based on content type definitions Models map to content types, fragments to items
Headless delivery GraphQL API for content fragments REST Delivery API and GraphQL Headless consumers can be pointed at Magnolia endpoints
Multi-site and multi-language Supported Supported Site and language structures can be carried across

Differences

Differences

Where the platforms differ

Both platforms sit on a JCR, but they model content and rendering differently. These differences are where migration effort goes, and each one has a known mapping.

  • Rendering model. AEM is built on Apache Sling. Each content node names its rendering script through the sling:resourceType property, and HTL is the recommended script language. Magnolia defines templates and components in YAML, usually in light modules, and renders them with FreeMarker or delivers them headless to the front end of your choice.

  • Component inheritance (code and definitions). AEM components can inherit from other components through sling:resourceSuperType chains. A migration resolves each chain and flattens it into one self-contained Magnolia component definition.

  • Content inheritance (live copy). AEM shares and inherits content across site trees through Multi Site Manager (MSM) live copies, where a live copy inherits content from a master branch. Magnolia has an equivalent live-copy model. A migration converts each MSM relationship into a Magnolia live copy, preserving component- and field-level inheritance and the points where authors cancelled it.

  • Dialogs. AEM component dialogs are cq:dialog nodes built with the Granite UI framework. Magnolia dialogs are YAML definitions that sit with the component. Fields map across, but each dialog is generated fresh rather than copied.

  • Page structure. In AEM, a page is a cq:Page node with a jcr:content child that holds its components. In Magnolia, a page is an mgnl:page node with areas that hold components. The transform step reshapes this tree.

  • Runtime and deployment. AEM runs application code as OSGi bundles in an Apache Felix container. Magnolia is deployed as a Java web application, and much template and front-end work can be done in light modules without a Java build.

  • Taxonomy. AEM stores tags as cq:Tag nodes below /content/cq:tags. Magnolia keeps taxonomy in the Categories module or in content tags.

What varies from project to project is how much custom logic sits on top of these structures. That is what discovery measures.

Concept mapping

Concept mapping

How AEM concepts translate to Magnolia

Every AEM artifact in a typical Sites project has a Magnolia target. This mapping drives the migration scripts, so the same input always produces the same output.

AEM source Magnolia target Stored in Magnolia as
Tag (cq:Tag below /content/cq:tags) Category (Categories module) or content tag JCR nodes in the categories or tags workspace
Content fragment model Content type definition YAML in a light module
Content fragment Content type item, edited in a content app JCR node in the content type's workspace
AEM Experience Fragment Magnolia Experience Fragment (XF) Fragments are stored in the website workspace and participate in live-copy features; otherwise they're stored in a dedicated Experience Fragments workspace
Asset (below /content/dam) DAM asset Binary plus mgnl:asset metadata in the DAM workspace
Component (cq:Component, with its dialog and HTL script) Component definition, dialog and template YAML plus FreeMarker (.ftl) in a light module
Page (cq:Page plus jcr:content) Page (mgnl:page) with its area and component tree JCR nodes in the website workspace
MSM live copy (cq:LiveRelationship) Live copy Live-copy markers on JCR nodes in the website workspace
GraphQL endpoint for content fragments REST Delivery API or Magnolia GraphQL Delivery endpoint configuration in the REST or GraphQL module

Some things have no automatic mapping: custom Java services, workflows, and integration code. Discovery lists each one and decides whether to rebuild it, replace it with a Magnolia feature, or retire it.

Cutover strategy

Cutover strategy

Choosing a cutover strategy

Your cutover strategy decides when traffic and authoring move from AEM to Magnolia. The deciding question is simple: can your authors pause content changes for a defined window, and across how much of the estate?

Interactive

How long authors can pause decides the cutover strategy

Click Yes or No to find the strategy that fits your estate

Question 1

Estate-wide freeze possible?

Yes
Your fit

Strategy

Single cutoverOne freeze, one coordinated go-live
No

Question 2

Freeze per tenant possible?

Yes
Your fit

Strategy

Tenant-by-tenant wavesFreeze only the tenant being moved
No
Your fit

Strategy

Dual authoringTime-boxed, changes made in both
Figure 1: Choosing a cutover strategy · 2 questions, 3 outcomes

Single cutover with a controlled content freeze

AEM keeps serving all traffic and remains the authoring platform until the complete estate is ready on Magnolia. Ahead of go-live, authoring in AEM stops. This freeze gives a fixed content baseline.

During the freeze window, the team migrates the final content changes, validates the migrated content and critical functions, and runs agreed go/no-go checks. Traffic and authoring then switch to Magnolia in one coordinated cutover.

  • Choose it when you can accept an estate-wide freeze and prepare all sites, dependencies and editorial teams for one go-live.

  • Strengths: one consistent snapshot, no content sync between platforms, and the simplest technical and operational model.

  • Watch for: any cutover issue affects the full scope. Tested go/no-go criteria, a rollback plan with named owners, and close monitoring after cutover contain that risk.

Tenant-by-tenant migration

The migration runs in waves, one tenant (site, market or business unit) at a time. Each tenant is migrated, validated and cut over on its own. Only the tenant in its cutover window is frozen; the rest keep authoring in AEM as normal.

  • Choose it when an estate-wide freeze isn't acceptable, or one coordinated go-live isn't practical.

  • Strengths: smaller cutovers, lessons from early waves feed later ones, and rollback is limited to one wave.

  • Watch for: AEM and Magnolia run in parallel for a while. Shared content, references, domains and master content can cross tenant boundaries and constrain the wave order. For every tenant, it must be unambiguous which platform is the authoring system.

Dual authoring as a fallback

If no freeze is acceptable at all, even per tenant, both platforms run in parallel and authors make each change in both. This adds editorial effort and room for human error. Keep it to a short, controlled period with written authoring procedures.

Strategies at a glance

Strategy Content freeze Platforms live in parallel Best fit
Single cutover Estate-wide, one window No Estate can be prepared for one coordinated go-live
Tenant-by-tenant Per tenant, during its window Yes, during the waves Tenants are reasonably isolated; freeze must stay local
Dual authoring None Yes, for the whole migration No freeze is possible at any level

Structure first

Structure first

Build the structure first, then move the data

For any estate beyond a handful of pages, migrate components and templates first, then pages. Once the target structure is validated, page migration becomes mainly a data migration task that runs at scale.

Think of it like a database migration: create the schema and relationships, then load the rows.

  1. Migrate component templates and page templates. Platform-wide components come first, since most tenants use them. Tenant-specific components follow.
  2. Validate each component once. Check fields, dialogs, rendering and visual match against the source.
  3. Reuse the validated pattern for every instance of that component across the estate. Special cases and specific requirements still get human review.
  4. Load pages in bulk against the validated structure.

A page-by-page approach makes sense only for a small proof of concept. At scale it creates duplicate effort, because different people end up solving the same component on different pages.

Validation follows the same logic. People don't need to check every page. Template-level verification plus sampling covers the estate, with the sampling depth set by your project's requirements.

Migration stages

Migration stages

The stages of a migration

A migration runs through four phases. The technical work inside the execution phase follows a fixed four-step workflow, repeated for each wave.

Interactive

Four phases, with a four-step workflow repeated in every wave

Click a phase or step to see what happens in it

Inside each wave

Figure 2: Migration phases · 4 phases, 4 steps per wave

Discovery runs once. Execution, validation and go-live repeat for each wave, and hypercare follows the final go-live.

Phase 1: Discovery and planning

The team assesses your AEM environment: architecture, content structure, integrations, customizations and dependencies. Scripts and AI-assisted analysis speed up the inventory; experts interpret it. The result is an agreed scope, wave structure, timeline, roles, cost and success criteria.

Phase 2: Migration execution, in waves

Waves usually start with a pilot market or site. Each later wave builds on what the earlier ones validated. Within each wave, the work follows four steps:

  1. Inventory. List every AEM artifact (components, templates, content fragment models, experience fragments, assets, tags) and map each one to its Magnolia target.
  2. Build. Generate components and page templates in light modules to set the base patterns. Then build content types and content apps.
  3. Migrate. Move content in dependency order: tags, then assets with binaries and metadata, then content fragments, experience fragments, then the full page tree with its components and live-copy relationships.
  4. Verify. Update reference links, reconnect external integrations such as analytics, CRM and PIM, and run QA.

Under the hood, step 3 is an extract, transform, load (ETL) pipeline:

  • Extract content and structure from AEM, using crawler scripts or exported content packages.

  • Transform it with the AEM-to-Magnolia mapping.

  • Load it into Magnolia as Package Manager archives: content is packaged, then uploaded and installed. Large content subtrees are split into multiple packages, with a default limit of 50,000 JCR nodes per package, configurable to suit the target environment. Uploads are chunked to support reliable transfer.

Run the first migration and validation in a lower environment, then promote validated content to higher environments.

Phase 3: Validation and go-live

Each wave goes through QA, functional testing, and content checks by your own authors and editors. Magnolia then runs a pre-go-live check. Nothing goes live until it meets the agreed criteria and is signed off.

Phase 4: Hypercare and handover

After the final go-live, the delivery team stays on for an agreed hypercare period to monitor performance and fix issues. Once things are stable, a structured knowledge transfer equips your team to run Magnolia independently.

Some migrations complete in about six months. Larger estates take more waves, and discovery confirms the timeline for yours.

Role of AI

Role of AI

Where AI is used, and where it is not

The migration itself runs as deterministic, repeatable scripts. AI assists people with analysis and refinement, but it is kept out of the scripts that move your content.

The reason is reproducibility. Migrations get re-run: rehearsals, delta runs before cutover, fixes after a mapping change. Each run must give the same result from the same input. Three designs were weighed:

Design How it works Why it was not enough, or why it was chosen
Pure rules A hand-written rule for every mapping Every custom component needs a new rule, which doesn't scale
Pure AI A model transforms content directly The same input can give different output, so runs can't be reproduced
Deterministic scripts, AI on refinement Scripts do the migration; AI helps people refine the result Chosen: consistent, repeatable runs, with AI where it saves human effort

In practice, the work splits like this:

Task Done by Role of AI
Inventory of the AEM estate Scripts and experts Assists analysis in discovery
Mapping rules from AEM to Magnolia Experts, encoded in scripts None
Generating Magnolia components and templates from AEM source Developers, using a prompt library Drafts code that a developer reviews and validates
Moving tags, assets, content fragments, experience fragments and pages Deterministic scripts None
Refining edge cases and visual match Developers Optional advisor; the developer decides
QA, validation and sign-off People None

Two consequences matter for most evaluations. First, the bulk content load does not pass through an AI model. Second, AI-assisted refinement is optional, so the migration can still run if your policies restrict AI use.

Effort and risk

Effort and risk

What drives effort and risk

In a tool-assisted migration, pages are cheap and components are the work. Pages load in scripted batches once their components are validated, and each validated component is reused for every instance across the estate. So effort follows the number and complexity of your components, not your page count.

You don't have to estimate that from rules of thumb. The migration toolkit includes an estimator that scans your AEM estate before you commit, and discovery turns that scan into an agreed scope, wave plan and budget. Most effort concentrates in a predictable set of places.

The main effort drivers are:

  • the number and variety of templates and components

  • components with custom business logic, and functions like navigation, search, forms, commerce, personalization and authentication

  • tenant-specific variations of shared components, and complex inheritance chains, including MSM live copies

  • the number of links and references to assets, fragments and tags

  • components that depend on information not included in the source export, or on permissions and external systems

  • how closely the migrated site must match the current look and feel

  • the capacity of the target Magnolia environment for bulk loading

Risk How it shows up How to address it
Hidden cross-tenant dependencies Shared or master content blocks a wave, or breaks after one tenant moves Map dependencies in discovery, before setting the wave order
Content changes during migration AEM and Magnolia drift apart Choose a freeze model early; use dual authoring only as a time-boxed fallback
Cutover problems An issue appears at switch-over Tested go/no-go criteria, a rollback plan with named owners, monitoring after cutover
Missing source data A component relies on data outside the export Flag these in the inventory and plan manual or integration work
Limited sample data or access Mappings can't be checked against real content Give the team access to an AEM environment or a representative content export early
Integrations Analytics, CRM or PIM links break Scope, reconnect and test integrations as part of each wave

Checklist

Checklist

Questions to answer before you start

Answering these before discovery shortens it and sharpens the estimate.

  • Can your authors accept a content freeze? Across the whole estate, or only per tenant? For how long?

  • How many page templates and components do you have? How many are platform-wide, and how many tenant-specific?

  • Do you use MSM live copies or experience fragments?

  • Which components carry business logic, or connect to external systems?

  • Which integrations must be reconnected (for example analytics, CRM, PIM, search, commerce)?

  • How isolated are your sites or tenants? Where do they share content, assets, master content or domains?

  • Do headless consumers read content through GraphQL or other APIs today?

  • Can you give the team access to an AEM environment, or a representative content export?

  • What capacity will the target Magnolia environment have for bulk loads?

  • How will you validate: template level plus sampling? Who signs off each wave?

  • Does your organization restrict the use of AI tools in projects?

  • Who delivers: Magnolia, a partner, your own team, or a mixed team?

Support

Support

Getting support

You can run a migration with your own team, with a partner, or with Magnolia. If you want Magnolia to own it, the Magnolia Navigator migration program covers the full journey from discovery to handover.

In Magnolia Navigator, a named delivery lead and a team experienced in both AEM and Magnolia run the four phases in this guide. Scope and investment are agreed in discovery and don't expand without your sign-off. After go-live, hypercare and a structured knowledge transfer prepare your team to run Magnolia; Magnolia Professional Services and SLA-based support remain available after that. Mixed teams with your developers or a partner are possible.

Next step: talk to a migration expert to map out your migration, or see the Magnolia vs Adobe Experience Manager comparison.

Ready to plan your migration?

Book a free, no-obligation discovery call with a migration expert to map out your journey.

Start your migration plan

Legal notes and sources

Adobe and Adobe Experience Manager are either registered trademarks or trademarks of Adobe in the United States and/or other countries. Statements about AEM in this guide are based on Adobe's public documentation, accessed October 27, 2026: