Skip to main content


Example config to add HTTP headers and authentication

Adding HTTP request headers and authentication to remote JSON and XML in Drupal migrations

In the previous two blog posts we learned to migrate data from JSON and XML files. To provide this functionality the Migrate API leverages the Guzzle HTTP Client library. Usage requirements and limitations will be presented.

Example configuration of XML source migration

Migrating XML files into Drupal

Today we will learn how to migrate content from a XML file into Drupal using the Migrate Plus module. The example includes node, images, and paragraphs migrations. Let’s get started.

Example configuration of JSON source migration

Migrating JSON files into Drupal

Today we will learn how to migrate content from a JSON file into Drupal using the Migrate Plus module. The example includes node, images, and paragraphs migrations. Let’s get started.

Snippet of CSV file migration YAML.

Migrating CSV files into Drupal

Today we learn how to migrate content from a comma-separated value (CSV) file into Drupal, using the latest version of the Migrate Source CSV module and the CSV PHP library by the PHP League.  We will show how configure the source plugin to read files with or without a header row and also cover stream wrappers.

Example mapping for paragraph reference field.

Introduction to paragraphs migrations in Drupal

Today we will present an introduction to paragraphs migrations in Drupal. The example consists of migrating paragraphs of one type, then connecting the migrated paragraphs to nodes.

Example address field process mapping.

Migrating addresses into Drupal

Today we will learn how to migrate addresses into Drupal. The address components can change per country, and the way to store those components also varies per country. These and other important considerations will be explained.

Example syntax for date migrations.

Migrating dates into Drupal

Today we will learn how to migrate dates into Drupal. Depending on your field type and configuration, there are various possible combinations. In addition to the examples, a list of things to consider when migrating dates is also presented.

Example field mapping for user migration - part 2.

Migrating users into Drupal - Part 2

Today we complete the user migration example.  This time, we cover creation date, roles, and profile pictures and we are jumping straight to the process transformations in this entry.

Example field mapping for user migration - part 1.

Migrating users into Drupal - Part 1

Today we are going to learn how to migrate users into Drupal. The example code will be explained in two blog posts. In this one, we cover the migration of email, timezone, username, password, and status.

Syntax for multivalue field migration.

Migrating taxonomy terms and multivalue fields in Drupal

This example consists of two separate migrations. One to import taxonomy terms accounting for term hierarchy. And another to import into a multivalue taxonomy term field. Following this approach, any node and taxonomy term created by the migration process will be removed from the system upon rollback.

Snippet of migration dependency definition.

Introduction to migration dependencies in Drupal

One of Drupal’s biggest strengths is its data modeling capabilities. You can break the information that you need to store into individual fields and group them in content types. Today we will learn about migration dependencies in Drupal.

Code snippet for file entity migration

Migrating files and images into Drupal

We have already covered two of many ways to migrate images into Drupal. Today, we are going to perform an image migration that will clear after itself when it is rolled back. Note that in Drupal images are a special case of files. Even though the example will migrate images, the same approach can be used to import any type of file.

List of drush commands used in drupal migration workflows

Tips for writing Drupal migrations and understanding their workflow

We have presented several examples as part of this migration blog post series. Today we are going to talk about what happens after import and rollback operations, how to recover from a failed migration, and some tips for writing definition files.

Syntax for constants and pseudofields in the Drupal process migration pipeline.

Using constants and pseudofields as data placeholders in the Drupal migration process pipeline

So far we have learned how to write basic Drupal migrations and use process plugins to transform data to meet the format expected by the destination. In the previous entry we learned one of many approaches to migrating images. In today’s example, we will change it a bit to introduce two new migration concepts.

Examples of migrating into subfields.

Migrating data into Drupal subfields

Migrate process plugins transform data between source and destination. This gets more complicated for Drupal fields have multiple components. Today we will learn how to migrate into them and know which subfields are available.

Syntax for process plugin definition and chaining

Using process plugins for data transformation in Drupal migrations

Sometimes in a Drupal 7 to Drupal 8 migration we copy values verbatim from the source to the destination. Often, the data needs to be transformed to match the format expected by the destination. Today we will learn more about process plugins and how they work as part of the Drupal migration pipeline.

List of migrate plugins

Writing your first Drupal migration

In the previous entry, we learned that the Migrate API is an implementation of an ETL framework. We also talked about the steps involved in writing and running migrations. Now, let’s write our first Drupal migration. We are going to start with a very basic example: creating nodes out of hardcoded data. For this, we assume a Drupal installation using the standard installation profile which comes with the Basic Page content type.

Seven fresh dough balls and a rolling pin.

Drupal migrations: Understanding the ETL process

The Migrate API is a very flexible and powerful system that allows you to collect data from different locations and store tham in Drupal— it is a full-blown extract, transform, and load (ETL) framework.