Last updated April 19, 2016. Created on March 25, 2014.
Edited by Gábor Hojtsy, willwh, benjy, batigolix. Log in to edit this page.

Earlier versions (Drupal 7 and 6) included a built-in update mechanism that provided in-place version updates both within the same major version (Drupal 7.3 to 7.8 for example) and between major versions (Drupal 6.12 to Drupal 7.4 for example). That required doing updates in place, putting the new codebase on top of the old database.

In Drupal 8, there are two separate systems for these two tasks. For updating an existing Drupal 8 site, you should still use the in-place (update.php) mechanism. On the other hand, migrating from earlier major versions (Drupal 6 and 7) as well as other systems is done with migration. This documentation is about the migration system.

This system allows to migrate content and configuration between two independent sites. The system is largely inspired by the work of the Drupal 7 Migrate and Drupal-to-Drupal Data Migration modules. It is a much more robust and extensible system than in previous major versions of Drupal core.

The functionality of the new Migrate, Migrate Drupal and Migrate Drupal UI modules included in core greatly expands on the functionality of previous versions of the Migrate module in that they now handle both site configuration and content.

Learn how to prepare and execute an upgrade from Drupal 6 or 7 to Drupal 8 using the web interface or using Drush.

Process diagram for migration steps

Upgrading from Drupal 6 and Drupal 7 sites is now possible, with support for:

  1. Drupal 6: core + CCK + Link + Email + Phone + ImageCache modules.
  2. Drupal 7: only content, users, taxonomy, blocks, menus, filter formats (more coming soon - #2456259: [META] Drupal 7 to Drupal 8 Migration path).

Migrations that are not yet supported include:

  1. Views (#2500547: Upgrade path for Views from Drupal 6 and 7)
  2. Multilingual content (#2225775: Migrate D6 i18n nodes)
  3. Node, user, entity references (#2447727: Add migrate support for Drupal 6 node & user reference

How to find the migration modules and tools

Name Where is it? What does it do?
Migrate Drupal 8 core module Provides the underlying API for migrating configuration and content to Drupal 8. The migration source may be a different system altogether.
Migrate Drupal Drupal 8 core module Provides the classes specifically needed to migrate configuration and content from a Drupal source site to Drupal 8 as a special case of Migrate.
Migrate Drupal UI Drupal 8 core module (in 8.1+). Also a contributed module for earlier versions of Drupal 8. Provides the tools necessary for performing an upgrade from Drupal 6 or Drupal 7 to Drupal 8 — both a simple user interface (at /upgrade) as well as the migrate-upgrade drush command.
Drupal Upgrade Contributed module Provides the migrate-upgrade drush command.
Migrate Tools Contributed module Provides optional drush (migrate-status, migrate-import, migrate-rollback, migrate-stop, migrate-reset-status, migrate-messages, migrate-fields-source) and UI tools for managing your migrations.
Migrate Plus Contributed module Provides APIs for grouping migrations as well as a facility to manipulate incoming source data in migrations as well as code examples to build custom migrations.
Migrate Manifest Contributed module Provides a drush command for running template-based SQL migrations from a manifest file.
Migrate UI Contributed module Provides a user interface for editing and configuring migrations in general (not just Drupal sources).
Migration plugins Within core modules and contributed modules Provide mapping for the configuration and content of the respective module. For example, the migration plugins that handle taxonomy vocabularies and terms are located in the core taxonomy module.

Further Reading

Developer documentation is available for writing your own custom migrations.

Looking for support? Visit the Drupal.org forums, or join #drupal-support in IRC.

Comments

wochter’s picture

I got isue:
SQLSTATE[42000]: Syntax error or access violation: 1115 Unknown character set: 'utf8mb4'
What's wrong please?

Tregonia’s picture

If would be better to post in the issue queue for support requests.