Synchronizing AEM environment content with the Content Copy tool

Synchronizing content between AEMaaCS environments fails or produces wrong results when the Content Copy tool is used without its dependent configuration paths or against an unsupported flow direction. AEMaaCS separates immutable code from mutable content, so environments can’t be cloned at the repository level — the supported mechanism is path-based copying from a higher environment to a lower one, which overwrites matching JCR paths and merges where they differ. Missing dependent paths such as /conf metadata profiles cause incorrect metadata after a sync, and copying from a lower to a higher environment requires Forward Flow to be enabled. Including the dependent paths, confirming the flow direction and permissions, and validating the target environment produces a reliable, repeatable sync.

Description description

Issue: Content Copy produces wrong metadata or fails between AEM environments

Description

Customers regularly synchronize content from Production to Stage, Dev, or RDE environments for testing or validation. Manual package-based transfers are slow, error-prone, and unsuitable for large DAM repositories. AEMaaCS provides the Content Copy tool to copy allowed mutable JCR paths from a higher environment to a lower one, but you can run into metadata profile mismatches from missing /conf dependencies, automation limits (Content Copy is on-demand by default), flow restrictions (Production to lower only, unless Forward Flow is enabled), and confusion about incremental or delta copying, which isn’t supported.

Environment:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Assets Essentials
  • AEM Managed Services
  • Cloud Manager (Content Sets and Content Copy)

Issue/Symptoms:

  • Content copied to Stage displays an incorrect metadata schema or default values.
  • The Content Copy operation can’t be initiated due to missing permissions (Deployment Manager plus AEM Administrator) or an unavailable environment flow direction.
  • Users can’t copy from a lower to a higher environment, such as Dev to Stage or Dev to Production, unless Forward Flow is explicitly enabled.
  • Automation attempts fail because Content Copy has no built-in scheduler.
  • Package-based syncs take too long or fail because the DAM size exceeds AEM package limits.

Root cause:

AEMaaCS uses a separation of immutable code and mutable content, so environment content can’t be cloned directly at the repository level. The supported mechanism is path-based copying with the Content Copy tool, which overwrites target content for matching JCR paths, merges when paths differ, and works only from higher to lower environments unless Forward Flow is enabled for non-prod flows. Missing dependent paths — such as /conf metadata profiles — cause unexpected behavior after a sync. Content Copy doesn’t support node-type filtering or incremental changes; each run is a full refresh of the defined content set.

How to confirm

  1. Confirm the environment flow direction and your permissions. In Cloud Manager, go to Program → Environments, select both the source and target, and confirm the source is the higher-level environment (Production → Stage → Dev → RDE). Confirm your user holds the Deployment Manager and AEM Administrator roles by opening Cloud Manager → Content Sets and verifying it loads without access-denied errors.

  2. Identify the JCR paths that must sync — pages, DAM assets, tags, experience fragments, and metadata profiles — and include the corresponding /confpaths to avoid metadata or configuration mismatches. The allowed paths are:

    • /content/<b>
    • /conf/</b>
    • /etc/<b>
    • /var/workflow/models/</b>
    • /var/commerce/<b>

Resolution resolution

  1. Create a Content Set in Cloud Manager. Go to Program → Environments → Content Sets → Add Content Set, add all required include paths, and add exclusions if needed. Open the content set details and confirm all paths match your requirements. If the UI blocks a path, confirm it’s one of the allowed paths above.
  2. Initiate the Content Copy process. In Cloud Manager → Content Copy, select the content set and the source and target environments, then start the copy. Cloud Manager transfers content using a snapshot of the source environment’s volume. Production stays fully available, while the target environment enters downtime during the sync. Monitor progress until the status moves from Running to Completed.
  3. . For automation, use the Cloud Manager Content Copy APIs. Call the Content Sets API and Content Flow API via Adobe I/O from your external scheduler to run flows daily, weekly, or monthly. Confirm in the Cloud Manager UI that flows appear with timestamps matching your scheduler. Incremental sync isn’t supported, so a full content copy is the only method. Validate the target environment. Log in to the target AEM author, navigate to sample content paths and assets, and confirm pages, DAM assets, metadata profiles, and experience fragments reflect the source. For DAM metadata, select an asset, open Properties → Metadata, and confirm the custom schema is applied. If metadata is wrong, re-run the content copy including the parent /conf paths. . Sync Stage Author to Stage Publish. After the Production-to-Stage Author copy completes, replicate the content to Stage Publish using standard AEM author-to-publish replication. Confirm content appears on Stage Publish by checking the publisher logs and opening published URLs. If content doesn’t appear, validate the replication agents on Stage Author.

Validation

*1. Log in to the target AEM Author environment and confirm all expected content exists under /content/. 2. Open multiple DAM assets and confirm the metadata schemas are correct and match Production. 3. If automation is used, confirm Cloud Manager Content Flow jobs appear at the expected intervals.### Related reading The Content Copy Tool

recommendation-more-help
experience-cloud-kcs-help-kbarticles