Upgrading from Drupal 8 to Drupal 10 - Your Step by Step Guide

Making Complex Upgrades Simple

John Doyle
John Doyle
CEO, Technical Architect, Drupal SME, Open Source Champion
blog image
Drupal Upgrades

Drupal 8 hit its end-of-life in November 2021. Drupal 9 is slated to end-of-life in November of 2024. If you are still running a Drupal 8 or Drupal 9 website, it is important that you upgrade to Drupal 10 as soon as possible to stay protected, reduce risk, and be able to take advantage of new features.

Planning for your Drupal 8 to Drupal 10 Upgrade

Upgrading from Drupal 8 to Drupal 10 is an essential step to ensure your website stays secure, functional, and competitive. Proper planning not only provides a clear roadmap for the upgrade but also helps estimate the level of effort (LOE) required, making it easier to communicate effectively with stakeholders. Follow these steps to plan your Drupal upgrade efficiently:

  1. Understand Site Functionality: This step may be trivial if you are upgrading your own applications, but for those of you planning to use a partner, this is a critical step. This enables the team doing your upgrade to understand key functionality (customizations) made to your application and will ensure they can effectively test the upgrade. This step will greatly reduce bug counts and keep your upgrade running smoothly. 
  2. Run Your Site Upgrade Audit: Leveraging tools like the Upgrade Status module to analyze which of your current Drupal 8 modules and themes are compatible for Drupal 10. This tool helps identify any code that has been deprecated or needs to be updated for the next major version of Drupal. 

    Developer Note: You will likely need to plan/run your upgrade audit in 2 phases. Once for Drupal 8 to Drupal 9, and once for Drupal 9 to Drupal 10. There are dependencies/compatibility issues if you try to do it all at once.

  3. Develop a Timeline: Based on the complexity identified in the initial assessments, draft a timeline for the upgrade. Include key milestones such as completing module updates, theme migration, content auditing, and final testing.
  4. Engage with Stakeholders: Keep stakeholders informed about the timeline and potential impacts. Regular updates can help manage expectations and ensure necessary resources are allocated.

 

Your Drupal Upgrade Audit Report : 

In the Drupal Upgrade Audit, we look at the current application and analyze the existing state to prepare for the upgrade. This involves an audit of core, contributed and custom code on the website. 

Example Drupal Application Upgrade Status Overview

  

  Upgrade Path Available. 

  Needs Development Work. 

  Not Used - Should Remove. 

    Total    

Modules

 

Contrib

201

14

26

241

 

Custom

0

33

0

33

Themes

 

Contrib

0

1

0

1

 

Custom

0

1

0

1

Profiles

 

Contrib

0

1

0

1

 

Custom

0

0

0

0

 

Example Effort/Timelines: 

Now that you understand what needs to be done, you can generate effort estimates and start to get an idea of the timelines required to upgrade your application. Of course there are a lot of factors to consider here, but generally these are the types of estimates we come across for sites with a moderate level of custom code. 

Since there are two major Drupal upgrades required (8.x-9.x and 9.x-10.x) the upgrade paths will require the work be done in phases and each phase will need to be deployed through production in order to align to the upgrade paths provided. This will require multiple iterations of full regression testing across the websites. 

Estimated Level of Effort to Upgrade D8 to D9.5: 180-250 Hours

Estimated Timeline: 4-5 weeks

Estimated Level of Effort to Upgrade from D9 to D10: 80-100 Hours

Estimated Timeline: 2-3 Weeks

Full Estimated Timeline: 6-8 Weeks

Upgrading the Application

Based on the review of the existing application and the results of your audit, you will need to develop an upgrade plan for your Drupal 8 website. In most cases, we see the need to take a phased approach to this upgrade process because the site is so far behind. You will likely need 2 or 3 phased releases in this process - some nested dependencies get tricky between Drupal 9.4 and Drupal 9.5 and we often see an additional release needed here. 

Here is an example upgrade process from a recent upgrade we performed.

Release 1: Update PHP 7.4 to 8.1 and upgrade Drupal 8.9 to 9.4

  • Update PHP version from 7.4 to 8.1
  • Upgrade the Drupal Core from 8.9 to 9.4
  • Upgrade the Module to support Drupal 9.4
    • Drupal Contrib Modules
      1. Disable/uninstall unused modules
      2. Upgrade Drupal modules that have upgrade paths
      3. Apply community patches to Drupal modules not fully ready for upgrades
      4. Write custom patches for Drupal Modules that need upgrade paths (+ contribute the patches back!)
    • Drupal Custom Modules
      1. Upgrade custom code to remove deprecations and leverage new approaches.
  • Upgrade the Theme & Libraries to support Drupal 9.4

Release 2: Upgrade Drupal 9.4 to Drupal 9.5

  • Upgrade the Drupal Core from 9.4 to 9.5
  • Upgrade the Module to support Drupal 9.5
    • Drupal Contrib Modules
      1. Disable/uninstall unused modules
      2. Upgrade Drupal modules that have upgrade paths
      3. Apply community patches to Drupal modules not fully ready for upgrades
      4. Write custom patches for Drupal Modules that need upgrade paths (+ contribute the patches back!)
    • Drupal Custom Modules
      1. Upgrade custom code to remove deprecations and leverage new approaches.
  • Upgrade the Theme & Libraries to support Drupal 9.5
  • Fix undefined user permissions - https://www.drupal.org/node/3193348

Release 3: Drupal 9.5 to Drupal 10

  • Upgrade the Drupal Core from 9.5 to 10.1
  • Update PHP version from 8.1 to 8.2
  • Upgrade the Module to support Drupal 10.1
    • Drupal Contrib Modules
      1. Disable/uninstall unused modules
      2. Upgrade Drupal modules that have upgrade paths
      3. Apply community patches to Drupal modules not fully ready for upgrades
      4. Write custom patches for Drupal Modules that need upgrade paths (+ contribute the patches back!)
    • Drupal Custom Modules
      1. Upgrade custom code to remove deprecations and leverage new approaches.
  • Upgrade the Theme & Libraries to support Drupal 10
  • Upgrade CKeditor 4 to CKeditor 5: https://www.drupal.org/docs/core-modules-and-themes/deprecated-and-obsolete#s-ckeditor
  • Remove Lightning Profile

With all of this information, you are now prepared to create a schedule and communicate it to your stakeholders. Be sure to include quality assurance and user acceptance testing time into your schedule for each release to ensure the site is performing as expected. 

Are you looking to put your Drupal upgrade on the fast track? Contact us for a free consultation or visit our Drupal Upgrades Made Easy page to learn more about how we can help.

Some more useful information for your Drupal 10 Upgrade:

Drupal 9 and Drupal 10 Version Release Notes

  1. Drupal 9 release log - https://www.drupal.org/project/drupal/releases/9.5.11 
  2. Drupal 10 release log - https://www.drupal.org/project/drupal/releases/10.0.0

Risk Factors for not upgrading your Drupal 8 or Drupal 9 website:

  1. Drupal 8 is already in End of Life - https://www.drupal.org/psa-2021-06-29
  2. Drupal 9 will reach End of life in November 2024 - https://www.drupal.org/blog/drupal-10-target-release-date-and-drupal-9-end-of-life 
Drupal