Build for the next upgrade
Prefer supported APIs, explicit dependencies and configuration boundaries. Make compatibility checks part of everyday delivery.

MOHAMMED BOUDOUN
SENIOR AEM DEVELOPER FRANCE
I’ve been building on Adobe Experience Manager since late 2016. I started where most AEM developers start — components, templates, Sling Models — and then kept following the request further: past the component, through OSGi and the Sling engine, into the Dispatcher, and out to the infrastructure that actually serves the page.
That path turned me into a platform engineer as much as a developer. I’ve carried estates from 6.4 to 6.5 to 6.5 LTS, refactored legacy code toward cloud readiness, exposed content headlessly through Sling Model Exporter and GraphQL, and built Elasticsearch-backed search. I’ve Dockerized the environments teams develop in, implemented migration tasks toward Azure containers, engineered the CI/CD pipelines that ship it all, and watched the dashboards that tell me whether it’s healthy.
I think about AEM the way I’d think about any distributed system: caching, configuration, delivery, and failure modes are architecture, not afterthoughts. The best implementations make the next upgrade easier, keep authors fast, and stay boring to operate. Along the way I review code, pair with engineers, mentor new recruits, and demo the work to clients each sprint — because a platform is only as strong as the team that maintains it.
My current exploration connects governed AEM content with search, retrieval and enterprise AI. I’m evaluating RAG architecture and agentic workflows through PoCs, with attention to permissions, provenance and evaluation. This is emerging expertise, not a claim of production AI ownership.
FOLLOWING THE REQUEST
Prefer supported APIs, explicit dependencies and configuration boundaries. Make compatibility checks part of everyday delivery.
A design includes how it is built, validated, promoted and rolled back. Repeatability is a platform capability.
Follow behavior from the browser through caching, Sling, services and storage. Investigate the boundaries before blaming a single layer.
Turn recurring setup and release steps into reviewed automation. Keep exceptions visible instead of accumulating undocumented manual fixes.
Distinguish empty content from dependency failure. Use diagnostics that explain what failed without exposing credentials or private content.
Content models, author workflows and delivery contracts evolve together. Treat migrations and backwards compatibility as design concerns.
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.
MODERNIZATION → CLOUD READINESS
/ 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.
Adobe
IBM
Outside engineering, I’m usually moving. I’m passionate about cycling and enjoy running; I’ve completed multiple marathons. Both reward preparation, consistency and the patience to keep going when the easy part is over.
Photography is the quieter side of that curiosity. As an amateur photographer, I enjoy noticing light, places and everyday details. I love exploring somewhere new, whether on a ride, a run or with a camera in hand.
Preparation and consistency matter to me beyond sport. Photography encourages careful observation; exploring new places keeps me curious. Those habits also shape how I approach engineering.
From code to infrastructure to production.
Start a conversation