diff --git a/search_api.install b/search_api.install
index b4c914a..e24736c 100644
--- a/search_api.install
+++ b/search_api.install
@@ -52,46 +52,6 @@ function search_api_schema() {
     ),
     'primary key' => array('index_id', 'item_id'),
   );
-  $schema['search_api_task'] = array(
-    'description' => 'Stores pending tasks for servers.',
-    'fields' => array(
-      'id' => array(
-        'description' => 'An integer identifying this task',
-        'type' => 'serial',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-      ),
-      'type' => array(
-        'description' => 'A keyword identifying the type of task that should be executed',
-        'type' => 'varchar',
-        'length' => 50,
-        'not null' => TRUE,
-      ),
-      'server_id' => array(
-        'description' => 'The ID of the server for which this task should be executed',
-        'type' => 'varchar',
-        'length' => 50,
-        'not null' => FALSE,
-      ),
-      'index_id' => array(
-        'description' => 'The ID of the index to which this task pertains, if applicable for this type',
-        'type' => 'varchar',
-        'length' => 50,
-        'not null' => FALSE,
-      ),
-      'data' => array(
-        'description' => 'Some data needed for the task, might be optional depending on the type',
-        'type' => 'text',
-        'size' => 'medium',
-        'serialize' => TRUE,
-        'not null' => FALSE,
-      ),
-    ),
-    'indexes' => array(
-      'execution' => array('type', 'server_id', 'id'),
-    ),
-    'primary key' => array('id'),
-  );
 
   return $schema;
 }
