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

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