Drupal 7 to Drupal 9 migration and upgrade service
Drupology provides a comprehensive Drupal 9 migration service for any version of Drupal prior to 9.
In summary, it's fairly straightforward to perform a Drupal 9 migration from Drupal 7, 6 or 8 as long as the right approach is taken.
We're happy to discuss your migration requirements with you so we can provide some ballpark figures and explain what would be involved for your specific Drupal site.
Please do get in touch to find out more, or read below for a reasonably detailed explanation of our process.
Drupal 6 and Drupal 7 migration to Drupal 9
Drupal 9 is a complete rewrite of the platform, bringing in all the advantages of the Symfony framework. Drupal 9 is built on top of a stable, well used code base that invites participation from thousands of other developers outside of the Drupal world. And of course, we can take advantage of thousands more components from the Symfony world created by those developers. This is what open-source is all about and represents a huge step in the right direction. Building Drupal 9 sites and migrations is more stable, and gives us access to millions of lines of efficient and secure code from outside the Drupal world.
So this is a good thing, but in terms of migrating a Drupal 6 or Drupal 7 site to Drupal 9 it means essentially rebuilding the website. HOWEVER, there are a lot of well maintained migration modules that can help make this process much quicker and easier than you may think, and it's probably not as big a job as it sounds.
Generally, our Drupal 9 migration service following this process: -
Audit the existing site prior to the Drupal 9 migration
The first step is to audit the existing website. We need to check what modules are being used and why they were chosen. Your custom modules and themes are checked so we can understand what they are for, and how they are responsible for behaviours on the Drupal website.
There is a very handy module that can help do a lot of this heavy lifting. "Upgrade status" will check the current site and build a report stating which modules are available for Drupal 9, as well as listing any issues we need to be aware of. Having upgraded and migrated many Drupal 7 sites to Drupal 9, we are going to be familiar with most of the gotchas.
From a combination of the status report, and manual checking, a migration report is written detailing the plan for the Drupal upgrade.
Existing Drupal entity analysis
Entities are the blocks of data that the website holds. This could be pages (nodes), users, taxonomy terms, commerce orders, etc. Anything that has data in it. We look at all the fields used by these entities. In Drupal 9 there are many modules to choose from, and probably there will be some things developed on the Drupal 6 or Drupal 7 site that are not following best practice. So part of the migration strategy is to identify any better modules to manage the data, and ensure there is an upgrade and migration path to get the data into a more suitable format in Drupal 9.
Upgrade the Drupal 6 or Drupal 7 site and clean up
The first action to take when migrating to Drupal 9 is to get a local copy of the current website up to date with Drupal core and all the contributed modules. This ensures then when the migration plugins run, they are reading values from a database structure that is expected. We also remove any modules and uninstall if they are no longer required - this is quite often the case as previous developers try and test modules. The same is done with things like Views, etc. Are they all required? Anything that is not necessary is removed. Don't worry, this is on a copy of the website, not the live one!
Create the Drupal 9 migration plugins
Drupal out-the-box is quite good at migrating most of the content and entities if there are equivalent modules in Drupal 9. However, this may not be the case, and it's possible a better fit is available.
Migration plugins are small pieces of code that define the relationships between the existing Drupal 6 or Drupal 7 structures and the new Drupal 9 migrated structures. For example, field collections may have been used, but for Drupal 9 we would want to use the Paragraphs module. The migration plugin will take the field collection structure and explain how this should be mapped to the paragraphs module. Sounds simple enough? It it for us and we've done it many times.
Test and run the migration plugins
On a fresh Drupal 9 install, we enable all the required modules and run the Drupal 9 migration plugins from a command line. The migration plugin code will read from the local copy of the Drupal 6 or Drupal 7 database and automatically create all the content types, user types, taxonomies, etc, in Drupal 9, as well as migrate the content into the new entities. No doubt there will be some migrations that aren't quite right, so we check and validate the data, repeating until the Drupal migration is successful.
Rebuild the site functionality in Drupal 9
Now that the structure of the content types and other entities are in place. we can begin to build the site structure. A lot of sites are driven by Views, and even these can be migrated in a lot of cases. For anything that can't be migrated, it is rebuilt using a clean and fresh approach to the development.
Rewrite custom modules
Any custom modules have been checked. Maybe there's now a contributed module that can do the same job? If so then we'll use this in line with best practice. In cases where we need to rewrite, a Drupal standard compliant module will be written to meet the requirements.
Rewrite the Drupal theme
Drupal 9 uses a different framework for theming. Now everything uses Twig, which is a modern templating system much better suited for our purposes. The existing theme is rewritten, taking as much of the CSS as possible, unless a rebranding is required at the same time. We write using clean SCSS complied into small CSS files with everything arranged logically and efficiently, following best practice.
Testing and launch
QA testing takes place at regular intervals to ensure we are on track with your migration. Any final tests are completed and any issues identified are resolved.
When it comes to launching, it's very possible there is additional content, commerce orders, etc, on the current website. The existing site is put into read-only mode, and a final migration takes place to get everything new over, using the migration plugins we created earlier.
Finally the new site goes live!
Drupal 8 to Drupal 9 migration and upgrade service
Drupal 8 to Drupal 9 migrations are much simpler because the underlying structure is almost identical.
This is very straightforward and takes very little time. It's just like upgrading from Drupal 9.x to Drupal 9.y.
Additional checks are required on any custom modules and the theme to ensure no deprecations are in place. If they are, we fix them, and it's all good to go.
Drupal 9 migration and upgrade service summary
As we said, it's fairly straightforward to migrate a Drupal 6, 7 or 8 site to Drupal 9 as long as the right approach is taken.
We're happy to discuss your requirements with you so we can provide some ballpark figures and explain what would be involved for your specific site.
Please do get in touch, and let's discuss how we can help.