One of my favorite movies, which has also contributed to Agileana’s company culture, is the movie 300. In that movie, there is a great line that also describes the D7 to D9 migration process, “This will not be over quickly. You will not enjoy this.” Bottom line is that Drupal migration is not easy. You can’t just push an upgrade button.
The entire website (front-end and back-end) needs to be rebuilt completely. This is a long, lengthy, risky, and error-prone process. Errors, omissions, and mistakes can happen at every corner. So, organizations need to pay special attention to quality assurance and testing. Even migrating the users and content, which might seem to be the simplest part of the process, can consume quite a bit more time and resources than expected.
In the best case, the simplest of websites could take 4-6 months to migrate out of Drupal 7 into the latest version of Drupal. This would include a team of 3-5 people working mostly full-time. For DC-based government agencies and nonprofit organizations, the level of effort could be no less than $300,000-$500,000.
At the other end of the spectrum, a Drupal 7 website of high complexity, with tens of thousands of pages of content, hundreds of content managers, significant complexity, high standards for accessibility and security, and a high level of scrutiny due to the nature of the organization could mean a team of 5-7 people working mostly full-time for almost a year. The level of effort could be as high as $2-3M USD.
The Drupal 7 to 9 migration should not be taken lightly. It will likely take more time and money than expected. Fortunately, once you get it into D9, migrating to the next version of Drupal should be “relatively” seamless and painless.
Agile vs Waterfall
There are two basic ways to approach the Drupal migration process:
- Agile approach
- Waterfall approach
Agile Drupal Development
With the agile approach, you would rapidly stand up a prototype with the minimum amount of effort, design, content, and functionality. Get the prototype into the hands of users, solicit their feedback, and then iterate over time migrating users, content, and functionality to the new site.
With agile web development, your goal is to focus on the highest priorities so if and when you run out of time and money you will have assured yourself that the most important things (content, users, functionality) got migrated.
In some cases, this might make a lot of sense because you can start enjoying the benefits of D9 sooner than later, you can stretch out the cost and effort, i.e., pay as you go, and you can clean house along the way. You don’t have to do everything, all at once, up front.
Waterfall Drupal Development
An alternative to the iterative, agile approach to web development, there is what is often called the Waterfall Development Approach. In the case of waterfall, the processes are virtually the same. The primary difference between Agile and Waterfall is that with Waterfall, you do all of step one before you move to step two. Then, you do all of step two before you move to step three. There is no going back or looking back. With waterfall, you only move forward.
A typical waterfall approach would go like this:
- Inventory (content, modules, functionality, requirements)
- Analysis (study to verify and validate necessity of inventory)
- Planning (thorough project planning according to PMI/PMP standards)
- Budgeting (procurement justification, request, approvals, funding)
- Design (fresh look at design standards, target audience, theming)
- Development (re-build and re-engineer all functional requirements)
- Content (complete audit of all content, update, refresh, migration)
- Testing (unit testing, user testing, automated testing, QA)
- Deployment (new server setup, DNS changes, page mapping, redirects)
As you can imagine, migrating from Drupal 7 to Drupal 8 is not a simple task or exercise. In some cases, it can take several months to a year and tens of thousands to hundreds of thousands of dollars. Do not underestimate the time, resources, or effort required to do this right, especially if your Drupal powered website is mission critical.