Migrate process plugins

This guide describes the processing pipeline of a Drupal 8 migration, and general-purpose process plugins provided by Drupal core.

Process plugins for contributed modules should be documented as part of the module's documentation, and added as "Related content" to this page - do not add them as children of this page.

Migrate process overview

The process key of a migration configuration describes, property-by-property, how the destination is to be constructed from the source data.

Process plugin: get

Typically, the get plugin is the start of every process pipeline, typically shorthanded by adding a source key to another plugin.

Constant values

Sometimes you need a constant value. Perhaps it's for the concatenation plugin or simply some value that is always fixed. In this case,

Process plugin (abstract): dedupebase

Note that this is an abstract class and can't be used as such. If you're looking for similar functionality, look at the dedupe_entity source

Process plugin: addressfield (d7 addressfield to d8 address)

The addressfield plugin does migration of drupal 7 field type addressfield values to drupal 8 field type address values.

Process plugin: callback

This plugin allows source value to be passed to a callable that returns the processed value. It allows simple processing of the value, such

Process plugin: concat

The concat plugin is used to concatenate strings in the source. An example use case would be when the source data contains an array of

Process plugin: dedupe_entity

The dedupe_entity process plugin has two configuration keys, entity_type and field. It's typically used with an entity destination, making

Process plugin: default_value

The default_value plugin provides the ability to set a fixed default value. The plugin sets the pipeline to the default value if the

Process plugin: explode

The explode plugin creates an array of strings, each of which is a substring formed by splitting the source on boundaries formed by the

Process plugin: extract

The extract plugin is used to pull data from potentially multi-level arrays in the source. One use case is extracting data from field arrays

Process plugin: flatten

The flatten plugin converts a nested array into a flat array. For example array(array(1, 2, array(3, 4)), array(5), 6) becomes array(1, 2, 3

Process plugin: geofield_latlon (custom lat & lon data to d8 geofield)

The geofield_latlon plugin does migration of custom data sources that contains lat and lon data to drupal 8 field type geofield values.

Process plugin: geofield_latlon (d7 geofield to d8 geofield)

The "geofield_latlon" plugin does migration of drupal 7 field type "geofield" values to drupal 8 field type "geofield" values.

Process plugin: iterator

The iterator process plugin allows processing of a list of associative arrays (for simple lists see handling multiple values). Often source

Process plugin: machine_name

The machine_name plugin takes the current value, runs it over the transliteration service, lowercases it, replaces anything that's not a

Process plugin: menu_link_parent

The menu_link_parent source plugin figures out menu link parent plugin IDs.

Process plugin: migration_lookup (formerly migration)

It is important to maintain relationships among content coming from the source site, but in most instances the unique identifiers of the

Process plugin: route

The route process plugin sets the destination route information based on the source link_path.

Process plugin: skip_on_empty

This plugin checks to see if the current pipeline value is empty (for example the empty string, FALSE, or 0). If so, the further processing

Process plugin: skip_row_if_not_set

The skip_row_if_not_set process plugin checks whether a value isset. If the value is set the value is returned otherwise a

Process plugin: static map

The static_map source plugin allows looking up a value based on a map specified in the configuration.

Process plugin: substr

The substr plugin is used to return part of a string.

Writing a process plugin

You can implement the MigrateProcessInterface interface or extend from the abstract class ProcessPluginBase. Apply the MigrateProcessPlugin