diff --git a/core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateForumConfigsTest.php b/core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateForumConfigsTest.php
index 7aa848e..302c3d1 100644
--- a/core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateForumConfigsTest.php
+++ b/core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateForumConfigsTest.php
@@ -36,7 +36,7 @@ public function testForumSettings() {
     $this->assertIdentical(15, $config->get('topics.hot_threshold'));
     $this->assertIdentical(25, $config->get('topics.page_limit'));
     $this->assertIdentical(1, $config->get('topics.order'));
-    $this->assertIdentical('vocabulary_1_i_0_', $config->get('vocabulary'));
+    $this->assertIdentical('forums', $config->get('vocabulary'));
     // This is 'forum_block_num_0' in D6, but block:active:limit' in D8.
     $this->assertSame(3, $config->get('block.active.limit'));
     // This is 'forum_block_num_1' in D6, but 'block:new:limit' in D8.
diff --git a/core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateForumTest.php b/core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateForumTest.php
new file mode 100644
index 0000000..dbddd09
--- /dev/null
+++ b/core/modules/forum/tests/src/Kernel/Migrate/d6/MigrateForumTest.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace Drupal\Tests\forum\Kernel\Migrate\d6;
+
+use Drupal\node\Entity\Node;
+use Drupal\Tests\node\Kernel\Migrate\d6\MigrateNodeTestBase;
+
+/**
+ * Tests forum migration from Drupal 6 to Drupal 8.
+ *
+ * @group migrate_drupal_6
+ */
+class MigrateForumTest extends MigrateNodeTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'comment',
+    'forum',
+    'menu_ui',
+    'taxonomy',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->installEntitySchema('comment');
+    $this->installSchema('comment', ['comment_entity_statistics']);
+    $this->installSchema('forum', ['forum', 'forum_index']);
+    $this->installConfig(['comment', 'forum']);
+    $this->migrateContent();
+    $this->migrateTaxonomy();
+    $this->executeMigrations([
+      'd6_comment_type',
+      'd6_comment_field',
+      'd6_comment_field_instance',
+      'd6_comment_entity_display',
+      'd6_comment_entity_form_display',
+      'd6_comment',
+      'd6_term_node',
+    ]);
+  }
+
+  /**
+   * Tests forum migration.
+   */
+  public function testForumMigration() {
+    $node = Node::load(19);
+    $this->assertEquals(7, $node->taxonomy_forums->target_id);
+  }
+
+}
diff --git a/core/modules/migrate_drupal/migrate_drupal.module b/core/modules/migrate_drupal/migrate_drupal.module
index 9b00e07..91df38e 100644
--- a/core/modules/migrate_drupal/migrate_drupal.module
+++ b/core/modules/migrate_drupal/migrate_drupal.module
@@ -57,7 +57,15 @@ function migrate_drupal_migration_plugins_alter(&$definitions) {
         $plugin_ids = ['d6_term_node:' . $source_vid, 'd6_term_node_revision:' . $source_vid];
         foreach ($plugin_ids as $plugin_id) {
           if (isset($definitions[$plugin_id])) {
-            $definitions[$plugin_id]['process'][$row->getDestinationProperty('vid')] = 'tid';
+            // The Forum module is expecting 'taxonomy_forums' as the field name
+            // for the forum nodes. The 'forum_vocabulary' source property is
+            // evaluated in Drupal\taxonomy\Plugin\migrate\source\d6\Vocabulary
+            // and is set to true if the vocabulary vid being migrated is the
+            // same as the one in the 'forum_nav_vocabulary' variable on the
+            // source site. See https://www.drupal.org/node/2669030 for more
+            // information.
+            $destination_vid = $row->getSourceProperty('forum_vocabulary') ? 'taxonomy_forums' : $row->getDestinationProperty('vid');
+            $definitions[$plugin_id]['process'][$destination_vid] = 'tid';
           }
         }
       }
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
index c94870e..f1735c1 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
@@ -1942,6 +1942,54 @@
   'mail' => 'comment3@example.com',
   'homepage' => 'https://www.drupal.org',
 ))
