If you are weighing whether to upgrade to Drupal 8 but aren’t sure what kind of budget to expect, we’re going to breakdown the upgrade (migration) process. Along the way, we'll highlight the factors that will add hours to your project. This guide is especially for non-technical folks (and written by one). However, all audiences should gain something. We’ll detail the questions you should go to your developer with before quoting your upgrade. We'll also discuss some best practices and common "gotchas".
At the end of this guide, you should feel confident in estimating (or quoting) an upgrade. You'll know about some common pitfalls and thereby hopefully you can avoid some pain and heartache. Let's get started.
Simple migrations usually include two or four steps. The most basic migration will include a configuration migration followed by the content migration. If you need to add new fields, consolidate or split content types, or migrate custom fields, that would be done before the content migration.
Site configuration includes things like content types, fields and site setup––essentially everything that isn’t content, like images, blog posts, or files. Configuration migration means copying your legacy site’s basic shell to Drupal 8.
Base estimated time: 15-20 hours
New and custom fields
If you have new or custom fields you want on the new site, they have to be added before content can be migrated into them. So that’s often the second step. (Side note: You can also start recreating Views and Themes after the config migration. While recreating Themes and Views will be necessary to getting your new Drupal 8 site up and running, there is just too much variability to suggest a quick estimate here. We’ll talk more specifically about recreating Views below.)
If you’re wondering whether your site will need new fields, there are two common scenarios.
Paragraphs is replacing Field Collections in Drupal 8. If your Drupal 7 site used Field Collections, you will need add some new fields using Paragraphs. I’m told there is ongoing work in the Drupal issue queue of Paragraphs to automate this, but expect that some manual effort will still be needed.
Estimated additional time (including extra content migration time): 10-15 hours
Media has been added as an Entity Type for Drupal 8. If your legacy Drupal 6 or 7 site is media heavy, you will want to think about managing media as Media entities (rather than a Node or File entity), which will mean creating new fields for your images, videos, and audio files.
Estimated additional time (including extra content migration time): 15-20 hours
Custom fields will include all special logic built from the legacy site. Common examples would be CCK fields (Drupal 6) for managing special types of data; those video files back in the old times before YouTube was so ubiquitous. Or those field-collection-like fields you built because Field Collections just didn’t meet the need. Depending on the complexity of the business logic included in these custom fields, time to add custom fields will vary widely. Be sure to highlight it when quoting your migration.
In some cases you’ll be able to use contib module provided fields to replace the custom fields, video files for example. In other cases, you’ll need to rebuild the logic of those custom fields. In either case, you’ll need to migrate the data.
Split or consolidate content types
Over time, it is common for a single content type to be used with too many kinds of unrelated content. In these cases, the content type often ends up including an unwieldy variety of fields and should be split up. For example, a used-vehicle dealership decides to use its Car Offers content type for boat advertisements. Over time, a lot of new fields are added for boat specs that are never uses for car advertisements, and they occasionally get mixed up when adding new content. Site migration would be a great time to split boat and car offers into separate content types with only the relevant fields for each kind of advertisement.
On the other hand, it is also easy to add redundant content types. For example, the used-vehicle dealership has a Car Offers content type and a Truck Offers content type with exactly the same fields. Before the content migration, these could be consolidated into a single Automobile content type, de-cluttering the data architecture and leaving fewer content types to manage.
Site migrations are a good opportunity to clean up the content organization on your site. Site administrators often realize they want to split or consolidate content types after the content migration is already under way. We recommend doing a content types inventory before getting started. Having to retrofit the site migration into the new data architecture will take longer and possibly require re-theming and other unnecessary re-work.
Estimated additional time: 2-5 hours per split or consolidation
Content migration is obviously the core of the process. This is where you move all of the text copy, media, headings, category tags, taxonomy terms, files, etc.
Base estimated time: 30-40 hours
Four factors can add hours to your content migration: complexity of legacy site, size of legacy site, translations, and adding new fields.
“Complex” is a relative term, but you could say that your legacy site is complex if it has 5-10 content types or 20+ fields on any content type, especially if a significant percentage are custom or rarely used fields. Even if there is relatively little content, complex migrations require more mapping time and usually more trouble-shooting.
Estimated additional time: 40-60 hours
If you have a simple migration with a lot of large files, media for example, it takes longer to run each migration. A lot of this will be baby-sitting time for the the developer as the migration runs in the background, but you’ll likely be charging the customer a few extra hours since they need to keep an eye on it. Keep in mind that migrations typically need to be tested multiple times before they are successful.
Estimated additional time: 1 hour for every 8 hours of migration time, every migration test
We expect many people will be interested in Drupal 8’s new multilingual capabilities. Unfortunately, if you have content translations to migrate this is going to increase migration time until it is fully supported for Drupal 8. All the building blocks are in place for doing a multilingual translation. We’ve done several of them for clients. But it still requires a lot of manual work. Depending on the number of languages, be sure to red flag any site with multiple languages.
Estimated additional time: 50-70 hours
Note on timely launches
It’s common for there to be lag between a successful content migration and the actual switch of the public site to Drupal 8. Immediately before the Drupal 8 launch there should be a freeze on adding new content to the legacy Drupal site and a final content migration. However, if you wait longer than 2-4 weeks before launching, it is often necessary to redo parts of the content migration. Reasons are abundant. A new, minor version of a module is released. A new field or fields were added in Drupal 8. All of these are changes that can influence the migration stability. A past client once waited a whole year before launching! The original content migration was simple and took 35 hours. But because they wait so long it took another 30 hours to update everything and get the site ready for launch.
Other cost factors to consider
Unstable contrib module upgrade paths
There is a vibrant contributed modules ecosystem in Drupal 8. Many contrib modules are stable. However, just because the module is stable, doesn’t mean it has a stable upgrade path. It might be necessary to apply patches before your Drupal 8 site is ready to migrate the contrib module’s data. Many popular contrib modules have upgrade paths, but take a look at this article (or have your site-builder look at it) to see if any of your modules are listed. If it’s an easy upgrade path, it probably isn’t a show stopper. But if an important contributed module needs a lot of work, you might want to postpone your migration until the community can work on it. Or consider partnering with an expert like MTech. We have spent a lot of time maturing contrib upgrades.
Estimated additional time: 10-100+ hours
If your Drupal 7 site has Views that will be on the Drupal 8 site, they will have to be recreated. Drupal 8 core does not support migrating Views, although there is a module underway to migrate the simplest ones. If you would like to understand why Views aren’t migrated, the core maintainers explain it in this thread. If your legacy site as a significant number of Views, this will be an important point to cover when getting your quote.
Estimated additional time: 10-100+ hours
Upgrading to Drupal 8 is an investment (a worthwhile one!), but the good news is that, with a little planning ahead of time, the costs are easy to estimate.
A simple configuration and content migration should take less than seventy hours. If you need to clean up your content organization or add new fields, you’ll need to increase those hours by around fifty percent. If you need to migrate translations too, or if your site is especially complex, it could take you twice as long as a basic migration.
Two issues that are harder to estimate and that can add a lot of hours to your migration are unstable modules and recreating Views.
So, do a thorough inventory of your fields and content types (which will also help you gauge your site’s complexity). Get a list of your essential modules. Know what translations have to be migrated. Have at hand the number of Views that need to be recreated, and you should be all set. For non-technical folks, here is list of questions for your developer or site maintainer:
What is the size and complexity of legacy site––number of content types and different fields? What percentage are media files?
Are there many Views that will need to be recreated?
Are any of your current modules unsupported in Drupal 8?
Are there any custom fields on the legacy site?
Will you create new fields? Particularly media or paragraphs. And do these new fields have translated content that needs to be migrated? (Migrating translations will increase the time.)
Below we’ve included a few scenarios with hourly estimates. They were calculated by adding the base estimate to the additional time for the extra steps in each scenario, and then adding 10-20% of the total time for quality assurance. These are based on real scenarios for real sites we've migrated.
At this point, we should also include the disclaimer that these estimates are based entirely on MTech's experience. We've done a lot of migrations and have a good handle on how long it takes. Every site is unique and there are many complexities involved in estimating the amount of time to upgrade. But this guide will help avoid common under-estimating "gotchas."
Lastly, here are some number crunching scenarios. We went through and calculated some more common migration upgrades. Perhaps you can see your site in this list? If you have other questions, please comment. We’ll use your feedback to improve this guide.
Legacy site complexity, size
Basic, two-step migration
New Paragraphs fields, New Media fields
Complex, average size
New Paragraphs fields
Split three content types, Translation
Complex, large size
New Media fields, Translation
Are you looking for help with a Drupal migration or upgrade? Regardless of the site or data complexity, MTech can help you move from a proprietary CMS or upgrade to the latest version–Drupal 8.
Write us about your project, and we’ll get back to you within 48 hours.