diff --git a/core/lib/Drupal/Core/Entity/EntityStorageBase.php b/core/lib/Drupal/Core/Entity/EntityStorageBase.php
index 3528b7d..573bc7f 100644
--- a/core/lib/Drupal/Core/Entity/EntityStorageBase.php
+++ b/core/lib/Drupal/Core/Entity/EntityStorageBase.php
@@ -9,6 +9,7 @@
 
 use Drupal\Component\Utility\String;
 use Drupal\Core\Entity\Query\QueryInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
 
 /**
  * A base entity storage class.
@@ -94,6 +95,31 @@ public function __construct(EntityTypeInterface $entity_type) {
   }
 
   /**
+   * Invoke the load hooks.
+   *
+   * @param array $entities
+   *   The array of entities.
+   * @param $entity_type_id
+   * @param string $entity_class
+   *   The entity class.
+   * @param \Drupal\Core\Entity\EntityStorageInterface $entity_storage
+   *   The entity storage.
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   */
+  public static function invokeLoadHook(array &$entities, $entity_type_id, $entity_class, EntityStorageInterface $entity_storage, ModuleHandlerInterface $module_handler) {
+    $entity_class::postLoad($entity_storage, $entities);
+    foreach ($module_handler->getImplementations('entity_load') as $module) {
+      $function = $module . '_entity_load';
+      $function($entities, $entity_type_id);
+    }
+    // Call hook_TYPE_load().
+    foreach ($module_handler->getImplementations($entity_type_id . '_load') as $module) {
+      $function = $module . '_' . $entity_type_id . '_load';
+      $function($entities);
+    }
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function getEntityTypeId() {
@@ -299,20 +325,10 @@ public function loadMultiple(array $ids = NULL) {
    *   Associative array of query results, keyed on the entity ID.
    */
   protected function postLoad(array &$entities) {
-    $entity_class = $this->entityClass;
-    $entity_class::postLoad($this, $entities);
-    // Call hook_entity_load().
-    foreach ($this->moduleHandler()->getImplementations('entity_load') as $module) {
-      $function = $module . '_entity_load';
-      $function($entities, $this->entityTypeId);
-    }
-    // Call hook_TYPE_load().
-    foreach ($this->moduleHandler()->getImplementations($this->entityTypeId . '_load') as $module) {
-      $function = $module . '_' . $this->entityTypeId . '_load';
-      $function($entities);
-    }
+    static::invokeLoadHook($entities, $this->entityTypeId, $this->entityClass, $this, $this->moduleHandler());
   }
 
+
   /**
    * Maps from storage records to entity objects.
    *
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/load/LoadEntity.php b/core/modules/migrate_drupal/src/Plugin/migrate/load/LoadEntity.php
index c9db0e7..5cb4771 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/load/LoadEntity.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/load/LoadEntity.php
@@ -8,7 +8,10 @@
 namespace Drupal\migrate_drupal\Plugin\migrate\load;
 
 use Drupal\Component\Utility\String;
+use Drupal\Core\Entity\EntityStorageBase;
 use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Plugin\PluginBase;
 use Drupal\migrate\Entity\MigrationInterface;
 use Drupal\migrate\Exception\RequirementsException;
@@ -16,6 +19,7 @@
 use Drupal\migrate\Plugin\SourceEntityInterface;
 use Drupal\migrate_drupal\Plugin\MigrateLoadInterface;
 use Drupal\migrate_drupal\Plugin\CckFieldMigrateSourceInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Base class for entity load plugins.
@@ -24,7 +28,7 @@
  *
  * @PluginID("drupal_entity")
  */
-class LoadEntity extends PluginBase implements MigrateLoadInterface {
+class LoadEntity extends PluginBase implements MigrateLoadInterface, ContainerFactoryPluginInterface {
 
   /**
    * The list of bundles being loaded.
@@ -34,11 +38,28 @@ class LoadEntity extends PluginBase implements MigrateLoadInterface {
   protected $bundles;
 
   /**
+   * The module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler
+   */
+  protected $moduleHandler;
+
+  /**
+   * The migration storage handler.
+   *
+   * @var \Drupal\Core\Entity\EntityStorageInterface $migrationStorage
+   */
+  protected $migrationStorage;
+
+  /**
    * {@inheritdoc}
    */
-  public function __construct(array $configuration, $plugin_id, array $plugin_definition, MigrationInterface $migration) {
+  public function __construct(array $configuration, $plugin_id, array $plugin_definition, MigrationInterface $migration, ModuleHandlerInterface $module_handler, EntityStorageInterface $migration_storage) {
     parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
     $this->migration = $migration;
+    $this->moduleHandler = $module_handler;
+    $this->migrationStorage = $migration_storage;
+
     $source_plugin = $this->migration->getSourcePlugin();
     if (!$source_plugin instanceof SourceEntityInterface) {
       throw new MigrateException('Migrations with a load plugin using LoadEntity should have an entity as source.');
@@ -51,6 +72,20 @@ public function __construct(array $configuration, $plugin_id, array $plugin_defi
   /**
    * {@inheritdoc}
    */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $migration,
+      $container->get('module_handler'),
+      $container->get('entity.manager')->getStorage('migration')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function load(EntityStorageInterface $storage, $sub_id) {
     $entities = $this->loadMultiple($storage, array($sub_id));
     return isset($entities[$sub_id]) ? $entities[$sub_id] : FALSE;
@@ -114,7 +149,7 @@ public function loadMultiple(EntityStorageInterface $storage, array $sub_ids = N
 
       }
     }
-
+    $this->postLoad($migrations);
     return $migrations;
   }
 
@@ -205,4 +240,14 @@ protected function processLinkField($field_name, $field_data, MigrationInterface
     $migration->setProcess($process);
   }
 
+  /**
+   * Attaches data to entities upon loading.
+   *
+   * @param array $entities
+   *   Associative array of query results, keyed on the entity ID.
+   */
+  protected function postLoad(array &$entities) {
+    EntityStorageBase::invokeLoadHook($entities, 'migration', get_class($this->migration), $this->migrationStorage, $this->moduleHandler);
+  }
+
 }
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/load/d6/LoadTermNode.php b/core/modules/migrate_drupal/src/Plugin/migrate/load/d6/LoadTermNode.php
index e5b3f5e..ef900ef 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/load/d6/LoadTermNode.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/load/d6/LoadTermNode.php
@@ -13,6 +13,7 @@
 use Drupal\migrate\MigrateMessage;
 use Drupal\migrate\Row;
 use Drupal\migrate_drupal\Plugin\migrate\load\LoadEntity;
+use Drupal\Core\Extension\ModuleHandlerInterface;
 
 /**
  * @PluginID("d6_term_node")
@@ -22,9 +23,9 @@ class LoadTermNode extends LoadEntity {
   /**
    * {@inheritdoc}
    */
-  public function __construct(array $configuration, $plugin_id, array $plugin_definition, MigrationInterface $migration) {
+  public function __construct(array $configuration, $plugin_id, array $plugin_definition, MigrationInterface $migration, ModuleHandlerInterface $module_handler, EntityStorageInterface $migration_storage) {
     $configuration['bundle_migration'] = 'd6_taxonomy_vocabulary';
-    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $module_handler, $migration_storage);
   }
 
   /**