diff --git a/tests/src/Kernel/BackendTestBase.php b/tests/src/Kernel/BackendTestBase.php
index 8f85ee3..59fdb99 100644
--- a/tests/src/Kernel/BackendTestBase.php
+++ b/tests/src/Kernel/BackendTestBase.php
@@ -56,10 +56,11 @@ abstract class BackendTestBase extends KernelTestBase {
   public function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installSchema('system', array('router'));
     $this->installSchema('user', array('users_data'));
     $this->installEntitySchema('entity_test_mulrev_changed');
+    $this->installEntitySchema('search_api_task');
     $this->installConfig('search_api_test_example_content');
 
     // Set the tracking page size so tracking will work properly.
diff --git a/tests/src/Kernel/BundlelessEntityTest.php b/tests/src/Kernel/BundlelessEntityTest.php
index 559cfae..9822f54 100644
--- a/tests/src/Kernel/BundlelessEntityTest.php
+++ b/tests/src/Kernel/BundlelessEntityTest.php
@@ -44,7 +44,7 @@ class BundlelessEntityTest extends KernelTestBase {
   public function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', array('search_api_task'));
+    $this->installEntitySchema('search_api_task');
     $this->installConfig(array('user'));
 
     // Create a test index.
diff --git a/tests/src/Kernel/CliTest.php b/tests/src/Kernel/CliTest.php
index 857c3d9..8d969e1 100644
--- a/tests/src/Kernel/CliTest.php
+++ b/tests/src/Kernel/CliTest.php
@@ -40,8 +40,9 @@ class CliTest extends KernelTestBase {
   public function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installEntitySchema('entity_test_mulrev_changed');
+    $this->installEntitySchema('search_api_task');
 
     // Create a test server.
     $this->server = Server::create(array(
diff --git a/tests/src/Kernel/CustomDataTypesTest.php b/tests/src/Kernel/CustomDataTypesTest.php
index ce46827..e0b5882 100644
--- a/tests/src/Kernel/CustomDataTypesTest.php
+++ b/tests/src/Kernel/CustomDataTypesTest.php
@@ -59,10 +59,11 @@ class CustomDataTypesTest extends KernelTestBase {
   public function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installSchema('system', array('router'));
     $this->installSchema('user', array('users_data'));
     $this->installEntitySchema('entity_test_mulrev_changed');
+    $this->installEntitySchema('search_api_task');
 
     // Do not use a batch for tracking the initial items after creating an
     // index when running the tests via the GUI. Otherwise, it seems Drupal's
diff --git a/tests/src/Kernel/DatasourceTaskTest.php b/tests/src/Kernel/DatasourceTaskTest.php
index f9f545f..b8886b3 100644
--- a/tests/src/Kernel/DatasourceTaskTest.php
+++ b/tests/src/Kernel/DatasourceTaskTest.php
@@ -77,9 +77,10 @@ class DatasourceTaskTest extends KernelTestBase {
     );
     \Drupal::state()->set($this->testEntityTypeId . '.bundles', $bundles);
 
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installSchema('system', array('sequences'));
     $this->installEntitySchema('entity_test_mulrev_changed');
+    $this->installEntitySchema('search_api_task');
 
     $this->taskManager = $this->container->get('search_api.task_manager');
 
diff --git a/tests/src/Kernel/DependencyRemovalTest.php b/tests/src/Kernel/DependencyRemovalTest.php
index d540647..ce52b52 100644
--- a/tests/src/Kernel/DependencyRemovalTest.php
+++ b/tests/src/Kernel/DependencyRemovalTest.php
@@ -50,7 +50,7 @@ class DependencyRemovalTest extends KernelTestBase {
   public function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', 'search_api_task');
+    $this->installEntitySchema('search_api_task');
 
     \Drupal::configFactory()->getEditable('search_api.settings')
       ->set('default_tracker', 'default')
diff --git a/tests/src/Kernel/EntityStringIdTest.php b/tests/src/Kernel/EntityStringIdTest.php
index 58e8985..1d01e2c 100644
--- a/tests/src/Kernel/EntityStringIdTest.php
+++ b/tests/src/Kernel/EntityStringIdTest.php
@@ -65,9 +65,9 @@ class EntityStringIdTest extends KernelTestBase {
 
     $this->installSchema('search_api', array(
       'search_api_item',
-      'search_api_task',
     ));
     $this->installEntitySchema('entity_test_string_id');
+    $this->installEntitySchema('search_api_task');
 
     // Do not use a batch for tracking the initial items after creating an
     // index when running the tests via the GUI. Otherwise, it seems Drupal's
diff --git a/tests/src/Kernel/IndexChangesTest.php b/tests/src/Kernel/IndexChangesTest.php
index 87a02e8..6b30b1a 100644
--- a/tests/src/Kernel/IndexChangesTest.php
+++ b/tests/src/Kernel/IndexChangesTest.php
@@ -67,9 +67,9 @@ class IndexChangesTest extends KernelTestBase {
 
     $this->installSchema('search_api', array(
       'search_api_item',
-      'search_api_task',
     ));
     $this->installEntitySchema('entity_test_mulrev_changed');
+    $this->installEntitySchema('search_api_task');
     $this->installEntitySchema('user');
 
     $this->taskManager = $this->container->get('search_api.task_manager');
diff --git a/tests/src/Kernel/IndexImportTest.php b/tests/src/Kernel/IndexImportTest.php
index 62b4278..8593c67 100644
--- a/tests/src/Kernel/IndexImportTest.php
+++ b/tests/src/Kernel/IndexImportTest.php
@@ -41,10 +41,11 @@ class IndexImportTest extends KernelTestBase {
   public function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installSchema('system', array('router'));
     $this->installSchema('user', array('users_data'));
     $this->installEntitySchema('entity_test_mulrev_changed');
+    $this->installEntitySchema('search_api_task');
 
     // Do not use a batch for tracking the initial items after creating an
     // index when running the tests via the GUI. Otherwise, it seems Drupal's
diff --git a/tests/src/Kernel/IndexLoadItemsTest.php b/tests/src/Kernel/IndexLoadItemsTest.php
index 924741c..f40a934 100644
--- a/tests/src/Kernel/IndexLoadItemsTest.php
+++ b/tests/src/Kernel/IndexLoadItemsTest.php
@@ -38,7 +38,7 @@ class IndexLoadItemsTest extends KernelTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', array('search_api_task'));
+    $this->installEntitySchema('search_api_task');
 
     $server = Server::create(array(
       'id' => 'test',
diff --git a/tests/src/Kernel/IndexStorageTest.php b/tests/src/Kernel/IndexStorageTest.php
index 4f590ab..8bf5498 100644
--- a/tests/src/Kernel/IndexStorageTest.php
+++ b/tests/src/Kernel/IndexStorageTest.php
@@ -34,7 +34,7 @@ class IndexStorageTest extends KernelTestBase {
     parent::setUp();
 
     $this->installSchema('system', 'key_value_expire');
-    $this->installSchema('search_api', 'search_api_task');
+    $this->installEntitySchema('search_api_task');
 
     $this->storage = $this->container
       ->get('entity_type.manager')
diff --git a/tests/src/Kernel/LanguageKernelTest.php b/tests/src/Kernel/LanguageKernelTest.php
index cbec49a..bb1f438 100644
--- a/tests/src/Kernel/LanguageKernelTest.php
+++ b/tests/src/Kernel/LanguageKernelTest.php
@@ -68,8 +68,9 @@ class LanguageKernelTest extends KernelTestBase {
     // Enable translation for the entity_test module.
     \Drupal::state()->set('entity_test.translation', TRUE);
 
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installEntitySchema('entity_test_mulrev_changed');
+    $this->installEntitySchema('search_api_task');
 
     // Create the default languages.
     $this->installConfig(array('language'));
diff --git a/tests/src/Kernel/Processor/ProcessorTestBase.php b/tests/src/Kernel/Processor/ProcessorTestBase.php
index cfa9858..3e8712f 100644
--- a/tests/src/Kernel/Processor/ProcessorTestBase.php
+++ b/tests/src/Kernel/Processor/ProcessorTestBase.php
@@ -65,10 +65,11 @@ abstract class ProcessorTestBase extends KernelTestBase {
     parent::setUp();
 
     $this->installSchema('node', array('node_access'));
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installEntitySchema('user');
     $this->installEntitySchema('node');
     $this->installEntitySchema('comment');
+    $this->installEntitySchema('search_api_task');
     $this->installSchema('comment', array('comment_entity_statistics'));
     $this->installConfig(array('field'));
 
diff --git a/tests/src/Kernel/QueryTest.php b/tests/src/Kernel/QueryTest.php
index 0559349..035665c 100644
--- a/tests/src/Kernel/QueryTest.php
+++ b/tests/src/Kernel/QueryTest.php
@@ -44,8 +44,9 @@ class QueryTest extends KernelTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installEntitySchema('entity_test_mulrev_changed');
+    $this->installEntitySchema('search_api_task');
 
     // Set tracking page size so tracking will work properly.
     \Drupal::configFactory()
diff --git a/tests/src/Kernel/ServerChangesTest.php b/tests/src/Kernel/ServerChangesTest.php
index f419520..7e1fdf8 100644
--- a/tests/src/Kernel/ServerChangesTest.php
+++ b/tests/src/Kernel/ServerChangesTest.php
@@ -68,8 +68,9 @@ class ServerChangesTest extends KernelTestBase {
     parent::setUp();
 
     $this->installEntitySchema('user');
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installSchema('search_api', array('search_api_item'));
     $this->installSchema('system', array('key_value_expire'));
+    $this->installEntitySchema('search_api_task');
 
     // Set tracking page size so tracking will work properly.
     \Drupal::configFactory()
diff --git a/tests/src/Kernel/ServerStorageTest.php b/tests/src/Kernel/ServerStorageTest.php
index 2ccc0af..bc0f962 100644
--- a/tests/src/Kernel/ServerStorageTest.php
+++ b/tests/src/Kernel/ServerStorageTest.php
@@ -43,7 +43,7 @@ class ServerStorageTest extends KernelTestBase {
 
     $this->installSchema('system', 'key_value_expire');
 
-    $this->installSchema('search_api', array('search_api_task'));
+    $this->installEntitySchema('search_api_task');
     $this->storage = $this->container->get('entity_type.manager')->getStorage('search_api_server');
   }
 
diff --git a/tests/src/Kernel/ServerTaskTest.php b/tests/src/Kernel/ServerTaskTest.php
index bbd7582..9402883 100644
--- a/tests/src/Kernel/ServerTaskTest.php
+++ b/tests/src/Kernel/ServerTaskTest.php
@@ -71,7 +71,8 @@ class ServerTaskTest extends KernelTestBase {
     parent::setUp();
 
     $this->installEntitySchema('user');
-    $this->installSchema('search_api', array('search_api_item', 'search_api_task'));
+    $this->installEntitySchema('search_api_task');
+    $this->installSchema('search_api', array('search_api_item'));
 
     // Set tracking page size so tracking will work properly.
     \Drupal::configFactory()
diff --git a/tests/src/Kernel/TaskTest.php b/tests/src/Kernel/TaskTest.php
index 9e1b44d..3148b05 100644
--- a/tests/src/Kernel/TaskTest.php
+++ b/tests/src/Kernel/TaskTest.php
@@ -61,7 +61,7 @@ class TaskTest extends KernelTestBase {
   public function setUp() {
     parent::setUp();
 
-    $this->installSchema('search_api', array('search_api_task'));
+    $this->installEntitySchema('search_api_task');
 
     $this->taskManager = $this->container->get('search_api.task_manager');
     $this->taskWorker = $this->container->get('search_api_test_tasks.test_task_worker');
