As one of the most capable open-source enterprise content management systems (CMS), Drupal provides a flexible, security-hardened foundation for complex digital platforms. With Drupal 9 having reached end-of-life, migrating to Drupal 10 (and preparing your architecture for Drupal 11) is essential for ongoing security advisories and modern editorial tooling. This step-by-step guide outlines a structured migration workflow to ensure a smooth, zero-downtime upgrade.
Why Upgrade to Drupal 10?
Before beginning the technical migration, it is helpful to understand the architectural and operational benefits of upgrading to Drupal 10:
Upgrading keeps your digital platform secure, performant, and aligned with modern PHP engineering standards.
Pre-Migration Checklist
Before initiating your migration, complete these essential preparatory steps:
Step-by-Step Migration Process
Step 1: Perform a Core Upgrade and Update Contributed Modules

Ensure your site is on the latest release of Drupal 9. Run the Upgrade Status module to verify contributed module dependencies and apply available Drupal 10 updates.
Step 2: Custom Code Evaluation and Rector
Audit custom modules and themes for deprecated functions. Use Drupal Rector to automatically modernize APIs and refactor outdated syntax.
Step 3: Test Migration Locally
Spin up a local staging environment with Docker, DDEV, or Lando. Test your database updates and verify layouts, plugins, and third-party integrations.
Step 4: Execute Drupal 10 Update
Update your composer.json dependencies and run database migrations:
composer update --with-all-dependencies
drush updb
drush config:import
drush crStep 5: Post-Upgrade Verification
Perform thorough functional testing across all user roles, checking checkout funnels, contact forms, and content editing workflows.
Step 6: Deploy Upgraded Site Live
Put the production site in maintenance mode, deploy code and database updates, clear caches, verify functionality, and disable maintenance mode.
Post-Migration Tasks
Once the migration is complete, carry out the following post-launch tasks:
Tips for a Smooth Migration
Upgrading from Drupal 9 to Drupal 10 protects your site from vulnerabilities and unlocks modern editorial capabilities. Note: For enterprise platforms looking further ahead, Drupal 11 is now generally available, building upon Drupal 10's foundation with PHP 8.3+ support, recipe-based site building, and streamlined headless architectures.
Frequently Asked Questions
Answers to common questions about upgrading from Drupal 9 to Drupal 10.
What is the process for upgrading from Drupal 9 to Drupal 10?
The process for upgrading from Drupal 9 to Drupal 10 involves checking your current site for compatibility, updating contributed modules and themes, and using the upgrade status tool to identify any issues. After resolving any identified problems, you can proceed with the upgrade using Composer to ensure a smooth transition to the latest version.
Are there any major differences between Drupal 9 and Drupal 10?
Yes, there are several differences between Drupal 9 and Drupal 10. Notably, certain modules and themes that were deprecated in Drupal 9 have been removed in Drupal 10. Additionally, Drupal 10 introduces new features and enhancements, including updated CKEditor 5 support, improved user interface elements, and enhanced performance.
How can I check the compatibility of my modules before upgrading to Drupal 10?
You can check the compatibility of your modules by using the upgrade status tool provided by Drupal. This tool will generate a report indicating which modules are compatible with Drupal 10, which need to be updated, and which may not be supported in the new version.
What PHP version is required for the Drupal 10 upgrade?
Drupal 10 requires PHP 8.1 or higher. It is essential to ensure that your server environment meets this requirement before initiating the upgrade process from Drupal 9 to Drupal 10.
Will my custom modules still work after the Drupal 10 upgrade?
Custom modules may require updates to ensure compatibility with Drupal 10. You should review your custom code for any deprecated functions or APIs that were removed in Drupal 10. Testing your custom modules in a staging environment before the final upgrade is advisable.



