Skip to main content
Migration Drupal migration services · Drupal 7 to Drupal 10 · UK

Drupal migration services for the editorial team that wants speed without losing 12 years of content.

Leave the version of Drupal that’s costing you growth — a Drupal 7 to Drupal 10 migration, or a decoupled headless move behind Next.js. Views, Paragraphs, Webform, Workbench, and multilingual all ported with an audit.

5Drupal migrations shipped
Zerodowntime on every cutover
£8K5-day fixed audit
(Why CTOs migrate now)

Leave the version of Drupal that’s costing you growth. Five migrations shipped. Zero downtime on every cutover.

Drupal 7 hit end-of-life in January 2025. Drupal 8 ended in 2021. An unsupported core is a security risk and an insurance question. A Drupal 7 to Drupal 10 migration, or a decoupled headless move, fixes both, and we keep your structured content intact.

0

1.5s

0yr

The CTO this page is for84K nodes · 23 languages · 4.6s LCP

Pamela ran editorial on 12 years of Drupal 7. Then the insurer declined the policy.

01

Pamela runs editorial for a UK heritage charity. 12 years of Drupal 7. 84,000 nodes. Twenty-three languages. Drupal 7 hit end-of-life in 2025, and security insurance was now declining the policy.

02

The editor experience was 14 clicks deep. LCP sat at 4.6s. Workbench moderation was the only thing the team trusted; the rest had been bolted on. A junior dev tried a Drupal 9 upgrade and bricked a staging site for two weeks.

03

Sixteen-week migration to decoupled Drupal 10 behind Next.js. All 84,000 nodes and 23 languages preserved. Cutover at 4am Sunday with zero downtime. LCP 1.5s. Insurance reinstated. This page is for the founder or CTO who has decided the migration is happening, and wants it to land without taking the business down.

Zero-downtime cutover on every Drupal migration since 2019
Our Drupal migration process

Four phases. Each ends in a board-ready deliverable.

No mystery box. Each phase is fixed-scope, fixed-price, and ends with a written deliverable. You decide whether to continue at every phase boundary.

Phase 01

Migration audit · 5 days, £8K

Two senior engineers read your Drupal codebase, data, and infra. Output: a 20-30 page audit pack with risk matrix, target architecture, data plan, rollback plan, and a fixed quote.

Phase 02

Plan + parallel build · 2-4 weeks

We build the headless target in parallel. Your Drupal keeps running. Data migration dry-runs, rebuilt integrations, shadow-read pattern so traffic routes safely. No customer-facing change yet.

Phase 03

Cutover · 1-3 days, planned window

Cutover in a planned window, often a weekend. We dual-run, shadow-read, then flip the canonical write path. Old system stays read-only for 30 days. Rollback is rehearsed and reversible.

Phase 04

Stabilise + decommission · 2-6 weeks

We monitor, fix what only production traffic surfaces, hand over to your team or our retainer, and decommission the old Drupal estate on a schedule you sign off. Nothing deleted until you say so.

Migration risk + mitigation matrix · Drupal 7 to Drupal 10

Eight risks that sink migrations. How we close each one before cutover.

We don’t pretend migrations are safe. We make the risks legible and mitigated, in writing, before a single line of production code changes.

  1. 01
    CoreClosed at audit

    “Our Drupal 7 / 8 core is end-of-life and unsupported.”

    Move to Drupal 10, or off Drupal entirely. Unsupported core means CVEs land without patches and procurement gates close. We migrate to Drupal 10, still receiving support, or off Drupal depending on your model and team.

  2. 02
    Content modelModelled, not flattened

    “Paragraphs, Layout Builder, and Views hold all our editorial logic.”

    Modelled as structured content in the target. Flattening them to HTML loses semantics and breaks AI Overviews. We model them as structured content in Sanity or Contentful, or keep them in decoupled Drupal.

  3. 03
    EditorialWorkflow preserved

    “Workbench moderation is the reason our team trusts Drupal.”

    Decided at audit, kept or matched. We model the workflow at audit and decide whether decoupled Drupal keeps it or the target needs an equivalent: Sanity Workflows, Contentful Tasks.

  4. 04
    i18nPorted 1:1

    “We have multilingual content and locale URLs we can’t lose.”

    Locale-aware nodes + aliases ported, hreflang kept. Drupal multilingual is sophisticated. We port locale-aware nodes and URL aliases 1:1 and preserve hreflang. We’ve done up to 28 languages.

  5. 05
    FormsHistory preserved

    “Webform submissions hold our lead and membership data.”

    Submissions ported, forms rebuilt. We port submission history and rebuild forms in the target, or keep Webform server-side if you stay decoupled. Encrypted fields handled with key rotation.

  6. 06
    PermissionsMapped to RBAC

    “Our role and access controls are granular and we can’t weaken them.”

    Every role mapped to the target’s RBAC. The Drupal permission system is granular. We map every role to the target’s RBAC and retain an access audit on sensitive content.

  7. 07
    SEO1:1 redirect map

    “We can’t lose our URL aliases, Pathauto patterns, or rankings.”

    Redirect map built and validated at audit. URL aliases, Pathauto patterns, and the Redirect module all need preservation. We build the 1:1 redirect map at audit and validate it against Search Console traffic before cutover.

  8. 08
    CutoverStaged dry-runs

    “We have hundreds of thousands of nodes and one shot at cutover.”

    Dry-runs at 10%, 50%, 100% before the real flip. Drupal estates often have 50K-500K nodes. Migration runtime and verification become real engineering work. We do staged dry-runs before the real cutover.

Target stack for this migration · Drupal to headless CMS

The default headless stack we migrate Drupal to.

