diff --git a/core/modules/migrate/src/MigrateExecutable.php b/core/modules/migrate/src/MigrateExecutable.php
index ff05dfe..d337363 100644
--- a/core/modules/migrate/src/MigrateExecutable.php
+++ b/core/modules/migrate/src/MigrateExecutable.php
@@ -358,7 +358,7 @@ public function processRow(Row $row, array $process = NULL, $value = NULL) {
         if ($multiple && !$definition['handle_multiples']) {
           $new_value = array();
           if (!is_array($value)) {
-            throw new MigrateException(sprintf('Pipeline failed for destination %s: %s got instead of an array,', $destination, $value));
+            throw new MigrateException(sprintf('Pipeline failed at %s plugin for destination %s: %s received instead of an array,', $plugin->getPluginId(), $destination, $value));
           }
           $break = FALSE;
           foreach ($value as $scalar_value) {
diff --git a/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php b/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php
index 60809a9..d6f2937 100644
--- a/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php
+++ b/core/modules/migrate/tests/src/Unit/MigrateExecutableTest.php
@@ -420,6 +420,40 @@ public function testProcessRowEmptyPipeline() {
   }
 
   /**
+   * Tests the processRow pipeline exception.
+   */
+  public function testProcessRowPipelineException() {
+    for ($key = 0; $key <= 1; $key++) {
+      $plugins['destination_id'][$key] = $this->getMock('Drupal\migrate\Plugin\MigrateProcessInterface');
+      $plugins['destination_id'][$key]->expects($this->once())
+        ->method('getPluginDefinition')
+        ->will($this->returnValue(['handle_multiples' => FALSE]));
+      $plugins['destination_id'][$key]->expects($this->atMost(1))
+        ->method('transform')
+        ->will($this->returnValue('transform_return_string'));
+      $plugins['destination_id'][$key]->expects($this->atMost(1))
+        ->method('multiple')
+        ->will($this->returnValue(TRUE));
+      $plugins['destination_id'][$key]->expects($this->atMost(1))
+        ->method('getPluginId')
+        ->will($this->returnValue('plugin_id'));
+    }
+    $this->migration->expects($this->once())
+      ->method('getProcessPlugins')
+      ->with(NULL)
+      ->will($this->returnValue($plugins));
+
+    $row = new Row();
+    try {
+      $this->executable->processRow($row);
+      $this->fail('Pipeline exception should throw.');
+    }
+    catch (MigrateException $e) {
+      $this->assertEquals('Pipeline failed at plugin_id plugin for destination destination_id: transform_return_string received instead of an array,', $e->getMessage());
+    }
+  }
+
+  /**
    * Returns a mock migration source instance.
    *
    * @return \Drupal\migrate\Plugin\MigrateSourceInterface|\PHPUnit_Framework_MockObject_MockObject
