It was a busy and slightly confusing year for Drupal.
In 2021, Drupal 8 reached the end of life. Meanwhile, D7 continued to be the most popular version of the CMS. And D9 celebrated its first birthday. In short: D8 died, D7 is even older and still very popular, while D9 is just beginning it’s short life.
There’s a lot of reasons why this odd point in time exists, but the main thing to know about this year is that, if you want to stay in Drupal and you’re running D7, you need to move to D9 soon. In 2023, D7 will reach end of life, meaning all of those sites running D7 (there are over 500,000 of them right now) will need to migrate or risk the perils of unsupported D7. Running an unsupported version of D7 poses a safety risk to your site and will likely be expensive to fix if something breaks.
Now, no one’s migration out of D7 or D8 is the same.
This is worth repeating over and over again. Every site has different contrib modules, different bits of custom code, and a different purpose. These differences create uncertainty in estimating a migration effort.
However, if you’re wondering what to expect with a Drupal migration, we have a few lessons we’ve learned about migrating sites from D7 to D8, D9, and custom solutions like web applications. Hopefully, they will help you get an idea of what to expect with your own migration effort:
1. Yes, moving out of D7 really is a lot of work
We’ve been reminded again and again that Drupal 9 is very different from Drupal 7. When a site goes from D7 to the latest version of Drupal, it’s like going through a huge translation process. D5, D6, and D7 are all like Romance languages; Italian, Spanish, French. Past migrations were like translating between the two. D8 and D9 are in a different language group all together. It’s a much bigger translation between Spanish and, say, Japanese than Spanish and Italian. Almost everything will need to be rewritten in a Drupal 7 migration. That’s like building a whole new website.
This could take up to a year to do and hundreds of thousands of dollars. What we’ve been using to estimate a migration is the following:
(Initial website cost + money used to maintain and update the site) x 2 = starting cost
So, take the amount of money you’ve spent on your website and on any upgrades. Then multiply that by two. And that’s a rough estimate of the amount of money a migration effort will cost. This could end up being $500,000 or a $1 million depending on the size of your site.
However, we’ve also found that site owners who want to stay in Drupal and are used to the system’s architecture love Drupal 9. And, the big changes between D7 and D9 ensure much easier upgrades in the future. Because D8 and D9 use a lot of Symfony components and architecture, the move from D8 to D9 (which is built using similar Symfony components and architecture) was the easiest migration yet. The move from D9 to D10 should also be simple.
However, we cannot predict the future. Even though it is easier, D8 to D9 has turned out to be more effort than what many were expecting, which brings us to our next point.
2. Future Drupal migrations are looking easier … but only if your site is ready for it
If the D8 to D9 move is the future of Drupal migrations, then the future is looking bright. Migrations that take the better portion of a year are probably a thing of the past. But, migrating is still a big task. If you have technical debt or modules that aren’t ready for the move, it can take time to get your site ready for the latest version of Drupal.
The primary difference between Drupal 8 and 9 is updated dependencies. Some contributed modules that have been downloaded and installed may not be compatible with the latest version of Symfony yet. This means that new modules either have to be installed or a custom workaround needs to be developed.
There’s also the potential for discovering technical debt in a migration process. Maybe there’s a hacked contrib module on your site and, by updating to D9, the original code got lost. The file structure may need to be changed. There may be hardcoded paths in the database that will need to be changed manually to ensure your site is more flexible for future upgrades. There can be a lot of technical debt on a big website that runs Drupal.
There’s also testing that needs to be done during a migration effort. If the site does not have automated tests (and most do not), manual testing takes a lot more repetitive effort and time.
The actual move between future versions of Drupal may not be as time consuming as past migrations, but prepping that site and ensuring the features you need work does take a significant amount of time and effort. Site owners need to prepare for the time and effort that comes with this.
3. Just because you can stay in Drupal doesn’t mean you should
Traditionally, moving from version to version in Drupal allowed for site owners to take stock and decide if they wanted to stay in Drupal or make the effort to move somewhere else like WordPress or a custom solution. Easier upgrades in Drupal make staying in the Drupal ecosystem easier, but a migration still gives site owners that chance to change. One client we worked with asked us to build something simple using Drupal: a form. Drupal offers user authentication and a way to create forms with custom fields. It seemed like the perfect solution.
Once we started building it, requirements started to get more complex. Drupal still did its job because its a framework and you can build whatever you want in that framework if you have a good development team and good resources. But then we needed to migrate this form from Drupal 7 to Drupal 8. And it became clear that the effort wasn’t worth it. It was going to be a time and money consuming move. And it didn’t make sense to put the effort into CMS migration when the client wasn’t even using the features of the CMS. The client really needed a web application, which we built using Symfony. In the process, we jettisoned the content management portion of Drupal.
As Lucas Torres, one of the senior developers on that project said: “you can build anything in Drupal, but should you?”
If you’re running a Drupal site, there are many possibilities about where to go. The obvious answer is the latest version of Drupal. Though, that might not suit your needs. Maybe you need a different CMS like WordPress. Maybe you need a custom web application built in a framework like Symfony. Think about what you need, talk with your team, and find the best solution for your needs.
The one constant in the migration process is that no one’s migration out of D7 or D8 is the same. Every site has bits of custom code or a contrib module that needs custom solutions. Though, with a capable team, you can accomplish your goals through whatever move you make.