Sorry, you need to enable JavaScript to visit this website.

Drupal 8 Migration Drush commands

Drupal 8 migration is always painful if not planned well. You run into 'Trial-and-error' and end up spending a more time than it is worth.

Here, there are drush commands which you can use during the migration process. Some of them are from contributed modules which help you during the migration. Drush commands from such modules will be indicated so.

Drupal 8 migration

As we know, migration follows Extract-Transform-Load (ETL) method to migrate the data to Drupal 8.

Here are the :

  • Extract is Source
  • Transform is processing and mapping the data
  • Load is setting/copying/saving the data to destination

 

Drush commands:

migrate-upgrade

Connects to the DB where you are migrating from. This command is useful when you are migrating from a Drupal 6 or Drupal 7 website. It takes following full form:

drush migrate-upgrade --legacy-db-url=mysql://user:pass@127.0.0.1/d6db --legacy-root=http://myd6site.com 

You can also chose to migrate configurations only using

--configure-only 
drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-root=http://example.com --configure-only 

If you your source DB has a prefix in table names, use 

--legacy-db-prefix

 

migrate-status

After creating the migration, this command will give you an overview of the migration that can take place.

 

migrate-import or mim or mi

With this command, you actually initiate the migration. You can then selectively import individual or multiple migrations using their names of import them all with

--all 

drush migrate-import --all 

drush mim <migration name>

 

With Migrate Manifest module, you can create a group of migration and execute them at once:

drush migrate:template:list

This command gives you a list of available migration

Migration can be defined in a YAML file as below:

# nodes 
- d6_node 
- d6_node_revision 
- d6_node_type 
- d6_view_modes 
- d6_filter_format 
- d6_field_instance_per_form_display 
- d6_field_instance_widget_settings 
- d6_field_formatter_settings 
- d6_field_instance 
- d6_field 
- d6_field_settings 
- d6_node_settings 
- d6_cck_field_values:* 
- d6_cck_field_revision:* 

# taxonomy fields 
- d6_term_node_revision 
- d6_term_node 
- d6_vocabulary_entity_display 
- d6_vocabulary_entity_form_display 
- d6_vocabulary_field_instance 
- d6_vocabulary_field 

# blocks 
- d6_block 
- d6_menu 

# custom blocks 
- d6_custom_block 
- d6_filter_format 

# book 
- d6_book 
- d6_book_settings 

# file migrations are configurable 
- d6_file: 
    source: 
      conf_path: sites/assets 
    destination: 
      source_base_path: destination/base/path 
      destination_path_property: uri 

 

Save this file and place it a directory which can be accessed during the migration.
 

drush migrate-manifest --legacy-db-url=mysql://user:pass@localhost/drupal_6 manifest.yml 

 

For better control, you can place this YAML file in version control to track the changes.

 

drush migrate-rollback <migration_id>

When you have issues with migration or just testing your migration, you can always rollback them!

drush mr --group=files

 

migrate-stop

You can stop an active migration using this command

drush migrate-stop <migration_id>

 

migrate-messages

This command allows you to view messages associated with a migration to debug the process so you can identify the issue and correct it.

drush migrate-messages <migration_id>

 

migrate-reset-status

Reset status of an active migration to idle and start over.

drush migrate-reset-status <migration_id>
01/10/2019