How to Upgrade from Drupal 7 to Drupal 10
How to Upgrade from Drupal 7 to Drupal 10

Key Takeaways
- Drupal 7 reached end of life in January 2025, so it no longer receives security patches, making an upgrade to Drupal 10 a business-continuity and compliance necessity rather than optional maintenance.
- Because Drupal 8+ was rebuilt on Symfony with Twig templating, moving from Drupal 7 to 10 is a full rebuild and data migration, not an in-place update — themes and most modules must be recreated.
- Drupal core's Migrate, Migrate Drupal, and Migrate Drupal UI modules provide a built-in upgrade path that moves nodes, users, taxonomy, and fields from a copy of the Drupal 7 database into Drupal 10.
- A comprehensive 301 redirect map is the most important SEO safeguard, ensuring old Drupal 7 URLs pass link equity to their Drupal 10 equivalents and preventing ranking loss.
- Realistic timelines range from 3-6 weeks for simple sites to 2-4 months or more for complex ones, with custom modules and legacy content volume being the biggest cost drivers.
Drupal 7 reached its official end of life in January 2025, meaning the community no longer ships security patches or bug fixes for it. If your organization is still running a Drupal 7 site, every day it stays live is a day it accumulates unpatched vulnerabilities and drifts further from the modern web. Upgrading to Drupal 10 (or Drupal 11, which shares the same architecture) is no longer optional maintenance work; it is a business-continuity decision.
The catch is that this is not an in-place "click update" like moving between Drupal 10 minor releases. Drupal 7 was built on the legacy Drupal API, while Drupal 8 onward were rebuilt on top of Symfony with an object-oriented codebase, Twig templating, and a completely different configuration and entity model. That means a Drupal 7 to Drupal 10 upgrade is effectively a rebuild and data migration, not a version bump. This guide walks through why teams make the move, what actually breaks, the step-by-step process, and how to protect your search rankings along the way.
Whether you handle it in-house or bring in a partner for professional website migration services, understanding the full scope up front is what keeps the project from stalling halfway through.
Why businesses upgrade from Drupal 7 to Drupal 10
The most urgent driver is security and compliance. With Drupal 7 past end of life, no more official Security Advisories are issued. For sites handling payments, healthcare data, or any regulated information, running unsupported software can violate PCI-DSS, HIPAA, or SOC 2 requirements and jeopardize cyber-insurance coverage.
Beyond risk, Drupal 10 delivers concrete gains that Drupal 7 simply cannot:
- Modern performance — Drupal 10 runs on PHP 8.1+, uses Symfony components, and supports BigPipe, lazy-loading, and better caching out of the box, producing faster Core Web Vitals scores.
- A real content-editing experience — the CKEditor 5 WYSIWYG, Media Library, and Layout Builder replace Drupal 7's clunky editing and dependency on dozens of contrib modules.
- Mobile-first, accessible theming — the Olivero front-end theme and Claro admin theme are responsive and WCAG-conscious by default.
- A sustainable future — because Drupal 8, 9, 10, and 11 share the same underlying architecture, future upgrades are incremental rather than full rebuilds. Getting to 10 is the hard part; staying current afterward is easy.
In short, the Drupal 7 to 10 jump is the last painful migration your site will need for years.
What changes and what breaks
Setting expectations here prevents nasty surprises. On a Drupal 7 to 10 migration, expect the following to change or break:
- Themes do not carry over. Drupal 7 themes use PHPTemplate; Drupal 10 uses Twig. Your theme must be rebuilt, which is also the natural moment to modernize the design and responsiveness.
- Contributed and custom modules must be replaced or rewritten. Popular Drupal 7 modules like Views, CTools, Panels, and much of Field API are now in Drupal core or have new equivalents. Custom modules written for the Drupal 7 hook system need to be rebuilt as Symfony-style plugins and services.
- Content structure is preserved, but the plumbing differs. Nodes, users, taxonomy, and fields migrate, but content types and field configuration are re-created as exportable YAML configuration rather than living in the database.
- URLs may shift. Drupal 7 path aliases and Pathauto patterns can be carried over, but any structural change to your information architecture risks breaking existing links, which is where SEO protection becomes critical.
- Some features simply have no direct replacement and must be re-architected. Audit these early so they don't derail the launch.
Because so much is rebuilt, many teams treat this as an opportunity to also refresh their design and features through a broader website development effort rather than a pixel-for-pixel copy.
Step 1: Audit and plan the migration
Before touching code, inventory everything. Catalog every content type, every field, every active module (core, contrib, and custom), every View, and every third-party integration such as payment gateways, CRMs, or marketing tools. For each contrib module, check drupal.org to see whether a Drupal 10-compatible version exists, whether its functionality moved into core, or whether it is abandoned and needs a replacement.
This is also the moment to prune. Most long-running Drupal 7 sites carry years of dead modules, unused content types, and orphaned nodes. Migrating less means a cleaner, faster Drupal 10 site. Document your target information architecture and decide, module by module, whether you are migrating, replacing, or retiring each piece of functionality.
Step 2: Stand up the Drupal 10 environment
Provision a fresh Drupal 10 installation on a modern stack: PHP 8.1 or higher, MySQL 8 / MariaDB 10.6+ or PostgreSQL, and Composer for dependency management. Do not attempt to upgrade the old codebase in place. Install Drupal 10 alongside the live Drupal 7 site (in a subdirectory, subdomain, or separate staging environment) so the old site keeps serving visitors while you build.
Next, re-create your content types, fields, taxonomy vocabularies, and user roles in Drupal 10. Enable the core Migrate, Migrate Drupal, and Migrate Drupal UI modules, which provide a built-in upgrade path specifically designed to read from a Drupal 7 database. For complex sites, the Migrate Plus and Migrate Tools contrib modules plus Drush let you run and re-run migrations from the command line with far more control.
Step 3: Migrate content and rebuild functionality
Point the Migrate Drupal tools at a copy of your Drupal 7 database and run the migration. This moves nodes, users, taxonomy terms, comments, files, and field data into Drupal 10's entity model. Always run migrations against a copy, never the production database, and expect to iterate: run, review, fix mappings, roll back, and run again until the data lands cleanly.
Content is only half the job. In parallel you must:
- Rebuild Drupal 7 Views as Drupal 10 Views (the interface is similar but not identical).
- Re-create custom module logic as Drupal 10 plugins, services, and controllers.
- Rebuild the theme in Twig, ideally on a modern base theme, and reconnect media and image styles.
- Reconfigure integrations — forms, CRM connectors, analytics, and payment systems.
If your site depends on bespoke workflows or connected business systems, this is often the point where teams invest in custom development and CRM integration to modernize rather than merely replicate old behavior.
Step 4: Preserve SEO with a 301 redirect map
This is the single most important step for protecting the traffic and rankings you have spent years earning. Any change to URL structure between Drupal 7 and Drupal 10 must be caught with 301 (permanent) redirects so link equity and bookmarks transfer to the new addresses.
Start by crawling the live Drupal 7 site to export a complete list of indexed URLs, then map each old URL to its Drupal 10 equivalent. Where aliases are preserved via Pathauto, many URLs will match one-to-one; where they change, you need an explicit redirect. Implement these using the Drupal Redirect module or at the server level. Do not skip pages with backlinks or high organic traffic. Building a thorough 301 redirect map for the migration is what separates a smooth launch from a ranking collapse.
Also carry over your XML sitemap, robots.txt rules, canonical tags, and page-level meta titles and descriptions (the Metatag module replaces Drupal 7's SEO settings). Following a structured website migration SEO checklist ensures nothing slips through before you flip DNS.
Step 5: Test, launch, and monitor
Before going live, run thorough QA on staging: verify every content type renders correctly, forms submit, integrations fire, redirects resolve, and the site is responsive and accessible. Test with real content, check for broken images and links, and validate performance under load.
For launch, update DNS to point to the new Drupal 10 environment, ideally during a low-traffic window, and keep the Drupal 7 server available for a short period as a fallback. Immediately after cutover:
- Submit the new XML sitemap in Google Search Console and watch the Coverage and Crawl reports for errors.
- Spot-check your top 50 URLs to confirm they return 200s or correct 301s, not 404s.
- Monitor organic traffic and rankings daily for the first few weeks; a small temporary dip is normal, a sustained drop signals a redirect or indexing problem to fix fast.
Timeline and cost expectations
Be realistic: a Drupal 7 to 10 migration is a project, not an afternoon. A small brochure site with a handful of content types might take 3 to 6 weeks. A mid-sized site with custom modules, several integrations, and thousands of nodes typically runs 2 to 4 months. Large enterprise or government sites with heavy custom functionality can run six months or more.
Cost tracks scope and complexity. At eSEOspace's $80/hour rate, a straightforward migration lands in the low thousands, while complex rebuilds with custom module redevelopment, design modernization, and extensive redirect mapping cost more. The biggest cost drivers are custom code, the number of contrib modules needing replacement, and the volume and messiness of legacy content. Auditing and pruning aggressively in Step 1 is the most reliable way to keep both timeline and budget under control, and partnering with a team experienced in Drupal migrations usually pays for itself in avoided rework and protected rankings.
Frequently Asked Questions
Can I upgrade directly from Drupal 7 to Drupal 10?
Will my content survive the migration to Drupal 10?
How do I keep my SEO rankings during a Drupal 7 to 10 move?
What happens to my Drupal 7 modules and theme?
How much does a Drupal 7 to 10 migration cost?
Get a FREE GEO/AEO/SEO Audit
We'll analyze your site's SEO, GEO, AEO & CRO — completely free — and show you exactly how to get found across Google and AI answers.
Don't have a site yet? Get in touch →






