<!-- THEME DEBUG -->
<!-- THEME HOOK: 'field' -->
<!-- FILE NAME SUGGESTIONS:
   ▪️ field--node--title--article.html.twig
   ✅ field--node--title.html.twig
   ▪️ field--node--article.html.twig
   ▪️ field--title.html.twig
   ▪️ field--string.html.twig
   ▪️ field.html.twig
-->
<!-- BEGIN OUTPUT from 'themes/contrib/classy/templates/field/field--node--title.html.twig' -->
<span class=How to migrate fields from D7 in an event subscriber ">

How to migrate fields from D7 in an event subscriber

Sometimes during a migration, fields are not directly migrateable in the .yml file. In this case, or if there is more processing of the data that cannot be handled by a plugin, you can use an event subscriber that fires on the migration of each row.

In your your_custom_migration_module/src/EventSubscriber/CustomMigrateSubscriber.php:

<?php

namespace Drupal\your_custom_module\EventSubscriber;
use Drupal\migrate\Event\MigrateEvents;
use Drupal\migrate\Event\MigrateImportEvent;
use Drupal\migrate\Event\MigratePostRowSaveEvent;
use Drupal\migrate\Event\MigrateRollbackEvent;
use Drupal\Core\Database\Database; 

/**
 * Processes data after migrations.
 */
class CustomMigrateSubscriber implements EventSubscriberInterface { 

   /**
   * MigrateSubscriber constructor.
   */
  public function __construct() {}
  /**
   * Executes on post row save.
   *
   * @param \Drupal\migrate\Event\MigratePostRowSaveEvent $event
   *   The migrate post row save event.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  public function onPostRowSave(MigratePostRowSaveEvent $event) {
    $d8_connection = \Drupal::database();
    $connection = Database::getConnection('default', 'migrate');
    $migration_id = $event->getMigration()->id();
    $nid = $event->getRow()->getSourceProperty('nid');
    $uid = $event->getRow()->getSourceProperty('uid');
    if ($migration_id == 'your_custom_migration_id') {
      // Get fields from source plugin 
      $some_array = $event->getRow()->getSourceProperty('ids'); //We set this in the source plugin!
      $nid = $event->getRow()->getSourceProperty('nid');
      // Do something with this data!
    }
}