SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
April 2018
D8 - 220K websites
D7 - 900K websites
D6 - 60K websites
destination:
plugin: entity:user
/**
* @MigrateDestination(
* id = "entity:user"
* )
*/
class EntityUser extends EntityContentBase {
protected function save(ContentEntityInterface $entity, array $old_destination_id_values
= []) {
$entity->save();
return [$entity->id()];
}
roles: #roles are on a different table, but it is part of the user entity
plugin: migration_lookup
migration: d7_user_role
source: roles
roles: #roles are on a different table, but it is part of the user entity
plugin: migration_lookup
migration: d7_user_role
source: roles
# for nodes
destination:
plugin: 'entity:node'
default_bundle: admissions_event
# for user
destination:
plugin: 'entity:user'
source:
plugin: d7_user
# show User.php
class User extends FieldableEntity {
/**
* {@inheritdoc}
*/
public function query() {
return $this->select('users', 'u')
->fields('u')
->condition('u.uid', 0, '>');
}
public function fields() {
$fields = [
'uid' => $this->t('User ID'),
'name' => $this->t('Username'),
];
return $fields;
}
User::fields are the source data you can use later in process section of the template.
/**
* Drupal 7 user source from database.
*
* @MigrateSource(
* id = "d7_user",
* source_module = "user"
* )
*/
class User extends FieldableEntity {
being confident of this, that he who began a
good work in you will carry it on to completion
until the day of Christ Jesus.
# mapping using the short notation (implicitly uses get process plugin)
# destination:source
process:
uid: uid
name: name
pass: pass
mail: mail
# explicit mapping
# <destination_field>:
# plugin: <plugin_name>
# source: <source_field>
process:
langcode:
plugin: user_langcode
source: language
fallback_to_site_default: false
roles:
plugin: migration_lookup
migration: d7_user_role
source: roles
user_picture:
-
plugin: default_value
source: picture
default_value: null
-
plugin: migration_lookup
migration: d7_file
/**
* @MigrateProcessPlugin(
* id = "migration_lookup_neiu_current_vid"
* )
*/
class NeiuCurrentVid extends Get {
public function transform($value, MigrateExecutableInterface $migrate_executable, Row
$row, $destination_property) {
$node = node_load($value);
return $node->getRevisionId();
}
}
# syntax
drush migrate-upgrade --configure-only --legacy-root=<website root> --legacy-db-key=<DB
key> --migration-prefix=<Migration Prefix>
Where:
legacy-root is for example http://mywebsite.com
legacy-db-key is your source d6/d7 db export defined in settings.php
migration-prefix is any value that will be used as a prefix for the files generated for migration
process:
nid: tnid #remove this line
vid: vid #remove this line
uid:
#migration_lookup is used to get the new uid from a previous user migration
plugin: migration_lookup
migration: hub_d7_user #the migration id of the previous user migration
source: uid
Freedom lies in being bold
1. Import the source database and define the connections in settings.php
2. Generate the migration template files using migrate_upgrade module:
drush migrate-upgrade --configure-only --legacy-root=<website root> --legacy-db-key=<DB key>
--migration-prefix=<Migration Prefix>
3. Export the migration template files using drush config-export:
drush cex
*** We need to export because it only exists in DB prior to this. Exporting will give the files to edit.
4. Edit/Delete the migration templates files into your config directory as needed.
*** Ideally, you will just be migrating content, users and taxonomy. Configurations/content types can be manually created.
5. Reimport your changes using drush config-import:
drush cim
6. Visit admin/structure/migrate and execute migrations (or rollback) as needed.
Usually migrations are not as desired on the first run and edits to the custom plugin or template must be
made. You can execute rollback and retry. If migration template changes are needed, step 5 must be
executed for template changes to take effect.
1. Migrate Tools contrib module for using drush to execute migrations.
2. Migrate Manifest contrib to group migrations in a manifest file.
3. Using stubs for migrating chicken or egg scenarios.
Go forth and multiply

Contenu connexe

Tendances

Drupal Step-by-Step: How We Built Our Training Site, Part 1
Drupal Step-by-Step: How We Built Our Training Site, Part 1Drupal Step-by-Step: How We Built Our Training Site, Part 1
Drupal Step-by-Step: How We Built Our Training Site, Part 1
Acquia
 
Simple blog wall creation on Java
Simple blog wall creation on JavaSimple blog wall creation on Java
Simple blog wall creation on Java
Max Titov
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
LEDC 2016
 

Tendances (17)

jQuery secrets
jQuery secretsjQuery secrets
jQuery secrets
 
Doctrine and NoSQL
Doctrine and NoSQLDoctrine and NoSQL
Doctrine and NoSQL
 
Doctrine for NoSQL
Doctrine for NoSQLDoctrine for NoSQL
Doctrine for NoSQL
 
Drupal Step-by-Step: How We Built Our Training Site, Part 1
Drupal Step-by-Step: How We Built Our Training Site, Part 1Drupal Step-by-Step: How We Built Our Training Site, Part 1
Drupal Step-by-Step: How We Built Our Training Site, Part 1
 
Simple blog wall creation on Java
Simple blog wall creation on JavaSimple blog wall creation on Java
Simple blog wall creation on Java
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 
Dicoding Developer Coaching #32: Android | Reactive Programming dengan RxJava...
Dicoding Developer Coaching #32: Android | Reactive Programming dengan RxJava...Dicoding Developer Coaching #32: Android | Reactive Programming dengan RxJava...
Dicoding Developer Coaching #32: Android | Reactive Programming dengan RxJava...
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Understanding backbonejs
Understanding backbonejsUnderstanding backbonejs
Understanding backbonejs
 
Drupal Development
Drupal DevelopmentDrupal Development
Drupal Development
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Php5
Php5Php5
Php5
 
Codeigniter : Custom Routing - Manipulate Uri
Codeigniter : Custom Routing - Manipulate UriCodeigniter : Custom Routing - Manipulate Uri
Codeigniter : Custom Routing - Manipulate Uri
 
Databinding and Performance-Tuning in Angular 2
Databinding and Performance-Tuning in Angular 2Databinding and Performance-Tuning in Angular 2
Databinding and Performance-Tuning in Angular 2
 
Save data in to sqlite
Save data in to sqliteSave data in to sqlite
Save data in to sqlite
 

Similaire à Migrating Drupal 7 to Drupal 8

Similaire à Migrating Drupal 7 to Drupal 8 (20)

Yii in action
Yii in actionYii in action
Yii in action
 
Drupal8 migrate
Drupal8 migrateDrupal8 migrate
Drupal8 migrate
 
Drupal 8 migrate!
Drupal 8 migrate!Drupal 8 migrate!
Drupal 8 migrate!
 
Migrating data to drupal 8
Migrating data to drupal 8Migrating data to drupal 8
Migrating data to drupal 8
 
Symfony2 from the Trenches
Symfony2 from the TrenchesSymfony2 from the Trenches
Symfony2 from the Trenches
 
RESTful web services
RESTful web servicesRESTful web services
RESTful web services
 
Symfony2 - from the trenches
Symfony2 - from the trenchesSymfony2 - from the trenches
Symfony2 - from the trenches
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentFirst Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven Development
 
Angular2 + rxjs
Angular2 + rxjsAngular2 + rxjs
Angular2 + rxjs
 
Introduction to Polymer and Firebase - Simon Gauvin
Introduction to Polymer and Firebase - Simon GauvinIntroduction to Polymer and Firebase - Simon Gauvin
Introduction to Polymer and Firebase - Simon Gauvin
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
Layout discovery. Drupal Summer Barcelona 2017
Layout discovery. Drupal Summer Barcelona 2017Layout discovery. Drupal Summer Barcelona 2017
Layout discovery. Drupal Summer Barcelona 2017
 
08ui.pptx
08ui.pptx08ui.pptx
08ui.pptx
 
Automating Drupal Migrations
Automating Drupal MigrationsAutomating Drupal Migrations
Automating Drupal Migrations
 
Multilingualism makes better programmers
Multilingualism makes better programmersMultilingualism makes better programmers
Multilingualism makes better programmers
 
Tech talk live share extras extension modules feb 13
Tech talk live   share extras extension modules feb 13Tech talk live   share extras extension modules feb 13
Tech talk live share extras extension modules feb 13
 
Drupal 7 database api
Drupal 7 database api Drupal 7 database api
Drupal 7 database api
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
 
Moodle 3.3 - API Change Overview #mootieuk17
Moodle 3.3 - API Change Overview #mootieuk17Moodle 3.3 - API Change Overview #mootieuk17
Moodle 3.3 - API Change Overview #mootieuk17
 

Plus de Promet Source

Higher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will comeHigher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Promet Source
 

Plus de Promet Source (20)

How To Start Building Your Own Website With Drupal by Mary Chris Casis
How To Start Building Your Own Website With Drupal by Mary Chris CasisHow To Start Building Your Own Website With Drupal by Mary Chris Casis
How To Start Building Your Own Website With Drupal by Mary Chris Casis
 
DrupalCamp Cebu 2018 R&F by Andrew Kucharski
DrupalCamp Cebu 2018 R&F by Andrew KucharskiDrupalCamp Cebu 2018 R&F by Andrew Kucharski
DrupalCamp Cebu 2018 R&F by Andrew Kucharski
 
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
Unit test in drupal 8 by Pratomo Ardianto Drupalcamp Cebu 2018
 
Migrating to-Drupal-8 by Bryan Manalo
Migrating to-Drupal-8 by Bryan ManaloMigrating to-Drupal-8 by Bryan Manalo
Migrating to-Drupal-8 by Bryan Manalo
 
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
Why and When to use Drupal by Luc Bezier - Drupalcamp Cebu 2018
 
Drupal Development with Docker
Drupal Development with DockerDrupal Development with Docker
Drupal Development with Docker
 
Web Accessibility in Drupal
Web Accessibility in DrupalWeb Accessibility in Drupal
Web Accessibility in Drupal
 
Drupal Continuous Integration and devops - Beyond Jenkins
Drupal Continuous Integration and devops - Beyond JenkinsDrupal Continuous Integration and devops - Beyond Jenkins
Drupal Continuous Integration and devops - Beyond Jenkins
 
Drupal 8 Involvement with Promet Source
Drupal 8 Involvement with Promet SourceDrupal 8 Involvement with Promet Source
Drupal 8 Involvement with Promet Source
 
Using Commerce License for Premium Content on Drupal Sites
Using Commerce License for Premium Content on Drupal SitesUsing Commerce License for Premium Content on Drupal Sites
Using Commerce License for Premium Content on Drupal Sites
 
Behavioral driven development with Behat
Behavioral driven development with BehatBehavioral driven development with Behat
Behavioral driven development with Behat
 
Composer tools and frameworks for Drupal
Composer tools and frameworks for DrupalComposer tools and frameworks for Drupal
Composer tools and frameworks for Drupal
 
Responsive Design Testing the Promet Way
Responsive Design Testing the Promet WayResponsive Design Testing the Promet Way
Responsive Design Testing the Promet Way
 
Optimize and succeed your next Fixed Budget Project planning process
Optimize and succeed your next Fixed Budget Project planning process Optimize and succeed your next Fixed Budget Project planning process
Optimize and succeed your next Fixed Budget Project planning process
 
Diy continuous integration
Diy continuous integrationDiy continuous integration
Diy continuous integration
 
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will comeHigher Ed Web 2013 presentation - Field of Dreams, build it and they will come
Higher Ed Web 2013 presentation - Field of Dreams, build it and they will come
 
Getting agile with drupal
Getting agile with drupalGetting agile with drupal
Getting agile with drupal
 
Project Estimation Presentation - Donte's 8th level of estimating level of ef...
Project Estimation Presentation - Donte's 8th level of estimating level of ef...Project Estimation Presentation - Donte's 8th level of estimating level of ef...
Project Estimation Presentation - Donte's 8th level of estimating level of ef...
 
DrupalCon 2013 Making Support Fun & Profitable
DrupalCon 2013 Making Support Fun & ProfitableDrupalCon 2013 Making Support Fun & Profitable
DrupalCon 2013 Making Support Fun & Profitable
 
DevOps for Drupal: Why We Cook With Chef
DevOps for Drupal: Why We Cook With ChefDevOps for Drupal: Why We Cook With Chef
DevOps for Drupal: Why We Cook With Chef
 

Dernier

%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 

Dernier (20)

%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 

Migrating Drupal 7 to Drupal 8

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. April 2018 D8 - 220K websites D7 - 900K websites D6 - 60K websites
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. destination: plugin: entity:user /** * @MigrateDestination( * id = "entity:user" * ) */ class EntityUser extends EntityContentBase { protected function save(ContentEntityInterface $entity, array $old_destination_id_values = []) { $entity->save(); return [$entity->id()]; }
  • 15.
  • 16. roles: #roles are on a different table, but it is part of the user entity plugin: migration_lookup migration: d7_user_role source: roles
  • 17. roles: #roles are on a different table, but it is part of the user entity plugin: migration_lookup migration: d7_user_role source: roles
  • 18. # for nodes destination: plugin: 'entity:node' default_bundle: admissions_event # for user destination: plugin: 'entity:user'
  • 20.
  • 21. class User extends FieldableEntity { /** * {@inheritdoc} */ public function query() { return $this->select('users', 'u') ->fields('u') ->condition('u.uid', 0, '>'); }
  • 22.
  • 23. public function fields() { $fields = [ 'uid' => $this->t('User ID'), 'name' => $this->t('Username'), ]; return $fields; } User::fields are the source data you can use later in process section of the template.
  • 24. /** * Drupal 7 user source from database. * * @MigrateSource( * id = "d7_user", * source_module = "user" * ) */ class User extends FieldableEntity {
  • 25. being confident of this, that he who began a good work in you will carry it on to completion until the day of Christ Jesus.
  • 26. # mapping using the short notation (implicitly uses get process plugin) # destination:source process: uid: uid name: name pass: pass mail: mail
  • 27. # explicit mapping # <destination_field>: # plugin: <plugin_name> # source: <source_field> process: langcode: plugin: user_langcode source: language fallback_to_site_default: false roles: plugin: migration_lookup migration: d7_user_role source: roles
  • 28. user_picture: - plugin: default_value source: picture default_value: null - plugin: migration_lookup migration: d7_file
  • 29. /** * @MigrateProcessPlugin( * id = "migration_lookup_neiu_current_vid" * ) */ class NeiuCurrentVid extends Get { public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { $node = node_load($value); return $node->getRevisionId(); } }
  • 30.
  • 31. # syntax drush migrate-upgrade --configure-only --legacy-root=<website root> --legacy-db-key=<DB key> --migration-prefix=<Migration Prefix> Where: legacy-root is for example http://mywebsite.com legacy-db-key is your source d6/d7 db export defined in settings.php migration-prefix is any value that will be used as a prefix for the files generated for migration
  • 32.
  • 33.
  • 34. process: nid: tnid #remove this line vid: vid #remove this line uid: #migration_lookup is used to get the new uid from a previous user migration plugin: migration_lookup migration: hub_d7_user #the migration id of the previous user migration source: uid
  • 35.
  • 36. Freedom lies in being bold
  • 37. 1. Import the source database and define the connections in settings.php 2. Generate the migration template files using migrate_upgrade module: drush migrate-upgrade --configure-only --legacy-root=<website root> --legacy-db-key=<DB key> --migration-prefix=<Migration Prefix> 3. Export the migration template files using drush config-export: drush cex *** We need to export because it only exists in DB prior to this. Exporting will give the files to edit. 4. Edit/Delete the migration templates files into your config directory as needed. *** Ideally, you will just be migrating content, users and taxonomy. Configurations/content types can be manually created. 5. Reimport your changes using drush config-import: drush cim 6. Visit admin/structure/migrate and execute migrations (or rollback) as needed. Usually migrations are not as desired on the first run and edits to the custom plugin or template must be made. You can execute rollback and retry. If migration template changes are needed, step 5 must be executed for template changes to take effect.
  • 38. 1. Migrate Tools contrib module for using drush to execute migrations. 2. Migrate Manifest contrib to group migrations in a manifest file. 3. Using stubs for migrating chicken or egg scenarios.
  • 39. Go forth and multiply