Migrating a Multi-Brand Platform to Headless Optimizely on Azure
This was a full migration of a large multi-brand platform off a legacy CMS and onto a modern headless stack. The goal was simple to state and hard to deliver: move years of content and dozens of brand sites to a new architecture without breaking what was already serving live traffic.
The new platform runs on Optimizely Headless CMS, with content served over Optimizely GraphQL and a Next.js frontend consuming it. Search across the sub-brands runs on Algolia rather than the platform’s built-in search, so relevance could be tuned for the catalog instead of left at defaults.
The whole thing is hosted on Azure and was designed and deployed end to end: Azure Front Door at the edge, Application Gateway behind it, and the applications running on Azure Web Apps (Windows). Front Door did the heavy lifting during cutover, routing requests between the legacy system and the new Next.js sites so brands could move across incrementally instead of in one big-bang switch.
That single decision took most of the risk out of the migration.
It was a multi-party delivery: an agency partner, the platform vendor, and me on the architecture and Azure side. The hard problems were the ones you’d expect at this scale: keeping the content model clean across brands that each wanted something slightly different, and keeping the GraphQL layer fast enough for a Next.js frontend serving the whole estate.
The decisions made in the first weeks - the edge-routing strategy and the content model in particular - were the ones that still mattered six months later. On a migration like this, that early architecture work is the part worth getting right before much code gets written.