diff --git a/core/modules/migrate/src/Plugin/migrate/destination/Config.php b/core/modules/migrate/src/Plugin/migrate/destination/Config.php
index ac05db4..c81d4d8 100644
--- a/core/modules/migrate/src/Plugin/migrate/destination/Config.php
+++ b/core/modules/migrate/src/Plugin/migrate/destination/Config.php
@@ -16,7 +16,6 @@
 use Drupal\migrate\MigrateException;
 use Drupal\migrate\Row;
 use Symfony\Component\DependencyInjection\ContainerInterface;
-use Drupal\Core\Config\Config as ConfigObject;
 
 /**
  * Persist data to the config system.
@@ -80,7 +79,7 @@ public function import(Row $row, array $old_destination_id_values = array()) {
       }
     }
     $this->config->save();
-    return TRUE;
+    return [$this->config->getName()];
   }
 
   /**
@@ -106,7 +105,8 @@ public function fields(MigrationInterface $migration = NULL) {
    * {@inheritdoc}
    */
   public function getIds() {
-    return array();
+    $ids['config_name']['type'] = 'string';
+    return $ids;
   }
 
   /**
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/Variable.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/Variable.php
index bdaf981..64e33a5 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/Variable.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/Variable.php
@@ -53,7 +53,10 @@ protected function initializeIterator() {
    *   Only those values are returned that are actually in the database.
    */
   protected function values() {
-    return array_map('unserialize', $this->prepareQuery()->execute()->fetchAllKeyed());
+    // Create an ID field so we can record migration in the map table.
+    // Arbitrarily, use the first variable name.
+    $values['id'] = reset($this->variables);
+    return $values + array_map('unserialize', $this->prepareQuery()->execute()->fetchAllKeyed());
   }
 
   /**
@@ -84,7 +87,8 @@ public function query() {
    * {@inheritdoc}
    */
   public function getIds() {
-    return array();
+    $ids['id']['type'] = 'string';
+    return $ids;
   }
 
 }
diff --git a/core/modules/search/src/Tests/Migrate/d6/MigrateSearchPageTest.php b/core/modules/search/src/Tests/Migrate/d6/MigrateSearchPageTest.php
index 4a07223..8cbeae4 100644
--- a/core/modules/search/src/Tests/Migrate/d6/MigrateSearchPageTest.php
+++ b/core/modules/search/src/Tests/Migrate/d6/MigrateSearchPageTest.php
@@ -58,6 +58,8 @@ public function testSearchPage() {
       ->execute();
 
     $migration = entity_load_unchanged('migration', 'd6_search_page');
+    // Indicate we're rerunning a migration that's already run.
+    $migration->getIdMap()->prepareUpdate();
     $executable = new MigrateExecutable($migration, $this);
     $executable->import();
 
