Updating Systemseed.com to Drupal 10 - How it went and what we learned
Best user and developer experience offered by Drupal 10 is now part of SystemSeed
With Drupal 10.1 being released on 22 June 2023, we were excited to upgrade our website from 9.5. We wanted to boost user experience for our content editors and visitors to a new level. With the new Claro admin theme and amazing CKEditor 5 packaged in with Drupal 10.1, we couldn’t wait to make the upgrade.
Upgrading at the right time
Drupal 9, as with all the previous versions of Drupal, was our trusty tool that we recommended to all of our clients because upgrading from there would be easy. As we were also in the process of rebranding the company, it was a great opportunity to test just how simple it is to make the upgrade.
A straightforward approach
The key to an easy upgrade to Drupal 10 from Drupal 9 is a well maintained website that has been kept up in terms of minor version upgrades to core and modules. From there it is just the matter of contributed modules being compatible with the new major version of Drupal core. Fortunately, it is very easy to check by using the Upgrade Status module.
When Drupal 10 was released on 15 December 2022, many of the contributed modules we used were not compatible with it. Our team was busy contributing patches, creating merge requests and contacting the maintainers to prepare the ground for us and our clients to be able to upgrade to Drupal 10, when the time comes. We had also previously organised a Drupal 10 Global Porting Day to help get everything ready.
Upgrading to Drupal 10 was fast and smooth, despite numerous changes to Drupal Core behind the scenes, such as the new Twig and Symfony versions, better password security, and more.
Upgrading custom modules and themes
In most cases, upgrading custom modules and themes was as easy as adding the right numbers into the list of supported core versions. However there were cases when an API being used was deprecated, in those cases the drupal-rector project helped to make the process as easy as it can be.
Looking back at the old times of Drupal 6-7, when upgrading a site required a full rebuild, it makes you appreciate how much easier everything is now when upgrading from one Drupal version to another.
Modules we helped make compatible with Drupal 10
- Rollbar https://www.drupal.org/project/rollbar/issues/3289422
- Wodby/nginx https://github.com/wodby/nginx/commit/decf33d32d053d502a89e1c3b5b5798577e4e425
Our step-by-step process
- Our website was on the latest 9.5 version, so that is where we started our upgrade. It is always a good idea to upgrade to the latest available minor version before doing a major version upgrade.
- Before upgrading to Drupal 10, we did some house-cleaning by enabling CKEditor 5 and assigning it as a primary WYSIWYG. We were then able to safely disable the deprecated CKEditor 4.
- We then replaced the depreciated admin theme Seven with Claro.
- We used the Upgrade Status module which lists the compatibility status of all modules with the Drupal 10 to identify any compatibility issues.
- The Composer update was performed on all modules that had stable versions that supported Drupal 10.
- There were some modules that had alpha, beta or dev versions that supported Drupal 10. We manually installed those versions and made sure they were stable on our website.
- When a module didn’t support Drupal 10 at the time, but was being actively maintained, we worked with the maintainer to help implement the required enhancements. This was what happened with the Rollbar module.
- However with the URL Queuer module, which didn’t support Drupal 10 and wasn’t actively maintained, we opted to automatically apply the patch.
- All of our custom modules already had Drupal 10 compatibility, so we focused next on our custom theme, where we made sure that all template files worked with Twig 3.x syntax.
- Once everything was ready we performed the final composer upgrade to Drupal 10.
Issues discovered
After the upgrade and thorough testing we found following issues:
- Drupal 10 changed the way that assets for the custom theme are handled. This is important because we needed to reconfigure our instance of nginx in order to account for this change.
- The Fast404 module needed to be patched to ignore css and javascript paths, because they are now handled by Drupal 10.
- Password hashing was changed in Drupal 10, so in order to provide backward password compatibility you need to enable the `phpass` module included with Drupal 10 core.
Need help with your upgrade?
If you are intending to upgrade your own site to Drupal 10, and would like our help, get in touch at [email protected].