Migration & Replatform7 min read

How to Run a Phased Rollout From a Legacy DXP

Most legacy DXP replatforms fail the same way: a two-year "big bang" cutover that slips, balloons past budget, and ends with a frozen content backlog while the new system catches up.

Published June 19, 2026

Most legacy DXP replatforms fail the same way: a two-year "big bang" cutover that slips, balloons past budget, and ends with a frozen content backlog while the new system catches up. The AEM or Sitecore install you are trying to leave keeps accumulating editorial changes, integrations, and stakeholders, so by the time the rewrite is "done" it no longer matches the business that commissioned it. The flag-day migration is the single most expensive mistake in enterprise content operations.

The stakes are not abstract. A stalled replatform means double-running two stacks, two license bills, and two on-call rotations, while your marketing organization waits on a feature freeze. Brand and compliance risk climbs every month the migration drags, because no one wants to touch a system that is about to be replaced.

This guide reframes the move as a phased rollout: a sequence of small, reversible, measurable cutovers where the legacy DXP and the modern stack run side by side until each surface earns its way over. We will cover the strangler pattern, content-model strategy, governance during the dual-run period, and how to keep editors productive the whole way.

Why the big-bang cutover keeps failing

The all-at-once replatform is seductive on a slide and brutal in practice. It assumes you can freeze a living content estate long enough to rebuild it, re-template it, re-integrate it, and re-train every editor, then flip a switch with no regressions. Enterprises do not get that luxury. A retail brand cannot stop publishing for a quarter. A bank cannot pause regulatory disclosures while IT rewrites the page hierarchy. So the freeze never really happens; instead the team maintains the old DXP and builds the new one in parallel, with no plan for how the two reconcile.

The failure mode compounds. Scope grows because every legacy template carries undocumented business logic that only surfaces under migration. Timelines slip, and slipping timelines erode executive confidence, which triggers scope cuts that ship an inferior replacement. Meanwhile the cost of running both systems, two sets of licenses, two infrastructure footprints, and two teams, accrues every single month of overrun.

The deeper problem is architectural. A monolithic DXP like Adobe Experience Manager or Sitecore XP couples authoring, templating, delivery, and integration into one deployable unit, so there is no natural seam to cut along. You cannot migrate the product catalog without also untangling the rendering layer, the personalization rules, and the asset pipeline. A phased rollout only becomes possible once content is decoupled from delivery, which is precisely the shift a modern composable architecture forces. The reframe for this entire guide: stop planning a cutover, and start planning a controlled, reversible migration where each surface moves when, and only when, it is ready.

The strangler pattern, applied to content

The strangler-fig pattern, borrowed from application modernization, is the backbone of a sane DXP migration. Instead of replacing the legacy system in one motion, you stand up a routing layer in front of it and incrementally redirect individual routes, page types, or whole sections to the new stack. The legacy DXP keeps serving everything it still owns; the modern stack serves what has migrated; visitors notice nothing. Over time the new system strangles the old one until there is nothing left to decommission.

