diff --git a/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php b/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
index 862f114a5d..9ecc6b9126 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php
@@ -178,7 +178,9 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
       $source_id_values[$lookup_migration_id] = $value;
       // Break out of the loop as soon as a destination ID is found.
       if ($destination_ids = $lookup_migration->getIdMap()->lookupDestinationId($source_id_values[$lookup_migration_id])) {
-        break;
+                if (count($destination_ids) != 1) {
+                    $destination_ids = array_combine($lookup_migration->getSourcePlugin()->getIds(), $destination_ids);
+                  }        break;
       }
     }
 
@@ -232,7 +234,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
         return reset($destination_ids);
       }
       else {
-        return $destination_ids;
+        return array_merge(array_values($destination_ids), $destination_ids);
       }
     }
   }
diff --git a/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php b/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php
index 9158cdbdbd..bf6128c719 100644
--- a/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php
+++ b/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php
@@ -114,6 +114,8 @@ public function testSkipOnEmpty() {
    *
    * @dataProvider successfulLookupDataProvider
    *
+   * @param array $source_id_keys
+   *   The key(s) of the migration source provider.
    * @param array $source_id_values
    *   The source id(s) of the migration map.
    * @param array $destination_id_values
@@ -123,20 +125,23 @@ public function testSkipOnEmpty() {
    * @param string|array $expected_value
    *   The expected value(s) of the migration process plugin.
    */
-  public function testSuccessfulLookup($source_id_values, $destination_id_values, $source_value, $expected_value) {
+  public function testSuccessfulLookup($source_id_keys, $source_id_values, $destination_id_values, $source_value, $expected_value) {
     $migration_plugin = $this->prophesize(MigrationInterface::class);
     $migration_plugin_manager = $this->prophesize(MigrationPluginManagerInterface::class);
     $process_plugin_manager = $this->prophesize(MigratePluginManager::class);
+    $source_plugin = $this->prophesize(MigrateSourceInterface::class);
 
     $configuration = [
       'migration' => 'foobaz',
     ];
     $migration_plugin->id()->willReturn(uniqid());
 
+    $source_plugin->getIds()->willReturn($source_id_keys);
+
     $id_map = $this->prophesize(MigrateIdMapInterface::class);
     $id_map->lookupDestinationId($source_id_values)->willReturn($destination_id_values);
     $migration_plugin->getIdMap()->willReturn($id_map->reveal());
-
+    $migration_plugin->getSourcePlugin()->willReturn($source_plugin->reveal());
     $migration_plugin_manager->createInstances(['foobaz'])
       ->willReturn(['foobaz' => $migration_plugin->reveal()]);
 
@@ -158,6 +163,8 @@ public function successfulLookupDataProvider() {
     return [
       // Test data for scalar to scalar.
       [
+        // Source ID keys.
+        ['id'],
         // Source ID of the migration map.
         [1],
         // Destination ID of the migration map.
@@ -169,6 +176,8 @@ public function successfulLookupDataProvider() {
       ],
       // Test data for scalar to array.
       [
+        // Source ID keys.
+        ['id', 'rev_id'],
         // Source ID of the migration map.
         [1],
         // Destination IDs of the migration map.
@@ -176,10 +185,12 @@ public function successfulLookupDataProvider() {
         // Input value for the migration plugin.
         1,
         // Expected output values of the migration plugin.
-        [3, 'foo'],
+        [3, 'foo', 'id' => 3, 'rev_id' => 'foo'],
       ],
       // Test data for array to scalar.
       [
+        // Source ID keys.
+        ['id'],
         // Source IDs of the migration map.
         [1, 3],
         // Destination ID of the migration map.
@@ -191,6 +202,8 @@ public function successfulLookupDataProvider() {
       ],
       // Test data for array to array.
       [
+        // Source ID keys.
+        ['id', 'rev_id'],
         // Source IDs of the migration map.
         [1, 3],
         // Destination IDs of the migration map.
@@ -198,7 +211,7 @@ public function successfulLookupDataProvider() {
         // Input values for the migration plugin.
         [1, 3],
         // Expected output values of the migration plugin.
-        [3, 'foo'],
+        [3, 'foo', 'id' => 3, 'rev_id' => 'foo'],
       ],
     ];
   }
