- 8.2.x core/modules/migrate/migrate.api.php migration
- 8.0.x core/modules/migrate/migrate.api.php migration
- 8.1.x core/modules/migrate/migrate.api.php migration
- 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 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.
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.
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.).
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).
modules/ migrate/ migrate.api.php, line 12
- Hooks provided by the Migrate module.
||The base class for all cck field plugins.|
||Base class for migrate destination classes.|
||Plugin manager for migrate cckfield plugins.|
||Defines a migration destination plugin annotation object.|
||Plugin manager for migrate destination plugins.|
||Manages migrate plugins.|
||Defines a migration process plugin annotation object.|
||Defines a migration source plugin annotation object.|
||Plugin manager for migrate source plugins.|
||The base class for all migrate process plugins.|
||The base class for all source plugins.|
||Defines an interface for Migration Destination classes.|
||An interface for migrate process plugins.|
||Defines an interface for migrate sources.|