Choosing the Upgrade Approach
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.
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)
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 withdrush 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 usingdrush migrate-import <migration name>
. You may also list the desired migrations in a manifest file.
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.