...
- Download & setup both the D7 and the D8 sites.
Do the following in your terminal on your D8 site (change our YOUR-MODULE as need be):
Code Block vagrant@dvm:/var/www/YOUR-SITE/web$ drupal gm // Welcome to the Drupal module generator Enter the new module name: > YOUR-MODULE Migrate Enter the module machine name [YOUR-MODULE_migrate]: > Enter the module Path [/modules/custom]: > Enter module description [My Awesome Module]: > The Migrate Template for YOUR-MODULE Enter package name [Custom]: > YOUR-MODULE Enter Drupal Core version [8.x]: > Do you want to generate a .module file (yes/no) [yes]: > no Define module as feature (yes/no) [no]: > Do you want to add a composer.json file to your module (yes/no) [yes]: > Would you like to add module dependencies (yes/no) [no]: > yes Module dependencies separated by commas (i.e. context, panels): > migrate_drupal, migrate_plus, migrate_tools, migrate_upgrade Do you want to generate a unit test class (yes/no) [yes]: > no Do you want to generate a themeable template (yes/no) [yes]: > no Do you confirm generation? (yes/no) [yes]: > yes Generated or updated files 1 - /var/www/YOUR-SITE/web/modules/custom/YOUR-MODULE_migrate/YOUR-MODULE_migrate.info.yml 2 - /var/www/YOUR-SITE/web/modules/custom/YOUR-MODULE_migrate/composer.json
In your settings.local.php add this to the top:
Code Block $databases['migrate']['default'] = array ( 'database' => 'DRUPAL-7-SITE_drupalvm', 'username' => 'drupal', 'password' => 'drupal', 'prefix' => '', 'host' => 'localhost', 'port' => '', 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', 'driver' => 'mysql', );
In the YOUR-MODULE_migrate module we created above, add a config/install folder
In your D8 site run this:
Code Block drush config-export --destination=/tmp/migrate cp /tmp/migrate/migrate_plus.migration.* /path/to/YOUR-MODULE_migrate/config/install cd /path/to/YOUR-MODULE_migrate/config/install
- Then you can go through and remove the yml files you don't need. Careful though, read the required dependencies at the bottom of each yml file.
- If you need to skip rows (ie fields, certain nodes, etc), this is a good tutorial on how to do so: https://drupalize.me/tutorial/use-hookmigratepreparerow?p=2578
- If you need to alter data or do heavier customization you need to extend various migration and plugin classes.
- Here is a quick article on Altering data during a Drupal 8 Migration
- There are also numerous articles out there on extending individual migrate entity classes to do even more processing if need beas well to help you in this regard.
Wipe and re-install your D8 site plus enable the custom module. You should only have the config you specified in the module now.
You can check and then import with:
Code Block drush migrate-status drush migrate-import --all
- NOTE: Make a little script to help with testing this to remove failures, etc. Use drush_print() in my hook_migrate_prepare_row() for fast debugging. You will drop and import the DB over and over. Here is a sample script:
Code Block #!/bin/bash drush @drupalvm.YOUR-SITE.dvm sql-drop -y drush @drupalvm.YOUR-SITE.dvm sql-cli < ~/path/to/DB.sql drush @drupalvm.YOUR-SITE.dvm en YOUR-MODULE_migrate -y #drush @drupalvm.YOUR-SITE.dvm mi upgrade_d7_field #drush @drupalvm.YOUR-SITE.dvm mi upgrade_d7_field_instance drush @drupalvm.YOUR-SITE.dvm mi --all