diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
index c1480c1..edb7b5f 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
@@ -41425,7 +41425,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..f93e321
--- /dev/null
+++ b/core/modules/search/migration_templates/d7_search_page_status.yml
@@ -0,0 +1,11 @@
+id: d7_search_page_status
+label: Search page status
+migration_tags:
+  - Drupal 7
+source:
+  plugin: d7_search_page_status
+process:
+  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..3a82197
--- /dev/null
+++ b/core/modules/search/src/Plugin/migrate/destination/d7/SearchPageStatus.php
@@ -0,0 +1,57 @@
+<?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.
+ *
+ * The source plugin passes search status for core modules that use search,
+ * which are node and user.
+ *
+ * @MigrateDestination(
+ *   id = "d7_search_page_status"
+ * )
+ */
+class SearchPageStatus extends DestinationBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function import(Row $row, array $old_destination_id_values = array()) {
+
+    /** @var \Drupal\search\Entity\SearchPage $search_page */
+    $id = $row->getDestinationProperty('module') . '_search';
+    $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..9ea0b66
--- /dev/null
+++ b/core/modules/search/src/Plugin/migrate/source/d7/SearchPageStatus.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\search\Plugin\migrate\source\d7\SearchPageStatus.
+ */
+
+namespace Drupal\search\Plugin\migrate\source\d7;
+
+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();
+  }
+
+}
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..01bf18c
--- /dev/null
+++ b/core/modules/search/tests/src/Unit/Plugin/migrate/source/d7/SearchPageStatusTest.php
@@ -0,0 +1,60 @@
+<?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' => 'user',
+      'status' => 0,
+    ]
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    $this->databaseContents['variable'] = [
+      [
+        'name' => 'search_active_modules',
+        'value' => 'a:2:{s:4:"node";s:4:"node";s:4:"user";i:0;}',
+      ]
+    ];
+    parent::setUp();
+  }
+
+}
