AEM
The product surface, across versions.
- AEM 6.4
- AEM 6.5
- AEM 6.5 LTS
- AEM Sites
- AEM Assets
- Dynamic Media
- Content Fragments
- Experience Fragments
- Dispatcher
I’m Mohammed Boudoun, an Adobe Experience Manager developer and AEM Platform Engineer focused on migrations, headless content, and dependable delivery from Java code to production — and increasingly on the search and retrieval that turn governed content into grounded AI.
My work spans application development, platform architecture, infrastructure, and migrations — Java, Sling, OSGi, and Dispatcher alongside Docker, Kubernetes, CI/CD, Dynamic Media, and production operations. AEM is a distributed platform; I treat it like one.
Anonymized engineering case studies. Real platform thinking.
An AEM 6.4 to 6.5 migration changes more than the runtime. This representative approach treats custom Java code, OSGi dependencies, repository content and Dispatcher behavior as one compatibility boundary, with evidence required before release.
An AEM 6.5 LTS proof of concept should answer which customizations can move, which need refactoring and what remains unproven. This representative assessment separates Java and dependency compatibility from OSGi service behavior and production-readiness evidence.
Headless AEM is a choice of content contract, not simply a switch from HTML to JSON. This representative proof of concept compares Content Fragment GraphQL delivery with Sling Model Exporter and identifies what changes for frontend consumers, caching and editorial preview.
A repeatable development environment needs explicit inputs, not merely a Dockerfile. This representative approach versions supporting services and setup steps, separates configuration from image construction, and makes local AEM development assumptions visible.
AEM migrations involve far more than a version number: custom code compatibility, dependencies, deprecated APIs, OSGi, Dispatcher, repository validation, and production readiness. No AEMaaCS production migration is represented here.
A mature enterprise estate with custom components, integrations, and Dispatcher-fronted publish environments.
Dependency upgrades, deprecated-API remediation, Oak index and replication validation, and coordinated deployment.
OSGi and SCR annotation modernization, legacy component refactoring, and compatibility validation on a supported runtime.
Externalized configuration, reduced environment-specific assumptions, and headless evaluation with cloud-compatible architecture in mind.
From the browser through the edge, Dispatcher, and Publish tier down to Sling, OSGi, and the repository. Authoring replicates to Publish; supporting services extend delivery. Every layer has a purpose — and every layer is where a problem can hide.
The profile spans application engineering and the infrastructure around enterprise AEM — containers, orchestration, cloud, delivery pipelines, and the monitoring that keeps a platform reliable.
Java, Sling, OSGi, and HTL delivering the application layer.
Reproducible, isolated environments and faster onboarding.
Orchestrated containers, health checks, and resource management.
Cloud infrastructure hosting supporting platform services.
Predictable, repeatable, auditable delivery pipelines.
Observability and diagnostics across the running platform.
The product surface, across versions.
Release-capable application code.
The infrastructure around AEM.
Predictable, repeatable delivery.
Production search, plus emerging retrieval.
Proofs of concept and architectural exploration.
A selection of complex AEM engineering challenges spanning platform modernization, cloud readiness, migrations, search, delivery automation and production architecture — extending into enterprise search, retrieval and emerging AI architecture.
Anonymized, representative engagements — not an employment chronology or a list of verified client projects.
Connected disciplines. No implied chronology.
/ PLATFORM MODERNIZATION
Modernized a legacy AEM platform through a 6.4 to 6.5 migration, treating application code, repository content and request delivery as one system. Remediated deprecated APIs, updated Maven dependencies and resolved OSGi compatibility issues. Validated content integrity and Dispatcher behavior alongside regression analysis before defining production-readiness criteria.
Mapped application dependencies, refactored incompatible integrations and built a validation plan covering bundles, content, rendering and cache behavior.
VALIDATION PATH
/ LONG-TERM SUPPORT
Designed an AEM 6.5 LTS Proof of Concept to expose compatibility risks before a production upgrade. Validated the Java runtime and OSGi services, refactored legacy components, and replaced deprecated APIs and SCR annotations with OSGi DS patterns. Assessed Oak indexes and Dispatcher behavior through targeted regression testing.
Turned compatibility findings into a modernization backlog with explicit acceptance criteria for maintainability and production readiness.
/ HEADLESS AEM
Architected reusable Content Fragment models for structured, headless delivery through GraphQL, while evaluating Sling Model Exporter for component-oriented JSON. Compared traditional AEM rendering with decoupled frontends against authoring needs, API performance and AEM Cloud architectural constraints. Designed Dispatcher and CDN caching around query shape, content freshness and invalidation boundaries.
Defined content contracts and delivery patterns, separating channel-independent content from page composition instead of forcing every use case into one API.
STRUCTURED CONTENT PATH
/ CLOUD READINESS
Refactored a legacy implementation toward AEMaaCS readiness by reducing environment-specific assumptions and externalizing configuration. Adopted modern OSGi patterns, reusable Content Fragments and immutable deployment thinking. Evaluated legacy code, deployment automation and Dispatcher portability against cloud-compatible design constraints.
Separated deployable code from runtime configuration and documented compatibility gaps that needed resolution before a cloud migration.
/ CONTAINERIZATION
Designed reproducible AEM-related development environments with Docker, isolated dependencies and automated setup. Versioned configuration and supporting services made local assumptions explicit and reduced environment drift. Connected setup scripts to CI/CD so onboarding and validation followed the same engineering conventions.
Defined container boundaries, configuration inputs and repeatable Maven workflows for consistent local and pipeline execution.
/ CLOUD INFRASTRUCTURE
Implemented migration tasks for complementary application workloads moving toward Azure container environments. Defined Kubernetes Deployments and Services, separated configuration through ConfigMaps and Secrets, and validated health and readiness checks. Diagnosed container lifecycle and runtime issues with application and platform engineers during cloud migration validation.
Aligned environment configuration, startup behavior and observability with deployment checks so a running container was not mistaken for a ready application.
/ DELIVERY ENGINEERING
Architected and improved multiple delivery pipelines spanning Maven builds, automated tests, analysis, packaging and artifact management. Integrated Docker image creation for container workloads with environment deployments and post-deployment validation. Diagnosed failures across these boundaries and made release inputs and quality gates explicit for repeatable delivery.
Automated build-to-validation workflows, separated application packages from container artifacts, and made release evidence available at each delivery gate.
DELIVERY LIFECYCLE · CONTAINER WORKLOAD
/ SEARCH ENGINEERING
Designed an AEM search integration around user-facing site search and faceted filtering requirements. Translated discovery needs into Elasticsearch queries and integration APIs, balancing query performance with relevance and filter behavior. Connected backend contracts to the search experience rather than treating the search engine as an isolated service.
Analyzed requirements, implemented Java integration services and optimized query construction, pagination and facet combinations against representative search cases.
/ DIGITAL ASSET DELIVERY
Integrated AEM Assets and Dynamic Media into a delivery approach spanning DAM workflows, authoring and responsive frontend assets. Defined delivery URL and transformation conventions around image dimensions, format choices and caching. Evaluated CDN behavior alongside editorial workflows, because asset architecture shapes both page performance and the authoring experience.
Aligned component image requests with asset metadata and responsive requirements, validating transformations and cache behavior along the delivery path.
ASSET DELIVERY
/ PRODUCTION ENGINEERING
Diagnosed complex AEM production behavior by tracing slow requests across the delivery stack, runtime and external API dependencies. Correlated monitoring and logs with Dispatcher cache behavior, OSGi service health, JVM considerations and JCR access patterns to test incident hypotheses. Validated application health after deployments and shared diagnostic reasoning through mentoring, code reviews, pair programming, technical design discussions, client sprint demos and knowledge sharing.
Connected request-path evidence to application changes and deployment validation, making troubleshooting decisions reviewable and transferable to other developers.
REQUEST PATH · DIAGNOSTIC VIEW
/ AI ARCHITECTURE / POC
Designed a Proof of Concept for grounding a large language model in governed enterprise content managed in AEM. The architectural exploration treats structured Content Fragments as a knowledge source: content is exposed through GraphQL and APIs, ingested with its metadata, indexed for search and semantic retrieval, and supplied to an LLM as retrieved context behind an enterprise assistant. Emphasis on source grounding and traceability — every answer should resolve back to the governed fragment it came from — rather than free-form generation.
Mapped the content-to-context pipeline end to end: fragment models and metadata as retrieval units, GraphQL and API contracts as the extraction boundary, and a retrieval layer feeding grounded prompts. Defined where governance, freshness and traceability constraints apply. Presented as an architectural PoC and exploration, not a production system.
CONTENT → CONTEXT PATH
/ AI ARCHITECTURE / POC
Explored an agentic architecture in which an LLM orchestrates controlled tool calls against enterprise APIs rather than answering from its own parameters alone. The design investigates structured, validated inputs and outputs, retrieval for grounding, guardrails on what tools may be invoked, and a human-approval step before any consequential action. Evaluated the Model Context Protocol (MCP) as a standard boundary between the model and enterprise tools, keeping capabilities explicit and auditable.
Defined the orchestration boundary: tool schemas and validation, retrieval as grounding, guardrails and approval gates, and structured output contracts. Framed evaluation criteria for correctness and safety. Presented as exploration and PoC-level design, with no claim of a production agent deployment.
AGENT ORCHESTRATION
From application code to production behavior.
The platform is the responsibility.
Structured enterprise content, APIs, and search are increasingly the knowledge layer behind intelligent retrieval and RAG. An architectural exploration — not a production system — of AEM content as governed, traceable context for grounded AI.
Upgrade compatibility, service boundaries and configuration that survives the next deployment model.
Kubernetes-based supporting services, repeatable releases and observable integration boundaries around AEM.
RAG and enterprise AI architecture exploration: content permissions, retrieval quality and evaluation in PoCs.
Adobe
IBM
I’m Mohammed, a Senior AEM Developer and platform engineer based in France. I move between Java code, AEM internals, Dispatcher configuration, Docker, Kubernetes, CI/CD pipelines, and production debugging — and I understand how the pieces connect.
A little more about meFrom code to infrastructure to production.
Start a conversation