DRUPAL 7, 8 & 9 → DRUPAL 10 OR 11

The migration nobody wanted to quote on.

Every Drupal migration quote is a guess until somebody reads the code. That is why they get avoided: nobody wants to commit to a number for a site with two hundred content types, eleven patched contrib modules and a theme written before Twig.

We start every migration with an audit, and we charge nothing for it. You get a written assessment of what is really in there, which modules have no upgrade path, what the content volume actually is once the abandoned drafts are excluded, and a fixed price against it.

Working with us as an agency? See white-label Drupal

WHAT SURVIVES THE MOVE
PRESERVED
  • All published content
  • User accounts and roles
  • URL aliases and redirects
  • Media and file references
  • SEO metadata and canonicals
REBUILT OR REPLACED
  • Contrib with no D10 path
  • Deprecated custom code
  • Pre-Twig theme layers
  • Undocumented core patches
  • Views using removed handlers
Why they overrun

It is almost never the content that causes the overrun.

Content volume is the thing clients worry about and the thing that matters least. These five are what actually consume the budget.

01

Contrib with no upgrade path

Every Drupal 7 site depends on modules that were abandoned years ago. Each one needs a replacement, a core equivalent, or a small custom module, and the answer differs for every module.

02

Undocumented patches

Somebody patched core or a contrib module to fix an urgent problem in 2019 and it was never written down. The behaviour is now load bearing and nobody remembers why.

03

Field mapping

The unglamorous heart of any migration. Two hundred fields across forty content types, some of which changed meaning over the years, and all of which have to land in the right place.

04

Media and inline references

Drupal 7 file fields become media entities, and references embedded inside body text have to be rewritten. Miss this and images vanish from old articles after launch.

05

Redirects and SEO

If the URL structure changes at all, a redirect map is required, and it needs testing against real top-performing URLs from analytics rather than a handful of samples.

06

Editorial downtime

The content team cannot stop working for six weeks. That constraint shapes the whole cutover plan, and pretending otherwise is how launches slip.

Our process

Five stages, and you can stop after the first.

STAGE 1 · AUDIT

Read the site, not the brief

We go through the codebase, the contrib list, the custom modules, the content model and the analytics. The output is a written document: every module with no upgrade path and what we recommend for it, the real content volume once abandoned drafts are excluded, the risks, and a fixed price. This costs nothing and it is yours whether or not you continue.

STAGE 2 · FOUNDATION

Build the target platform

A clean Drupal 10 or 11 install with the content model rebuilt properly rather than copied. This is the one chance to fix a data model that has drifted over a decade, and it costs almost nothing to do while everything is being touched anyway.

STAGE 3 · MIGRATION

Move content, then verify it

Migrations written with the migrate API so they are repeatable rather than a one-off script. We run them repeatedly against production data, and every run produces a comparison report of counts and spot checks against the source.

STAGE 4 · REDIRECTS

Protect the traffic you already have

URL aliases carried across, a redirect map built for anything that changed, and testing against your highest-traffic URLs pulled from analytics. Metadata, canonicals and structured data verified page type by page type.

STAGE 5 · CUTOVER

Switch without a maintenance window

A final content sync, then the switch at DNS or load balancer level. The editorial team keeps working on the old site right up to the day. Two weeks of close monitoring follows, because migration problems surface in the second week rather than the first.

Proof

Three of them, on live platforms with real editorial teams.

Each was led by our founder through the agency named or described. Full details on the homepage.

A university art museum, US

Migration to Drupal 10 alongside custom theme and module development, with DDEV environments and Playwright smoke tests catching route and redirect problems before staging.

Drupal 10Via a US digital agency

A private college, US

A complete redesign with new features built in, plus a migration carrying the platform from Drupal 8 all the way to Drupal 11, with performance and security work throughout.

Drupal 8 → 11Via a US digital agency

A data centre and colocation provider, US

A rebrand carried through every template, then a redesign adding new features, then the migration from Drupal 9 to 10. Three projects in sequence on a live site with no dark window.

Drupal 9 → 10Via a US marketing agency
Questions

What people ask before committing to a migration.

Is Drupal 7 still supported?
No. Community support for Drupal 7 ended in January 2025. Sites still running it receive no core security patches, which for most organisations makes migration a compliance question rather than a roadmap item. Paid vendor extended support exists but it is a holding measure, not a destination.
Can you upgrade Drupal 7 directly to Drupal 11?
Not as an in-place upgrade, because Drupal 7 shares almost no architecture with modern Drupal. What actually happens is a new Drupal 10 or 11 build with the content, users, files and URL structure migrated across using the migrate API. We usually target 11 directly rather than stopping at 10, since the extra work is small and it buys years of support.
How long does a Drupal migration take?
It depends far more on the custom code and contrib footprint than on the content volume. A straightforward Drupal 9 to 10 upgrade can be a few weeks. A Drupal 7 site with heavy customisation is usually several months. The audit gives you a real number instead of a range.
Will the site go offline during the migration?
No. The new site is built and populated in parallel, content is synchronised again shortly before cutover, and the switch happens at DNS or load balancer level. The editorial team keeps working on the old site until the day of the move.
What happens to our SEO?
This is the part that goes wrong most often, so we treat it as a deliverable rather than an afterthought. URL aliases migrate across, and where the structure has to change we build a redirect map and test it against your top-performing URLs from analytics rather than spot-checking a sample. Metadata, canonicals and structured data move with the content.
What about contrib modules that do not exist for Drupal 10 or 11?
Every project has some. For each one there are three options: an equivalent module that does the same job, core functionality that has since absorbed it, or a small custom module. The audit lists every affected module with which option we recommend and what it costs, so there are no surprises halfway through.
Do you migrate media and file references?
Yes, including the awkward part where Drupal 7 file fields become Drupal media entities. Inline references inside body fields are rewritten too, which is the step most commonly missed and the reason images disappear from old articles after a migration.
Can you migrate from platforms other than Drupal?
Yes. WordPress, Joomla and custom or legacy databases into Drupal, and Drupal outward to WordPress where that is genuinely the better fit. The migrate API handles arbitrary sources, so the work is in the mapping rather than the mechanism.
Do you clean up content during the migration?
If you want. A migration is the one moment when touching every piece of content is already necessary, so it is far cheaper to fix taxonomy, merge duplicated content types and drop abandoned drafts then than to do it later. We will flag what we find in the audit and you decide what is in scope.
What do we get at the end?
A running platform on Drupal 10 or 11, a deployment pipeline with credentials, documentation aimed at a developer who has never met us, a verification report comparing content counts against the source, and two weeks of close monitoring after go-live.
Get in touch

Send us the site you have been avoiding.

Give us read access to the repository, or just the URL and a rough idea of the content volume. Within one working day you get a reply from the engineer who would run the migration.

Before anything is signed, you get a written technical assessment: the real scope, where the risk sits, what we would build differently and why, and a fixed price against it. It costs nothing and it is yours to keep either way.

Reply within one working day, from an engineer Free written technical assessment Fixed scope and price before you commit