diff --git a/migrations/state/tablefield.migrate_drupal.yml b/migrations/state/tablefield.migrate_drupal.yml
new file mode 100644
index 0000000..41a6dc9
--- /dev/null
+++ b/migrations/state/tablefield.migrate_drupal.yml
@@ -0,0 +1,3 @@
+finished:
+  7:
+    tablefield: tablefield
diff --git a/src/Plugin/migrate/field/Tablefield.php b/src/Plugin/migrate/field/Tablefield.php
new file mode 100644
index 0000000..2108b11
--- /dev/null
+++ b/src/Plugin/migrate/field/Tablefield.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Drupal\tablefield\Plugin\migrate\field;
+
+use Drupal\migrate\Plugin\MigrationInterface;
+use Drupal\migrate_drupal\Plugin\migrate\field\FieldPluginBase;
+
+/**
+ * MigrateField Plugin for tablefield fields.
+ *
+ * @MigrateField(
+ *   id = "tablefield",
+ *   core = {7},
+ *   type_map = {
+ *     "tablefield_default" = "tablefield"
+ *   },
+ *   source_module = "tablefield",
+ *   destination_module = "tablefield"
+ * )
+ */
+class Tablefield extends FieldPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFieldWidgetMap() {
+    return [
+      'tablefield_default' => 'tablefield',
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFieldFormatterMap() {
+    return [
+      'tablefield_default' => 'tablefield',
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function defineValueProcessPipeline(MigrationInterface $migration, $field_name, $data) {
+    $process_pipeline = [
+      [
+        'plugin' => 'tablefield_value',
+        'source' => $field_name,
+      ],
+    ];
+    $migration->mergeProcessOfProperty($field_name, $process_pipeline);
+  }
+
+}
diff --git a/src/Plugin/migrate/process/TableFieldValue.php b/src/Plugin/migrate/process/TableFieldValue.php
new file mode 100644
index 0000000..c23c296
--- /dev/null
+++ b/src/Plugin/migrate/process/TableFieldValue.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Drupal\tablefield\Plugin\migrate\process;
+
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+
+/**
+ * Transforms value array from tablefield to match new format.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "tablefield_value"
+ * )
+ */
+class TableFieldValue extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    $actual_values = [];
+    $unserialized_value = unserialize($value['value']);
+    $actual_source_values = $unserialized_value['tabledata'];
+    // Transforming row_0 => ['col_0' => 'abc']  to  0 => ['0' => 'abc'] .
+    foreach ($actual_source_values as $table_row_value) {
+      unset($table_row_value['weight']);
+      $actual_values[] = array_values($table_row_value);
+    }
+    return [
+      'value' => $actual_values,
+      'caption' => $unserialized_value['caption'],
+    ];
+  }
+
+}
diff --git a/tablefield.module b/tablefield.module
new file mode 100644
index 0000000..96a2099
--- /dev/null
+++ b/tablefield.module
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @file
+ * Hook implementation code for the Tablefield module.
+ */
+
+use Drupal\migrate\Row;
+
+/**
+ * Implements hook_migrate_prepare_row().
+ *
+ * Allows transforming default_value structure to match D9 schema.
+ */
+function tablefield_migrate_prepare_row(Row $row) {
+
+  if ($row->getSourceProperty('plugin') != "d7_field_instance" || $row->getSourceProperty('type') != 'tablefield') {
+    return;
+  }
+  foreach ($row->getSourceProperty('default_value') as $delta => $original_value_item) {
+    // Transforming ['row_0' => ['col_0' => 'abc']]  to [0 => ['0' => 'abc']].
+    $final_default[$delta]['value'] = array_reduce(
+      $original_value_item['tablefield']['tabledata'],
+      function (array $carry, array $table_row_value) {
+        unset($table_row_value['weight']);
+        $carry[] = array_values($table_row_value);
+        return $carry;
+      },
+      []
+    );
+    // Transform rebuild array.
+    $final_default[$delta]['rebuild'] = [
+      'cols' => $original_value_item['tablefield']['rebuild']['count_cols'],
+      'rows' => $original_value_item['tablefield']['rebuild']['count_rows'],
+    ];
+    // Transform caption and format.
+    $final_default[$delta]['caption'] = $original_value_item['tablefield']['caption'];
+    $final_default[$delta]['format'] = '';
+  }
+
+  $row->setSourceProperty('default_value', $final_default);
+}
diff --git a/tests/fixtures/drupal7.php b/tests/fixtures/drupal7.php
new file mode 100644
index 0000000..872b8b4
--- /dev/null
+++ b/tests/fixtures/drupal7.php
@@ -0,0 +1,1402 @@
+<?php
+// phpcs:ignoreFile
+/**
+ * @file
+ * A database agnostic dump for testing purposes.
+ *
+ * This file was generated by the Drupal 9.2.9 db-tools.php script.
+ */
+
+use Drupal\Core\Database\Database;
+
+$connection = Database::getConnection();
+
+$connection->schema()->createTable('system', array(
+  'fields' => array(
+    'filename' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => '',
+    ),
+    'owner' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'bootstrap' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'schema_version' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'small',
+      'default' => '-1',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'info' => array(
+      'type' => 'blob',
+      'not null' => FALSE,
+      'size' => 'normal',
+    ),
+  ),
+  'primary key' => array(
+    'filename',
+  ),
+  'indexes' => array(
+    'system_list' => array(
+      'status',
+      'bootstrap',
+      'type',
+      'weight',
+      'name',
+    ),
+    'type_name' => array(
+      'type',
+      'name',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('system')
+->fields(array(
+  'filename',
+  'name',
+  'type',
+  'owner',
+  'status',
+  'bootstrap',
+  'schema_version',
+  'weight',
+  'info',
+))
+->values(array(
+  'filename' => 'modules/system/system.module',
+  'name' => 'system',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'bootstrap' => '0',
+  'schema_version' => '7084',
+  'weight' => '0',
+  'info' => 'a:14:{s:4:"name";s:6:"System";s:11:"description";s:54:"Handles general site configuration for administrators.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.82";s:4:"core";s:3:"7.x";s:5:"files";a:6:{i:0;s:19:"system.archiver.inc";i:1;s:15:"system.mail.inc";i:2;s:16:"system.queue.inc";i:3;s:14:"system.tar.inc";i:4;s:18:"system.updater.inc";i:5;s:11:"system.test";}s:8:"required";b:1;s:9:"configure";s:19:"admin/config/system";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1626883669";s:5:"mtime";i:1626883669;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/user/user.module',
+  'name' => 'user',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'bootstrap' => '0',
+  'schema_version' => '7019',
+  'weight' => '0',
+  'info' => 'a:15:{s:4:"name";s:4:"User";s:11:"description";s:47:"Manages the user registration and login system.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.82";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:11:"user.module";i:1;s:9:"user.test";}s:8:"required";b:1;s:9:"configure";s:19:"admin/config/people";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"user.css";s:21:"modules/user/user.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1626883669";s:5:"mtime";i:1626883669;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/field/field.module',
+  'name' => 'field',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'bootstrap' => '0',
+  'schema_version' => '7004',
+  'weight' => '0',
+  'info' => 'a:14:{s:4:"name";s:5:"Field";s:11:"description";s:57:"Field API to add fields to entities like nodes and users.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.82";s:4:"core";s:3:"7.x";s:5:"files";a:4:{i:0;s:12:"field.module";i:1;s:16:"field.attach.inc";i:2;s:20:"field.info.class.inc";i:3;s:16:"tests/field.test";}s:12:"dependencies";a:1:{i:0;s:17:"field_sql_storage";}s:8:"required";b:1;s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:15:"theme/field.css";s:29:"modules/field/theme/field.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1626883669";s:5:"mtime";i:1626883669;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'modules/field/modules/field_sql_storage/field_sql_storage.module',
+  'name' => 'field_sql_storage',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'bootstrap' => '0',
+  'schema_version' => '7002',
+  'weight' => '0',
+  'info' => 'a:13:{s:4:"name";s:17:"Field SQL storage";s:11:"description";s:37:"Stores field data in an SQL database.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.82";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:5:"files";a:1:{i:0;s:22:"field_sql_storage.test";}s:8:"required";b:1;s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1626883669";s:5:"mtime";i:1626883669;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->values(array(
+  'filename' => 'sites/all/modules/contrib/tablefield/tablefield.module',
+  'name' => 'tablefield',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'bootstrap' => '0',
+  'schema_version' => '7007',
+  'weight' => '0',
+  'info' => 'a:15:{s:4:"name";s:10:"TableField";s:11:"description";s:29:"Defines a tabular data field.";s:4:"core";s:3:"7.x";s:3:"php";s:3:"5.4";s:7:"package";s:6:"Fields";s:12:"dependencies";a:1:{i:0;s:5:"field";}s:9:"configure";s:31:"admin/config/content/tablefield";s:7:"version";s:7:"7.x-3.6";s:7:"project";s:10:"tablefield";s:9:"datestamp";s:10:"1586523940";s:5:"mtime";i:1586523940;s:5:"files";a:0:{}s:9:"bootstrap";i:0;s:8:"required";b:1;s:11:"explanation";s:73:"Field type(s) in use - see <a href="/admin/reports/fields">Field list</a>";}',
+))
+->values(array(
+  'filename' => 'modules/node/node.module',
+  'name' => 'node',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'bootstrap' => '0',
+  'schema_version' => '7016',
+  'weight' => '0',
+  'info' => 'a:15:{s:4:"name";s:4:"Node";s:11:"description";s:66:"Allows content to be submitted to the site and displayed on pages.";s:7:"package";s:4:"Core";s:7:"version";s:4:"7.82";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:11:"node.module";i:1;s:9:"node.test";}s:8:"required";b:1;s:9:"configure";s:21:"admin/structure/types";s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:8:"node.css";s:21:"modules/node/node.css";}}s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1626883669";s:5:"mtime";i:1626883669;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}',
+))
+->execute();
+
+$connection->schema()->createTable('field_config', array(
+  'fields' => array(
+    'id' => array(
+      'type' => 'serial',
+      'not null' => TRUE,
+      'size' => 'normal',
+    ),
+    'field_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+    ),
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'active' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'storage_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+    ),
+    'storage_module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'storage_active' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'locked' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'data' => array(
+      'type' => 'blob',
+      'not null' => TRUE,
+      'size' => 'big',
+    ),
+    'cardinality' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'translatable' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+  ),
+  'primary key' => array(
+    'id',
+  ),
+  'indexes' => array(
+    'field_name' => array(
+      'field_name',
+    ),
+    'active' => array(
+      'active',
+    ),
+    'storage_active' => array(
+      'storage_active',
+    ),
+    'deleted' => array(
+      'deleted',
+    ),
+    'module' => array(
+      'module',
+    ),
+    'storage_module' => array(
+      'storage_module',
+    ),
+    'type' => array(
+      'type',
+    ),
+    'storage_type' => array(
+      'storage_type',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('field_config')
+->fields(array(
+  'id',
+  'field_name',
+  'type',
+  'module',
+  'active',
+  'storage_type',
+  'storage_module',
+  'storage_active',
+  'locked',
+  'data',
+  'cardinality',
+  'translatable',
+  'deleted',
+))
+->values(array(
+  'id' => '25',
+  'field_name' => 'field_table1',
+  'type' => 'tablefield',
+  'module' => 'tablefield',
+  'active' => '1',
+  'storage_type' => 'field_sql_storage',
+  'storage_module' => 'field_sql_storage',
+  'storage_active' => '1',
+  'locked' => '0',
+  'data' => 'a:7:{s:12:"translatable";s:1:"0";s:12:"entity_types";a:0:{}s:8:"settings";a:0:{}s:7:"storage";a:5:{s:4:"type";s:17:"field_sql_storage";s:8:"settings";a:0:{}s:6:"module";s:17:"field_sql_storage";s:6:"active";s:1:"1";s:7:"details";a:1:{s:3:"sql";a:2:{s:18:"FIELD_LOAD_CURRENT";a:1:{s:23:"field_data_field_table1";a:2:{s:5:"value";s:18:"field_table1_value";s:6:"format";s:19:"field_table1_format";}}s:19:"FIELD_LOAD_REVISION";a:1:{s:27:"field_revision_field_table1";a:2:{s:5:"value";s:18:"field_table1_value";s:6:"format";s:19:"field_table1_format";}}}}}s:12:"foreign keys";a:0:{}s:7:"indexes";a:0:{}s:2:"id";s:2:"25";}',
+  'cardinality' => '-1',
+  'translatable' => '0',
+  'deleted' => '0',
+))
+->execute();
+
+$connection->schema()->createTable('field_config_instance', array(
+  'fields' => array(
+    'id' => array(
+      'type' => 'serial',
+      'not null' => TRUE,
+      'size' => 'normal',
+    ),
+    'field_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+    ),
+    'field_name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'data' => array(
+      'type' => 'blob',
+      'not null' => TRUE,
+      'size' => 'big',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+  ),
+  'primary key' => array(
+    'id',
+  ),
+  'indexes' => array(
+    'field_name_bundle' => array(
+      'field_name',
+      'entity_type',
+      'bundle',
+    ),
+    'deleted' => array(
+      'deleted',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('field_config_instance')
+->fields(array(
+  'id',
+  'field_id',
+  'field_name',
+  'entity_type',
+  'bundle',
+  'data',
+  'deleted',
+))
+->values(array(
+  'id' => '29',
+  'field_id' => '25',
+  'field_name' => 'field_table1',
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'data' => 'a:7:{s:5:"label";s:6:"table1";s:6:"widget";a:5:{s:6:"weight";s:1:"6";s:4:"type";s:10:"tablefield";s:6:"module";s:10:"tablefield";s:6:"active";i:1;s:8:"settings";a:6:{s:16:"restrict_rebuild";i:0;s:11:"lock_values";i:0;s:10:"input_type";s:9:"textfield";s:10:"max_length";s:4:"2048";s:15:"cell_processing";s:1:"0";s:12:"data_sources";a:2:{s:5:"paste";s:5:"paste";s:6:"upload";s:6:"upload";}}}s:8:"settings";a:1:{s:18:"user_register_form";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:18:"tablefield_default";s:8:"settings";a:12:{s:18:"header_orientation";s:10:"Horizontal";s:13:"sticky_header";b:1;s:8:"striping";b:1;s:8:"sortable";b:0;s:11:"hide_header";b:0;s:15:"hide_empty_rows";b:0;s:15:"hide_empty_cols";b:0;s:19:"hide_cols_skip_head";b:0;s:18:"trim_trailing_cols";b:0;s:18:"trim_trailing_rows";b:0;s:29:"table_custom_class_attributes";s:5:"table";s:10:"export_csv";b:0;}s:6:"module";s:10:"tablefield";s:6:"weight";i:4;}}s:8:"required";i:0;s:11:"description";s:0:"";s:13:"default_value";a:1:{i:0;a:1:{s:10:"tablefield";a:5:{s:9:"tabledata";a:5:{s:5:"row_0";a:6:{s:5:"col_0";s:4:"name";s:5:"col_1";s:5:"place";s:5:"col_2";s:7:"animal ";s:5:"col_3";s:5:"thing";s:5:"col_4";s:7:"default";s:6:"weight";s:1:"1";}s:5:"row_1";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"2";}s:5:"row_2";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"3";}s:5:"row_3";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"4";}s:5:"row_4";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"5";}}s:7:"caption";s:0:"";s:7:"rebuild";a:3:{s:10:"count_cols";i:5;s:10:"count_rows";i:5;s:7:"rebuild";s:13:"Rebuild Table";}s:6:"import";a:2:{s:4:"file";s:0:"";s:6:"import";s:10:"Upload CSV";}s:5:"paste";a:3:{s:15:"paste_delimiter";s:0:"";s:4:"data";s:0:"";s:12:"paste_import";s:16:"Import & Rebuild";}}}}}',
+  'deleted' => '0',
+))
+->execute();
+
+$connection->schema()->createTable('field_data_field_table1', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'field_table1_value' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'size' => 'big',
+    ),
+    'field_table1_format' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+  ),
+  'primary key' => array(
+    'entity_type',
+    'entity_id',
+    'deleted',
+    'delta',
+    'language',
+  ),
+  'indexes' => array(
+    'entity_type' => array(
+      'entity_type',
+    ),
+    'bundle' => array(
+      'bundle',
+    ),
+    'deleted' => array(
+      'deleted',
+    ),
+    'entity_id' => array(
+      'entity_id',
+    ),
+    'revision_id' => array(
+      'revision_id',
+    ),
+    'language' => array(
+      'language',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('field_data_field_table1')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_table1_value',
+  'field_table1_format',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '8',
+  'revision_id' => '9',
+  'language' => 'und',
+  'delta' => '0',
+  'field_table1_value' => 'a:5:{s:7:"caption";s:8:"table 1.";s:7:"rebuild";a:3:{s:10:"count_cols";i:5;s:10:"count_rows";i:5;s:7:"rebuild";s:13:"Rebuild Table";}s:6:"import";a:2:{s:4:"file";s:0:"";s:6:"import";s:10:"Upload CSV";}s:5:"paste";a:3:{s:15:"paste_delimiter";s:0:"";s:4:"data";s:0:"";s:12:"paste_import";s:16:"Import & Rebuild";}s:9:"tabledata";a:5:{s:5:"row_0";a:6:{s:5:"col_0";s:4:"kjkj";s:5:"col_1";s:3:"knk";s:5:"col_2";s:1:"k";s:5:"col_3";s:2:" m";s:5:"col_4";s:1:"n";s:6:"weight";s:1:"1";}s:5:"row_1";a:6:{s:5:"col_0";s:6:"kjgfhg";s:5:"col_1";s:3:"fhc";s:5:"col_2";s:3:"hch";s:5:"col_3";s:3:"vjb";s:5:"col_4";s:3:"kjb";s:6:"weight";s:1:"2";}s:5:"row_2";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"3";}s:5:"row_3";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"4";}s:5:"row_4";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"5";}}}',
+  'field_table1_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '8',
+  'revision_id' => '9',
+  'language' => 'und',
+  'delta' => '1',
+  'field_table1_value' => 'a:5:{s:7:"caption";s:8:"table 2.";s:7:"rebuild";a:3:{s:10:"count_cols";i:5;s:10:"count_rows";i:5;s:7:"rebuild";s:13:"Rebuild Table";}s:6:"import";a:2:{s:4:"file";s:0:"";s:6:"import";s:10:"Upload CSV";}s:5:"paste";a:3:{s:15:"paste_delimiter";s:0:"";s:4:"data";s:0:"";s:12:"paste_import";s:16:"Import & Rebuild";}s:9:"tabledata";a:5:{s:5:"row_0";a:6:{s:5:"col_0";s:7:"hgvhvgh";s:5:"col_1";s:7:"vbvc cv";s:5:"col_2";s:9:"cbvcbvchg";s:5:"col_3";s:7:"hvghvhg";s:5:"col_4";s:7:"ghgvhgc";s:6:"weight";s:1:"1";}s:5:"row_1";a:6:{s:5:"col_0";s:6:"hgchhg";s:5:"col_1";s:5:"opkpo";s:5:"col_2";s:5:"gghjb";s:5:"col_3";s:4:"jhvj";s:5:"col_4";s:4:"vjhv";s:6:"weight";s:1:"2";}s:5:"row_2";a:6:{s:5:"col_0";s:2:"jv";s:5:"col_1";s:3:"vjh";s:5:"col_2";s:5:"jhvjh";s:5:"col_3";s:3:"vjh";s:5:"col_4";s:3:"vjh";s:6:"weight";s:1:"3";}s:5:"row_3";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"4";}s:5:"row_4";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"5";}}}',
+  'field_table1_format' => NULL,
+))
+->execute();
+
+$connection->schema()->createTable('field_revision_field_table1', array(
+  'fields' => array(
+    'entity_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'bundle' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'deleted' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'entity_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'revision_id' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'delta' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'field_table1_value' => array(
+      'type' => 'text',
+      'not null' => FALSE,
+      'size' => 'big',
+    ),
+    'field_table1_format' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+  ),
+  'primary key' => array(
+    'entity_type',
+    'entity_id',
+    'revision_id',
+    'deleted',
+    'delta',
+    'language',
+  ),
+  'indexes' => array(
+    'entity_type' => array(
+      'entity_type',
+    ),
+    'bundle' => array(
+      'bundle',
+    ),
+    'deleted' => array(
+      'deleted',
+    ),
+    'entity_id' => array(
+      'entity_id',
+    ),
+    'revision_id' => array(
+      'revision_id',
+    ),
+    'language' => array(
+      'language',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('field_revision_field_table1')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_table1_value',
+  'field_table1_format',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '8',
+  'revision_id' => '9',
+  'language' => 'und',
+  'delta' => '0',
+  'field_table1_value' => 'a:5:{s:7:"caption";s:8:"table 1.";s:7:"rebuild";a:3:{s:10:"count_cols";i:5;s:10:"count_rows";i:5;s:7:"rebuild";s:13:"Rebuild Table";}s:6:"import";a:2:{s:4:"file";s:0:"";s:6:"import";s:10:"Upload CSV";}s:5:"paste";a:3:{s:15:"paste_delimiter";s:0:"";s:4:"data";s:0:"";s:12:"paste_import";s:16:"Import & Rebuild";}s:9:"tabledata";a:5:{s:5:"row_0";a:6:{s:5:"col_0";s:4:"kjkj";s:5:"col_1";s:3:"knk";s:5:"col_2";s:1:"k";s:5:"col_3";s:2:" m";s:5:"col_4";s:1:"n";s:6:"weight";s:1:"1";}s:5:"row_1";a:6:{s:5:"col_0";s:6:"kjgfhg";s:5:"col_1";s:3:"fhc";s:5:"col_2";s:3:"hch";s:5:"col_3";s:3:"vjb";s:5:"col_4";s:3:"kjb";s:6:"weight";s:1:"2";}s:5:"row_2";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"3";}s:5:"row_3";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"4";}s:5:"row_4";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"5";}}}',
+  'field_table1_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '8',
+  'revision_id' => '9',
+  'language' => 'und',
+  'delta' => '1',
+  'field_table1_value' => 'a:5:{s:7:"caption";s:8:"table 2.";s:7:"rebuild";a:3:{s:10:"count_cols";i:5;s:10:"count_rows";i:5;s:7:"rebuild";s:13:"Rebuild Table";}s:6:"import";a:2:{s:4:"file";s:0:"";s:6:"import";s:10:"Upload CSV";}s:5:"paste";a:3:{s:15:"paste_delimiter";s:0:"";s:4:"data";s:0:"";s:12:"paste_import";s:16:"Import & Rebuild";}s:9:"tabledata";a:5:{s:5:"row_0";a:6:{s:5:"col_0";s:7:"hgvhvgh";s:5:"col_1";s:7:"vbvc cv";s:5:"col_2";s:9:"cbvcbvchg";s:5:"col_3";s:7:"hvghvhg";s:5:"col_4";s:7:"ghgvhgc";s:6:"weight";s:1:"1";}s:5:"row_1";a:6:{s:5:"col_0";s:6:"hgchhg";s:5:"col_1";s:5:"opkpo";s:5:"col_2";s:5:"gghjb";s:5:"col_3";s:4:"jhvj";s:5:"col_4";s:4:"vjhv";s:6:"weight";s:1:"2";}s:5:"row_2";a:6:{s:5:"col_0";s:2:"jv";s:5:"col_1";s:3:"vjh";s:5:"col_2";s:5:"jhvjh";s:5:"col_3";s:3:"vjh";s:5:"col_4";s:3:"vjh";s:6:"weight";s:1:"3";}s:5:"row_3";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"4";}s:5:"row_4";a:6:{s:5:"col_0";s:0:"";s:5:"col_1";s:0:"";s:5:"col_2";s:0:"";s:5:"col_3";s:0:"";s:5:"col_4";s:0:"";s:6:"weight";s:1:"5";}}}',
+  'field_table1_format' => NULL,
+))
+->execute();
+
+$connection->schema()->createTable('node', array(
+  'fields' => array(
+    'nid' => array(
+      'type' => 'serial',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+      'default' => '',
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => '',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '1',
+    ),
+    'created' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'changed' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'comment' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'promote' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'sticky' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'tnid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'translate' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+  ),
+  'primary key' => array(
+    'nid',
+  ),
+  'unique keys' => array(
+    'vid' => array(
+      'vid',
+    ),
+  ),
+  'indexes' => array(
+    'node_changed' => array(
+      'changed',
+    ),
+    'node_created' => array(
+      'created',
+    ),
+    'node_frontpage' => array(
+      'promote',
+      'status',
+      'sticky',
+      'created',
+    ),
+    'node_status_type' => array(
+      'status',
+      'type',
+      'nid',
+    ),
+    'node_title_type' => array(
+      'title',
+      array(
+        'type',
+        '4',
+      ),
+    ),
+    'node_type' => array(
+      array(
+        'type',
+        '4',
+      ),
+    ),
+    'uid' => array(
+      'uid',
+    ),
+    'tnid' => array(
+      'tnid',
+    ),
+    'translate' => array(
+      'translate',
+    ),
+    'language' => array(
+      'language',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('node')
+->fields(array(
+  'nid',
+  'vid',
+  'type',
+  'language',
+  'title',
+  'uid',
+  'status',
+  'created',
+  'changed',
+  'comment',
+  'promote',
+  'sticky',
+  'tnid',
+  'translate',
+))
+->values(array(
+  'nid' => '8',
+  'vid' => '9',
+  'type' => 'article',
+  'language' => 'und',
+  'title' => 'TEst 11',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1634799245',
+  'changed' => '1638777173',
+  'comment' => '2',
+  'promote' => '1',
+  'sticky' => '1',
+  'tnid' => '0',
+  'translate' => '0',
+))
+->values(array(
+  'nid' => '9',
+  'vid' => '10',
+  'type' => 'page',
+  'language' => 'und',
+  'title' => 'something just like this.',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1635761774',
+  'changed' => '1636545529',
+  'comment' => '2',
+  'promote' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))
+->execute();
+
+$connection->schema()->createTable('node_revision', array(
+  'fields' => array(
+    'nid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'vid' => array(
+      'type' => 'serial',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'title' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'log' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'size' => 'big',
+    ),
+    'timestamp' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '1',
+    ),
+    'comment' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'promote' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'sticky' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+  ),
+  'primary key' => array(
+    'vid',
+  ),
+  'indexes' => array(
+    'nid' => array(
+      'nid',
+    ),
+    'uid' => array(
+      'uid',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('node_revision')
+->fields(array(
+  'nid',
+  'vid',
+  'uid',
+  'title',
+  'log',
+  'timestamp',
+  'status',
+  'comment',
+  'promote',
+  'sticky',
+))
+->values(array(
+  'nid' => '8',
+  'vid' => '9',
+  'uid' => '1',
+  'title' => 'TEst 11',
+  'log' => '',
+  'timestamp' => '1638777173',
+  'status' => '1',
+  'comment' => '2',
+  'promote' => '1',
+  'sticky' => '1',
+))
+->values(array(
+  'nid' => '9',
+  'vid' => '10',
+  'uid' => '1',
+  'title' => 'something just like this.',
+  'log' => '',
+  'timestamp' => '1636545529',
+  'status' => '1',
+  'comment' => '2',
+  'promote' => '0',
+  'sticky' => '0',
+))
+->execute();
+
+$connection->schema()->createTable('node_type', array(
+  'fields' => array(
+    'type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '32',
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'base' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+    ),
+    'description' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'size' => 'medium',
+    ),
+    'help' => array(
+      'type' => 'text',
+      'not null' => TRUE,
+      'size' => 'medium',
+    ),
+    'has_title' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'unsigned' => TRUE,
+    ),
+    'title_label' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'custom' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'modified' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'locked' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'disabled' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'orig_type' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+  ),
+  'primary key' => array(
+    'type',
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('node_type')
+->fields(array(
+  'type',
+  'name',
+  'base',
+  'module',
+  'description',
+  'help',
+  'has_title',
+  'title_label',
+  'custom',
+  'modified',
+  'locked',
+  'disabled',
+  'orig_type',
+))
+->values(array(
+  'type' => 'article',
+  'name' => 'Article',
+  'base' => 'node_content',
+  'module' => 'node',
+  'description' => 'Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.',
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'disabled' => '0',
+  'orig_type' => 'article',
+))
+->values(array(
+  'type' => 'inline_test',
+  'name' => 'inline_test',
+  'base' => 'node_content',
+  'module' => 'node',
+  'description' => '',
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'disabled' => '0',
+  'orig_type' => 'inline_test',
+))
+->values(array(
+  'type' => 'page',
+  'name' => 'Basic page',
+  'base' => 'node_content',
+  'module' => 'node',
+  'description' => "Use <em>basic pages</em> for your static content, such as an 'About us' page.",
+  'help' => '',
+  'has_title' => '1',
+  'title_label' => 'Title',
+  'custom' => '1',
+  'modified' => '1',
+  'locked' => '0',
+  'disabled' => '0',
+  'orig_type' => 'page',
+))
+->execute();
+
+$connection->schema()->createTable('role', array(
+  'fields' => array(
+    'rid' => array(
+      'type' => 'serial',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '64',
+      'default' => '',
+    ),
+    'weight' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+  ),
+  'primary key' => array(
+    'rid',
+  ),
+  'unique keys' => array(
+    'name' => array(
+      'name',
+    ),
+  ),
+  'indexes' => array(
+    'name_weight' => array(
+      'name',
+      'weight',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('role')
+->fields(array(
+  'rid',
+  'name',
+  'weight',
+))
+->values(array(
+  'rid' => '3',
+  'name' => 'administrator',
+  'weight' => '2',
+))
+->values(array(
+  'rid' => '1',
+  'name' => 'anonymous user',
+  'weight' => '0',
+))
+->values(array(
+  'rid' => '2',
+  'name' => 'authenticated user',
+  'weight' => '1',
+))
+->execute();
+
+$connection->schema()->createTable('role_permission', array(
+  'fields' => array(
+    'rid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
+    'permission' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'module' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+  ),
+  'primary key' => array(
+    'rid',
+    'permission',
+  ),
+  'indexes' => array(
+    'permission' => array(
+      'permission',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('role_permission')
+->fields(array(
+  'rid',
+  'permission',
+  'module',
+))
+->values(array(
+  'rid' => '3',
+  'permission' => 'export tablefield',
+  'module' => 'tablefield',
+))
+->values(array(
+  'rid' => '3',
+  'permission' => 'rebuild tablefield',
+  'module' => 'tablefield',
+))
+->execute();
+
+$connection->schema()->createTable('users', array(
+  'fields' => array(
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'name' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '60',
+      'default' => '',
+    ),
+    'pass' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '128',
+      'default' => '',
+    ),
+    'mail' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '254',
+      'default' => '',
+    ),
+    'theme' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'signature' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '255',
+      'default' => '',
+    ),
+    'signature_format' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '255',
+    ),
+    'created' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'access' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'login' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'status' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'tiny',
+      'default' => '0',
+    ),
+    'timezone' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '32',
+    ),
+    'language' => array(
+      'type' => 'varchar',
+      'not null' => TRUE,
+      'length' => '12',
+      'default' => '',
+    ),
+    'picture' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+    ),
+    'init' => array(
+      'type' => 'varchar',
+      'not null' => FALSE,
+      'length' => '254',
+      'default' => '',
+    ),
+    'data' => array(
+      'type' => 'blob',
+      'not null' => FALSE,
+      'size' => 'big',
+    ),
+  ),
+  'primary key' => array(
+    'uid',
+  ),
+  'unique keys' => array(
+    'name' => array(
+      'name',
+    ),
+  ),
+  'indexes' => array(
+    'access' => array(
+      'access',
+    ),
+    'created' => array(
+      'created',
+    ),
+    'mail' => array(
+      'mail',
+    ),
+    'picture' => array(
+      'picture',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('users')
+->fields(array(
+  'uid',
+  'name',
+  'pass',
+  'mail',
+  'theme',
+  'signature',
+  'signature_format',
+  'created',
+  'access',
+  'login',
+  'status',
+  'timezone',
+  'language',
+  'picture',
+  'init',
+  'data',
+))
+->values(array(
+  'uid' => '0',
+  'name' => '',
+  'pass' => '',
+  'mail' => '',
+  'theme' => '',
+  'signature' => '',
+  'signature_format' => NULL,
+  'created' => '0',
+  'access' => '0',
+  'login' => '0',
+  'status' => '0',
+  'timezone' => NULL,
+  'language' => '',
+  'picture' => '0',
+  'init' => '',
+  'data' => NULL,
+))
+->execute();
+
+$connection->schema()->createTable('users_roles', array(
+  'fields' => array(
+    'uid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+    'rid' => array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'size' => 'normal',
+      'default' => '0',
+      'unsigned' => TRUE,
+    ),
+  ),
+  'primary key' => array(
+    'uid',
+    'rid',
+  ),
+  'indexes' => array(
+    'rid' => array(
+      'rid',
+    ),
+  ),
+  'mysql_character_set' => 'utf8mb3',
+));
+
+$connection->insert('users_roles')
+->fields(array(
+  'uid',
+  'rid',
+))
+->values(array(
+  'uid' => '1',
+  'rid' => '3',
+))
+->values(array(
+  'uid' => '3',
+  'rid' => '3',
+))
+->execute();
diff --git a/tests/src/Kernel/migrate/TablefieldMigrationTest.php b/tests/src/Kernel/migrate/TablefieldMigrationTest.php
new file mode 100644
index 0000000..f73530e
--- /dev/null
+++ b/tests/src/Kernel/migrate/TablefieldMigrationTest.php
@@ -0,0 +1,152 @@
+<?php
+
+namespace Drupal\Tests\tablefield\Kernel\migrate;
+
+use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
+use Drupal\field\Entity\FieldConfig;
+use Drupal\node\Entity\Node;
+
+/**
+ * Tests Tablefield migration.
+ *
+ * @group tablefield.
+ */
+class TablefieldMigrationTest extends MigrateDrupal7TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'tablefield',
+    'node',
+    'text',
+    'user',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $configSchemaCheckerExclusions = [
+    // Since the schema is missing, this allows us to skip the schema check and
+    // test our transformations.
+    'field.field.node.article.field_table1',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getFixtureFilePath() {
+    return implode(DIRECTORY_SEPARATOR, [
+      drupal_get_path('module', 'tablefield'),
+      'tests',
+      'fixtures',
+      'drupal7.php',
+    ]);
+  }
+
+  /**
+   * Tests Tablefield migration.
+   */
+  public function testTablefieldMigration() {
+    $this->installConfig(['node']);
+    $this->installEntitySchema('node');
+    $this->executeMigration('d7_node_type');
+    $this->migrateUsers(FALSE);
+    $this->executeMigrations(['d7_field']);
+    $this->executeMigrations(['d7_field_instance']);
+    $this->executeMigrations(['d7_node:article']);
+    // Checks migration of tablefield field data.
+    $node = Node::load(8)->field_table1;
+    $value = $node->getValue();
+    $this->assertSame([
+      0 => [
+        0 => 'kjkj',
+        1 => 'knk',
+        2 => 'k',
+        3 => ' m',
+        4 => 'n',
+      ],
+      1 => [
+        0 => 'kjgfhg',
+        1 => 'fhc',
+        2 => 'hch',
+        3 => 'vjb',
+        4 => 'kjb',
+      ],
+      2 => [
+        0 => '',
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+      ],
+      3 => [
+        0 => '',
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+      ],
+      4 => [
+        0 => '',
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => '',
+      ],
+      'caption' => 'table 1.',
+    ], $value[0]['value']);
+    // Checks migration of tablefield config.
+    $storage = FieldConfig::loadByName('node', 'article',
+      'field_table1');
+    $data = $storage->toArray();
+    $this->assertEquals([
+      'value' => [
+        0 => [
+          0 => 'name',
+          1 => 'place',
+          2 => 'animal ',
+          3 => 'thing',
+          4 => 'default',
+        ],
+        1 => [
+          0 => '',
+          1 => '',
+          2 => '',
+          3 => '',
+          4 => '',
+        ],
+        2 => [
+          0 => '',
+          1 => '',
+          2 => '',
+          3 => '',
+          4 => '',
+        ],
+        3 => [
+          0 => '',
+          1 => '',
+          2 => '',
+          3 => '',
+          4 => '',
+        ],
+        4 => [
+          0 => '',
+          1 => '',
+          2 => '',
+          3 => '',
+          4 => '',
+        ],
+      ],
+      'rebuild' => [
+        'cols' => 5,
+        'rows' => 5,
+      ],
+      'format' => '',
+      'caption' => '',
+    ],
+      $data['default_value'][0]
+    );
+  }
+
+}