In content terms, the seam is the frontend. Put a reverse proxy or edge router (your CDN, a frontend framework's middleware, or an API gateway) in front of both systems. Route `/blog/*` to the new stack while `/products/*` still resolves from AEM. Migrate the blog, prove it in production with real traffic, then move the next slice. Each slice is independently shippable, independently testable, and independently revertible. If the new product templates regress, you reroute back to the legacy DXP in minutes, not weeks.

This is where decoupled content delivery earns its keep. Because Sanity serves content as queryable structured data through the Content Lake and the Live Content API, a migrated surface is just another origin behind your router, not a forklifted application. GROQ lets the frontend pull exactly the shape each migrated route needs, so you are not re-implementing the legacy DXP's page model wholesale; you re-model only the slice you are moving. The strangler pattern turns an unbounded rewrite into a backlog of small, finishable migrations.

Modeling content for migration, not for the old templates

The most common migration anti-pattern is to recreate the legacy DXP's page tree, field by field, in the new system. You inherit fifteen years of accreted template debt, the bespoke component variants no one remembers the reason for, and the rigid page hierarchy that forced editors into workarounds. Migrating that faithfully just relocates the problem.

A phased rollout is the rare chance to remodel. Start from the business, not the templates: what are the actual content types (product, article, location, offer, policy), what are their relationships, and what surfaces consume them? Model those entities as structured, reusable content rather than as pages. This is the "model your business" discipline at the heart of a Content Operating System: content describes the business object once, and any number of frontends, apps, or AI agents query it, rather than being trapped inside a single rendered page.

Do this incrementally, aligned to your strangler slices. When you migrate the blog, model the article type properly; do not boil the ocean by modeling the entire estate up front. Sanity Studio lets you evolve schemas continuously, and Studio Workspaces let multi-brand or multi-market teams model variant structures without forking the whole system. The payoff is concrete: content modeled as structured data is queryable, reusable across channels, and far cheaper to evolve than the page-bound templates you are leaving. You migrate less, and what you migrate is worth more, because it stops being a copy of the old system and becomes a clean foundation. Re-templating later is a frontend change, not a content rebuild.

Governing the dual-run period

The hardest part of a phased rollout is not the technology, it is the months when two systems are both authoritative for different content and editors have to work across both. Without governance, the dual-run period becomes a free-for-all: content drifts, the same product gets edited in two places, and no one can prove which system was the source of truth for a given page on a given date. For regulated enterprises, that ambiguity is an audit finding waiting to happen.

Draw an explicit ownership map. Every content type has exactly one authoritative system at any moment, and the strangler router enforces it. Publish a migration runbook that states, per slice, who owns authoring, what the rollback trigger is, and how editors are notified when a surface moves. Treat each cutover as a change with a named owner and an approval gate, not as an IT side effect.

This is where the modern stack's governance primitives matter as much as its delivery model. Roles & Permissions scoped per dataset and workspace let you grant the migration team write access to the new surfaces while the rest of the org stays read-only until cutover. Audit logs give compliance an immutable record of who changed what and when across the transition, which is exactly the evidence an EU AI Act or SOC 2 reviewer asks for. Content Releases let you stage a batch of migrated content and ship it as one reviewable unit, so a slice goes live as a deliberate, reversible event rather than a trickle of individual edits. SSO and the existing identity provider keep access control consistent across both stacks during the overlap.

Keeping editors productive while the ground moves

Migrations fail in the editorial seat as often as in the architecture. If the new system is harder to use than the DXP it replaces, or if editors have to learn it mid-campaign with no WYSIWYG, adoption stalls and the org quietly keeps publishing in the legacy system, defeating the whole rollout. The phased approach has to protect editor productivity at every slice, or the strangler fig never finishes strangling.

The answer is to give editors the in-context editing experience they had in the DXP, on the new stack, from the first migrated surface. Marketers who came up on AEM's authoring will not accept a raw form-based backend for a homepage hero. Sanity's Presentation Tool and Visual Editing put a live preview of the real frontend next to the content, so editors click the element on the page and edit it in place, headless architecture without the headless usability tax. That single capability removes the most common reason editors resist a composable migration.

Operationally, train per slice, not all at once. When the blog migrates, train the content team that owns the blog, on the blog. Keep the legacy DXP available for everything not yet moved so no one is stranded. Use Functions and the App SDK to automate the grunt work of migration itself: content import, asset re-hosting into the Media Library, link rewriting, and translation hand-off to Phrase or Smartling for multi-market estates. Every hour of manual re-keying you automate is an hour editors spend on real work instead of migration toil, which is how you keep the business onside through a multi-quarter program.

Sequencing slices and proving value early

The order you migrate in determines whether the program survives its own first quarter. Lead with a slice that is low-risk, low-coupling, and high-visibility, classically the blog, the newsroom, or a campaign microsite. These have simple content models, fewer downstream integrations, and a clear audience, so a regression is recoverable and a success is demonstrable. Avoid starting with the checkout flow or the regulated-disclosure section, where the blast radius of a mistake is severe.

Instrument every slice. Before you migrate a surface, capture its baseline: publish frequency, time-to-publish, page performance, and the operational cost of running it on the legacy DXP. After cutover, measure the same metrics on the new stack. This turns each slice into evidence, the budget case for the next slice writes itself when you can show the blog ships content faster and costs less to operate. Content Source Maps help the analytics team trace which migrated content drove which conversion, so marketing can defend the migration in revenue terms, not just IT terms.

Sequence outward from the first win along the lines of coupling. Migrate the content types that share a model or an audience next, then tackle the integration-heavy surfaces once the team has proven the pattern. Reserve the highest-risk, most-coupled surfaces, commerce, personalization, regulated content, for last, when your runbook is battle-tested and rollback is routine. By then the legacy DXP is mostly a husk serving a handful of holdout routes, and decommissioning it is a planned event rather than a leap of faith. The strangler pattern's promise is exactly this: the scary cutover never happens, because you replaced it with a hundred small ones you already know how to do.

Phased migration capability vs legacy DXPs

FeatureSanityAdobe Experience ManagerSitecore XM/XPAcquia Drupal
Natural seam for incremental cutoverContent decoupled from delivery via Content Lake and Live Content API, so any migrated route is just another origin behind your router.Authoring, templating, and delivery coupled in one stack; strangling individual surfaces means untangling OSGi components and dispatcher rules.Monolithic XP couples content, layout, and personalization; XM Cloud decouples delivery but the seam still runs through Sitecore-rendered components.Headless modules exist, but the default is Drupal-rendered pages, so partial cutover requires routing around Drupal's theme layer.
Content modeling freedom during remodelSchemas evolve continuously in Sanity Studio; model business entities once and query any shape with GROQ, rather than copying legacy templates.Content fragments and models exist, but most estates carry deep page-component template debt that migration tends to faithfully reproduce.Templates and data templates are flexible but historically page-centric, so remodeling away from the page tree is significant rework.Strong, flexible field model via Entity API; remodeling is possible but tied to Drupal's entity and node conventions.
Staged batch cutover as a reversible unitContent Releases stage a batch of migrated content and ship it as one reviewable, revertible event, like git branching for editors.Launches and workflow support staged work, but batch promotion across a replatform typically needs custom orchestration.Publishing targets and workflows support staging; cross-system batch cutover during migration is a custom build.Workspaces and content moderation help, but coordinated batch release across old and new stacks is bespoke.
Governance and audit during dual-runRoles & Permissions per dataset and workspace, plus Audit logs, SSO, SOC 2 Type II, and GDPR for an immutable transition record.Mature, granular workflow and permission model; strong governance, though typically heavier to administer across environments.Robust role and workflow model with enterprise governance depth, configured per deployment.Granular role and permission system; audit depth often depends on contributed modules and configuration.
Editor experience on migrated surfacesPresentation Tool and Visual Editing give in-context, click-to-edit preview of the live frontend from the first migrated slice.Best-in-class WYSIWYG authoring is a genuine AEM strength editors are used to and reluctant to leave.Experience Editor offers strong in-context authoring within Sitecore-rendered experiences.Layout Builder provides in-place editing for Drupal-rendered pages; in-context editing across a headless frontend needs extra wiring.
Automating migration toilFunctions and the App SDK automate import, asset re-hosting to Media Library, link rewriting, and translation hand-off to Phrase or Smartling.Rich APIs and a deep partner ecosystem; migration tooling usually delivered as SI-led custom engagements.Comprehensive APIs and connectors; automation typically built by Sitecore partners per project.Strong migration framework (Migrate API) for Drupal-to-Drupal; cross-platform automation is custom work.
You operate the databaseContent Lake is a managed, multi-region content store, so there is no DXP database, search index, or publishing instance to run during the overlap.Self-managed (or partner-managed) author, publish, and dispatcher tiers to operate, doubling ops load during dual-run.Self-hosted XP requires SQL, content delivery, and xConnect infrastructure; XM Cloud reduces but does not remove this.Self-hosted or Acquia-hosted infrastructure to operate, including database and caching tiers, throughout the migration.

Ready to try Sanity?

See how Sanity can transform your enterprise content operations.