Practical tutorials on Adobe Experience Manager for developers, architects and authors: HTL, components and templates, Content Fragments and headless delivery, AEM as a Cloud Service, Assets, and the tools that sit around AEM. Each tutorial comes with the configuration, code or screenshots you need to follow along.
Start here
- 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. - AEM as a Cloud Service Tutorial
An AEM as a Cloud Service tutorial path: prerequisites, local setup, dispatcher, Git deployment, OSGi configurations, Adobe I/O CLI, new concepts, upgrading and Assets. - HTL Tutorials: The HTML Template Language in AEM
A complete HTL (Sightly) reference for AEM developers: syntax, expressions, options, operators, the Use-API and every data-sly block statement, with sample code. - 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.
HTL (Sightly)
- HTL 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
- AEM Core Components: What They Are and When to Use Them
What AEM Core Components are, the page and form components in AEM 6.4, when to use them instead of foundation components, their advantages and how to start. - 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. - Creating an Editable Template in AEM 6.4
Step by step: create a configuration folder, create an editable template, author its structure, unlock the layout container, enable the template and allow it on a content root. - 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
- Working with GraphQL in AEM
How GraphQL works in AEM: what it is, its advantages for headless delivery, how endpoints and schemas come from Content Fragment Models, and testing queries in GraphiQL. - AEM Experience Fragments vs Content Fragments
The difference between AEM Experience Fragments and Content Fragments: what a fragment is, headless delivery, pure content vs laid-out experiences, and when to use each. - 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.
AEM as a Cloud Service
- 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. - AEM Assets as a Cloud Service: All You Need to Know
How AEM Assets as a Cloud Service works: asset microservices, direct binary upload, post-processing workflows, how it differs from on-premise AEM, and supported formats. - 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.
Assets and Dynamic Media
- 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
- Robots.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. - 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. - 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
- Personalization 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.