+->values(array(
+  'cid' => '4',
+  'pid' => '0',
+  'nid' => '19',
+  'uid' => '1',
+  'subject' => 'Subject 1',
+  'comment' => 'Comment 1',
+  'hostname' => '127.0.0.1',
+  'timestamp' => '1494367652',
+  'status' => '0',
+  'format' => '1',
+  'thread' => '01/',
+  'name' => 'root',
+  'mail' => '',
+  'homepage' => '',
+))
+->values(array(
+  'cid' => '5',
+  'pid' => '4',
+  'nid' => '19',
+  'uid' => '1',
+  'subject' => 'Subject 2',
+  'comment' => 'Comment 2',
+  'hostname' => '127.0.0.1',
+  'timestamp' => '1494367659',
+  'status' => '0',
+  'format' => '1',
+  'thread' => '01.00/',
+  'name' => 'root',
+  'mail' => '',
+  'homepage' => '',
+))
+->values(array(
+  'cid' => '6',
+  'pid' => '5',
+  'nid' => '19',
+  'uid' => '1',
+  'subject' => 'Subject 3',
+  'comment' => 'Comment 3',
+  'hostname' => '127.0.0.1',
+  'timestamp' => '1494367666',
+  'status' => '0',
+  'format' => '1',
+  'thread' => '01.00.00/',
+  'name' => 'root',
+  'mail' => '',
+  'homepage' => '',
+))
 ->execute();
 
 $connection->schema()->createTable('config', array(
@@ -8345,6 +8393,19 @@
   'mysql_character_set' => 'utf8',
 ));
 
