Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Choosing the Upgrade Approach

13/04/2025, by Ivan

Overview

When preparing to upgrade to Drupal 8, it's worth spending some time planning the upgrade approach. While the content of your previous Drupal site can likely be migrated without issues, your Drupal 8 configuration will likely require some manual work. For example, the Views module does not yet support automatic upgrades in core, which means you'll need to recreate views manually on your Drupal 8 site. The best upgrade approach should be evaluated on a case-by-case basis.

Simple Upgrade with Manual Post-Upgrade Steps

This approach involves performing a one-time upgrade and then completing manual steps (such as creating views) on the Drupal 8 site before launching it live.

It's recommended to first practice the upgrade and carefully document any post-upgrade steps. Once you're confident in your test environment, repeat the same steps and set up your production Drupal 8 environment with a fresh installation.

This approach can be applied using:

Incremental Upgrade with Manual Post-Upgrade Steps

Depending on the number and complexity of post-upgrade steps, it might not be feasible to keep the old site offline while you complete the post-upgrade steps on Drupal 8. If the old site remains live during this time, users might add or update content on it.

Drupal 8 supports incremental upgrades, which means migrations can be re-run to import new or updated content. It's not recommended to change the configuration of the source site between the initial and incremental migrations.

incremental-upgrade

This approach can also be applied using:

Content-Only Migration in STAGING and PROD Environments

One of the powerful new features in Drupal 8 is the advanced Configuration Management System, which allows for deployment of all site configuration from one environment to another. A common environment layout includes a development (DEV), staging (STAGING), and production (PROD) environment. In Drupal 8, all configuration can be exported as YAML files and imported into another environment.

If you're planning to use DEV, STAGING, and PROD environments, the following workflow is one possible approach. It's important to understand that Drupal entities fall into two categories:

  • Content entities (users, nodes, taxonomy terms, etc.)
  • Configuration entities (content types, fields, views, all site settings)

migrate-dev-staging

The upgrade process illustrated above includes:

1. The DEV environment for Drupal 8 is upgraded from the source site.
2. The source site remains online (new or updated content may be added). Meanwhile, configuration is finalized in the Drupal 8 DEV environment.
3. Configuration is deployed from DEV to STAGING using Drupal 8’s configuration management system, typically with version control (e.g., Git).
4. Once STAGING is finalized, content is migrated from the source site to STAGING for final acceptance testing. After approval, the Drupal 8 PROD site is deployed, and content is migrated to it from the source site.

This approach requires Upgrading Using Drush. Several variations of this approach are possible:

  • Refer to the Drush upgrade page for instructions on generating migrations.
  • The upgrade to Drupal 8 DEV (step 1 in the diagram) can be performed by running all migrations with drush migrate-import --all or by running desired migrations one by one with drush migrate-import <migration name>.
  • The content-only upgrade (step 4 in the diagram) can be done by importing all content migrations with drush migrate:import --tag=Content, or by running specific migrations using drush migrate-import <migration name>. You may also list the desired migrations in a manifest file.
Source authors:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.