This module provides extensions and examples for Drupal's core migration system, offering new process, destination, and source plugins. It also introduces configuration entities for better migration management and grouping, along with advanced features like entity lookup and generation.
The migrate_plus project provides extensions to core migration framework functionality, as well as examples.
Configuration entities
- Migration plugins can be implemented as configuration entities, allowing them to flexibly be loaded, modified, and saved.
- MigrationGroup configuration entities allow migrations to be grouped in UI and command-line tools, and also allow configuration to be shared among multiple migrations.
API extensions
- A PREPARE_ROW event is provided to allow object-oriented responses to the core prepare_row hook (modifying source data before processing begins).
Process plugins
- entity_lookup - Allows you to match source data to existing Drupal entities and return their IDs (primarily for populating entity reference fields).
- entity_generate - Extends entity_lookup to actually generate an entity from the source data where one does not already exist.
- file_blob - Allows you to create a file (and corresponding file entity) from blob data.
- merge - Allows you to merge multiple source arrays into one array.
- skip_on_value - Like core's skip_on_empty, but allows you to skip either the row or process upon matching (or not) a specific value.
- str_replace - Wrapper around str_replace, str_ireplace and preg_replace.
- transliteration - process strings through the transliteration service to remove language decorations and accents. Especially helpful with file names.
Destination plugins
- Table - allows migrating data directly into a SQL table.
Source plugins
- SourcePluginExtension - an abstract source plugin class providing a standard mechanism for specifying a source's IDs and fields via configuration.
- Url - a source plugin supporting file- or stream-based content (where a URL, including potentially a local filepath, points to a file containing data to be migrated). The source plugin itself simply manages the (potentially multiple) source URLs, and works with fetcher plugins to retrieve the content and parser plugins to parse it (see below).
Additional plugin types
data_fetcher
Data fetcher plugins are embedded in the Url source plugin to manage retrieval of data via a given protocol.
- File - A general-purpose fetcher for accessing any local file or stream wrapper supported by PHP's
file_get_contents. - Http - An HTTP-specific fetcher permitting usage of HTTP-specific features (such as specifying request headers).
data_parser
Data parser plugins are embedded in the Url source plugin to parse the content retrieved by a fetcher.
- XML - Parses XML content using the progressive XMLReader PHP extension. Use this when XML content may be too large to be completely parsed in one go in memory.
- SimpleXML - Parses XML content using the SimpleXML PHP extension. Use this when you need full xpath support to access data elements, and the XML files are not too large.
- JSON - Parses JSON content. See this Lullabot article for an example.
- Soap - Parses SOAP feeds.
authentication
Provides authentication services to the HTTP fetcher.
- Basic - supports HTTP Basic authentication.
- Digest - supports HTTP Digest authentication.
- OAuth2 - supports OAuth2 authentication over HTTP.
Examples
Two submodules provide examples of implementing migrations.
- migrate_example - A carefully documented implementation of a custom migration scenario, designed to walk you through the basic concepts of the Drupal migration framework.
- migrate_example_advanced (still in progress) - Examples of more advanced techniques for Drupal migrations.
Related modules
Tools for running/managing migrations
- migrate_tools - General-purpose drush commands and basic UI for managing migrations.
- migrate_upgrade - Drush commands for running upgrades from Drupal 6 or 7 to Drupal 11+.
Source plugins
Ask your assistant about Migrate Plus
Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works
Depends on
Dependencies of the latest stable release
- migrate Drupal core
Required by
31 tracked projects depend on this one
- Migrate Upgrade 9,161 sites
- Migrate File Entities to Media Entities 1,535 sites
- Commerce Migrate 1,259 sites
- Migrate queue importer 1,123 sites
- Migrate: URL2Link 505 sites
- Migrate Google Sheets 472 sites
- Migrate Cron 357 sites
- Custom SQL Migrate Source Plugin 105 sites
- Migrate Orphans Purger 72 sites
- GatherContent 72 sites
- Migrate Hierarchical Taxonomy 59 sites
- Normalized Image Styles 42 sites
- Migrate Wizard 41 sites
- Migrate Plus - Merge duplicated terms 35 sites
- Commerce ML Migrations 32 sites
- Wordpress to Drupal Migrate 24 sites
- Migrate QA 21 sites
- Opigno migration 18 sites
- Migrate generator 9 sites
- LocalGov Irish Service Catalogue 8 sites
- Orange DAM 8 sites
- Content Workflow (Bynder) 6 sites
- Simple content migration via cron scheduler 6 sites
- Migrate API Key 5 sites
- BigCommerce 3 sites
- LocalGov Bus Data 2 sites
- Commerce Import Products & Variations 2 sites
- WAT WAT 1 sites
- VideoJS Media migrate
- LocalGov Legacy Migration
- Workbench Moderation to Core Moderation
Activity
Release Timeline
Releases
| Version | Type | Core | PHP | Release date | |
|---|---|---|---|---|---|
| 6.0.10 | Stable | 10–11 | Jan 23, 2026 | ||
| 6.0.9 | Stable | 10–11 | Jan 1, 2026 | ||
| 6.0.8 | Stable | 9–11 | Jul 28, 2025 | ||
| 6.0.7 | Stable | 9–11 | Jul 12, 2025 | ||
| 6.0.6 | Stable | 9–11 | Jul 11, 2025 | ||
| 6.0.5 | Stable | 9–11 | Nov 20, 2024 | ||
| 6.0.4 | Stable | 9–11 | PHP 7.4 | Jul 23, 2024 | |
| 6.0.3 | Stable | 9–11 | PHP 7.4 | Jul 18, 2024 | |
| 6.0.2 | Stable | 9–11 | PHP 7.4 | Jan 16, 2024 |