Hello Team,
We are planning to migrate 50+ websites currently hosted in Umbraco into Adobe AEM. These websites are distributed across multiple regions including AU, NZ, and the UK.
Key considerations:
We are evaluating two possible approaches:
Questions:
Any guidance, examples, or best practices would be highly appreciated — especially from teams who have migrated similar multi-site platforms from a monolithic CMS to AEM.
Thank you!
Views
Replies
Total Likes
Hello @bhushanKare ,
I hope you are doing well!
Given your description (“50+ sites, multi‑theme, multi‑region, API heavy, Angular is the standard”) the answer is:
Use AEM as a headless CMS for the core application surfaces, and keep the classic AEM Sites stack in reserve for brand/marketing experiences where in‑context authoring is genuinely required.
So not “headless everywhere by dogma”, but a headless‑first architecture with a clear escape hatch:
If you know the org is strongly committed to Angular and to owning the full rendering stack, then pure headless for all 50+ sites is a defensible choice.
Views
Replies
Total Likes
Hello @bhushanKare
A few suggestions :
1. Headless vs server‑side AEM
For 50+ sites, multiple regions/brands, Angular front end and Java services, use AEM in headless or hybrid mode, not pure server‑side page rendering.
Pattern that works:
- AEM Content Fragments + GraphQL (persisted queries) as the canonical content store.
- Angular SPA as the rendering head.
- Use AEM Sites only where it adds clear value (MSM, translations, Experience Fragments, workflows, Universal Editor/SP A Editor).
2. Headless + Angular: theming & editorial flexibility
- Theming per site/region:
- Model a Site/Brand config in AEM (logo, colors, typography, feature flags).
- Expose it via GraphQL; Angular loads it at startup and maps to SCSS/CSS variables for per‑brand/per‑region themes.
“Umbraco‑like” flexibility:
- Use Content Fragment Models to represent “page” + “sections” (hero, text block, card grid, etc.).
- Authors build pages by ordering these section fragments; Angular maps them 1:1 to components.
- For in‑context editing, layer on SPA Editor (if SPA hosted in AEM) or Universal Editor for external Angular apps.
3. CDN, multi‑region caching & invalidation
Default: Adobe‑managed CDN (Fastly) → dispatcher → publish.
If you need Akamai/Azure CDN/CloudFront, put them in front of Adobe’s CDN and follow the documented BYO‑CDN pattern.
- For headless:
Use GraphQL persisted queries over GET; cache them at CDN and dispatcher.
Design for TTL‑based caching + stale‑while‑revalidate + ETag revalidation instead of purging on every publish; reserve explicit purges for truly time‑critical paths.
Dispatcher remains a second cache layer to protect publish on CDN cold‑cache or outages.
4. Further recommendation
- Authoring & content:
AEM CS Sites + Assets.
Content modeled as Content Fragments (with MSM and translations) exposed via GraphQL persisted queries.
- Front end:
Single Angular SPA codebase, configuration‑driven theming per brand/region, consuming AEM GraphQL + your Spring Boot APIs.
Optional SPA Editor / Universal Editor for visual editing where needed.
- Delivery:
Adobe CDN (or existing CDN in front of it) + dispatcher + publish.
Headless endpoints designed for cache‑friendliness and multi‑region TTLs.
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies