Drupal 9: How to successfully upgrade

04.06.2020 Pablo López Escobés Daniel Pavón Pérez
Drupal Logo

The big day has come: The new version of the CMS Drupal was launched on June 3rd. Drupal 9 scores with the upgrade to Symfony 4 and PHP 7 as well as a simplified upgrade process.

The new Drupal version doesn't come up with much that is surprisingly new, but offers some new features, especially in the execution of existing functionalities, to ensure the security and future viability of open source CRM. Drupal 9 (D9), for example, updates the so-called dependencies to Symfony 4.4, Twig 2, PHPUnit or jQuery. In addition, the system raises the requirements for the PHP version used in order to increase performance even further: PHP 7.2 or even 7.3 must then be implemented. This is the only way to ensure the security and future viability of Drupal in the future.

Starting with version 9.1, the Drupal community plans to equip D9 with additional features - such as a new admin and front-end theme or improvements in the display and content workflow. The biggest visible change is the removal of obsolete code from the previous version.

Plan the upgrade process in good time

Upgrading to the new version is essential for all Drupal users, because the end date of both Drupal 7 and Drupal 8 is already set: November 2021, by which time the upgrade process should be complete, as support for version 3 of the symfony framework on which Drupal 8 is based will expire - security vulnerabilities can no longer be fixed.

Depending on which Drupal version is currently used for content management, the following notes and tips should be observed during migration:

1. Direct upgrade from Drupal 8 to Drupal 9
In contrast to previous upgrades, the migration from D8 to D9 is relatively easy to manage, as the provider has provided some simplifications on the code side:

The big difference to previous migration processes is that programmers can now see in the current Drupal 8 installation how compatible it is with D9. This gives them time to make a plan for necessary adjustments before the version change. Further assistance is provided by the upgrade status module, which displays the Contrib Modules to be updated. For a successful switch to D9, it is essential that these are adapted. To do this, it is necessary to check the custom code manually or with the help of a tool like drupal check - only then will the changeover go smoothly.

2. Prepare upgrade from Drupal 7 to Drupal 9
A direct migration from Drupal 7 to Drupal 9 is much more complex. To avoid unnecessary surprises and save a lot of time, it is therefore recommended to migrate long-term projects from D7 to D8 in a timely manner. This intermediate step makes it possible to use tools that then facilitate the transition to Drupal 9 and reduce unnecessary stress. Another argument for this approach: D7 is not yet based on Symfony. In addition, many approaches and interfaces were changed from Drupal 8 onward.

Drupal upgrade in practice
The actual effort involved in the change depends on the size and number of websites to be migrated. It is therefore advisable to think about the new site architecture and the desired functions at an early stage and to consider which Drupal modules should be included in the new structure. A look at the module upgrade status helps to do this. This gives a good overview of the existing modules and which ones might be missing.

From a developer's point of view, probably the most interesting part of the upgrade process is the look at the custom code, which shows how Drupal module programming has developed in the past.

The content is what matters
With the help of the "Migrate" module, which is now included in the core of Drupal 9, the content can then be transferred to the new system. Please note the following:

1. Anticipatory time management
Many roads lead not only to Rome - but also to the migration of content for Drupal 9, so it is important to define a roadmap in time, use the above mentioned tools like the upgrade status module or Drupal Check and get an overview of the code status.

2. Preceding process simulation
To ensure a smooth transition, the entire process should be simulated in advance and critical points along the entire process chain should be tested at an early stage.

3. Continuous process automation
The migration process contains many components that are suitable for automation. The higher the number of automated components, the fewer errors can occur in the process.

Drupal 9 - Time for the change
The release of Drupal 9 and the end of support for the D7 and D8 versions in November 2021 should be an incentive for everyone to take the necessary steps for an update in time to ensure a stress-free transition. Then nothing will stand in the way of optimal use of the CMS and the implementation of many new ideas of the Drupal community.