Adobe Experience Manager
AEM tutorials, from the first install to headless delivery
Practical tutorials on Adobe Experience Manager (AEM) for developers, architects and authors. The core guides are written for AEM as a Cloud Service, the version Adobe develops today, and note where AEM 6.5 differs. Each one is checked against Adobe's documentation; how we work explains how.
Learn AEM: where to start
9 steps, in order- 01
AEM architecture
the Java, OSGi, Sling and Oak stack, and how author, publish and the Dispatcher fit together, with diagrams.
- 02
AEM as a Cloud Service
how the cloud version differs from AEM 6.5, environments, the local SDK, Cloud Manager and logs.
- 03
Java in AEM
which Java versions AEM runs on, how to set the build JDK, and the APIs you will use.
- 04
HTL
the template language every AEM component is written in.
- 05
AEM Core Components
Adobe's standard components, proxy components and how to customize them.
- 06
AEM templates
editable templates, policies, and how to create one.
- 07
Content Fragments and Experience Fragments
reusable content, with and without layout.
- 08
AEM headless tutorial and AEM GraphQL API
delivering content to apps.
- 09
AEM Assets
Adobe's DAM, how it processes and delivers files.
Which AEM are you working with?
AEM as a Cloud Service
Adobe's cloud version, run and updated continuously by Adobe.
AEM 6.5 and AEM 6.5 LTS
the versions you install yourself. Core support for AEM 6.5 on premises ends on 28 February 2027; AEM 6.5 LTS, released in March 2025, is its successor.
Edge Delivery Services
AEM's edge-rendered delivery, which Adobe now recommends for new projects. See the architecture overview.
Tutorial series
5 tutorialsAEM as a Cloud Service Tutorial
What AEM as a Cloud Service is, how it differs from AEM 6.5, author, publish and preview, environments and RDEs, the SDK, pipelines and logs, and a learning path.
HTL in AEM: The HTML Template Language (Sightly) Tutorial
HTL expression syntax, display contexts, all 12 block statements and their priority, examples, and the full HTL reference.
AEM Tutorial Series: Learn AEM Step by Step
An ordered AEM learning path based on AEM 6.4: what AEM is, installation, architecture, environments, consoles, authoring, packages, components, templates, assets and workflows.
AEM 6.4 and 6.5 Tutorials
AEM 6.4 and 6.5 tutorials in one place: features, consoles, templates, core components, component patterns, content fragments, content services, personalization and upgrades.
Useful AEM Consoles in AEM 6.4 (with URLs)
Every useful AEM console and its URL: admin, site admin, DAM, CRXDE Lite, Package Manager, OSGi web console, query debugger, dumplibs, JMX and more.
Architecture and platform
4 tutorialsAEM Architecture: How Adobe Experience Manager Is Built
The stack, the AEM 6.5 topology, the AEM as a Cloud Service architecture and Edge Delivery Services, with diagrams.
Java in AEM: Supported Versions and How to Set the JDK
Java 21 on AEM as a Cloud Service and the Java 25 plan, Java on AEM 6.5 and 6.5 LTS, the Cloud Manager build JDK, and removed APIs.
FAQ on AEM as a Cloud Service
Answers to common AEM as a Cloud Service questions: environments, programs, licensing, replication, run modes, local SDK, roles, upgrading, troubleshooting and mutable vs immutable content.
Storage Concepts in AEM 6.5: Node Stores and Data Stores
How AEM 6.5 stores content and binaries: segment and document node stores (TarMK, MongoMK), file, S3 and Azure data stores, and their OSGi configuration PIDs.
HTL (Sightly)
8 tutorialsHTL data-sly-test: Conditional Rendering and If/Else
How data-sly-test conditionally keeps or removes an element in HTL, and how to build if/else logic by storing the test result in a variable.
HTL data-sly-list: Iterating Over Lists and Maps
How data-sly-list iterates over an object in HTL, the itemList properties (index, count, first, last, odd, even), and dynamic value access.
HTL data-sly-unwrap: Removing the Host Element
How data-sly-unwrap removes the host element from the generated markup while keeping its content, with an example.
HTL data-sly-use: Initializing Java and JavaScript Objects
How data-sly-use initializes a Java class or JavaScript object in an HTL template, with examples for both.
HTL Introduction: What the HTML Template Language Is
What HTL is, how it separates logic from markup in AEM components, and why it is more secure and cheaper to maintain than JSP.
HTL Options: Formatting, i18n, Join and Display Context
How HTL expression options work: string formatting, internationalization, array join, and display context settings for XSS-safe output.
HTL Operators: Logical, Ternary and Comparison
HTL logical operators (&&, ||, !), the conditional (ternary) operator, comparison operators and grouping parentheses, with data-sly-test examples.
HTL Use-API: Binding Java and JavaScript Logic to Templates
How the HTL Use-API binds logic to templates in Java or server-side JavaScript, with an example that passes parameters from a component.
Components and templates
4 tutorialsAEM Core Components: The Full List and How to Use Them
All 31 Core Components in release 2.33.0, versions and proxy components, how they ship on AEM as a Cloud Service and 6.5, and how to customize them.
AEM Templates: Editable vs Static Templates and How to Create One
Editable vs static templates, template types, structure, initial content, layout and policies, and step-by-step creation.
Modern AEM Component Implementation Patterns
The component patterns behind AEM Core Components: configurable components, separation of concerns, pre-configurable capabilities, proxy components, versioning and model interfaces.
Sling Models vs WCMUsePojo in AEM
The difference between WCMUsePojo and Sling Models for AEM component logic, what a POJO is, and why Adobe recommends Sling Models.
Content Fragments and headless
7 tutorialsContent Fragments in AEM: Models, Editor, Variations and Delivery
Enabling models, the 11 data types, the Content Fragments console and editor, variations, references, publishing and delivery.
Experience Fragments in AEM, and How They Differ from Content Fragments
Templates, variations, building blocks, MSM, the Experience Fragment component, plain HTML and Adobe Target export.
AEM Headless Tutorial: From Content Fragments to a React App
Configuration, models, fragments, a GraphQL endpoint, persisted queries and a React client, step by step.
AEM GraphQL API: Endpoints, Persisted Queries and Examples
The schema from Content Fragment Models, endpoints, GraphiQL, filtering and paging, persisted queries, caching and CORS.
AEM 6.4 Content Fragment Output as JSON
Why Content Fragments need JSON, the two kinds of fragments, and how to get JSON for a fragment and for a fragment authored on a page with the AEM 6.4 JSON exporter.
Create a Content Services Endpoint in AEM 6.4
How to configure a Content Services endpoint in AEM 6.4 that exports Content Fragment variations as JSON for mobile apps and single-page applications.
AEM Content Fragment Output as JSON
How to view an AEM Content Fragment as JSON, the infinity.json output and the Content Services (caas.json) output, and how to walk its children.
Assets and Dynamic Media
7 tutorialsAEM Assets: How Adobe's DAM Works in AEM as a Cloud Service
Editions, Admin View, Assets View and Content Hub, asset microservices, Dynamic Media with OpenAPI, Connected Assets and the APIs.
Assets Essentials vs AEM Assets as a Cloud Service
What Adobe Experience Manager Assets Essentials is, how it differs from AEM Assets as a Cloud Service, and which one suits which customer.
AEM 6.5 New Features in Assets
What AEM 6.5 added to Assets: Adobe Asset Link, the desktop app update, Adobe Stock integration, remote DAM, Brand Portal, visual search and Dynamic Media with Sensei.
Brand Portal vs Asset Share Commons vs Dynamic Media
The difference between Adobe Brand Portal, Asset Share Commons and Dynamic Media: what each one does, licensing, customization, and which to choose.
AEM with Brand Portal: Uses, Features and Integration
What Adobe Brand Portal is for, its asset distribution and asset sourcing features, how it compares with Asset Share Commons and Dynamic Media, and integrating it with AEM.
Media Handlers with AEM Workflows to Process Assets
What AEM media handlers are, how they work with workflows to extract metadata and create thumbnails, and where to enable or disable them.
Machine Learning Features in AEM
The AEM features built on machine learning: smart tags, enhanced smart tags, smart crop, smart swatch, smart translation search, summarization, community scoring and spam detection.
Operations, SEO and upgrades
7 tutorialsRobots.txt File in AEM Websites
How to serve a robots.txt from an AEM website: store it in the DAM, map it to /robots.txt with the Sling resource resolver, and allow it through the dispatcher.
Hide the /content Root Path in AEM Publish and Website URLs
How to remove /content/sitename from public AEM URLs: Sling resource resolver mappings on publish, then mod_rewrite rules and DispatcherUseProcessedURL on the dispatcher.
What Is the AEM Pattern Detector? Its Role in Upgrading to AEM 6.4
How the AEM Pattern Detector scans a code base before an upgrade, what its report codes (OCU, ECU, LOCP, NBCC, CAV) mean, and where to run it.
Steps to Migrate a Third-Party CMS Website to AEM
The steps of a CMS-to-AEM migration project: analysis, content and asset strategy, design, content migration (manual, automated, hybrid), testing and estimation.
Generate a Report of Users' Last Login in AEM
How to report every user's last login in AEM 6.5: record it with an AuthenticationInfoPostProcessor service, then query it with an ACS AEM Commons report.
ACS AEM Commons Page Compare Utility in AEM 6.4
What ACS AEM Commons adds to AEM, how to install it, and how to use its Page Compare tool to compare the content and structure of two pages.
Why AEM Admins and Developers Need to Understand Docker
Why containerized deployment matters for AEM teams: what Docker is, how it speeds up AEM environments, and whether AEM and Docker are a good pair.
The wider Adobe stack
4 tutorialsPersonalization in AEM 6.2 and Later with ContextHub
Step by step: create a personalized experience in AEM 6.2+ with ContextHub segments, a brand, an activity and targeted components, then test it with personas.
What Is AEP? Adobe Experience Platform FAQ
What Adobe Experience Platform is, its data sets, what it solves, its features, integrations, implementation phases, architecture, native controls, application services and use cases.
Understanding Adobe Workfront and Its Use with AEM
What Adobe Workfront is, its capabilities, its AEM Assets integration, licenses and access levels, SSO, third-party integrations, the API and Workfront Fusion.
Adobe InDesign vs FrameMaker vs AEM Guides (XML Documentation)
A side-by-side comparison of Adobe InDesign, Adobe FrameMaker and AEM Guides: purpose, authoring, formats, scale, review, AEM integration, metadata, reporting, translation and search.