Existing AEM Configuration Solutions (AEM 6.1 and 6.2)

OSGi Configuration

Key features:

  • OSGi configurations can be deployed via OSGi or repository, can be edited via Felix Web Console.
  • OSGi configurations are "self-describing" with metadata (name, type, descriptions, default values) which allow GUIs like Felix Web Console to automatically build nice edit dialogs for them.
  • Good API support to read configurations (esp. with the new features in OSGi 6)
  • Supports lists of configurations (factory configurations)
  • Only supports "system-wide" configurations.
  • Can usually only edited/deployed by system administrator.
  • Configurations can be deployed in repository for specific run modes

AEM ConfMgr (since AEM 6.1)

New feature in AEM 6.1, currently not documented officially besides the AEM 6.1 API Docs.

Key features:

  • Supports "context-specific" configuration and system-wide configuration
  • Supports inheritance of configuration parameter across nested contexts
  • Provides a simple ValueMap and Resource-based API to access configuration values
  • Supports lists of configurations
  • Links content subtrees with configuration nodes via cq:conf property
  • Stores configuration in /conf tree of repository
  • Designed with security in mind (good control of ACLs in /conf)
  • Provides a simple but useful web console plugin for debugging configuration resolving: http://localhost:4502/system/console/conf

Cloud Service Configurations = CSC (since CQ 5.5)

Available in AEM for quite a long time, it's primary usecase is to configure AEM marketing cloud solution integrations or other hosted cloud solutions. But the mechanisms can be used to build custom configuration pages as well, and use the Java API of com.day.cq.wcm.webservicesupport to access this configuration.

Some documentation links:

Key features:

  • Assign to a page cloud configuration of each type. This configuration is inherited automatically to all subpages.
  • Configurations are maintained separate from content in /etc/cloudservices
  • Uses AEM templates and component to define the edit mode of the configuration pages
  • Provides a ValueMap and Resource-based API to access configuration values

wcm.io Configuration

Open Source Library for AEM, support AEM 6.0, 6.1 and 6.2.

Full documentation: http://wcm.io/config/
adaptTo() Talk: http://adapt.to/2015/en/schedule/building-aem-applications-with-wcm-io.html

Key features:

  • Supports "context-specific" configuration and system-wide configuration
  • Supports inheritance of configuration parameter across nested contexts, incl. some control with "locking" inheritance on a certain level
  • Provides a simple ValueMap-based API to access configuration values, and a direct mapping to binding variables in Sightly
  • Links content subtrees with configuration nodes via pluggable Configuration Finder Strategies
  • Storage of configuration is pluggable, storage together with content (in tools/config nodes) or in a separate /conf path is supported out of the box
  • Defines an "application" concept to separate different applications with different configuration strategies within a single AEM instance
  • wcm.io Configurations are "self-describing" with metadata (name, type, descriptions, default values) which allow GUIs to automatically build nice edit dialogs for them.
  • Pluggable Override providers allow to override configuration parameters in certain context/conditions/path e.g. via OSGi config, system environment parameter or request header. Useful for QA/testing purposes.
  • Provides a Configuration Management API for building Configuration Management Tools
  • Provides a AEM Touch UI Configuration Editor for inspecting and editing configuration parameters and control the inheritance