Top Interview Questions
Adobe Experience Manager (AEM) is a comprehensive content management solution for building websites, mobile apps, and forms. It is part of the Adobe Marketing Cloud and is designed to help organizations deliver consistent, personalized digital experiences across channels. AEM combines a web content management system (WCM) with digital asset management (DAM), enabling marketers and developers to work together seamlessly. In today’s digital-first world, where customer experience is a key differentiator, AEM has emerged as a leading platform for enterprises looking to manage content efficiently and deliver high-quality digital experiences.
AEM is a modular and robust platform with several core components:
Sites: This module allows organizations to create, manage, and deliver web content across multiple channels and devices. AEM Sites supports responsive design, multi-site management, and content targeting based on user behavior. It also integrates with Adobe Target for A/B testing and personalization.
Assets (DAM): Digital Asset Management (DAM) is crucial for storing, organizing, and managing digital assets such as images, videos, documents, and audio files. AEM Assets enables marketers to quickly find and reuse content, apply metadata, and automate workflows, reducing time-to-market.
Forms: AEM Forms helps organizations create dynamic forms and documents for customer onboarding, surveys, and transactional processes. It allows for form automation, adaptive forms, and integrations with backend systems to streamline business processes.
Mobile: This module helps in managing mobile apps and experiences, enabling content delivery to smartphones and tablets. It supports mobile-first design, push notifications, and analytics for user engagement.
Communities: AEM Communities is focused on building engaging customer experiences through forums, user-generated content, social media integration, and community management.
Cloud Service: AEM as a Cloud Service offers the benefits of a fully managed, scalable, and always up-to-date platform. It provides continuous deployment, automatic scaling, and enhanced security.
Understanding AEM’s architecture is essential for developers and administrators. AEM is built on Java and uses Apache Sling, OSGi, and Java Content Repository (JCR) technologies:
Apache Sling: Sling is a web framework that maps HTTP request URLs to content resources stored in the JCR repository. It allows for clean URL structures and dynamic content rendering.
OSGi (Open Services Gateway initiative): A modular framework used by AEM to manage bundles (modules) dynamically. It allows developers to update or deploy new features without restarting the system, enabling high flexibility.
Java Content Repository (JCR): AEM uses Apache Jackrabbit as its implementation of JCR. JCR provides a hierarchical storage structure for content, allowing versioning, access control, and search functionality.
Dispatcher: The AEM Dispatcher acts as a caching and load-balancing tool. It helps improve website performance by caching static content and protects AEM instances from security threats.
Author and Publish Instances: AEM uses a dual-instance architecture. The Author instance is where content authors create and manage content, while the Publish instance delivers the content to the end-users. This separation ensures content integrity and scalability.
AEM provides numerous features that make it a preferred CMS for enterprises:
Drag-and-Drop Content Authoring: AEM offers a WYSIWYG (What You See Is What You Get) editor that allows content authors to drag and drop components to create web pages without technical expertise.
Personalization: AEM integrates with Adobe Target and AI-based analytics to deliver personalized experiences to different user segments based on behavior, location, or demographics.
Multi-Site Management: Organizations operating globally can manage multiple sites with different languages and regions from a single AEM instance, ensuring consistency and reducing duplication of effort.
Responsive Design: AEM supports adaptive and responsive design, enabling content to adjust automatically across desktops, tablets, and mobile devices.
SEO and Marketing Tools Integration: AEM integrates with marketing tools like Adobe Analytics, Target, and Campaign, allowing marketers to optimize content for search engines, analyze user behavior, and improve conversion rates.
Workflows and Automation: AEM provides workflows for content approval, publishing, and asset management. Automated workflows streamline content operations, reduce errors, and ensure compliance with business processes.
Versioning and Rollback: With JCR-based versioning, AEM allows users to track content changes and revert to previous versions if needed, providing better content governance.
Security and Access Control: AEM provides granular access control for users and groups, ensuring that sensitive content is protected and only accessible to authorized personnel.
AEM offers numerous advantages for both technical teams and business users:
Enhanced Customer Experience: With personalized content delivery, multi-channel support, and AI-driven recommendations, AEM helps organizations provide superior customer experiences.
Increased Productivity: Content authors and marketers can create and manage content easily without relying heavily on developers, increasing productivity and reducing operational costs.
Scalability: AEM’s cloud-native deployment options allow organizations to scale effortlessly according to traffic and content demands.
Centralized Content Management: By integrating web content, digital assets, and forms in a single platform, AEM provides a centralized hub for content management, simplifying operations.
Faster Time-to-Market: Automated workflows, reusable components, and DAM capabilities allow organizations to deliver new campaigns and content faster.
Analytics and Insights: Integration with Adobe Analytics and AI-powered insights helps organizations make data-driven decisions to optimize content and improve engagement.
AEM is highly customizable and offers flexibility for developers:
Components and Templates: Developers can create reusable components and templates for consistent page layouts, which content authors can then use to create web pages quickly.
Client Libraries: These allow developers to manage and include CSS, JavaScript, and other frontend assets efficiently across the platform.
OSGi Bundles: Custom functionalities can be added via OSGi bundles, which can be deployed without restarting AEM, ensuring smooth updates.
Sling Models and Servlets: Developers use Sling Models to bind data from JCR nodes to Java objects, and servlets handle custom requests, enabling advanced application logic.
Integration with Third-Party Systems: AEM can integrate with CRMs, e-commerce platforms, marketing tools, and social media systems, providing a unified digital ecosystem.
Adobe has shifted focus towards AEM as a Cloud Service, a fully managed, cloud-native SaaS version of AEM. Key benefits include:
Automatic Scaling: Cloud service automatically scales resources based on traffic and usage, eliminating manual infrastructure management.
Continuous Updates: Customers get the latest features and security updates without downtime.
High Availability: Cloud service ensures redundancy and reliability, minimizing downtime and disruption.
Simplified Maintenance: Adobe manages infrastructure, patches, and upgrades, allowing organizations to focus on content and customer experience.
AEM is used across various industries and scenarios:
Retail: Retailers use AEM to deliver personalized shopping experiences, manage product catalogs, and optimize marketing campaigns.
Healthcare: Healthcare organizations leverage AEM to provide patient portals, manage medical content, and ensure compliance with regulatory standards.
Financial Services: Banks and insurance companies use AEM to deliver secure, personalized experiences to clients while managing complex content and workflows.
Media and Publishing: Media companies utilize AEM for managing large volumes of digital assets, publishing content across multiple channels, and monetizing digital experiences.
Government and Education: Public sector organizations use AEM for digital transformation, providing accessible and engaging online services.
While AEM is a powerful platform, it has its challenges:
Complexity: The platform’s rich functionality can be complex for new users and developers, requiring extensive training.
Cost: AEM is a premium solution with high licensing and implementation costs, which may be a barrier for small organizations.
Performance Optimization: Proper configuration of Dispatcher, caching, and content delivery is essential to achieve optimal performance.
Resource-Intensive Development: Developing custom components, integrations, and workflows requires skilled AEM developers, which may increase project timelines.
Answer:
Adobe Experience Manager (AEM) is a comprehensive content management solution for building websites, mobile apps, and forms. It is part of Adobe Marketing Cloud and allows organizations to manage digital content and assets efficiently. AEM helps in delivering personalized experiences across multiple channels.
Answer:
AEM consists of several components:
CRX Repository – Stores content in a hierarchical structure (nodes and properties).
OSGi Framework – Handles modular application development with bundles and services.
Sling Framework – Maps HTTP requests to content resources using JCR nodes.
Dispatcher – Caching and load-balancing tool for AEM.
Author Instance – Used by content authors to create and manage content.
Publish Instance – Serves content to end users after replication.
Answer:
| Feature | Author Instance | Publish Instance |
|---|---|---|
| Purpose | Create and manage content | Serve content to end users |
| Access | Restricted to content authors | Accessible by public users |
| Replication | Content is replicated to publish instance | Does not replicate content further |
| Editing | Yes, content editing is allowed | No, read-only content |
Answer:
JCR (Java Content Repository) is a specification for a hierarchical content storage system. In AEM, the content is stored in CRX, which implements JCR. It stores content as nodes and properties, allowing structured, versioned, and searchable storage.
Answer:
Apache Sling is a web framework that maps HTTP requests to content stored in JCR. It is responsible for rendering content based on request URLs.
It uses resource resolution to map URL paths to nodes in the repository.
Supports dynamic content rendering using Sling Models and HTL (Sightly) templates.
Answer:
Dispatcher is AEM’s caching and load-balancing tool. It helps improve performance and security.
Caching: Stores static versions of pages to reduce server load.
Security: Protects AEM instances by filtering HTTP requests.
Load balancing: Can distribute requests across multiple publish instances.
Answer:
A component is a reusable building block for creating pages. Components can be:
Static – HTML content only.
Dynamic – Includes logic to fetch data or render dynamically.
Components are created under /apps/project/components and are used by authors in templates.
Answer:
Templates define the structure and layout of a page.
There are Static Templates and Editable Templates.
Editable Templates allow content authors to create new pages with a predefined layout and components.
Templates are stored under /conf or /apps/project/templates.
Answer:
A page is a node in the JCR repository that represents a URL and contains content.
Created from a template.
Includes components which display the content.
Stored under /content in the repository.
Answer:
A workflow is a sequence of steps to automate content management processes, such as approval, translation, or publishing.
Built using AEM Workflow Engine.
Example: Create → Review → Approve → Publish.
Answer:
OSGi (Open Services Gateway initiative) bundles are modular components that can be dynamically installed, started, stopped, or updated in AEM.
Bundles contain Java classes, resources, and configurations.
Managed using the OSGi Console (/system/console/bundles).
Answer:
| Feature | Node | Property |
|---|---|---|
| Definition | Represents an object in JCR | Represents an attribute of a node |
| Storage | Can contain child nodes | Stores values (String, Boolean, etc.) |
| Example | /content/mywebsite |
jcr:title = "Home Page" |
Answer:
HTL (HTML Template Language) is a server-side templating language in AEM that separates logic from markup.
Replaced JSP for better security and maintainability.
Provides easy access to Sling Models and content properties.
Answer:
Sling Model is a Java class that maps content nodes in JCR to Java objects.
Annotated with @Model and @Inject.
Provides clean separation of backend logic and front-end rendering.
Answer:
| Feature | DAM (Digital Asset Manager) | CRX (Content Repository) |
|---|---|---|
| Purpose | Stores images, videos, PDFs, and assets | Stores website content as nodes |
| Access | Accessible to authors for managing assets | Accessed by AEM internally and developers |
| Example | /content/dam/project |
/content/project |
Answer:
Replication is the process of moving content from the Author instance to the Publish instance.
Types: Activate (publish) and Deactivate (unpublish).
Managed via Replication Agents configured in AEM.
Answer:
Go to Sites in the Author instance.
Click Create → Page.
Choose a template.
Enter page title and name.
Click Create and then Open.
Answer:
Client Libraries (clientlibs) are used to manage CSS, JS, and other frontend resources.
Stored under /apps/project/clientlibs.
Can be included in components using data-sly-call or cq:includeClientLib.
Allows concatenation and minification of resources.
Answer:
| Feature | Static Templates | Editable Templates |
|---|---|---|
| Flexibility | Cannot be modified by authors | Can be modified by authors using Template Editor |
| Location | /apps/project/templates |
/conf/project/settings/wcm/templates |
| Components | Predefined | Can add or remove allowed components |
Answer:
Understand AEM architecture: Author, Publish, Dispatcher, CRX, OSGi, Sling.
Know basic JCR concepts: nodes, properties, and paths.
Be familiar with components, templates, and client libraries.
Practice simple HTL and Sling Models.
Learn how replication and workflows work.
Read Adobe documentation to understand latest features.
Answer:
| Instance | Purpose | Access | Key Function |
|---|---|---|---|
| Author | Content creation and management | Restricted to authors | Create, edit, preview content |
| Publish | Content delivery to end-users | Public | Serves content; read-only |
| Dispatcher | Caching and load balancing | Public | Caches pages, protects AEM from attacks, distributes load |
Answer:
Templates define the structure and layout of a page. They are important because:
Ensure consistency across pages.
Control which components can be added.
Enable editable templates, giving content authors flexibility.
Stored under /conf/project/settings/wcm/templates.
Answer:
A typical AEM project structure follows:
/apps -> Contains components, templates, clientlibs
/content -> Stores pages and content nodes
/conf -> Editable template configuration
/libs -> Out-of-the-box AEM components
/etc -> Legacy configurations (older versions)
/apps – For custom development.
/content – For website content.
/conf – For editable template settings.
Answer:
Component policies are rules applied to editable templates that define:
Which components can be added in a layout.
Default styling or behavior for a component.
Helps enforce design and layout standards for content authors.
Answer:
A Paragraph System (parsys) is a container in AEM components that allows authors to add child components dynamically.
Example: Add text, image, or video blocks on a page.
In editable templates, layout containers often replace the older parsys.
Answer:
DAM is used to manage digital assets like images, videos, PDFs. Features include:
Metadata management – Add tags, descriptions.
Versioning – Keep track of changes.
Renditions – Generate different sizes of images automatically.
Search – Quickly locate assets.
Answer:
AEM Workflow automates content processes. Steps can include:
Creation → Author submits content.
Review → Reviewer approves or requests changes.
Activation → Content is published.
Can be visualized in Workflow Model and configured using Workflow Console.
Answer:
In Sling, everything is a resource. A resource represents a node in the JCR repository and can be rendered using a script.
Mapped automatically based on URL.
Example: /content/mysite/en/home is a resource representing a page node.
Answer:
Static Component – Renders static content (e.g., header, footer).
Dynamic Component – Fetches data from backend or user input.
Container Component – Holds other components (e.g., parsys).
Answer:
Clientlibs manage CSS, JS, and frontend resources. Features:
Store under /apps/project/clientlibs.
Can be included in components using <cq:includeClientLib> or data-sly-call.
Supports categories, minification, and dependencies.
Answer:
| Feature | Replication | Activation |
|---|---|---|
| Meaning | Moving content from Author → Publish | Publishing content |
| Process | Can be manual or automatic | Done via replication agents |
| Purpose | Synchronize content | Make content available for end users |
Answer:
Dispatcher Flush is used to invalidate cached pages when content is updated.
Ensures that the latest content is served to end users.
Can be triggered automatically on page activation.
Answer:
OSGi Services are Java classes registered in the OSGi container to provide functionality across bundles.
Annotated with @Component and @Service.
Can be injected into Sling Models or other services.
Answer:
Tags are metadata labels used to classify and organize content.
Stored under /etc/tags.
Can be used for search, navigation, and content targeting.
Answer:
| Feature | Page Component | Template Component |
|---|---|---|
| Purpose | Used on pages for content | Defines structure/layout in templates |
| Flexibility | Can be added dynamically | Usually fixed on template |
| Example | Text, Image | Header, Footer |
Answer:
Check error.log and request.log under /crx-quickstart/logs.
Use Felix Console (/system/console) to check OSGi bundles.
Use CRXDE Lite to inspect nodes and properties.
Use Developer Tools (browser) to inspect network and scripts.
Answer:
Component Dialog allows authors to edit content for a component.
Configured using cq:dialog node under the component.
Includes fields like textfields, checkboxes, and dropdowns.
Types of dialogs: Classic UI and Touch UI (Coral UI).
Answer:
ContextHub stores user-specific information for personalization.
Tracks user actions, segments, and preferences.
Can be used to deliver personalized content based on behavior.
Answer:
Replication agents control how content is replicated from Author → Publish.
Configured under /etc/replication/agents.
Types: Default, Flush, Deactivate, Activate.
Supports synchronous and asynchronous replication.
Answer:
| Feature | In-place Site | Blueprint Site |
|---|---|---|
| Definition | Single website managed on one instance | Master site with derived sites |
| Use-case | Simple content structure | Multi-site management |
| Update | Direct updates | Changes in blueprint propagate to live sites |
Answer:
Every node in JCR can have version history.
Versions are stored under /jcr:system/jcr:versionStorage.
Allows rollback to previous versions.
Useful for content recovery and auditing.
Answer:
Experience Fragments are reusable sections of a page like banners, promotions, or footers.
Can be used across multiple pages.
Supports multi-channel delivery (web, mobile, email).
Answer:
Approval Workflow – Content review and approval.
Translation Workflow – Automates content translation.
Update Workflow – Propagates changes to multiple pages.
Custom Workflow – Defined by developers using workflow models.
Answer:
MSM allows content reuse across multiple sites.
Blueprint sites serve as master content.
Live copies inherit content from blueprints.
Supports automatic rollout of changes.
Answer:
| Feature | Sling Servlet | Sling Model |
|---|---|---|
| Purpose | Handles HTTP requests | Maps content nodes to Java objects |
| Trigger | URL path | Component or resource |
| Example | Custom API endpoints | Fetching component properties |
Answer:
| Feature | Classic UI | Touch UI |
|---|---|---|
| Interface | Older UI, based on ExtJS | Modern UI, based on Coral UI |
| Components | Uses cq:dialog |
Uses cq:dialog (Touch UI compatible) |
| Editing | Limited drag-and-drop | Responsive, better authoring experience |
| Availability | Deprecated in AEM 6.3+ | Recommended for all versions 6.3+ |
Answer:
Content Fragments are structured content pieces (text, images) not tied to a page.
Can be reused across pages and channels.
Supports structured templates for consistency.
Ideal for headless CMS scenarios where content is delivered via APIs.
Answer:
Dispatcher caches static pages and assets to reduce server load:
Cache locations are configured in dispatcher.any.
Includes ignore rules to prevent caching dynamic pages.
Supports cache invalidation via Dispatcher Flush on content update.
Helps improve performance and security.
Answer:
Create a Maven module for the bundle.
Add OSGi annotations (@Component, @Service).
Build the bundle using Maven (mvn clean install).
Deploy the .jar file to /apps or /install folder.
Verify in OSGi Console (/system/console/bundles).
Answer:
| Feature | Resource Resolver | Request Dispatcher |
|---|---|---|
| Purpose | Maps paths/URLs to resources in JCR | Forwards requests to scripts or servlets |
| Usage | Resolving content nodes | Rendering or including components |
| Example | /content/mysite/en/home → Page resource |
Forward request to /apps/mysite/components/page.jsp |
Answer:
User Groups & Permissions – Controlled under User Administration.
ACLs – Define read/write access on nodes.
Dispatcher Security – Filters malicious requests.
SSL/HTTPS – For secure connections.
Content Validation – Prevents XSS or script injection in dialogs.
Answer:
| Feature | Node | Node Type |
|---|---|---|
| Definition | Instance of content (e.g., a page) | Schema defining structure for nodes |
| Example | /content/mysite/en/home |
cq:Page |
| Purpose | Holds content and properties | Defines allowed properties and child nodes |
Answer:
Targeting allows content personalization based on:
Audience segmentation (e.g., demographics, location).
ContextHub data (user behavior).
Supports A/B testing for optimizing content.
Answer:
Supports multiple languages via language copies.
Translation can be automated using Translation Workflow.
i18n dictionaries store localized strings (/apps/project/i18n).
Content is replicated across multiple sites for different locales.
Answer:
| Feature | Experience Fragment | Content Fragment |
|---|---|---|
| Definition | Reusable page sections with layout and components | Structured content without layout |
| Use Case | Multi-channel promotions, banners | Headless CMS, API-driven content |
| Stored | /content/experience-fragments |
/content/dam/content-fragments |
Answer:
Original images are uploaded to DAM.
AEM generates renditions automatically (thumbnail, web, mobile).
Renditions can be customized via workflow or DAM configuration.
Use DAM API to programmatically fetch different renditions.
Answer:
CQ5 is the older version of Adobe CQ.
AEM (Adobe Experience Manager) is the current version, with enhanced features:
Touch UI support
Editable templates
ContextHub for personalization
Better integration with Adobe Marketing Cloud
Answer:
| Feature | Component | Template | Page |
|---|---|---|---|
| Purpose | Reusable building block | Page structure/layout | Actual content instance |
| Example | Text, Image, Banner | HomePage Template | /content/mysite/en/home |
| Authoring | Can be added to page | Chosen while creating page | Created by author using template |
Answer:
Blueprints are master templates for multi-site management:
Changes in blueprint can be rolled out to live copies.
Useful for multi-regional or multi-language websites.
Helps maintain consistency across multiple sites.
Answer:
Use Live Copy feature in AEM.
Create a live copy from a blueprint site.
Updates in blueprint can be rolled out manually or automatically to live copies.
Answer:
Dispatcher filters control which requests are allowed or denied:
Configured in dispatcher.any file.
Example: Block URLs containing /bin/ or /system/.
Helps secure AEM instances from unwanted requests.
Answer:
Overlaying allows customizing out-of-the-box (OOTB) components without modifying the original.
Achieved by creating a component in /apps with the same path as /libs.
Allows safe upgrades of AEM while keeping customizations intact.
Answer:
Managed via User Admin Console (/useradmin).
Create Users and Groups.
Assign permissions on nodes (read, modify, delete).
Supports replication and ACLs for content security.
Answer:
Launches allow previewing future content before going live.
Create a launch for a page or site.
Editors can make changes without affecting the current live version.
Once finalized, launch is activated to the publish instance.
Answer:
Use Targeting + ContextHub.
Create segments (e.g., logged-in users, location-based).
Display different components/content for different audiences.
Supports A/B testing for performance optimization.
Answer:
AEM architecture has three main layers:
CRX (Content Repository) – A Java Content Repository (JCR) storing all content as nodes and properties. Supports versioning, access control, and indexing.
Sling Framework – Maps HTTP requests to JCR content nodes and renders them via scripts (HTL, JSP).
OSGi Framework – Modular framework for services and bundles; supports dynamic deployment and hot-swapping of Java components.
Additional components:
Dispatcher – Caching, load balancing, and security.
Author Instance – For content creation.
Publish Instance – Serves content to users.
Replication Agents – Handles content replication Author → Publish.
Answer:
| Feature | Previous Versions | AEM 6.x |
|---|---|---|
| UI | Classic UI | Touch UI (Coral UI) |
| Templates | Static Templates | Editable Templates |
| Clientlibs | Basic support | Category-based clientlibs with minification |
| Personalization | Limited | ContextHub-based targeting & personalization |
| Multi-site Management | Manual | Blueprint & Live Copy features |
Answer:
Steps:
Create a Java class under a bundle in /core.
Annotate with @Model(adaptables = Resource.class) or SlingHttpServletRequest.class.
Use @Inject to fetch properties from the JCR node.
Use @Exporter to expose as JSON if needed.
Map it in HTL using data-sly-use.
Example:
@Model(adaptables = Resource.class)
public class TitleModel {
@Inject
private String title;
public String getTitle() {
return title;
}
}
Answer:
Editable Templates allow authors to:
Drag & drop allowed components.
Configure policies (default styling, allowed components).
Create new pages dynamically.
Static Templates are predefined and cannot be modified by authors.
Editable templates improve authoring flexibility and are Touch UI compatible.
Answer:
A Workflow automates content approval, translation, and publishing.
Common steps:
Participant Step – Manual approval.
Process Step – Automatic tasks like content activation.
Notification Step – Sends emails.
Common workflows:
Content Approval Workflow
Translation Workflow
Custom automated publishing workflows
Answer:
Dispatcher Caching: Cache static pages and assets.
Content Fragmentation: Use fragments to reduce dynamic rendering.
OSGi Bundle Optimization: Disable unused bundles.
Lazy Loading: Images and components.
Indexing: Create Oak indexes for faster queries.
Replication Strategy: Avoid unnecessary replication.
Answer:
Dispatcher is a caching and load-balancing tool.
Caching: Store static content in a filesystem.
Cache Invalidation: Configure /invalidate rules for pages on publish.
Filters: Block unwanted HTTP requests (e.g., /bin/, /crx/).
Flush Agents: Triggered on content activation.
Example Filter in dispatcher.any:
/filter {
/0001 { /type "deny" /url "/bin/*" }
/0002 { /type "allow" /url "/*" }
}
Answer:
CRXDE Lite is a web-based development environment for AEM.
Provides access to nodes, properties, components, templates, and clientlibs.
Used for:
Creating nodes and components
Editing templates
Inspecting repository content
Answer:
Clientlibs manage JS, CSS, and frontend resources.
Stored under /apps/project/clientlibs.
Include using cq:includeClientLib in components.
Dependencies: Use dependencies property in .content.xml to ensure proper loading order.
Answer:
Overlaying allows customization of OOTB components without modifying /libs.
Achieved by creating a component in /apps with the same structure as /libs.
Benefits:
Safe for upgrades
Keeps customizations isolated
Avoids breaking OOTB functionality
Answer:
MSM allows content reuse across multiple sites.
Blueprint Site: Master site used for propagation.
Live Copy: Derived site that inherits content.
Rollout Configurations: Automatically or manually update live copies when blueprint changes.
Answer:
| Feature | Experience Fragment | Content Fragment |
|---|---|---|
| Definition | Page sections with layout/components | Structured content without layout |
| Use Case | Multi-channel content (web, email) | Headless CMS & API-driven content |
| Storage | /content/experience-fragments |
/content/dam/content-fragments |
Answer:
Dispatcher Flush: Invalidates cached pages on publish.
Invalidate Rules: Specify which pages, assets, or paths should be removed from cache.
Flush Agent: Runs automatically on page activation.
Best Practices:
Avoid flushing entire cache unnecessarily
Flush only updated content for performance
Answer:
Oak is the backend repository for AEM 6.x.
Oak Indexes: Improve performance of queries (XPath or JCR-SQL2).
Types:
Property Index – Search based on property value
Node Type Index – Search based on node type
Without indexes, queries on large repositories are slow.
Answer:
Use ContextHub to track user behavior.
Define audience segments (location, device, logged-in status).
Target content or components based on segments.
Supports A/B testing to measure content effectiveness.
Answer:
Access Felix Console: /system/console/bundles.
Check bundle status (Active, Resolved, Installed).
Inspect component configuration in /system/console/configMgr.
Enable log levels via Apache Sling Logging for debugging.
Answer:
Every node can have versions stored in /jcr:system/jcr:versionStorage.
Authors can rollback to previous versions using CRXDE Lite or page properties.
Supports workflow versioning for approvals and audits.
Answer:
Block /bin, /crx, /system URLs using filter rules.
Limit access to author instance via Dispatcher.
Enable HTTPS/SSL for secure traffic.
Configure caching for static content only.
Answer:
Create a Workflow Model in /etc/workflow/models.
Add Steps: Process Step, Participant Step, Notify Step.
Implement Java Workflow Process for custom logic.
Associate workflow with pages or assets.
Test and deploy.
Answer:
CQ5 – Legacy version with Classic UI and static templates.
AEM 6.x – Modern version with Touch UI, editable templates, ContextHub personalization, improved DAM, Oak repository, and multi-site management.
Answer:
Use indexes to speed up queries.
Limit scope using isDescendantNode or path() filters.
Avoid fetching unnecessary properties.
Use pagination for large results.
Answer:
Use Content Fragments and Experience Fragments.
Expose content via Sling Models Exporter (@Exporter) in JSON format.
Frontend apps consume content through REST API.
Supports multi-channel delivery (web, mobile, apps).
Answer:
| Issue | Resolution |
|---|---|
| Dispatcher caching not updated | Check flush agent, filter rules, and cache path |
| OSGi bundle not starting | Check dependencies, bundle state, logs |
| Slow page rendering | Enable Oak indexes, check query performance, optimize components |
| Broken clientlibs | Check category names, dependencies, and inclusion |
Answer:
Author: Create/edit content, not public.
Publish: Serves content to end-users.
Preview: Allows authors to see how content will appear on publish instance.
Answer:
Create Live Copy from blueprint site.
Configure rollout configuration (auto/manual).
Activate pages in blueprint → Live Copies updated automatically.
Useful for multi-site content synchronization.
Answer:
ContextHub is a client-side framework for storing user-specific data for personalization.
Allows authors to define audience segments based on:
Device type
Location
User behavior
Login status
Supports dynamic content rendering via ContextHub profiles and targeted components.
Example: Displaying a personalized banner for logged-in users.
Answer:
Identify target segments (e.g., new visitors, returning users).
Configure ContextHub to capture user behavior.
Use Targeting Component in a page.
Assign content variations to segments.
Test using Preview Mode and analyze results using Adobe Target/Audience Manager.
Answer:
Launches allow authors to preview and edit future content before going live.
Steps to use:
Create a launch from the original page/site.
Make required changes in the launch copy.
Preview and test the launch content.
Activate the launch to publish changes.
Useful for campaigns, seasonal content, or coordinated updates.
Answer:
Dispatcher caches pages to improve performance.
Invalidate Rules: Specify which pages or assets are removed from cache after updates.
Flush Agent: Configured in Author instance to trigger automatic cache invalidation.
Best practices:
Flush only changed content
Avoid full cache flush unless necessary
Use /replication/agents.publish configuration for automatic flush
Answer:
MSM enables content reuse across multiple sites.
Key concepts:
Blueprint Site: Master site with content to propagate.
Live Copy: Derived site inheriting content from blueprint.
Rollout Configuration: Determines how updates in blueprint propagate.
Synchronization: Ensures live copies reflect latest changes from blueprint.
Answer:
Access OSGi Web Console: /system/console/configMgr
Create configurations for services like:
Workflow processes
Replication agents
Custom bundles
Configurations can be:
Factory Configurations: Multiple instances of a service
Singleton Configurations: Single instance
Supports dynamic updates without restarting bundles
Answer:
Oak indexes optimize queries in AEM 6.x repositories.
Types of indexes:
Property Index: Search by property values
Node Type Index: Search by node types
Full-text Index: Search by content text
Best practices:
Limit query scope using isDescendantNode
Avoid querying large unindexed repositories
Use Lucene or Elastic indexes for full-text search
Answer:
XF are reusable sections of a page that can include components, text, and images.
Stored under /content/experience-fragments.
Benefits:
Reusable across multiple pages or channels
Supports multi-channel marketing (web, mobile, email)
Reduces content duplication
Answer:
Headless CMS separates content management from presentation layer.
Implementation in AEM:
Use Content Fragments for structured content
Expose content via Sling Model Exporter (@Exporter)
Deliver content as JSON for web, mobile, or SPA frameworks
Advantages: Multi-channel content reuse, decoupled front-end flexibility
Answer:
Workflows automate content processes.
Custom Workflow Steps:
Implement WorkflowProcess interface in Java
Annotate as @Component to register as OSGi service
Configure in Workflow Model as a process step
Example: Auto-translation, custom validation, or asset processing
Answer:
DAM stores original assets under /content/dam.
AEM automatically generates renditions (thumbnails, web, mobile).
Custom renditions can be created via:
Workflow Process
DAM Update Asset Process
Programmatically retrieve renditions using Asset API.
Answer:
Use Dispatcher Filters to block unauthorized paths: /bin/, /crx/, /system/.
Restrict Author instance access from outside network.
Enable HTTPS/SSL for secure communication.
Regularly audit Dispatcher logs for suspicious requests.
Answer:
Live Copy: A copy of content inherited from a blueprint.
Rollout Configuration: Determines how changes propagate from blueprint → live copy.
Rollout Types:
Automatic: Updates propagate immediately
Manual: Author triggers updates
Use case: Multi-lingual sites, regional sites, or campaigns.
Answer:
Segments define audience categories based on behavior, location, or device.
Use Targeted Components to display specific content for each segment.
Supports A/B testing to analyze effectiveness of personalized content.
Answer:
Use Dispatcher caching for static content
Optimize Clientlibs using concatenation and minification
Reduce component complexity and server-side rendering
Use lazy loading for images and videos
Implement Oak Indexes for faster queries
Avoid unnecessary replication and workflow triggers
Answer:
Check bundle status in /system/console/bundles.
Verify dependencies are active and satisfied.
Review logs in /crx-quickstart/logs/error.log.
Use Felix Console to inspect configurations.
Restart bundles if necessary or check bundle activation order.
Answer:
Tags categorize and classify content for search, navigation, or targeting.
Stored under /etc/tags.
Benefits:
Easier content discovery
Supports personalization
Can be hierarchical (e.g., Category > Subcategory)
Answer:
Create component structure under /apps/project/components.
Add cq:dialog for author input.
Add HTL script (.html) to render content.
Optionally add Sling Model for business logic.
Include Clientlibs for styling or JS.
Answer:
| Feature | Editable Template | Static Template |
|---|---|---|
| Flexibility | Authors can add/remove components | Fixed layout/components |
| Storage | /conf |
/apps |
| Recommended | For modern Touch UI projects | Legacy or simple projects |
| Policy Support | Yes (styling, allowed components) | No |
Answer:
Use Content Fragments with Sling Model Exporter
Expose JSON endpoints for frontend consumption
Supports SPA frameworks like React, Angular, Vue
Allows multi-channel content reuse
Answer:
Activate Agent: Publishes content from Author to Publish instance.
Deactivate Agent: Unpublishes content from Publish instance.
Flush Agent: Clears cached pages in Dispatcher after content changes.
Custom Agents: Can be implemented for specialized replication tasks.
Each agent can be configured for synchronous or asynchronous replication. Best practices:
Use flush agent for automatic Dispatcher cache invalidation.
Keep author instance secure and restrict replication access.
Answer:
Overlaying allows developers to customize OOTB components without modifying /libs.
Steps:
Copy the component from /libs to /apps while keeping the same structure.
Make required customizations.
Benefits:
Safe upgrades
Maintainable customizations
Avoid conflicts with OOTB updates
Answer:
Blueprint Sites: Master sites with content and templates.
Live Copies: Derived sites inheriting content from the blueprint.
Rollout Configurations: Define how changes propagate (manual or automatic).
Use Cases: Regional or multilingual sites, campaigns, or brand-specific microsites.
Answer:
ContextHub stores user-specific data on the client side.
Tracks user actions, behavior, location, and preferences.
Works with Targeted Components to deliver personalized content.
Supports A/B testing, enhancing marketing campaigns.
Answer:
| Feature | Experience Fragment | Content Fragment |
|---|---|---|
| Definition | Reusable sections of a page including components | Structured content without layout |
| Storage | /content/experience-fragments |
/content/dam/content-fragments |
| Use Case | Multi-channel campaigns | Headless CMS, APIs |
| Personalization | Can be personalized | Typically static content |
Answer:
Dispatcher Caching: Cache static content and invalidate selectively.
OSGi Bundle Optimization: Disable unused bundles.
Oak Indexes: Add property or node type indexes to optimize queries.
Clientlibs Optimization: Combine, minify, and use dependencies.
Lazy Loading: For images, videos, and heavy components.
Workflow Optimization: Avoid unnecessary workflow triggers.
Content Fragmentation: Reuse content instead of duplicating.
Answer:
Create a Java class implementing WorkflowProcess.
Annotate it as an OSGi component (@Component).
Define logic inside the execute method.
Add the step to the workflow model in Workflow console.
Example: Sending automated email after content approval.
Answer:
Use Asset API (com.day.cq.dam.api.Asset) to access original and renditions.
Retrieve renditions by name (e.g., cq5dam.thumbnail.319.319.png).
Custom renditions can be generated via Workflow Process Step.
Answer:
Check dispatcher.any file for correct filter rules.
Verify Flush Agents are configured correctly.
Ensure cache directory permissions are correct.
Check if Dispatcher invalidation URL is reachable from Author.
Use logs (dispatcher.log) to identify caching issues.
Answer:
Editable Templates allow authors to create pages dynamically.
Policies: Define:
Allowed components for each section
Default styling or behavior
Benefits: Flexible authoring, Touch UI compatible, reduces dependency on developers.
Answer:
Oak is the backend repository for AEM 6.x.
Index Types: Property Index, Node Type Index, Full-text Index.
Queries on unindexed nodes are slow.
Best practices:
Define indexes for frequently queried properties
Avoid expensive queries on large datasets
Use Lucene/Elastic for full-text search
Answer:
Create Content Fragments or Experience Fragments.
Use Sling Model Exporter to expose JSON endpoints.
Consume JSON from frontend SPA (React, Angular, Vue).
Supports multi-channel delivery (web, mobile, IoT).
Answer:
Every node has version history under /jcr:system/jcr:versionStorage.
Authors can rollback content to previous versions.
Useful for:
Content recovery
Audit purposes
Undoing unintended changes
Answer:
User & Group Management: Assign permissions to nodes.
ACLs: Control read/write/delete access.
Dispatcher Filters: Block unauthorized URLs.
HTTPS/SSL: Secure communication.
Content Validation: Prevent XSS or script injection in dialogs.
Answer:
Use ContextHub to define audience segments.
Use Targeted Components on pages to show personalized content.
Segments can be based on:
Device type
Location
Behavior
Login status
Supports A/B testing to improve marketing effectiveness.
Answer:
Use Felix Console (/system/console/bundles) to check bundle status.
Verify dependencies are satisfied.
Check error.log for exceptions.
Use Apache Sling Logging Configuration to set log levels.
Restart bundles if necessary, check activation order.
Answer:
Use Live Copy and MSM for language versions.
Use i18n dictionaries to manage translated text.
Translation Workflow automates translation requests.
Content is synchronized across different locales.
Answer:
Clientlibs manage CSS, JS, and frontend resources.
Use categories to define dependencies.
Minify and combine resources for better performance.
Avoid duplicate inclusion.
Include clientlibs using:
<cq:includeClientLib categories="project.site"/>
Answer:
| Instance | Purpose |
|---|---|
| Author | Content creation and management |
| Publish | Serves content to end users |
| Preview | Allows authors to see published content before activation |
| Dispatcher | Caching, load balancing, security |
Answer:
Create component under /apps/project/components.
Add cq:dialog for author input.
Add HTL template (.html) for rendering.
Add Sling Model for backend logic (if required).
Include Clientlibs for styling and JS.