Drupal 8  8.0.2
Migration API

Data Structures

class  MigrateDestination
 
class  MigrateProcessPlugin
 
class  MigrateSource
 
class  DestinationBase
 
class  SourcePluginBase
 
interface  MigrateDestinationInterface
 
class  MigrateDestinationPluginManager
 
class  MigratePluginManager
 
interface  MigrateProcessInterface
 
interface  MigrateSourceInterface
 
class  ProcessPluginBase
 
class  CckFieldPluginBase
 

Functions

 hook_migrate_prepare_row (Row $row, MigrateSourceInterface $source, MigrationInterface $migration)
 

Detailed Description

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

Overview of migration

Migration is an Extract, Transform, Load (ETL) process. For historical reasons, in the Drupal migration tool the extract phase is called "source", the transform phase is called "process", and the load phase is called "destination".

Source, process, and destination phases are each provided by plugins. Source plugins extract data from a data source in "rows", containing "properties". Each row is handed off to one or more series of process plugins, where each series operates to transform the row data into one result property. After all the properties are processed, the resulting row is handed off to a destination plugin, which saves the data.

The Migrate module provides process plugins for common operations (setting default values, mapping values, etc.), and destination plugins for Drupal core objects (configuration, entity, URL alias, etc.). The Migrate Drupal module provides source plugins to extract data from various versions of Drupal. Custom and contributed modules can provide additional plugins; see the Plugin API topic for generic information about providing plugins, and sections below for details about the plugin types.

The configuration of migrations is stored in configuration entities, which list the IDs and configurations of the plugins that are involved. See Migration configuration entities below for details. To migrate an entire site, you'll need to create a migration manifest; see Migration manifests for details.

https://www.drupal.org/node/2127611 has more complete information on the Migration API, including information on load plugins, which are only used in Drupal 6 migration.

Source plugins

Migration source plugins implement and usually extend . They are annotated with annotation, and must be in namespace subdirectory Plugin under the namespace of the module that defines them. Migration source plugins are managed by the class.

Process plugins

Migration process plugins implement and usually extend . They are annotated with annotation, and must be in namespace subdirectory Plugin under the namespace of the module that defines them. Migration process plugins are managed by the class.

Destination plugins

Migration destination plugins implement and usually extend . They are annotated with annotation, and must be in namespace subdirectory Plugin under the namespace of the module that defines them. Migration destination plugins are managed by the class.

Migration configuration entities

The definition of how to migrate each type of data is stored in configuration entities. The migration configuration entity class is , with interface ; the configuration schema can be found in the migrate.schema.yml file. Migration configuration consists of IDs and configuration for the source, process, and destination plugins, as well as information on dependencies. Process configuration consists of sections, each of which defines the series of process plugins needed for one destination property. You can find examples of migration configuration files in the core/modules/migrate_drupal/config/install directory.

Migration manifests

You can run a migration with the "drush migrate-manifest" command, providing a migration manifest file. This file lists the configuration names of the migrations you want to execute, as well as any dependencies they have (you can find these in the "migration_dependencies" sections of the individual configuration files). For example, to migrate blocks from a Drupal 6 site, you would list:

# Migrate blocks from Drupal 6 to 8
- d6_filter_format
- d6_custom_block
- d6_block
See Also
Update API

Function Documentation

hook_migrate_prepare_row ( Row  $row,
MigrateSourceInterface  $source,
MigrationInterface  $migration 
)

Allows adding data to a row before processing it.

For example, filter module used to store filter format settings in the variables table which now needs to be inside the filter format config file. So, it needs to be added here.

hook_migrate_MIGRATION_ID_prepare_row() is also available.

References Row\getSourceProperty(), EntityInterface\id(), and Row\setSourceProperty().

Here is the call graph for this function: