Migrations

Drupal Camp Costa Rica - 2019

Angel Hañari

Backend Drupal Developer

@langelhc

Design Marco Torres

I work for:

Drupal Perú

Find this presentation on:

Agenda

  • ETL Process
  • Upgrade D6/D7 to D8
  • Migrate Configuration
  • Migrate Content
  • Demo
  • Bonus Track
  • Q&A

Extract > Transform > Load

Plugins in Drupal

Source > Process > Destination 

Source Plugins

D6 or D7 database, CSV, JSON, or XML file.

Source plugin

source:
  plugin: csv
  path: modules/custom/mbe_professors/sources/mbe_professors.csv
  header_row_count: 1
  keys:
    - 'Professor ID'

Yaml syntax is very important, 2 spaces for indentation

Process Plugins

process:
  type:
    plugin: default_value
    default_value: mbe_professor

Destination Plugins

Destination plugins are responsible for saving new data e.g. Nodes, Users, etc.

destination:
  plugin: 'entity:node'

Upgrade D6/D7 to D8

Required Drupal Core Modules

Migrate Configuration

Content types, fields, etc.

e.g.: /core/modules/node/migrations/d7_node_type.yml

id: d7_node_type
label: Node type configuration
source:
  plugin: d7_node_type
  constants:
    preview: 1 # DRUPAL_OPTIONAL
process:
  type: type
  name: name
  description: description
  ...
destination:
  plugin: entity:node_type

Migrate Content

  • Migrate Plus: Provides extensions to core migration framework functionality.
  • Migrate Tools: Provides the Drush commands used later on this page.

Drush migration commands

  • migrate-status - Lists migrations and their status.
  • migrate-import - Performs import operations.
  • migrate-rollback - Performs rollback operations.
  • migrate-stop - Cleanly stops a running operation.
  • migrate-reset-status - Sets a migration status to Idle if it's gotten stuck.
  • migrate-messages - Lists any messages associated with a migration import.

Live Demo

Demo steps

#Install a clean D8
$ composer require drupal/migrate_tools drupal/migrate_plus
$ drush en migrate_tools migrate_plus -y
$ drush en user_migration -y #Enable migration custom module
$ drush ms
$ drush migrate:import custom_user_migration

Which plugins can you use?

Using DrupalConsole

$ drupal debug:plugin migrate.source
$ drupal debug:plugin migrate.process
$ drupal debug:plugin migrate.destination

More migration examples

Questions?

Diseño por Marco Torres: https://groups.drupal.org/user/134468

References

DrupalCamp CR 2019 - Migrations

By Angel Hañari

DrupalCamp CR 2019 - Migrations

  • 684