Managing the initial repository state can be hard because it involves setting up code, configuration, content, and more. This is a lot to cope with when we need to complete several tasks in advance, such as creating service users, creating groups, setting up ACL permissions, and pre-creating/updating content. Repoinit (Apache Sling Repository Initialization) is a tool to help configure all of this in one place.
The advantages of Repoinit include:
1. Keeping the environments in sync in terms of initial and basic configuration
2. Speeding up local environment setup for developers
3. Creating resources at startup so they’re built into the logic from the beginning
Enable Repoinit in AEM
To enable Repoinit, OSGi configuration for factory PID org.apache.sling.jcr.repoinit.RepositoryInitializer in one of the project’s configuration folders. Since it’s an OSGi configuration, it is easy to have a set of scripts for author and publish run modes, along with different environments such as Stage and Production. For example, config.author, config.publish, config.author.prod, and config.publish.stage, etc. use a descriptive name for the configuration like org.apache.sling.jcr.repoinit.RepositoryInitializer~init.