diff --git a/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php b/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
index 536303e..5e7d9de 100644
--- a/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
+++ b/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
@@ -136,6 +136,19 @@ public function getDerivativeDefinitions($base_plugin_definition) {
     }
 
     try {
+      $source_plugin = static::getSourcePlugin('d6_vocabulary_field_instance');
+      $source_plugin->checkRequirements();
+
+      foreach ($source_plugin as $row) {
+        $fields[$row->getSourceProperty('bundle')][$row->getSourceProperty('field_name')] = $row->getSourceProperty('field_name');
+      }
+    }
+    catch (RequirementsException $e) {
+      // If checkRequirements() failed then the taxonomy module did not exist
+      // and we do not have any term fields.
+    }
+
+    try {
       foreach ($node_types as $row) {
         $node_type = $row->getSourceProperty('type');
         $values = $base_plugin_definition;
diff --git a/core/modules/node/src/Plugin/migrate/source/d6/Node.php b/core/modules/node/src/Plugin/migrate/source/d6/Node.php
index ffa2659..e92840b 100644
--- a/core/modules/node/src/Plugin/migrate/source/d6/Node.php
+++ b/core/modules/node/src/Plugin/migrate/source/d6/Node.php
@@ -6,6 +6,7 @@
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Extension\ModuleHandler;
 use Drupal\Core\State\StateInterface;
+use Drupal\migrate\Plugin\MigrationDeriverTrait;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\Row;
 use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
@@ -20,6 +21,8 @@
  */
 class Node extends DrupalSqlBase {
 
+  use MigrationDeriverTrait;
+
   /**
    * The join options between the node and the node_revisions table.
    */
@@ -172,6 +175,20 @@ public function prepareRow(Row $row) {
       $row->setSourceProperty('tnid', $row->getSourceProperty('nid'));
     }
 
+    if ($this->moduleExists('taxonomy')) {
+      // Select the terms belonging to the revision selected.
+      foreach (static::getSourcePlugin('d6_taxonomy_vocabulary') as $vocabulary) {
+        $query = $this->select('term_node', 'tn')
+          ->fields('tn', ['tid'])
+          ->condition('n.nid', $vocabulary->getSourceProperty('nid'));
+        $query->join('node', 'n', static::JOIN);
+        $query->innerJoin('term_data', 'td', 'td.tid = tn.tid AND td.vid = :vid', [':vid' => $vocabulary->getSourceProperty('vid')]);
+        if ($tid = $query->execute()->fetchCol()) {
+          $row->setSourceProperty($vocabulary->getSourceProperty('vid'), $tid);
+        }
+      }
+    }
+
     return parent::prepareRow($row);
   }
 
