Expand my Community achievements bar.

Submissions are now open for the 2026 Adobe Experience Maker Awards.

What are the steps to migrate AEM 6.t to AEMacs

Avatar

Level 2

What steps we need to follow for migration

2 Replies

Avatar

Level 4

Hi @tanuj05  You can follow below step-by-step plan:

1. Assess current environment (Discovery)

  • Inventory AEM instances (6.0–6.5), custom bundles, third-party libs, ACS AEM Commons usage, workflows, replication agents, Sling/OSGi configs, Dispatcher rules, integrations (SAML, OAuth, external services), active run modes.
  • Measure content size (#nodes, assets volume), custom indexes, corrupted nodes, large binary blobs, and response/slowness hotspots.
  • Run repository health checks (oak-run checks), and identify deprecated API usage. Why: Pinpoints blockers and helps estimate effort and migration approach.

2. Define target architecture & migration strategy

  • Decide approach: lift-and-shift (minimal change) vs. re-architect (cloud-native patterns) vs. hybrid phased migration. For AEMaaCS you typically must modernize code; pure lift-and-shift is rarely possible.
  • Define environments, CDN/Dispatcher approach, authentication, integration endpoints, and rollback strategy.
  • Plan timeline including content freeze windows and performance acceptance criteria.

3. Prepare project structure for AEMaaCS

  • Adopt AEM Project Archetype appropriate for AEMaaCS (cloud-ready archetype).
  • Move code to Git (Cloud Manager requires Git repos): code, dispatcher config, and build definitions.
  • Convert build to Cloud Manager compatible CI/CD (Maven build, Cloud Manager pipeline). Why: AEMaaCS uses Cloud Manager and Git-first deployments.

4. Modernize custom code (cloud-ready)

  • Compile and test code against the target AEM SDK and Java versions.
  • Replace deprecated APIs; use Sling Models, Sling servlets, and OSGi Declarative Services (annotations). Avoid repository-dependent hacks.
  • Remove unsupported patterns: no direct file-system access for repository data, no custom run-modes relying on local file system, avoid use of Jackrabbit internal APIs.
  • Convert custom scheduled jobs to cloud-friendly patterns (Sling Jobs/Quartz alternative).
  • Ensure thread-safety and statelessness where possible.
  • Containerize configuration: externalize environment-specific values to run-mode-independent OSGi configs or use Cloud Manager-provided secrets. Why: AEMaaCS runtime is ephemeral and managed; code must be stateless and API-compliant.

5. Update front-end & editor experience

  • Ensure touch UI compatibility; convert Classic UI components to Touch UI if needed.
  • If using SPA frameworks, adopt AEM SPA Editor patterns and AEM SPA SDK.
  • Optimize component rendering and caching patterns (make components cache-friendly). Why: Editor behavior and front-end integration can differ in cloud runtime.

6. Dispatcher & caching

  • Convert dispatcher configuration to code and place it in the Git repo for Cloud Manager.
  • Review caching rules, TTLs, invalidation, allowedUrlParams, and deny lists; adopt CDN and cache invalidation patterns supported by AEMaaCS. Why: Dispatcher is handled as config in Cloud Manager and must be deterministic and versioned.

7. Content preparation and cleanup

  • Prune unused content and old assets, remove large unused renditions.
  • Standardize content structures and ensure templates/components are compatible.
  • Resolve ACL issues and remove system or suspicious nodes. Why: Less content reduces transfer time and post-migration cleanup.

8. Choose content migration method

  • Small/medium instances: use validated content package approaches (Vault/CRX packages) with careful ordering.
  • Large instances: use Adobe-recommended content transfer tools or custom migration pipelines (e.g., Sling content transfer, ACS Commons bulk move tools, or replication agents to cloud author where available). For repository-level migrations consider oak-run tools or repository dumps only if supported/validated by Adobe.
  • Plan asset migration separately (large-volume assets may use CDN or external storage integration). Why: Tool choice depends on volume and complexity.

9. Testing & quality gates

  • Build CI/CD pipeline in Cloud Manager to run automated functional tests and performance tests.
  • Use local AEM SDK to replicate AEMaaCS behavior during development.
  • Functional testing: authoring flows, publishing, workflows, custom integrations, search, asset processing.
  • Non-functional testing: performance, scalability, security scans. Why: Cloud Manager enforces QA and performance gates for safe deployment.

10. Final cutover & go-live

  • Schedule content freeze and run final delta migration of content and assets.
  • Run smoke tests and user acceptance testing (UAT).
  • Promote code via Cloud Manager pipeline to production.
  • Monitor post-go-live health (Sling health checks, Cloud Manager metrics). Why: Final sync minimizes data drift and ensures a clean start in production.

11. Post-migration stabilization

  • Monitor logs and performance metrics; tune caching and CDN.
  • Validate backups, disaster recovery behavior, and any scheduled jobs.
  • Implement ongoing CI/CD improvements and automate regression tests. Why: Ensure sustained stability and fast rollback if needed.

Key tools & artifacts to use

  • AEM Project Archetype (cloud-ready)
  • AEM Developer SDK (local cloud-like tests)
  • Cloud Manager (pipelines, deployment, QA gates)
  • Dispatcher-as-code in Git
  • AEM Upgrade Toolkit (helps detect deprecated usage)
  • ACS AEM Commons (migration helpers where applicable)
  • Oak-run / repository health tools (for repo checks)
  • Content Transfer options: CRX Packages, ACS tools, custom scripts, or vendor migration tools (size-dependent)

Typical timeline & effort (very approximate)

  • Small sites (low custom code, small content): 4–8 weeks
  • Medium sites: 3–6 months
  • Large or complex enterprise landscapes: 6–12+ months Factors: custom code amount, asset volumes, integrations, business approvals, compliance testing.

Common risks & mitigations

  • Incompatible custom code: run early code scan and remediate.
  • Large asset volume slow migration: pre-cleanse assets, use parallel migration.
  • Unexpected performance regressions: run load tests in pre-prod and tune caching.
  • Integration failovers: validate external endpoints and authentication flows.

Validation checklist before go-live

  • All components compile and pass unit/integration tests
  • OSGi configs externalized and parameterized
  • Dispatcher config in Git and validated
  • Content integrity checks passed
  • Workflows and scheduled jobs validated
  • Performance and security tests passed
  • Rollback plan and backups ready

Avatar

Level 10

hi @tanuj05

I recommend starting your migration journey with the official guide, where you can find the steps and tools to help you migrate your project.

 

The diagram below shows a detailed, granular view of the migration journey:

giuseppebag_0-1759499997767.png