+$connection->insert('forum')
+->fields(array(
+  'nid',
+  'vid',
+  'tid',
+))
+->values(array(
+  'nid' => '19',
+  'vid' => '22',
+  'tid' => '7',
+))
+->execute();
+
 $connection->schema()->createTable('history', array(
   'fields' => array(
     'uid' => array(
@@ -8424,6 +8485,11 @@
   'nid' => '18',
   'timestamp' => '1493066711',
 ))
+->values(array(
+  'uid' => '1',
+  'nid' => '19',
+  'timestamp' => '1494367685',
+))
 ->execute();
 
 $connection->schema()->createTable('i18n_blocks', array(
@@ -43170,6 +43236,23 @@
   'tnid' => '0',
   'translate' => '0',
 ))
+->values(array(
+  'nid' => '19',
+  'vid' => '22',
+  'type' => 'forum',
+  'language' => '',
+  'title' => 'New Forum Topic',
+  'uid' => '1',
+  'status' => '1',
+  'created' => '1494367644',
+  'changed' => '1494367644',
+  'comment' => '2',
+  'promote' => '0',
+  'moderate' => '0',
+  'sticky' => '0',
+  'tnid' => '0',
+  'translate' => '0',
+))
 ->execute();
 
 $connection->schema()->createTable('node_access', array(
@@ -43369,6 +43452,13 @@
   'last_comment_uid' => '1',
   'comment_count' => '0',
 ))
+->values(array(
+  'nid' => '19',
+  'last_comment_timestamp' => '1494367666',
+  'last_comment_name' => '',
+  'last_comment_uid' => '1',
+  'comment_count' => '3',
+))
 ->execute();
 
 $connection->schema()->createTable('node_counter', array(
@@ -43444,6 +43534,12 @@
   'daycount' => '1',
   'timestamp' => '1493066711',
 ))
+->values(array(
+  'nid' => '19',
+  'totalcount' => '5',
+  'daycount' => '5',
+  'timestamp' => '1494367685',
+))
 ->execute();
 
 $connection->schema()->createTable('node_revisions', array(
@@ -43750,6 +43846,17 @@
   'timestamp' => '1494966544',
   'format' => '1',
 ))
+->values(array(
+  'nid' => '19',
+  'vid' => '22',
+  'uid' => '1',
+  'title' => 'New Forum Topic',
+  'body' => 'New Forum Body',
+  'teaser' => 'New Forum Teaser',
+  'log' => '',
+  'timestamp' => '1494367644',
+  'format' => '1',
+))
 ->execute();
 
 $connection->schema()->createTable('node_type', array(
@@ -46017,6 +46124,15 @@
   'language' => '',
   'trid' => '0',
 ))
+->values(array(
+  'tid' => '7',
+  'vid' => '6',
+  'name' => 'General discussion',
+  'description' => '',
+  'weight' => '0',
+  'language' => '',
+  'trid' => '0',
+))
 ->execute();
 
 $connection->schema()->createTable('term_hierarchy', array(
@@ -46140,6 +46256,11 @@
   'vid' => '2',
   'tid' => '5',
 ))
+->values(array(
+  'nid' => '19',
+  'vid' => '22',
+  'tid' => '7',
+))
 ->execute();
 
 $connection->schema()->createTable('term_relation', array(
@@ -47618,7 +47739,7 @@
 ))
 ->values(array(
   'name' => 'forum_nav_vocabulary',
-  'value' => 's:1:"1";',
+  'value' => 's:1:"6";',
 ))
 ->values(array(
   'name' => 'forum_order',
@@ -48204,6 +48325,20 @@
   'weight' => '7',
   'language' => '',
 ))
+->values(array(
+  'vid' => '6',
+  'name' => 'Forums',
+  'description' => '',
+  'help' => '',
+  'relations' => '1',
+  'hierarchy' => '0',
+  'multiple' => '0',
+  'required' => '0',
+  'tags' => '0',
+  'module' => 'taxonomy',
+  'weight' => '0',
+  'language' => '',
+))
 ->execute();
 
 $connection->schema()->createTable('vocabulary_node_types', array(
@@ -48239,7 +48374,7 @@
   'type' => 'article',
 ))
 ->values(array(
-  'vid' => '1',
+  'vid' => '6',
   'type' => 'forum',
 ))
 ->values(array(
diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php
index c3c5170..a4f70b7 100644
--- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php
+++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MigrateUpgrade6Test.php
@@ -39,19 +39,19 @@ protected function getEntityCounts() {
       'block' => 35,
       'block_content' => 2,
       'block_content_type' => 1,
-      'comment' => 3,
+      'comment' => 6,
       'comment_type' => 3,
       'contact_form' => 5,
       'configurable_language' => 5,
       'editor' => 2,
-      'field_config' => 73,
+      'field_config' => 72,
       'field_storage_config' => 48,
       'file' => 7,
       'filter_format' => 7,
       'image_style' => 5,
       'language_content_settings' => 2,
       'migration' => 105,
-      'node' => 16,
+      'node' => 17,
       'node_type' => 13,
       'rdf_mapping' => 7,
       'search_page' => 2,
@@ -59,7 +59,7 @@ protected function getEntityCounts() {
       'shortcut_set' => 1,
       'action' => 22,
       'menu' => 8,
-      'taxonomy_term' => 6,
+      'taxonomy_term' => 7,
       'taxonomy_vocabulary' => 6,
       'tour' => 4,
       'user' => 7,
diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_display.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_display.yml
index 8f154c3..ddbb86e 100644
--- a/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_display.yml
+++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_display.yml
@@ -24,9 +24,16 @@ process:
       plugin: skip_on_empty
       method: row
   field_name:
-    plugin: migration_lookup
-    migration: d6_taxonomy_vocabulary
-    source: vid
+    -
+      plugin: migration_lookup
+      migration: d6_taxonomy_vocabulary
+      source: vid
+    -
+      # This plugin checks if the vocabulary being migrated is the one used for
+      # forums. If it is, the field name is set to 'taxonomy_forums' as it is
+      # what the Forum module is expecting. Otherwise, it is left unchanged.
+      # See https://www.drupal.org/node/2669030 for more information.
+      plugin: forum_vocabulary
 destination:
   plugin: component_entity_display
 migration_dependencies:
diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_form_display.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_form_display.yml
index 4ac6d64..05a64ca 100644
--- a/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_form_display.yml
+++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_entity_form_display.yml
@@ -28,9 +28,16 @@ process:
       plugin: skip_on_empty
       method: row
   field_name:
-    plugin: migration_lookup
-    migration: d6_taxonomy_vocabulary
-    source: vid
+    -
+      plugin: migration_lookup
+      migration: d6_taxonomy_vocabulary
+      source: vid
+    -
+      # This plugin checks if the vocabulary being migrated is the one used for
+      # forums. If it is, the field name is set to 'taxonomy_forums' as it is
+      # what the Forum module is expecting. Otherwise, it is left unchanged.
+      # See https://www.drupal.org/node/2669030 for more information.
+      plugin: forum_vocabulary
 destination:
   plugin: component_entity_form_display
 migration_dependencies:
diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml
index 082386f..7af79f0 100644
--- a/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml
+++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml
@@ -17,6 +17,12 @@ process:
       migration: d6_taxonomy_vocabulary
       source: vid
     -
+      # This plugin checks if the vocabulary being migrated is the one used for
+      # forums. If it is, the field name is set to 'taxonomy_forums' as it is
+      # what the Forum module is expecting. Otherwise, it is left unchanged.
+      # See https://www.drupal.org/node/2669030 for more information.
+      plugin: forum_vocabulary
+    -
       plugin: skip_on_empty
       method: row
   'settings/target_type': 'constants/target_entity_type'
diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_field_instance.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_field_instance.yml
index 6fe5eed..3d80f5d 100644
--- a/core/modules/taxonomy/migration_templates/d6_vocabulary_field_instance.yml
+++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_field_instance.yml
@@ -24,6 +24,12 @@ process:
       migration: d6_taxonomy_vocabulary
       source: vid
     -
+      # This plugin checks if the vocabulary being migrated is the one used for
+      # forums. If it is, the field name is set to 'taxonomy_forums' as it is
+      # what the Forum module is expecting. Otherwise, it is left unchanged.
+      # See https://www.drupal.org/node/2669030 for more information.
+      plugin: forum_vocabulary
+    -
       plugin: skip_on_empty
       method: row
   label: name
diff --git a/core/modules/taxonomy/src/Plugin/migrate/process/ForumVocabulary.php b/core/modules/taxonomy/src/Plugin/migrate/process/ForumVocabulary.php
new file mode 100644
index 0000000..bafebbc
--- /dev/null
+++ b/core/modules/taxonomy/src/Plugin/migrate/process/ForumVocabulary.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Drupal\taxonomy\Plugin\migrate\process;
+
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+
+/**
+ * Checks if the vocabulary being migrated is the one used for forums.
+ *
+ * The forum module is expecting 'taxonomy_forums' as the field name for the
+ * forum nodes. The 'forum_vocabulary' source property is evaluated in
+ * Drupal\taxonomy\Plugin\migrate\source\d6\Vocabulary and is set to true if
+ * the vocabulary vid being migrated is the same as the one in the
+ * 'forum_nav_vocabulary' variable on the source site.
+ * See https://www.drupal.org/node/2669030 for more information.
+ *
+ * @MigrateProcessPlugin(
+ *   id = "forum_vocabulary"
+ * )
+ */
+class ForumVocabulary extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    if ($row->getSourceProperty('forum_vocabulary')) {
+      $value = 'taxonomy_forums';
+    }
+    return $value;
+  }
+
+}
diff --git a/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php b/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php
index 714fa93..04049fa 100644
--- a/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php
+++ b/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php
@@ -69,6 +69,15 @@ public function prepareRow(Row $row) {
       ->fetchCol();
     $row->setSourceProperty('node_types', $node_types);
     $row->setSourceProperty('cardinality', ($row->getSourceProperty('tags') == 1 || $row->getSourceProperty('multiple') == 1) ? FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED : 1);
+
+    // If the vid of the vocabulary being migrated is equal to the vid in the
+    // 'forum_nav_vocabulary' variable, set the 'forum_vocabulary' source
+    // property to true so we can know this is the vocabulary used for forums.
+    // See https://www.drupal.org/node/2669030 for more information.
+    if ($this->variableGet('forum_nav_vocabulary', 0) == $row->getSourceProperty('vid')) {
+      $row->setSourceProperty('forum_vocabulary', TRUE);
+    }
+
     return parent::prepareRow($row);
   }
 
