Glen Dimplex Drupal 9 Upgrade
A full upgrade (rebuild) of the Drupal 7 Glen Dimplex platform to Drupal 9 was required due to Drupal 7 getting ever closer to its End Of Life date. The rebuild had to retain all existing multilingual capabilities, eCommerce functionality and SAP integration. By the time the upgrade to Drupal 9 had started, the Drupal 7 Glen Dimplex platform had grown to power 18 different websites with 11 different themes, almost 30 different tile types along with multiple content types and taxonomies!
The scale of the task at hand was apparent, and we knew we needed a sensible approach to configuration management from the get-go to make managing the differing configuration between the various websites as easy as possible.
We decided that the (brilliant) Configuration Split module would be used to manage all the different websites' configuration. The module - which we install on every Drupal 9 website that we build - really came into its own for this build as we were able to add a separate configuration split entry for every brand site that needed a different configuration.
This meant that we could have one large pool of configuration which would be shared across the websites. Each site could have individual overrides for specific parts of the configuration saved into its own configuration split entry. Things such as website name, website homepage, active theme and enabled languages (amongst other things) were all split off, so changes can be exported and then would only appear on the website that needs them.
Some brand sites also have additional specific functionality or modules that are only suitable for that particular site. We separated those bits into separate splits so that they could only be enabled on the websites that needed the functionality.
This was probably the most extreme example of an implementation of configuration split we have implemented so far at ComputerMinds, with over 20 different configuration split entries for the various platform websites and 'specific functionality' splits. This demonstrates just how powerful the module can be, especially when handling the configuration of a complex multisite platform such as this.
A partial example of the configuration split setup used on the platform.
The Big Migration
The big task for the rebuild was the migration of all the website content from Drupal 7 to Drupal 9. With our expertise in the (especially good in Drupal 8/9) Drupal migration system, we created over 80 fully customised migration scripts to migrate the various content types, taxonomies, field collections, paragraphs, commerce data, user data, and more. Alongside this, we created a multitude of bespoke migration source & process plugins to ensure the data came across exactly as needed by the data model in the Drupal 9 build.
An important part of any large migration is thorough testing. Throughout the building of the migration scripts, there is a constant cycle of testing --> making changes --> testing again, to ensure that the data comes across exactly as expected and that any previously unforeseen issues are caught and fixed before doing the final migration on the production website. We take a meticulous approach when developing data migrations and will only run the final migration once we are 100% happy with the results.
Once all of the hard work was completed with the migrations, when it came to migrating a website's content from Drupal 7 to 9 it was immensely satisfying to run a couple of commands and watch everything come over perfectly and display exactly as it did on the Drupal 7 website (once the themes had been rebuilt and ported over, of course!).
Custom Migration Plugins
Being a Drupal 9 website, we used the Drupal Commerce (2.x) suite of modules to power the eCommerce functionality on the web shop. An important part of this was to have an integration with SAP for customer order data. When a customer places an order from the website shop, the website needed to automatically export the order onto the server into the correct format that SAP expects.
We set about hooking into the commerce workflow and writing some bespoke functionality that would enable the automated exporting of the customer's order after they had placed it on the website. The data that was exported could then be picked up via SFTP by an automated process from the client's system to then import the order into their SAP system.