diff --git a/core/modules/migrate/lib/Drupal/migrate/Entity/Migration.php b/core/modules/migrate/lib/Drupal/migrate/Entity/Migration.php
index 5d48ed0..60df068 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Entity/Migration.php
+++ b/core/modules/migrate/lib/Drupal/migrate/Entity/Migration.php
@@ -167,12 +167,12 @@ class Migration extends ConfigEntityBase implements MigrationInterface {
   public $systemOfRecord = self::SOURCE;
 
   /**
-   * Specify value of needs_update for current map row. Usually set by
+   * Specify value of source_row_status for current map row. Usually set by
    * MigrateFieldHandler implementations.
    *
    * @var int
    */
-  public $needsUpdate = MigrateIdMapInterface::STATUS_IMPORTED;
+  public $sourceRowStatus = MigrateIdMapInterface::STATUS_IMPORTED;
 
   /**
    * @var \Drupal\Core\KeyValueStore\KeyValueStoreInterface
diff --git a/core/modules/migrate/lib/Drupal/migrate/MigrateExecutable.php b/core/modules/migrate/lib/Drupal/migrate/MigrateExecutable.php
index 9246ffe..3de3539 100644
--- a/core/modules/migrate/lib/Drupal/migrate/MigrateExecutable.php
+++ b/core/modules/migrate/lib/Drupal/migrate/MigrateExecutable.php
@@ -16,7 +16,7 @@
 class MigrateExecutable {
 
   /**
-   * The migration to do.
+   * The configuration of the migration to do.
    *
    * @var \Drupal\migrate\Entity\MigrationInterface
    */
@@ -44,7 +44,7 @@ class MigrateExecutable {
    *
    * @var int
    */
-  protected $needsUpdate;
+  protected $sourceRowStatus;
 
   /**
    * The number of rows processed.
@@ -78,6 +78,7 @@ class MigrateExecutable {
 
   /**
    * The fraction of the memory limit at which an operation will be interrupted.
+   *
    * Can be overridden by a Migration subclass if one would like to push the
    * envelope. Defaults to 85%.
    *
@@ -94,6 +95,7 @@ class MigrateExecutable {
 
   /**
    * The fraction of the time limit at which an operation will be interrupted.
+   *
    * Can be overridden by a Migration subclass if one would like to push the
    * envelope. Defaults to 90%.
    *
@@ -109,11 +111,15 @@ class MigrateExecutable {
   protected $timeLimit;
 
   /**
+   * The configuration values of the source.
+   *
    * @var array
    */
   protected $sourceIdValues;
 
   /**
+   * The number of rows processed since feedback was given.
+   *
    * @var int
    */
   protected $processed_since_feedback = 0;
@@ -126,8 +132,12 @@ class MigrateExecutable {
   protected $translationManager;
 
   /**
-   * @param MigrationInterface $migration
-   * @param MigrateMessageInterface $message
+   * Constructs a MigrateExecutable and verifies and sets the memory limit.
+   *
+   * @param \Drupal\migrate\Entity\MigrationInterface $migration
+   *   The migration to run.
+   * @param \Drupal\migrate\MigrateMessageInterface $message
+   *   The message to record.
    *
    * @throws \Drupal\migrate\MigrateException
    */
@@ -161,7 +171,12 @@ public function __construct(MigrationInterface $migration, MigrateMessageInterfa
   }
 
   /**
+   * Returns the source.
+   *
+   * Makes sure source is initialized based on migration settings.
+   *
    * @return \Drupal\migrate\Source
+   *   The source.
    */
   public function getSource() {
     if (!isset($this->source)) {
@@ -236,7 +251,7 @@ public function import() {
         $destination_id_values = $destination->import($row);
         // @TODO handle the successful but no ID case like config.
         if ($destination_id_values) {
-          $id_map->saveIdMapping($row, $destination_id_values, $this->needsUpdate, $this->rollbackAction);
+          $id_map->saveIdMapping($row, $destination_id_values, $this->sourceRowStatus, $this->rollbackAction);
           $this->successes_since_feedback++;
           $this->total_successes++;
         }
@@ -266,7 +281,7 @@ public function import() {
 
       // Reset row properties.
       unset($sourceValues, $destinationValues);
-      $this->needsUpdate = MigrateIdMapInterface::STATUS_IMPORTED;
+      $this->sourceRowStatus = MigrateIdMapInterface::STATUS_IMPORTED;
 
       // TODO: Temporary. Remove when http://drupal.org/node/375494 is committed.
       // TODO: Should be done in MigrateDestinationEntity
@@ -353,9 +368,9 @@ protected function timeOptionExceeded() {
   }
 
   public function getTimeLimit() {
-    if (isset($this->options['limit']) &&
-        ($this->options['limit']['unit'] == 'seconds' || $this->options['limit']['unit'] == 'second')) {
-      return $this->options['limit']['value'];
+    $limit = $this->migration->get('limit');
+    if (isset($limit['unit']) && isset($limit['value']) && ($limit['unit'] == 'seconds' || $limit['unit'] == 'second')) {
+      return $limit['value'];
     }
     else {
       return NULL;
diff --git a/core/modules/migrate/lib/Drupal/migrate/Plugin/MigrateIdMapInterface.php b/core/modules/migrate/lib/Drupal/migrate/Plugin/MigrateIdMapInterface.php
index 53c6ff5..c1f91c4 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Plugin/MigrateIdMapInterface.php
+++ b/core/modules/migrate/lib/Drupal/migrate/Plugin/MigrateIdMapInterface.php
@@ -221,7 +221,7 @@ public function destroy();
    *
    * @todo Remove this as this is SQL only and so doesn't belong to the interface.
    */
-  public function getQualifiedMapTable();
+  public function getQualifiedMapTableName();
 
   /**
    * Sets the migrate message.
diff --git a/core/modules/migrate/lib/Drupal/migrate/Plugin/MigrateSourceInterface.php b/core/modules/migrate/lib/Drupal/migrate/Plugin/MigrateSourceInterface.php
index 9b9b982..60b59cf 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Plugin/MigrateSourceInterface.php
+++ b/core/modules/migrate/lib/Drupal/migrate/Plugin/MigrateSourceInterface.php
@@ -28,6 +28,9 @@ public function fields();
    * Returns the iterator that will yield the row arrays to be processed.
    *
    * @return \Iterator
+   *
+   * @throws \Exception
+   *   Cannot obtain a valid iterator.
    */
   public function getIterator();
 
diff --git a/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/id_map/Sql.php b/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/id_map/Sql.php
index 02ad801..44df10c 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/id_map/Sql.php
+++ b/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/id_map/Sql.php
@@ -31,7 +31,7 @@ class Sql extends PluginBase implements MigrateIdMapInterface {
    *
    * @var string
    */
-  protected $mapTable, $messageTable;
+  protected $mapTableName, $messageTableName;
 
   /**
    * The migrate message.
@@ -125,10 +125,10 @@ public function __construct(array $configuration, $plugin_id, array $plugin_defi
 
     // Default generated table names, limited to 63 characters.
     $prefixLength = strlen($this->getDatabase()->tablePrefix()) ;
-    $this->mapTable = 'migrate_map_' . Unicode::strtolower($machine_name);
-    $this->mapTable = Unicode::substr($this->mapTable, 0, 63 - $prefixLength);
-    $this->messageTable = 'migrate_message_' . Unicode::strtolower($machine_name);
-    $this->messageTable = Unicode::substr($this->messageTable, 0, 63 - $prefixLength);
+    $this->mapTableName = 'migrate_map_' . Unicode::strtolower($machine_name);
+    $this->mapTableName = Unicode::substr($this->mapTableName, 0, 63 - $prefixLength);
+    $this->messageTableName = 'migrate_message_' . Unicode::strtolower($machine_name);
+    $this->messageTableName = Unicode::substr($this->messageTableName, 0, 63 - $prefixLength);
     $this->sourceIds = $migration->get('sourceIds');
     $this->destinationIds = $migration->get('destinationIds');
 
@@ -147,6 +147,24 @@ public function __construct(array $configuration, $plugin_id, array $plugin_defi
   }
 
   /**
+   * The name of the database map table.
+   *
+   * @return string
+   */
+  public function getMapTableName() {
+    return $this->mapTableName;
+  }
+
+  /**
+   * The name of the database message table.
+   *
+   * @return string
+   */
+  public function getMessageTableName() {
+    return $this->messageTableName;
+  }
+
+  /**
    * Qualifying the map table name with the database name makes cross-db joins
    * possible. Note that, because prefixes are applied after we do this (i.e.,
    * it will prefix the string we return), we do not qualify the table if it has
@@ -156,14 +174,14 @@ public function __construct(array $configuration, $plugin_id, array $plugin_defi
    *
    * @return string
    */
-  public function getQualifiedMapTable() {
+  public function getQualifiedMapTableName() {
     $options = $this->getDatabase()->getConnectionOptions();
-    $prefix = $this->getDatabase()->tablePrefix($this->mapTable);
+    $prefix = $this->getDatabase()->tablePrefix($this->mapTableName);
     if ($prefix) {
-      return $this->mapTable;
+      return $this->mapTableName;
     }
     else {
-      return $options['database'] . '.' . $this->mapTable;
+      return $options['database'] . '.' . $this->mapTableName;
     }
   }
 
@@ -191,7 +209,7 @@ public function setMessage(MigrateMessageInterface $message) {
    */
   protected function ensureTables() {
     if (!$this->ensured) {
-      if (!$this->getDatabase()->schema()->tableExists($this->mapTable)) {
+      if (!$this->getDatabase()->schema()->tableExists($this->mapTableName)) {
         // Generate appropriate schema info for the map and message tables,
         // and map from the source field names to the map/msg field names.
         $count = 1;
@@ -215,7 +233,7 @@ protected function ensureTables() {
           $mapkey = 'destid' . $count++;
           $fields[$mapkey] = $field_schema;
         }
-        $fields['needs_update'] = array(
+        $fields['source_row_status'] = array(
           'type' => 'int',
           'size' => 'tiny',
           'unsigned' => TRUE,
@@ -251,7 +269,7 @@ protected function ensureTables() {
         if ($pks) {
           $schema['primary key'] = $pks;
         }
-        $this->getDatabase()->schema()->createTable($this->mapTable, $schema);
+        $this->getDatabase()->schema()->createTable($this->mapTableName, $schema);
 
         // Now do the message table.
         $fields = array();
@@ -281,13 +299,13 @@ protected function ensureTables() {
         if ($pks) {
           $schema['indexes']['sourcekey'] = $pks;
         }
-        $this->getDatabase()->schema()->createTable($this->messageTable, $schema);
+        $this->getDatabase()->schema()->createTable($this->messageTableName, $schema);
       }
       else {
         // Add any missing columns to the map table.
-        if (!$this->getDatabase()->schema()->fieldExists($this->mapTable,
+        if (!$this->getDatabase()->schema()->fieldExists($this->mapTableName,
                                                       'rollback_action')) {
-          $this->getDatabase()->schema()->addField($this->mapTable,
+          $this->getDatabase()->schema()->addField($this->mapTableName,
                                                 'rollback_action', array(
             'type' => 'int',
             'size' => 'tiny',
@@ -297,8 +315,8 @@ protected function ensureTables() {
             'description' => 'Flag indicating what to do for this item on rollback',
           ));
         }
-        if (!$this->getDatabase()->schema()->fieldExists($this->mapTable, 'hash')) {
-          $this->getDatabase()->schema()->addField($this->mapTable, 'hash', array(
+        if (!$this->getDatabase()->schema()->fieldExists($this->mapTableName, 'hash')) {
+          $this->getDatabase()->schema()->addField($this->mapTableName, 'hash', array(
             'type' => 'varchar',
             'length' => '32',
             'not null' => FALSE,
@@ -313,11 +331,11 @@ protected function ensureTables() {
   /**
    * {@inheritdoc}
    */
-  public function getRowBySource(array $source_id_value) {
-    $query = $this->getDatabase()->select($this->mapTable, 'map')
+  public function getRowBySource(array $source_id_values) {
+    $query = $this->getDatabase()->select($this->mapTableName, 'map')
               ->fields('map');
     foreach ($this->sourceIdFields as $source_id) {
-      $query = $query->condition("map.$source_id", array_shift($source_id_value), '=');
+      $query = $query->condition("map.$source_id", array_shift($source_id_values), '=');
     }
     $result = $query->execute();
     return $result->fetchAssoc();
@@ -327,7 +345,7 @@ public function getRowBySource(array $source_id_value) {
    * {@inheritdoc}
    */
   public function getRowByDestination(array $destination_id_values) {
-    $query = $this->getDatabase()->select($this->mapTable, 'map')
+    $query = $this->getDatabase()->select($this->mapTableName, 'map')
               ->fields('map');
     foreach ($this->destinationIdFields as $destination_id) {
       $query = $query->condition("map.$destination_id", array_shift($destination_id_values), '=');
@@ -341,9 +359,9 @@ public function getRowByDestination(array $destination_id_values) {
    */
   public function getRowsNeedingUpdate($count) {
     $rows = array();
-    $result = $this->getDatabase()->select($this->mapTable, 'map')
+    $result = $this->getDatabase()->select($this->mapTableName, 'map')
                       ->fields('map')
-                      ->condition('needs_update', MigrateIdMapInterface::STATUS_NEEDS_UPDATE)
+                      ->condition('source_row_status', MigrateIdMapInterface::STATUS_NEEDS_UPDATE)
                       ->range(0, $count)
                       ->execute();
     foreach ($result as $row) {
@@ -356,34 +374,34 @@ public function getRowsNeedingUpdate($count) {
    * {@inheritdoc}
    */
   public function lookupSourceID(array $destination_id) {
-    $query = $this->getDatabase()->select($this->mapTable, 'map')
+    $query = $this->getDatabase()->select($this->mapTableName, 'map')
               ->fields('map', $this->sourceIdFields);
     foreach ($this->destinationIdFields as $key_name) {
       $query = $query->condition("map.$key_name", array_shift($destination_id), '=');
     }
     $result = $query->execute();
     $source_id = $result->fetchAssoc();
-    return $source_id;
+    return array_values($source_id);
   }
 
   /**
    * {@inheritdoc}
    */
   public function lookupDestinationID(array $source_id) {
-    $query = $this->getDatabase()->select($this->mapTable, 'map')
+    $query = $this->getDatabase()->select($this->mapTableName, 'map')
               ->fields('map', $this->destinationIdFields);
     foreach ($this->sourceIdFields as $key_name) {
       $query = $query->condition("map.$key_name", array_shift($source_id), '=');
     }
     $result = $query->execute();
     $destination_id = $result->fetchAssoc();
-    return $destination_id;
+    return array_values($destination_id);
   }
 
   /**
    * {@inheritdoc}
    */
-  public function saveIdMapping(Row $row, array $destination_id_values, $needs_update = MigrateIdMapInterface::STATUS_IMPORTED, $rollback_action = MigrateIdMapInterface::ROLLBACK_DELETE) {
+  public function saveIdMapping(Row $row, array $destination_id_values, $source_row_status = MigrateIdMapInterface::STATUS_IMPORTED, $rollback_action = MigrateIdMapInterface::ROLLBACK_DELETE) {
     // Construct the source key.
     $source_id_values = $row->getSourceIdValues();
     // Construct the source key and initialize to empty variable keys.
@@ -400,7 +418,7 @@ public function saveIdMapping(Row $row, array $destination_id_values, $needs_upd
     }
 
     $fields = array(
-      'needs_update' => (int) $needs_update,
+      'source_row_status' => (int) $source_row_status,
       'rollback_action' => (int) $rollback_action,
       'hash' => $row->getHash(),
     );
@@ -412,7 +430,7 @@ public function saveIdMapping(Row $row, array $destination_id_values, $needs_upd
       $fields['last_imported'] = time();
     }
     if ($keys) {
-      $this->getDatabase()->merge($this->mapTable)
+      $this->getDatabase()->merge($this->mapTableName)
         ->key($keys)
         ->fields($fields)
         ->execute();
@@ -434,7 +452,7 @@ public function saveMessage(array $source_id_values, $message, $level = Migratio
     }
     $fields['level'] = $level;
     $fields['message'] = $message;
-    $this->getDatabase()->insert($this->messageTable)
+    $this->getDatabase()->insert($this->messageTableName)
       ->fields($fields)
       ->execute();
   }
@@ -443,8 +461,8 @@ public function saveMessage(array $source_id_values, $message, $level = Migratio
    * {@inheritdoc}
    */
   public function prepareUpdate() {
-    $this->getDatabase()->update($this->mapTable)
-    ->fields(array('needs_update' => MigrateIdMapInterface::STATUS_NEEDS_UPDATE))
+    $this->getDatabase()->update($this->mapTableName)
+    ->fields(array('source_row_status' => MigrateIdMapInterface::STATUS_NEEDS_UPDATE))
     ->execute();
   }
 
@@ -452,7 +470,7 @@ public function prepareUpdate() {
    * {@inheritdoc}
    */
   public function processedCount() {
-    return $this->getDatabase()->select($this->mapTable)
+    return $this->getDatabase()->select($this->mapTableName)
       ->countQuery()
       ->execute()
       ->fetchField();
@@ -462,8 +480,8 @@ public function processedCount() {
    * {@inheritdoc}
    */
   public function importedCount() {
-    return $this->getDatabase()->select($this->mapTable)
-      ->condition('needs_update', array(MigrateIdMapInterface::STATUS_IMPORTED, MigrateIdMapInterface::STATUS_NEEDS_UPDATE), 'IN')
+    return $this->getDatabase()->select($this->mapTableName)
+      ->condition('source_row_status', array(MigrateIdMapInterface::STATUS_IMPORTED, MigrateIdMapInterface::STATUS_NEEDS_UPDATE), 'IN')
       ->countQuery()
       ->execute()
       ->fetchField();
@@ -487,23 +505,23 @@ public function errorCount() {
    * {@inheritdoc}
    */
   public function messageCount() {
-    return $this->countHelper(NULL, $this->messageTable);
+    return $this->countHelper(NULL, $this->messageTableName);
   }
 
   /**
    * Counts records in a table.
    *
    * @param $status
-   *   An integer for the needs_update column.
+   *   An integer for the source_row_status column.
    * @param $table
    *   The table to work
    * @return int
    *   The number of records.
    */
   protected function countHelper($status, $table = NULL) {
-    $query = $this->getDatabase()->select($table ?: $this->mapTable);
+    $query = $this->getDatabase()->select($table ?: $this->mapTableName);
     if (isset($status)) {
-      $query->condition('needs_update', $status);
+      $query->condition('source_row_status', $status);
     }
     return $query->countQuery()->execute()->fetchField();
   }
@@ -516,9 +534,9 @@ public function delete(array $source_id_values, $messages_only = FALSE) {
       throw new MigrateException('Without source identifier values it is impossible to find the row to delete.');
     }
     if (!$messages_only) {
-      $map_query = $this->getDatabase()->delete($this->mapTable);
+      $map_query = $this->getDatabase()->delete($this->mapTableName);
     }
-    $message_query = $this->getDatabase()->delete($this->messageTable);
+    $message_query = $this->getDatabase()->delete($this->messageTableName);
     $count = 1;
     foreach ($source_id_values as $id_value) {
       if (!$messages_only) {
@@ -538,8 +556,8 @@ public function delete(array $source_id_values, $messages_only = FALSE) {
    * {@inheritdoc}
    */
   public function deleteDestination(array $destination_id) {
-    $map_query = $this->getDatabase()->delete($this->mapTable);
-    $message_query = $this->getDatabase()->delete($this->messageTable);
+    $map_query = $this->getDatabase()->delete($this->mapTableName);
+    $message_query = $this->getDatabase()->delete($this->messageTableName);
     $source_id = $this->lookupSourceID($destination_id);
     if (!empty($source_id)) {
       $count = 1;
@@ -565,8 +583,8 @@ public function setUpdate(array $source_id) {
       throw new MigrateException('No source identifiers provided to update.');
     }
     $query = $this->getDatabase()
-      ->update($this->mapTable)
-      ->fields(array('needs_update' => MigrateIdMapInterface::STATUS_NEEDS_UPDATE));
+      ->update($this->mapTableName)
+      ->fields(array('source_row_status' => MigrateIdMapInterface::STATUS_NEEDS_UPDATE));
     $count = 1;
     foreach ($source_id as $key_value) {
       $query->condition('sourceid' . $count++, $key_value);
@@ -584,17 +602,17 @@ public function deleteBulk(array $source_id_values) {
       foreach ($source_id_values as $source_id) {
         $sourceids[] = $source_id;
       }
-      $this->getDatabase()->delete($this->mapTable)
+      $this->getDatabase()->delete($this->mapTableName)
         ->condition('sourceid1', $sourceids, 'IN')
         ->execute();
-      $this->getDatabase()->delete($this->messageTable)
+      $this->getDatabase()->delete($this->messageTableName)
         ->condition('sourceid1', $sourceids, 'IN')
         ->execute();
     }
     else {
       foreach ($source_id_values as $source_id) {
-        $map_query = $this->getDatabase()->delete($this->mapTable);
-        $message_query = $this->getDatabase()->delete($this->messageTable);
+        $map_query = $this->getDatabase()->delete($this->mapTableName);
+        $message_query = $this->getDatabase()->delete($this->messageTableName);
         $count = 1;
         foreach ($source_id as $key_value) {
           $map_query->condition('sourceid' . $count, $key_value);
@@ -610,15 +628,15 @@ public function deleteBulk(array $source_id_values) {
    * {@inheritdoc}
    */
   public function clearMessages() {
-    $this->getDatabase()->truncate($this->messageTable)->execute();
+    $this->getDatabase()->truncate($this->messageTableName)->execute();
   }
 
   /**
    * {@inheritdoc}
    */
   public function destroy() {
-    $this->getDatabase()->schema()->dropTable($this->mapTable);
-    $this->getDatabase()->schema()->dropTable($this->messageTable);
+    $this->getDatabase()->schema()->dropTable($this->mapTableName);
+    $this->getDatabase()->schema()->dropTable($this->messageTableName);
   }
 
   /**
@@ -644,7 +662,7 @@ public function rewind() {
       $query = $query->range(0, $this->options['itemlimit']);
     }
     */
-    $this->result = $this->getDatabase()->select($this->mapTable, 'map')
+    $this->result = $this->getDatabase()->select($this->mapTableName, 'map')
       ->fields('map', $fields)
       ->execute();
     $this->next();
diff --git a/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/SqlBase.php b/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/SqlBase.php
index 9a17436..8740f11 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/SqlBase.php
+++ b/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/SqlBase.php
@@ -127,9 +127,9 @@ protected function runQuery() {
           $delimiter = ' AND ';
         }
 
-        $alias = $this->query->leftJoin($this->migration->getIdMap()->getQualifiedMapTable(), 'map', $map_join);
+        $alias = $this->query->leftJoin($this->migration->getIdMap()->getQualifiedMapTableName(), 'map', $map_join);
         $conditions->isNull($alias . '.sourceid1');
-        $conditions->condition($alias . '.needs_update', MigrateIdMapInterface::STATUS_NEEDS_UPDATE);
+        $conditions->condition($alias . '.source_row_status', MigrateIdMapInterface::STATUS_NEEDS_UPDATE);
         $condition_added = TRUE;
 
         // And as long as we have the map table, add its data to the row.
@@ -143,7 +143,7 @@ protected function runQuery() {
           $map_key = 'destid' . $count++;
           $this->query->addField($alias, $map_key, "migrate_map_$map_key");
         }
-        $this->query->addField($alias, 'needs_update', 'migrate_map_needs_update');
+        $this->query->addField($alias, 'source_row_status', 'migrate_map_source_row_status');
       }
       // 3. If we are using highwater marks, also include rows above the mark.
       //    But, include all rows if the highwater mark is not set.
diff --git a/core/modules/migrate/lib/Drupal/migrate/Row.php b/core/modules/migrate/lib/Drupal/migrate/Row.php
index 53ad14d..2a29f61 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Row.php
+++ b/core/modules/migrate/lib/Drupal/migrate/Row.php
@@ -44,7 +44,7 @@ class Row {
   protected $idMap = array(
     'original_hash' => '',
     'hash' => '',
-    'needs_update' => MigrateIdMapInterface::STATUS_NEEDS_UPDATE,
+    'source_row_status' => MigrateIdMapInterface::STATUS_NEEDS_UPDATE,
   );
 
   /**
@@ -248,7 +248,7 @@ public function changed() {
    *   TRUE if the row needs updating, FALSE otherwise.
    */
   public function needsUpdate() {
-    return $this->idMap['needs_update'] == MigrateIdMapInterface::STATUS_NEEDS_UPDATE;
+    return $this->idMap['source_row_status'] == MigrateIdMapInterface::STATUS_NEEDS_UPDATE;
   }
 
   /**
diff --git a/core/modules/migrate/lib/Drupal/migrate/Tests/MigrateTestBase.php b/core/modules/migrate/lib/Drupal/migrate/Tests/MigrateTestBase.php
index 5b67e5a..b8a5e52 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Tests/MigrateTestBase.php
+++ b/core/modules/migrate/lib/Drupal/migrate/Tests/MigrateTestBase.php
@@ -19,7 +19,7 @@ class MigrateTestBase extends WebTestBase {
    *
    * @var array
    */
-  var $databaseDumpFiles = array();
+  public $databaseDumpFiles = array();
 
   public static $modules = array('migrate');
 
diff --git a/core/modules/migrate/tests/Drupal/migrate/Tests/FakeDatabaseSchema.php b/core/modules/migrate/tests/Drupal/migrate/Tests/FakeDatabaseSchema.php
index 1433f18..bab582f 100644
--- a/core/modules/migrate/tests/Drupal/migrate/Tests/FakeDatabaseSchema.php
+++ b/core/modules/migrate/tests/Drupal/migrate/Tests/FakeDatabaseSchema.php
@@ -14,11 +14,14 @@ class FakeDatabaseSchema extends Schema {
 
   /**
    * As set on MigrateSqlSourceTestCase::databaseContents.
+   *
+   * @var array
    */
-  protected $databaseContents;
+  public $databaseContents;
 
   public function __construct($database_contents) {
     $this->uniqueIdentifier = uniqid('', TRUE);
+
     // @todo Maybe we can generate an internal representation.
     $this->databaseContents = $database_contents;
   }
@@ -84,7 +87,7 @@ public function dropPrimaryKey($table) {
   }
 
   public function dropTable($table) {
-    throw new \Exception(sprintf('Unsupported method "%s"', __METHOD__));
+    unset($this->databaseContents[$table]);
   }
 
   public function dropUniqueKey($table, $name) {
@@ -92,7 +95,13 @@ public function dropUniqueKey($table, $name) {
   }
 
   public function fieldExists($table, $column) {
-    throw new \Exception(sprintf('Unsupported method "%s"', __METHOD__));
+    if (!empty($this->databaseContents[$table])) {
+      $row = reset($this->databaseContents[$table]);
+      return isset($row[$column]);
+    }
+    else {
+      throw new \Exception("Can't determine whether field exists with an empty / nonexistent table.");
+    }
   }
 
   public function fieldNames($fields) {
@@ -132,7 +141,7 @@ public function renameTable($table, $new_name) {
   }
 
   public function uniqueIdentifier() {
-    throw new \Exception(sprintf('Unsupported method "%s"', __METHOD__));
+    return $this->uniqueIdentifier;
   }
 
   /**
diff --git a/core/modules/migrate/tests/Drupal/migrate/Tests/FakeSelect.php b/core/modules/migrate/tests/Drupal/migrate/Tests/FakeSelect.php
index 9b79234..7157d27 100644
--- a/core/modules/migrate/tests/Drupal/migrate/Tests/FakeSelect.php
+++ b/core/modules/migrate/tests/Drupal/migrate/Tests/FakeSelect.php
@@ -63,7 +63,7 @@ class FakeSelect extends Select {
    * @param string $conjunction
    *   The operator to use to combine conditions: 'AND' or 'OR'.
    */
-  public function __construct($table, $alias, array $database_contents, $conjunction = 'AND') {
+  public function __construct($table, $alias, array &$database_contents, $conjunction = 'AND') {
     $this->addJoin(NULL, $table, $alias);
     $this->where = new Condition($conjunction);
     $this->having = new Condition($conjunction);
@@ -169,7 +169,6 @@ public function execute() {
    *   of JOINs.
    */
   protected function executeJoins() {
-    // @TODO add support for all_fields.
     $fields = array();
     foreach ($this->fields as $field_info) {
       $this->fieldsWithTable[$field_info['table'] . '.' . $field_info['field']] = $field_info;
@@ -183,6 +182,10 @@ protected function executeJoins() {
               'table' => $alias,
               'field' => $field,
             );
+            $this->fieldsWithTable["$alias.$field"] = array(
+              'table' => $alias,
+              'field' => $field,
+            );
           }
         }
       }
@@ -508,4 +511,19 @@ public static function getInfo() {
     );
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function fields($table_alias, array $fields = array()) {
+    if (!$fields) {
+      $table = $this->tables[$table_alias]['table'];
+      if (!empty($this->databaseContents[$table])) {
+        $fields = array_keys(reset($this->databaseContents[$table]));
+      }
+      else {
+        throw new \Exception('All fields on empty table is not supported.');
+      }
+    }
+    return parent::fields($table_alias, $fields);
+  }
 }
diff --git a/core/modules/migrate/tests/Drupal/migrate/Tests/MigrateExecutableTest.php b/core/modules/migrate/tests/Drupal/migrate/Tests/MigrateExecutableTest.php
index 295ed6d..80beaac 100644
--- a/core/modules/migrate/tests/Drupal/migrate/Tests/MigrateExecutableTest.php
+++ b/core/modules/migrate/tests/Drupal/migrate/Tests/MigrateExecutableTest.php
@@ -42,6 +42,13 @@ class MigrateExecutableTest extends MigrateTestCase {
    */
   protected $executable;
 
+  protected $mapJoinable = FALSE;
+
+  protected $migrationConfiguration = array(
+    'id' => 'test',
+    'limit' => array('units' => 'seconds', 'value' => 5),
+  );
+
   /**
    * {@inheritdoc}
    */
@@ -54,7 +61,7 @@ public static function getInfo() {
   }
 
   protected function setUp() {
-    $this->migration = $this->getMock('Drupal\migrate\Entity\MigrationInterface');
+    $this->migration = $this->getMigration();
     $this->message = $this->getMock('Drupal\migrate\MigrateMessageInterface');
     $id_map = $this->getMock('Drupal\migrate\Plugin\MigrateIdMapInterface');
 
@@ -71,10 +78,11 @@ protected function setUp() {
    */
   public function testImportWithFailingRewind() {
     $iterator = $this->getMock('\Iterator');
+    $exception_message = $this->getRandomGenerator()->string();
     $iterator->expects($this->once())
       ->method('valid')
-      ->will($this->returnCallback(function() {
-        throw new \Exception('invalid source iteration');
+      ->will($this->returnCallback(function() use ($exception_message) {
+        throw new \Exception($exception_message);
       }));
     $source = $this->getMock('Drupal\migrate\Plugin\MigrateSourceInterface');
     $source->expects($this->any())
@@ -88,7 +96,7 @@ public function testImportWithFailingRewind() {
     // Ensure that a message with the proper message was added.
     $this->message->expects($this->once())
       ->method('display')
-      ->with('Migration failed with source plugin exception: invalid source iteration');
+      ->with("Migration failed with source plugin exception: $exception_message");
 
     $result = $this->executable->import();
     $this->assertEquals(MigrationInterface::RESULT_FAILED, $result);
diff --git a/core/modules/migrate/tests/Drupal/migrate/Tests/MigrateTestCase.php b/core/modules/migrate/tests/Drupal/migrate/Tests/MigrateTestCase.php
index 7ca0ae6..1f9e349 100644
--- a/core/modules/migrate/tests/Drupal/migrate/Tests/MigrateTestCase.php
+++ b/core/modules/migrate/tests/Drupal/migrate/Tests/MigrateTestCase.php
@@ -33,7 +33,7 @@ protected function getMigration() {
     $idmap = $this->getMock('Drupal\migrate\Plugin\MigrateIdMapInterface');
     if ($this->mapJoinable) {
       $idmap->expects($this->once())
-        ->method('getQualifiedMapTable')
+        ->method('getQualifiedMapTableName')
         ->will($this->returnValue('test_map'));
     }
 
@@ -59,8 +59,12 @@ protected function getDatabase($database_contents) {
       ->disableOriginalConstructor()
       ->getMock();
     $database->databaseContents = &$database_contents;
+
+    // Although select doesn't modify the contents of the database, it still
+    // eneds to be a reference so that we can SELECT previously INSERT /
+    // UPDATE'd rows.
     $database->expects($this->any())
-      ->method('select')->will($this->returnCallback(function ($base_table, $base_alias) use ($database_contents) {
+      ->method('select')->will($this->returnCallback(function ($base_table, $base_alias) use (&$database_contents) {
       return new FakeSelect($base_table, $base_alias, $database_contents);
     }));
     $database->expects($this->any())
diff --git a/core/modules/migrate/config/migrate.migration.d6_system_cron.yml b/core/modules/migrate_drupal/config/migrate.migration.d6_system_cron.yml
similarity index 100%
rename from core/modules/migrate/config/migrate.migration.d6_system_cron.yml
rename to core/modules/migrate_drupal/config/migrate.migration.d6_system_cron.yml
diff --git a/core/modules/migrate_drupal/config/migrate.migration.d6_system_performance.yml b/core/modules/migrate_drupal/config/migrate.migration.d6_system_performance.yml
new file mode 100644
index 0000000..cde5d17
--- /dev/null
+++ b/core/modules/migrate_drupal/config/migrate.migration.d6_system_performance.yml
@@ -0,0 +1,14 @@
+id: d6_system_performance
+source:
+    plugin: drupal6_variable
+    variables:
+        - preprocess_css
+        - preprocess_js
+        - cache_lifetime
+process:
+    'css:preprocess': preprocess_css
+    'js:preprocess': preprocess_js
+    'cache:page:max_age': cache_lifetime
+destination:
+    plugin: d8_config
+    config_name: system.performance
diff --git a/core/modules/migrate/config/migrate.migration.d6_system_rss.yml b/core/modules/migrate_drupal/config/migrate.migration.d6_system_rss.yml
similarity index 100%
rename from core/modules/migrate/config/migrate.migration.d6_system_rss.yml
rename to core/modules/migrate_drupal/config/migrate.migration.d6_system_rss.yml
diff --git a/core/modules/migrate/config/migrate.migration.d6_system_site.yml b/core/modules/migrate_drupal/config/migrate.migration.d6_system_site.yml
similarity index 100%
rename from core/modules/migrate/config/migrate.migration.d6_system_site.yml
rename to core/modules/migrate_drupal/config/migrate.migration.d6_system_site.yml
diff --git a/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/D6Variable.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/D6Variable.php
similarity index 91%
rename from core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/D6Variable.php
rename to core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/D6Variable.php
index 3160d53..0c66396 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/D6Variable.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/D6Variable.php
@@ -5,10 +5,10 @@
  * Contains \Drupal\migrate\Plugin\migrate\source\d6\Variable.
  */
 
-namespace Drupal\migrate\Plugin\migrate\source;
+namespace Drupal\migrate_drupal\Plugin\migrate\source;
 
 use Drupal\migrate\Entity\MigrationInterface;
-use Drupal\migrate\Plugin\migrate\source\d6\Drupal6SqlBase;
+use Drupal\migrate_drupal\Plugin\migrate\source\d6\Drupal6SqlBase;
 
 /**
  * Drupal 6 variable source from database.
diff --git a/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/d6/Drupal6SqlBase.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/d6/Drupal6SqlBase.php
similarity index 97%
rename from core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/d6/Drupal6SqlBase.php
rename to core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/d6/Drupal6SqlBase.php
index 579d87a..f83f669 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Plugin/migrate/source/d6/Drupal6SqlBase.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Plugin/migrate/source/d6/Drupal6SqlBase.php
@@ -5,7 +5,7 @@
  * Contains \Drupal\migrate\Plugin\migrate\source\d6\Drupal6SqlBase.
  */
 
-namespace Drupal\migrate\Plugin\migrate\source\d6;
+namespace Drupal\migrate_drupal\Plugin\migrate\source\d6;
 
 use Drupal\migrate\Plugin\migrate\source\SqlBase;
 
diff --git a/core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemCron.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemCron.php
similarity index 96%
rename from core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemCron.php
rename to core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemCron.php
index 9171fff..6c68424 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemCron.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemCron.php
@@ -5,7 +5,7 @@
  * Contains \Drupal\migrate\Tests\Drupal6SystemCron.
  */
 
-namespace Drupal\migrate\Tests\Dump;
+namespace Drupal\migrate_drupal\Tests\Dump;
 
 use Drupal\Core\Database\Connection;
 
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemPerformance.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemPerformance.php
new file mode 100644
index 0000000..91f1a23
--- /dev/null
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemPerformance.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate\Tests\Drupal6SystemPerformance.
+ */
+
+namespace Drupal\migrate_drupal\Tests\Dump;
+
+use Drupal\Core\Database\Connection;
+
+/**
+ * Database dump for testing system.performance.yml migration.
+ */
+class Drupal6SystemPerformance {
+
+  /**
+   * Sample database schema and values.
+   *
+   * @param \Drupal\Core\Database\Connection $database
+   *   The database connection.
+   */
+  public static function load(Connection $database) {
+    $database->schema()->createTable('variable', array(
+      'fields' => array(
+        'name' => array(
+          'type' => 'varchar',
+          'length' => 128,
+          'not null' => TRUE,
+          'default' => '',
+        ),
+        'value' => array(
+          'type' => 'blob',
+          'not null' => TRUE,
+          'size' => 'big',
+          'translatable' => TRUE,
+        ),
+      ),
+      'primary key' => array(
+        'name',
+      ),
+      'module' => 'system',
+      'name' => 'variable',
+    ));
+    $database->insert('variable')->fields(array(
+      'name',
+      'value',
+    ))
+    ->values(array(
+      'name' => 'preprocess_css',
+      'value' => 'i:0;',
+    ))
+    ->values(array(
+      'name' => 'preprocess_js',
+      'value' => 'i:0;',
+    ))
+    ->values(array(
+      'name' => 'cache_lifetime',
+      'value' => 'i:0;',
+    ))
+    ->execute();
+  }
+
+}
diff --git a/core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemRss.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemRss.php
similarity index 96%
rename from core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemRss.php
rename to core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemRss.php
index da4468f..f6f1cf8 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemRss.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemRss.php
@@ -5,7 +5,7 @@
  * Contains \Drupal\migrate\Tests\Drupal6SystemRss.
  */
 
-namespace Drupal\migrate\Tests\Dump;
+namespace Drupal\migrate_drupal\Tests\Dump;
 
 use Drupal\Core\Database\Connection;
 
diff --git a/core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemSite.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemSite.php
similarity index 97%
rename from core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemSite.php
rename to core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemSite.php
index 69ef685..e320417 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Tests/Dump/Drupal6SystemSite.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemSite.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\migrate\Tests\Dump;
+namespace Drupal\migrate_drupal\Tests\Dump;
 
 use Drupal\Core\Database\Connection;
 
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateDrupalTestBase.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateDrupalTestBase.php
new file mode 100644
index 0000000..370351c
--- /dev/null
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateDrupalTestBase.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Tests\MigrateDrupalTestBase.
+ */
+
+namespace Drupal\migrate_drupal\Tests;
+
+use Drupal\migrate\Tests\MigrateTestBase;
+
+class MigrateDrupalTestBase extends MigrateTestBase {
+
+  public static $modules = array('migrate_drupal');
+}
diff --git a/core/modules/migrate/lib/Drupal/migrate/Tests/MigrateSystemConfigsTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateSystemConfigsTest.php
similarity index 64%
rename from core/modules/migrate/lib/Drupal/migrate/Tests/MigrateSystemConfigsTest.php
rename to core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateSystemConfigsTest.php
index 09529c1..c09c390 100644
--- a/core/modules/migrate/lib/Drupal/migrate/Tests/MigrateSystemConfigsTest.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/MigrateSystemConfigsTest.php
@@ -5,12 +5,12 @@
  * Contains \Drupal\system\Tests\Upgrade\MigrateSystemSiteTest.
  */
 
-namespace Drupal\migrate\Tests;
+namespace Drupal\migrate_drupal\Tests;
 
 use Drupal\migrate\MigrateMessage;
 use Drupal\migrate\MigrateExecutable;
 
-class MigrateSystemConfigsTest extends MigrateTestBase {
+class MigrateSystemConfigsTest extends MigrateDrupalTestBase {
 
   /**
    * {@inheritdoc}
@@ -19,14 +19,14 @@ public static function getInfo() {
     return array(
       'name'  => 'Migrate variables to system.*.yml',
       'description'  => 'Upgrade variables to system.*.yml',
-      'group' => 'Migrate',
+      'group' => 'Migrate Drupal',
     );
   }
 
   function testSystemSite() {
     $migration = entity_load('migration', 'd6_system_site');
     $dumps = array(
-      drupal_get_path('module', 'migrate') . '/lib/Drupal/migrate/Tests/Dump/Drupal6SystemSite.php',
+      drupal_get_path('module', 'migrate_drupal') . '/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemSite.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, new MigrateMessage);
@@ -48,7 +48,7 @@ function testSystemSite() {
   public function testSystemCron() {
     $migration = entity_load('migration', 'd6_system_cron');
     $dumps = array(
-      drupal_get_path('module', 'migrate') . '/lib/Drupal/migrate/Tests/Dump/Drupal6SystemCron.php',
+      drupal_get_path('module', 'migrate_drupal') . '/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemCron.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, new MigrateMessage());
@@ -64,7 +64,7 @@ public function testSystemCron() {
   public function testSystemRss() {
     $migration = entity_load('migration', 'd6_system_rss');
     $dumps = array(
-      drupal_get_path('module', 'migrate') . '/lib/Drupal/migrate/Tests/Dump/Drupal6SystemRss.php',
+      drupal_get_path('module', 'migrate_drupal') . '/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemRss.php',
     );
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, new MigrateMessage());
@@ -72,4 +72,21 @@ public function testSystemRss() {
     $config = \Drupal::config('system.rss');
     $this->assertIdentical($config->get('items.limit'), 10);
   }
+
+  /**
+   * Tests migration of system (Performance) variables to system.performance.yml.
+   */
+  public function testSystemPerformance() {
+    $migration = entity_load('migration', 'd6_system_performance');
+    $dumps = array(
+      drupal_get_path('module', 'migrate_drupal') . '/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6SystemPerformance.php',
+    );
+    $this->prepare($migration, $dumps);
+    $executable = new MigrateExecutable($migration, new MigrateMessage());
+    $executable->import();
+    $config = \Drupal::config('system.performance');
+    $this->assertIdentical($config->get('css.preprocess'), 0);
+    $this->assertIdentical($config->get('js.preprocess'), 0);
+    $this->assertIdentical($config->get('cache.page.max_age'), 0);
+  }
 }
diff --git a/core/modules/migrate_drupal/migrate_drupal.info.yml b/core/modules/migrate_drupal/migrate_drupal.info.yml
new file mode 100644
index 0000000..ccd4a50
--- /dev/null
+++ b/core/modules/migrate_drupal/migrate_drupal.info.yml
@@ -0,0 +1,6 @@
+name: Migrate Drupal
+type: module
+description: 'Contains migrations from olders Drupal versions.'
+package: Core
+version: VERSION
+core: 8.x
diff --git a/core/modules/migrate_drupal/migrate_drupal.module b/core/modules/migrate_drupal/migrate_drupal.module
new file mode 100644
index 0000000..e69de29
diff --git a/core/modules/migrate/tests/Drupal/migrate/Tests/D6VariableTest.php b/core/modules/migrate_drupal/tests/Drupal/migrate_drupal/Tests/D6VariableTest.php
similarity index 80%
rename from core/modules/migrate/tests/Drupal/migrate/Tests/D6VariableTest.php
rename to core/modules/migrate_drupal/tests/Drupal/migrate_drupal/Tests/D6VariableTest.php
index cc903bf..ecc0977 100644
--- a/core/modules/migrate/tests/Drupal/migrate/Tests/D6VariableTest.php
+++ b/core/modules/migrate_drupal/tests/Drupal/migrate_drupal/Tests/D6VariableTest.php
@@ -5,15 +5,17 @@
  * Contains \Drupal\migrate\Tests\D6VariableSourceTest.
  */
 
-namespace Drupal\migrate\Tests;
+namespace Drupal\migrate_drupal\Tests;
+
+use Drupal\migrate\Tests\MigrateSqlSourceTestCase;
 
 /**
- * @group migrate
+ * @group migrate_drupal
  * @group Drupal
  */
 class D6VariableTest extends MigrateSqlSourceTestCase {
 
-  const PLUGIN_CLASS = 'Drupal\migrate\Plugin\migrate\source\D6Variable';
+  const PLUGIN_CLASS = 'Drupal\migrate_drupal\Plugin\migrate\source\D6Variable';
 
   protected $migrationConfiguration = array(
     'id' => 'test',
@@ -53,17 +55,17 @@ public static function getInfo() {
     return array(
       'name' => 'D6 variable source functionality',
       'description' => 'Tests D6 variable source plugin.',
-      'group' => 'Migrate',
+      'group' => 'Migrate Drupal',
     );
   }
 
 }
 
-namespace Drupal\migrate\Tests\source;
+namespace Drupal\migrate_drupal\Tests\source;
 
 use Drupal\Core\Database\Connection;
 use Drupal\Core\Extension\ModuleHandlerInterface;
-use Drupal\migrate\Plugin\migrate\source\D6Variable;
+use Drupal\migrate_drupal\Plugin\migrate\source\D6Variable;
 
 class TestD6Variable extends D6Variable {
   function setDatabase(Connection $database) {