We default to Next.js + MERN + AWS, with decoupled Drupal 10 or a full move to Sanity / Contentful. We’re comfortable on GCP, Azure, Cloudflare, DigitalOcean, Vercel, and Fly.io where your team has a constraint or a relationship.

T1

Default target stack

headless
Next.js + ReactDrupal 10 (decoupled)Sanity / ContentfulTypeScriptNode.js + ExpressPostgreSQL / MySQLTailwindAlgolia / TypesenseCloudinary / ImgixStripeMixpanelResend
T2

Migration-specific tooling

port + import
Drush + ComposerMigrate API + migrate_plusSanity / Contentful CLIDrupal JSON:API + GraphQLScreaming FrogPathauto + Redirect
T3

Infra, observability, safety net

AWS-default
AWS / VercelCloudFront / Vercel EdgeS3 + CloudFrontCloudflare WAFAWS RDSAWS LambdaRedis / MemcachedTerraformDatadogSentryk6 / ArtilleryGitHub Actions
Proof · Drupal 7 to decoupled Drupal 10

A heritage charity,
84K nodes, in numbers

Drupal 7 with 84,000 nodes and 23 languages to decoupled Drupal 10 + Next.js. Workbench moderation kept. Views, Paragraphs, and Layout Builder modelled. Cutover at 4am Sunday with zero downtime. LCP fell from 4.6s to 1.5s. Insurance reinstated.

The migration

84K
Nodes ported, 1:1
23
Languages preserved

Performance

4.6s1.5s
LCP, after migration
0
Downtime at cutover

Track record

5
Drupal migrations since 2019
16 wk
Sprint, this estate
How a Drupal migration starts with us

Three ways to start. Pricing in the email back.

Pick the shape that fits and Mohit will send your real number inside 24 hours.

AStart here

5-day migration audit

Two senior engineers read your Drupal estate, data, and integrations. Map the migration, write the risk matrix, quote the sprint.

  • 20-30 page audit pack
  • Risk matrix + target architecture
  • Fixed-scope migration quote
  • £8,000 fixed (GBP)
BMost common

Headless migration sprint

Parallel build, dry-run data migration, planned cutover, post-cutover stabilisation, decommission. 8-16 weeks by estate size.

  • Decoupled Drupal 10 or full Sanity / Contentful
  • Zero-downtime cutover
  • 30-day walk-away both ways
  • From £45,000 fixed (GBP)
COptional

Post-migration retainer

One day a week of senior engineering for 3-6 months. New surface area, performance work, integrations. Your team gets unblocked.

  • One senior engineer, one day a week
  • 3-6 month term
  • IP assigns on every commit
  • From £5,000 / month (GBP)
From £45K · 8-16 weeks · zero-downtime cutover

“84,000 nodes and 23 languages moved with the editorial team barely noticing. Cutover at 4am Sunday. LCP dropped to 1.5s. The insurer reinstated us.”

— Pamela R., Editorial Lead, UK heritage charity
Drupal migration services · honest answers

What CTOs actually ask on the audit call

Direct answers, no marketing varnish.

If Workbench moderation, multilingual sophistication, or complex permissions are core to your team’s workflow, decoupled Drupal 10 usually wins. If editorial is the bottleneck and the model is simple, we move you fully. We’ll recommend at audit based on team, content, and budget. Either way, it’s the same Drupal migration services engagement.

There’s no in-place 7 to 9/10 upgrade. A Drupal 7 to Drupal 10 migration is a migration, not an upgrade. We use the Migrate API, Migrate Plus, and custom plugins to port nodes, users, taxonomies, files, Paragraphs, and Webform data. Same engineering whether you stay on Drupal or move off.

Yes. Pathauto patterns, URL aliases, and the Redirect module are inventoried at audit. We build a 1:1 redirect map and validate it against Search Console traffic before cutover, so your rankings come across with you.

Ported. Encrypted fields are handled with key rotation. Decryption is tested and audit-logged. Submission history is preserved or archived per your data policy. Nothing gets silently dropped.

Drupal migrations are typically 10-20 weeks. The 5-day audit gives you the real number. Estate size, language count, custom module depth, and Webform / Paragraphs complexity all drive scope. We quote a fixed price after the audit, never before.

30-day walk-away both ways. Milestone billing. UK VAT registered, listed on Companies House, shipping since 2019. The audit is fixed at £8K so you’re never more than a few days at risk before you see real work.

Every migration has two senior engineers paired, not one. Every decision goes into an ADR the same day. Mohit reviews every PR. If one engineer leaves, the other has full context the next morning. Two engineers have left mid-project in seven years; both handovers were inside 48 hours.

Yes, with 14 days’ notice. Engineers move to other projects, spend pauses, and you resume with 14 days’ notice. Your old Drupal estate keeps running throughout, because we build the headless target in parallel and don’t cut over until you’re ready.

Drupal to headless migration — dashboard / app screen
In context

The surface you hand over.

drupal to headless migration, in context — the dashboards, flows and components your team actually ships, reviews and maintains.

Book the 5-day Drupal migration audit

Two senior engineers. 5 days. A plan you can take to your board.

Send a 5-line brief: current Drupal estate (traffic, data size, integrations), why you want to migrate, the deadline you’re working to. Mohit replies inside 24 hours with availability and the next 5-day audit slot.

Write to mohit@empyrealinfotech.com Replies in 24hZero-downtime cutoverFrom £45K fixed
What happens after the email lands
  1. < 24h

    A personal reply.

    Availability and the next 5-day audit slot, straight to your inbox.

  2. Week 1

    Audit week begins.

    Risk matrix, target architecture, data plan, rollback plan, fixed quote.

  3. Cutover

    Zero downtime.

    Dual-run, shadow-read, flip the write path. Structured content kept.