What does it take to upgrade from Drupal 7 to Drupal 10?

Looking to migrate from Drupal 6 to Drupal 8? See the original version of this article: Migrating from Drupal 6 to Drupal 8 Like a Boss

 

Moving from Drupal Core 7 to Drupal Core 9/10 takes several steps. Breaking down these steps into phases to upgrade a Drupal application is crucial for long term success. Drupal 7 to Drupal 10 upgrades / site rebuilds can take anywhere from 16 to 30 weeks. 

Drupal upgrades can be split into the following phases: 

 

Future Planning / Architecture review of your Drupal site

Evaluate your Drupal application for readiness to update to the latest version of  Drupal core. This review should start with a current state review and work with your team to determine areas to improve editorial efficiencies, reduce technical debt, and modernize your frontend framework. 
 

Drupal Content migration

Drupal 7 Applications require content migration. If you have a D7 application we recommend using the Content Migration APIs to migrate all of your content into a new site with the latest version of Drupal Core. This will not affect your currently live Drupal site. 

  • Migrations requires a Content Freeze. You can achieve this by either duplicating content in both D7 and D9 sites or scheduling a content freeze.

Deprecated Code Clean up / PHP Upgrade 

  • Drupal 9/10 requires ^PHP 8.x. Over the course of 10 years the PHP code from D7 to D9 has changed quite a lot. Use tools like to review what code needs to be updated. Other important code updates that require time and consideration:

  • Other features that require upgrading: 

    • Drupal Core version 

    • Current PHP Version - Upgrading deprecated PHP code takes time 

    • Total Number of Multi-sites

    • Database Size (in GB)

    • Number of Contributed Modules

    • Number of Custom Modules

    • Number of Views - Views must be upgraded manually

    • Number of Themes - Themes must be upgraded manually 

    • Number of PHP theme templates - templates must be rewritten manually 

    • PHP Text Format enabled

    • Organic Groups Module - Organic groups must be rewritten manually 

    • Rules Module - Rules do not have a 1:1 equivalent so you must manually audit your rules

    • Panels Module - Panels must be rewritten in Drupal 9/10 manually 

Frontend Drupal Theme Rebuild

Drupal 9’s frontend framework provides a modern approach to design. This requires more time to rebuild templates and other frontend components or code with a frontend developer. There are no tools to automatically do the frontend part of the upgrade.

  • Option one: Theme rebuild using TWIG 
  • Option two: Site Studio Rebuild 
  • Option three: Decoupled Frontend architecture 
     

Upgrading Drupal Prelaunch Checklist

Review Acquia's prelaunch checklist and consider hiring Professional Services to perform security and performance audit known as  Launch Readiness.
 

Production Launch

Launch your new Drupal 9 site to the public with either a code deployment or a DNS change to your new D9/10 environment. 
 

Ongoing Drupal Site Development and Future Security Updates with DevOps

Once you have an upgraded site have you considered trying to automate your devops to keep up with security updates in the future?  The world's only full stack Drupal platform for development. Code Studio makes building Drupal applications easy. Accelerate your production with a complete set of tools that enable your teams to plan, build, test, review, and deploy from a single, customizable workflow parts of Drupal development so you can stay focused on what's most valuable.

  • Auto Devops: Automatically build, test and deploy your Drupal applications with Acquia Code Studio managed CI pipelines. Your Drupal application will inherit Acquia’s configurable build pipeline, which will install dependencies, scan and test your code, create a review environment, and (when you’re ready) deploy straight to production.
  • Automatic Updates: Code Studio will automatically update your Composer packages, replace deprecated custom code, and submit those changes for you to review in a Merge Request with a dedicated review environment. When you’re ready, you can merge the changes with a single button click and our pipeline.
  • Try Code Studio yourself with a clickable walkthrough  

 

What can you do right now?

One: Install Upgrade Status 
Upgrade Status is a Drupal module that can provide more information about your current place and support for upgrading to Drupal 10.

Two: Audit content and text formats 
Review your content types and text formats. It is recommended that you do not use PHP or code inside of your fields. If you are using PHP code inside of your database fields you should consider removing it before or flagging it before an upgrade to remove afterwards. 

Three: Audit views
Consider reducing views you don’t need and take a look at the Views migration from Drupal 7 to Drupal 9 module to help migrate. Some views might need to be rebuilt by hand. 

Four: Review custom code and features for PHP Compatibility
Custom modules and features need to be reviewed for PHP compatibility. You can use a code sniffer like https://github.com/PHPCompatibility/PHPCompatibility to identify code that has been deprecated and needs to be updated. There is also  Drupal 7 to 8/9 Module Upgrader can help to automate some of this task, but manual intervention will still be required.

Five: Upgrade everything to the latest version of D7 projects and review known upgrade issues. You can check the known upgrade issue page

Six: Review frontend and page building elements.
Drupal 10 uses twig templates instead of PHP templates. You will need to manually rebuild your theme templates and functions after the migration.