Acm
AEM Content Manager (ACM) – Permissions & Content Updates as Code
Install / Use
/learn @wttech/AcmREADME
AEM Content Manager (ACM)
<p> <picture> <source srcset="docs/acm-logo-white.svg" media="(prefers-color-scheme: dark)"> <img src="docs/acm-logo-black.svg" alt="VML Logo" height="140"> </picture> </p>Manage permissions & content updates as code.
ACM for Adobe Experience Manager (AEM) streamlines workflows and boosts productivity with an intuitive interface and robust features. It automates bulk content and permission changes, making it ideal for content migration and large-scale permission management. ACM offers an IDE-like experience with code completion, auto-import, and on-the-fly compilation.
It works seamlessly across AEM on-premise, AMS, and AEMaaCS environments.
References
- Talk at AdaptTo 2025 Conference - Can't we just automate this? Permissions & content updates as-a-code with ACM Tool by Krystian Panek & Tomasz Sobczyk
Screenshots
<img src="docs/screenshot-dashboard.png" width="720" alt="ACM Dashboard">Table of Contents
- AEM Content Manager (ACM)
Key Features
All-in-one Solution
ACM is a comprehensive alternative to tools like APM, AECU, AEM Groovy Console, and AC Tool. It leverages the Groovy language, which is familiar to most Java developers, eliminating the need to learn custom YAML syntax or languages/grammars. Enjoy a single, painless tool setup in AEM (Adobe Experience Manager) projects with no hooks and POM updates.
New Approach
Experience a different way of using Groovy scripts. ACM ensures the instance is healthy before scripts decide when to run: once, periodically, or at an exact date and time. Execute scripts in parallel or sequentially, offering unmatched flexibility and control.
Content Management
Effortlessly migrate pages and components between versions. Ensure content integrity and resolve issues with confidence.
Permissions Management
Apply JCR permissions dynamically. Manage permissions seamlessly during site creation, blueprinting, and for live copies, language copies, and other AEM-specific replication scenarios.
Data Imports & Exports
Effortlessly integrate data from external sources into the JCR repository, enhancing content management capabilities. By simplifying data import implementation, ACM allows developers to focus more on developing better components and presenting data effectively, ensuring a user-friendly experience.
Installation
Package Installation
The ready-to-install AEM packages are available on:
There are two ways to install AEM Content Manager on your AEM (Adobe Experience Manager) instances:
- Using the 'all' package:
- Recommended for fresh AEM instances.
- This package will also install Groovy Bundles (groovy and groovy-templates).
- Using the 'minimal' package:
- Recommended for AEM instances that already contain some dependencies shared with other tools.
- This package does not include Groovy bundles, which can be provided by other tools like AEM Easy Content Upgrade (AECU) or AEM Groovy Console.
For AEM On-Premise and AEM Managed Service (AMS) deployments, just install the ACM package using the AEM Package Manager.
:construction: Restart required: Basic ACLs and paths are created via repo-init script after installing the ACM package. A reboot is strongly recommended, as the health checker may block code execution until the restart is complete. :construction:
For AEMaaCS deployments, embed the ACM package as a part of project-specific 'all' package like other vendor packages in the AEM Project Archetype:
Adjust file 'all/pom.xml':
-
Add dependency to all or min package in the dependencies section:
<dependency> <groupId>dev.vml.es</groupId> <artifactId>acm.all</artifactId> <version>${acm.version}</version> <type>zip</type> </dependency> -
Add embedding in filevault-package-maven-plugin configuration:
<embedded> <groupId>dev.vml.es</groupId> <artifactId>acm.all</artifactId> <type>zip</type> <target>/apps/${appId}-vendor-packages/application/install</target> </embedded>Remember to replace
${acm.version}and${appId}with the actual values.Repeat the same for ui.content.example package if you want to install demonstrative ACM scripts to get you started quickly.
Tools Access Configuration
The default settings are defined in the repo init OSGi config, which effectively restrict access to the tool and script execution to administrators only - a recommended practice for production environments.
If you require further customization, you can create your own repo init OSGi config to override or extend the default configuration.
Feature Permissions
ACM supports fine-grained permission control through individual features. This allows you to grant specific capabilities to different user groups without providing full access to ACM tool. For a complete list of available features, see the ACM features directory.
Example: Create groups for full and limited access:
service.ranking=I"100"
scripts=["
set ACL for everyone
deny jcr:read on /apps/cq/core/content/nav/tools/acm
deny jcr:read on /apps/acm
end
create group acm-admins
set ACL for acm-admins
allow jcr:read on /apps/cq/core/content/nav/tools/acm
allow jcr:read on /apps/acm
end
create group acm-script-users
set ACL for acm-script-users
allow jcr:read on /apps/cq/core/content/nav/tools/acm
allow jcr:read on /apps/acm/gui
allow jcr:read on /apps/acm/api
allow jcr:read on /apps/acm/feature/script/list
allow jcr:read on /apps/acm/feature/script/view
allow jcr:read on /apps/acm/feature/execution/view
allow jcr:read on /conf/acm/settings/script
end
"]
Later on when AEM is running, just assign users to the created groups (acm-admins or `acm-sc

