diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
index ef7e2bf..cdc99dc 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
@@ -41467,7 +41467,7 @@
 ))
 ->values(array(
   'name' => 'search_active_modules',
-  'value' => 'a:2:{s:4:"node";s:4:"node";s:4:"user";s:4:"user";}',
+  'value' => 'a:2:{s:4:"node";s:4:"node";s:4:"user";i:0;}',
 ))
 ->values(array(
   'name' => 'search_and_or_limit',
diff --git a/core/modules/search/migration_templates/d7_search_page_status.yml b/core/modules/search/migration_templates/d7_search_page_status.yml
new file mode 100644
index 0000000..6b408fc
--- /dev/null
+++ b/core/modules/search/migration_templates/d7_search_page_status.yml
@@ -0,0 +1,16 @@
+id: d7_search_page_status
+label: Search page status
+migration_tags:
+  - Drupal 7
+source:
+  plugin: d7_search_page_status
+process:
+  module_exists:
+    -
+      plugin: skip_on_empty
+      method: row
+      source: module_exists
+  module: module
+  status: status
+destination:
+  plugin: d7_search_page_status
diff --git a/core/modules/search/src/Plugin/migrate/destination/d7/SearchPageStatus.php b/core/modules/search/src/Plugin/migrate/destination/d7/SearchPageStatus.php
new file mode 100644
index 0000000..d1be02e
--- /dev/null
+++ b/core/modules/search/src/Plugin/migrate/destination/d7/SearchPageStatus.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\search\Plugin\migrate\destination\d7\SearchPageStatus.
+ */
+
+namespace Drupal\search\Plugin\migrate\destination\d7;
+
+use Drupal\migrate\Row;
+use Drupal\migrate\Entity\MigrationInterface;
+use Drupal\migrate\Plugin\migrate\destination\DestinationBase;
+use Drupal\search\Entity\SearchPage;
+
+/**
+ * Destination for search page status.
+ *
+ * This plugin only works for the search page status of the core User and
+ * Node module plugins.
+ *
+ * @MigrateDestination(
+ *   id = "d7_search_page_status"
+ * )
+ */
+class SearchPageStatus extends DestinationBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function import(Row $row, array $old_destination_id_values = array()) {
+
+    // Config name is constructed as <module_name>_search, which probably
+    // only works for the Node and User module.
+    $id = $row->getDestinationProperty('module') . '_search';
+    if ($id) {
+      /** @var \Drupal\search\Entity\SearchPage $search_page */
+      $search_page = SearchPage::load($id);
+      if ($row->getDestinationProperty('status')) {
+        $search_page->enable()->save();
+      }
+      else {
+        $search_page->disable()->save();
+      }
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    $ids['module']['type'] = 'string';
+    return $ids;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fields(MigrationInterface $migration = NULL) {
+  }
+
+}
diff --git a/core/modules/search/src/Plugin/migrate/source/d7/SearchPageStatus.php b/core/modules/search/src/Plugin/migrate/source/d7/SearchPageStatus.php
new file mode 100644
index 0000000..833d082
--- /dev/null
+++ b/core/modules/search/src/Plugin/migrate/source/d7/SearchPageStatus.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\search\Plugin\migrate\source\d7\SearchPageStatus.
+ */
+
+namespace Drupal\search\Plugin\migrate\source\d7;
+
+use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+
+/**
+ * Get search_active_modules variable for core modules.
+ *
+ * @MigrateSource(
+ *   id = "d7_search_page_status",
+ *   source_provider = "search"
+ * )
+ */
+class SearchPageStatus extends DrupalSqlBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function initializeIterator() {
+    $search_active_modules = $this->variableGet('search_active_modules', '');
+    $rows = [];
+    foreach ($search_active_modules as $module => $status) {
+      if (($module === 'user') || ($module === 'node')) {
+        $rows[] = [
+          'module' => $module,
+          'status' => $status,
+        ];
+      }
+    }
+    return new \ArrayIterator($rows);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    return [
+      'module' => $this->t('The search module.'),
+      'status' => $this->t('Whether or not this module is enabled for search.'),
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    return $this->select('variable', 'v')
+      ->fields('v', array('name', 'value'))
+      ->condition('name', ['search_active_modules'], '=');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    $ids['module']['type'] = 'string';
+    return $ids;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function count() {
+    return $this->initializeIterator()->count();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function prepareRow(Row $row) {
+    $exists = $this->moduleExists($row->getSourceProperty('module'));
+    $row->setSourceProperty('module_exists', $exists);
+    return parent::prepareRow($row);
+  }
+
+}
diff --git a/core/modules/search/src/Tests/Migrate/d7/MigrateSearchPageStatusTest.php b/core/modules/search/src/Tests/Migrate/d7/MigrateSearchPageStatusTest.php
new file mode 100644
index 0000000..2f2bef7
--- /dev/null
+++ b/core/modules/search/src/Tests/Migrate/d7/MigrateSearchPageStatusTest.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\search\Tests\Migrate\d7\MigrateSearchPageStatusTest.
+ */
+
+namespace Drupal\search\Tests\Migrate\d7;
+
+use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
+use Drupal\search\Entity\SearchPage;
+
+/**
+ * Test upgrade of search active modules.
+ *
+ * @group migrate_drupal_7
+ */
+class MigrateSearchPageStatusTest extends MigrateDrupal7TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = array('node', 'search');
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installConfig(['search']);
+    $this->executeMigration('d7_search_page_status');
+  }
+
+  /**
+   * Tests migrating Drupal 7 search status to Drupal 8 search status.
+   */
+  public function testSearchStatus() {
+    /** @var \Drupal\search\Entity\SearchPage $search_page */
+    $id = 'node_search';
+    $search_page = SearchPage::load($id);
+    $this->assertTrue($search_page->status(), 'Node search is enabled.');
+
+    $id = 'user_search';
+    $search_page = SearchPage::load($id);
+    $this->assertFalse($search_page->status(), 'User search is disabled.');
+  }
+
+}
diff --git a/core/modules/search/tests/src/Unit/Plugin/migrate/source/d7/SearchPageStatusTest.php b/core/modules/search/tests/src/Unit/Plugin/migrate/source/d7/SearchPageStatusTest.php
new file mode 100644
index 0000000..d626203
--- /dev/null
+++ b/core/modules/search/tests/src/Unit/Plugin/migrate/source/d7/SearchPageStatusTest.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\search\Unit\Plugin\migrate\source\d7\SearchPageStatusTest.
+ */
+
+namespace Drupal\Tests\search\Unit\Plugin\migrate\source\d7;
+
+use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase;
+
+/**
+ * Tests D7 search page status source plugin.
+ *
+ * @group search
+ */
+class SearchPageStatusTest extends MigrateSqlSourceTestCase {
+
+  // The plugin system is not working during unit testing so the source plugin
+  // class needs to be manually specified.
+  const PLUGIN_CLASS = 'Drupal\search\Plugin\migrate\source\d7\SearchPageStatus';
+
+  /**
+   * Define bare minimum migration configuration.
+   */
+  protected $migrationConfiguration = [
+    'id' => 'test',
+    'source' => [
+      'plugin' => 'd7_search_page_status',
+    ],
+  ];
+
+  /**
+   * Expected results from the source.
+   */
+  protected $expectedResults = [
+    [
+      'module' => 'node',
+      'status' => 'node',
+      'module_exists' => false,
+    ],
+    [
+      'module' => 'user',
+      'status' => 0,
+      'module_exists' => true,
+    ]
+  ];
+
+  /**
+   * Database contents.
+   */
+  protected $databaseContents = [
+    'variable' => [
+      [
+        'name' => 'search_active_modules',
+        'value' => 'a:2:{s:4:"node";s:4:"node";s:4:"user";i:0;}',
+      ]
+    ],
+    'system' => [
+      [
+        'name' => 'node',
+        'type' => 'module',
+        'status' => '0',
+      ],
+      [
+        'name' => 'user',
+        'type' => 'module',
+        'status' => '1',
+      ]
+    ]
+  ];
+
+}
