diff --git a/connectors/l10n_drupal/l10n_drupal.drupalorg.inc b/connectors/l10n_drupal/l10n_drupal.drupalorg.inc
index 0746bca..615a2b4 100644
--- a/connectors/l10n_drupal/l10n_drupal.drupalorg.inc
+++ b/connectors/l10n_drupal/l10n_drupal.drupalorg.inc
@@ -384,7 +384,7 @@ function l10n_drupal_drupalorg_parse_package($package_file, $release) {
   // Potx module is already a dependency.
   module_load_include('inc', 'potx');
   module_load_include('inc', 'l10n_drupal', 'l10n_drupal.files');
-  module_load_include('inc', 'potx', 'potx.local');
+  module_load_include('inc', 'l10n_drupal', 'l10n_drupal.potx');
 
   // Set up status messages if not in automated mode.
   potx_status('set', POTX_STATUS_MESSAGE);
@@ -420,7 +420,7 @@ function l10n_drupal_drupalorg_parse_package($package_file, $release) {
 
         // Get all source files and save strings with our callback for this release.
         $version = l10n_drupal_detect_major_version($package_file);
-        potx_local_init($temp_path);
+        _l10n_drupal_potx_init();
         $files = _potx_explore_dir($temp_path, '*', $version);
         l10n_drupal_save_file(array($release->pid, $release->rid));
         l10n_drupal_added_string_counter(NULL, TRUE);
diff --git a/connectors/l10n_drupal/l10n_drupal.files.inc b/connectors/l10n_drupal/l10n_drupal.files.inc
index 1f82b20..615b7fd 100644
--- a/connectors/l10n_drupal/l10n_drupal.files.inc
+++ b/connectors/l10n_drupal/l10n_drupal.files.inc
@@ -223,6 +223,7 @@ function l10n_drupal_parse_package($package_file, $release) {
 
   // Potx module is already a dependency.
   module_load_include('inc', 'potx');
+  module_load_include('inc', 'l10n_drupal', 'l10n_drupal.potx');
 
   // Set up status messages if not in automated mode.
   potx_status('set', POTX_STATUS_STRUCTURED);
@@ -254,12 +255,13 @@ function l10n_drupal_parse_package($package_file, $release) {
       // Get all source files and save strings with our callback for this release.
       l10n_drupal_callback_save_version(array($release->pid, $release->rid));
       $version = l10n_drupal_detect_major_version($package_file);
+      _l10n_drupal_potx_init();
       $files = _potx_explore_dir($temp_path, '*', $version);
       l10n_drupal_added_string_counter(NULL, TRUE);
       foreach ($files as $name) {
         _potx_process_file($name, substr($name, strlen($temp_path) + 1), 'l10n_drupal_callback_save_string', 'l10n_drupal_callback_save_version', $version);
       }
-      potx_finish_processing('l10n_drupal_save_string', $version);
+      potx_finish_processing('l10n_drupal_callback_save_string', $version);
 
       $sid_count = l10n_drupal_added_string_counter();
 
diff --git a/connectors/l10n_drupal/l10n_drupal.install b/connectors/l10n_drupal/l10n_drupal.install
index a351ab3..660b42d 100644
--- a/connectors/l10n_drupal/l10n_drupal.install
+++ b/connectors/l10n_drupal/l10n_drupal.install
@@ -60,3 +60,105 @@ function l10n_drupal_require_potx_with_context() {
 
   return $requirement;
 }
+
+/**
+ * Implements hook_schema().
+ */
+function l10n_drupal_schema() {
+  $schema = array();
+
+  $schema['l10n_drupal_parsed_module_data'] = array(
+    'description' => 'Parsed data for modules (Drupal 8+)',
+    'fields' => array(
+      'module_name' => array(
+        'description' => 'Module name.',
+        'type' => 'varchar',
+        'length' => '255',
+        'not null' => TRUE,
+      ),
+      'dependencies' => array(
+        'description' => 'The module\'s dependencies.',
+        'type' => 'text',
+        'size' => 'medium',
+        'serialize' => TRUE,
+      ),
+      'parsed_schema' => array(
+        'description' => 'The module\'s parsed schema.',
+        'type' => 'text',
+        'size' => 'big',
+        'serialize' => TRUE,
+      ),
+    ),
+    'primary key' => array('module_name'),
+  );
+  $schema['l10n_drupal_schema_reverse_lookup'] = array(
+    'description' => 'A reverse lookup table for finding modules based on schema key',
+    'fields' => array(
+      'schema_key' => array(
+        'description' => 'The schema key',
+        'type' => 'varchar',
+        'length' => '500',
+      ),
+      'module_name' => array(
+        'description' => 'The array name',
+        'type' => 'varchar',
+        'length' => '255',
+      )
+    ),
+    'indexes' => array(
+      'schema_key' => array('schema_key'),
+      'module_name' => array('module_name'),
+    ),
+  );
+
+  return $schema;
+}
+
+/**
+ * Install newly required tables potx_parsed_data and potx_schema_reverse_lookup
+ */
+function l10n_drupal_update_7100() {
+  db_create_table('l10n_drupal_parsed_module_data', array(
+    'description' => 'Parsed data for modules (Drupal 8+)',
+    'fields' => array(
+      'module_name' => array(
+        'description' => 'Module name.',
+        'type' => 'varchar',
+        'length' => '255',
+        'not null' => TRUE,
+      ),
+      'dependencies' => array(
+        'description' => 'The module\'s dependencies.',
+        'type' => 'text',
+        'size' => 'medium',
+        'serialize' => TRUE,
+      ),
+      'parsed_schema' => array(
+        'description' => 'The module\'s parsed schema.',
+        'type' => 'text',
+        'size' => 'big',
+        'serialize' => TRUE,
+      ),
+    ),
+    'primary key' => array('module_name'),
+  ));
+  db_create_table('l10n_drupal_schema_reverse_lookup', array(
+    'description' => 'A reverse lookup table for finding modules based on schema key',
+    'fields' => array(
+      'schema_key' => array(
+        'description' => 'The schema key',
+        'type' => 'varchar',
+        'length' => '500',
+      ),
+      'module_name' => array(
+        'description' => 'The array name',
+        'type' => 'varchar',
+        'length' => '255',
+      )
+    ),
+    'indexes' => array(
+      'schema_key' => array('schema_key'),
+      'module_name' => array('module_name'),
+    ),
+  ));
+}
