Search
Search articles
Find articles by title, tag, or anything in the text. Every word you type has to match.
Real World Scenarios: The Optional Field That Wasn't Optional
A working reproduction of a real NullPointerException — a Sling Model's @PostConstruct only initializes a list when an @Optional injected field is present, but the getter assumes it always is. Includes the failing test that proves the crash and the null-safe fix.
Real-World Scenario — Publishing a Page Shouldn't Leave Its Assets and Fragments Behind
A real requirement, worked end to end — authors kept publishing pages that looked broken on the live site because the images and Experience Fragments they referenced were never activated along with them. Full working workflow process step that walks page references, DAM assets, and nested Experience Fragments, batches activation, and protects against reference cycles.
Real-World Scenario — A Scheduled Job That Nags the Right People When Approvals Stall
A real requirement, worked end to end — legal/compliance approvals were quietly sitting in reviewers' inboxes for weeks because nobody checked AEM's Inbox unless something else reminded them. Full working scheduled job that finds stalled workflow approvals, groups them by request reference, and sends one batched reminder email instead of one per page — plus the dual-trigger design that lets the same job run on a cron schedule or on demand with different parameters.
Real-World Scenario — The Notification Email That Sometimes Went Out Without the One Detail That Mattered
A real production bug, worked end to end — an automated workflow step read dialog values (a tracking ID, a routing email) that a human review step had captured earlier in the same workflow, except those values sometimes weren't there anymore. Full working fix that hydrates workflow-level metadata from step history explicitly, instead of assuming a later step can see what an earlier step's dialog collected.
Real-World Scenario — The Nav Menu Item That Quietly Disappeared
A real production bug, worked end to end — a global header built from a Content Fragment referencing other Content Fragments went live missing an entire navigation item after an unrelated content move, with no error anywhere. Full working fix that tells "not configured" apart from "broken reference" and surfaces the difference to authors instead of swallowing it silently.
Real-World Scenario — When and Why You Actually Reach for an AEM Component
Where AEM components are actually used in real projects, the genuine problems they cause when built carelessly, and honest criteria for when a component is the right tool versus overkill, with a full working example.
Real-World AEM Scenario — Where Servlets Actually Earn Their Place
A practical look at where Sling Servlets fit in real AEM implementations, when a servlet is the right request boundary, and when the requirement belongs in a Sling Model or OSGi service instead.
Real-World Scenario — When an OSGi Service Is the Right Call (and When It's Just Ceremony)
Where OSGi services are genuinely the right tool in real AEM projects, the recurring reference and configuration problems they cause in production, and honest criteria for when a plain Java class beats a service, with a full working example.
Real-World Scenario — When a Workflow Is Actually the Right Tool (and When a Job Would Do)
Where AEM workflows are genuinely the right tool in real DAM and content approval scenarios, the recurring stuck-instance and duplicate-trigger problems they cause in production, and honest criteria for when a plain Sling Job beats a workflow, with a full working example.
Real-World Scenario — Scheduler vs. Job vs. Workflow: Picking the Right Background Tool
Where the Sling Scheduler and Jobs API are genuinely the right tool in real AEM projects, the recurring duplicate-execution and stuck-retry problems that show up in clustered environments, and honest criteria for choosing between a scheduled task, a job, and a full workflow.