Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DCM-2018 Writing Dynamic Migrations

DCM-2018 Writing Dynamic Migrations

Drupalcamp Mumbai 2018
Writing Dynamic Migrations

Avatar for Mohit Aghera

Mohit Aghera

April 28, 2018
Tweet

More Decks by Mohit Aghera

Other Decks in Technology

Transcript

  1. 2 axelerant.com About Us Mohit Aghera - Back-end developer @Axelerant

    - Drupal.org: mohit_aghera - Twitter: @mohit_rocks Mitesh Patel - Back-end developer @Axelerant - Known as @miteshmap over internet.
  2. 5 axelerant.com Migrations: A brief introduction What Migrate API Provides:

    • Migrate Data from source to destination • Keeps track of record of migrated data • Provides framework for writing migrations
  3. 8 axelerant.com Understanding Derivatives • Drupal 7 has “_info()” hooks

    • Wonder how do we generate multiple blocks with single block plugin ? • Drupal 8 has “Derivatives” • Allows to generate instances dynamically
  4. 9 axelerant.com How Derivatives works ? • Plugin manager uses

    “Discovery” mechanism • “DerivativeDiscoveryDecorator” decorator class
  5. 14 axelerant.com Migration as Configuration entities • Similar to any

    configurations • Resides in [module]/config directory • Typically names are given like “migrate.migration.node_page.yml”
  6. 15 axelerant.com Migration as Configuration entities Advantages: • Easy to

    write and run • No need to write specific logic to run unlike migration templates Disadvantages: • Not much flexible • Hard to change runtime • Dynamic migration generation is not possible • Can’t generate based on user inputs
  7. 16 axelerant.com Migration as templates • Resides in [module]/migration_templates directory

    • Names could match the migration id • Typically names are given like “node_page.yml”
  8. 17 axelerant.com Migration as templates Advantages: • Much more flexible

    than configuration entities for each variation • Easy to change runtime • Ability to generate dynamic migration using reusable templates
  9. 18 axelerant.com Derivers for Migration • Works as a derivative

    for new migrations • Helps to create migrations dynamically • Extends DeriverBase class.
  10. 22 axelerant.com Use cases • Migrating large amount of sites

    with similar architecture but different languages in each site (our use case, https://github.com/miteshmap/drupal_migration_demo) • Core: Migrating D7 to D8 • Core: Migrating Workbench Moderation to Content Moderation (https://www.drupal.org/project/wbm2cm) • Migrating sites from Magento for instance with different attributes for each site • And many more...
  11. 23 axelerant.com Thank you … for being here and allowing

    us to contribute and share our knowledge To summarise… • We discussed how to make migrations more dynamic and less painful • We saw an example of how to write derivers • We saw advantages of doing it, it is done in Core and many contrib modules already