1. 8.2.x core/modules/migrate/migrate.api.php migration
  2. 8.0.x core/modules/migrate/migrate.api.php migration
  3. 8.1.x core/modules/migrate/migrate.api.php migration
  4. 8.3.x core/modules/migrate/migrate.api.php migration

Overview of the Migration API, which migrates data into Drupal.

Overview of migration

Migration is an Extract, Transform, Load (ETL) process. In the Drupal migration API the extract phase is called "source", the transform phase is called "process", and the load phase is called "destination". It is important to understand that the "load" in ETL means to load data into storage, while traditionally Drupal uses "load" to mean load data from storage into memory.

In the source phase, a set of data, called the row, is retrieved from the data source, typically a database but it can be a CSV, JSON or XML file. The row is sent to the process phase where it is transformed as needed by the destination, or marked to be skipped. Processing can also determine that a stub needs to be created, for example, if a term has a parent term that does not yet exist. After processing the transformed row is passed to the destination phase where it is loaded (saved) into the Drupal 8 site.

The ETL process is configured by the migration plugin. The different phases: source, process, and destination are also plugins, and are managed by the Migration plugin. So there are four types of plugins in the migration process: migration, source, process and destination.

Migration plugins

Migration plugin definitions are stored in a module's 'migrations' directory. For backwards compatibility we also scan the 'migration_templates' directory. Examples of migration plugin definitions can be found in 'core/modules/action/migration_templates'. The plugin class is \Drupal\migrate\Plugin\Migration, with interface \Drupal\migrate\Plugin\MigrationInterface. Migration plugins are managed by the \Drupal\migrate\Plugin\MigrationPluginManager class. Migration plugins are only available if the providers of their source plugins are installed.

Source plugins

Migration source plugins implement \Drupal\migrate\Plugin\MigrateSourceInterface and usually extend \Drupal\migrate\Plugin\migrate\source\SourcePluginBase. They are annotated with \Drupal\migrate\Annotation\MigrateSource annotation, and must be in namespace subdirectory Plugin\migrate\source under the namespace of the module that defines them. Migration source plugins are managed by the \Drupal\migrate\Plugin\MigrateSourcePluginManager class. Source plugin providers are determined by their and their parents namespaces.

Process plugins

Migration process plugins implement \Drupal\migrate\Plugin\MigrateProcessInterface and usually extend \Drupal\migrate\ProcessPluginBase. They are annotated with \Drupal\migrate\Annotation\MigrateProcessPlugin annotation, and must be in namespace subdirectory Plugin\migrate\process under the namespace of the module that defines them. Migration process plugins are managed by the \Drupal\migrate\Plugin\MigratePluginManager class. The Migrate module provides process plugins for common operations (setting default values, mapping values, etc.).

Destination plugins

Migration destination plugins implement \Drupal\migrate\Plugin\MigrateDestinationInterface and usually extend \Drupal\migrate\Plugin\migrate\destination\DestinationBase. They are annotated with \Drupal\migrate\Annotation\MigrateDestination annotation, and must be in namespace subdirectory Plugin\migrate\destination under the namespace of the module that defines them. Migration destination plugins are managed by the \Drupal\migrate\Plugin\MigrateDestinationPluginManager class. The Migrate module provides destination plugins for Drupal core objects (configuration and entity).

More information

Migration API documentation.

See also

Update API

File

core/modules/migrate/migrate.api.php, line 12
Hooks provided by the Migrate module.

Functions

Namesort descending Location Description
hook_migrate_prepare_row core/modules/migrate/migrate.api.php Allows adding data to a row before processing it.
hook_migration_plugins_alter core/modules/migrate/migrate.api.php Allows altering the list of discovered migration plugins.

Classes

Namesort descending Location Description
CckFieldPluginBase core/modules/migrate_drupal/src/Plugin/migrate/cckfield/CckFieldPluginBase.php The base class for all cck field plugins.
DestinationBase core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php Base class for migrate destination classes.
MigrateCckFieldPluginManager core/modules/migrate_drupal/src/Plugin/MigrateCckFieldPluginManager.php Plugin manager for migrate cckfield plugins.
MigrateDestination core/modules/migrate/src/Annotation/MigrateDestination.php Defines a migration destination plugin annotation object.
MigrateDestinationPluginManager core/modules/migrate/src/Plugin/MigrateDestinationPluginManager.php Plugin manager for migrate destination plugins.
MigratePluginManager core/modules/migrate/src/Plugin/MigratePluginManager.php Manages migrate plugins.
MigrateProcessPlugin core/modules/migrate/src/Annotation/MigrateProcessPlugin.php Defines a migration process plugin annotation object.
MigrateSource core/modules/migrate/src/Annotation/MigrateSource.php Defines a migration source plugin annotation object.
MigrateSourcePluginManager core/modules/migrate/src/Plugin/MigrateSourcePluginManager.php Plugin manager for migrate source plugins.
ProcessPluginBase core/modules/migrate/src/ProcessPluginBase.php The base class for all migrate process plugins.
SourcePluginBase core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php The base class for all source plugins.

Interfaces

Namesort descending Location Description
MigrateDestinationInterface core/modules/migrate/src/Plugin/MigrateDestinationInterface.php Defines an interface for Migration Destination classes.
MigrateProcessInterface core/modules/migrate/src/Plugin/MigrateProcessInterface.php An interface for migrate process plugins.
MigrateSourceInterface core/modules/migrate/src/Plugin/MigrateSourceInterface.php Defines an interface for migrate sources.