diff --git a/core/modules/comment/migration_templates/d6_comment.yml b/core/modules/comment/migration_templates/d6_comment.yml
index a7ffc9d..e2089c7 100644
--- a/core/modules/comment/migration_templates/d6_comment.yml
+++ b/core/modules/comment/migration_templates/d6_comment.yml
@@ -9,9 +9,12 @@ source:
 process:
   cid: cid
   pid:
-    plugin: migration
-    migration: d6_comment
-    source: pid
+    - plugin: migration
+      migration: d6_comment
+      source: pid
+      no_stub: true
+    - plugin: default_value
+      default_value: 0
   entity_id: nid
   entity_type: 'constants/entity_type'
   # field_name & comment_type is calculated in
diff --git a/core/modules/comment/migration_templates/d7_comment.yml b/core/modules/comment/migration_templates/d7_comment.yml
index 5845999..2649f60 100644
--- a/core/modules/comment/migration_templates/d7_comment.yml
+++ b/core/modules/comment/migration_templates/d7_comment.yml
@@ -9,9 +9,12 @@ source:
 process:
   cid: cid
   pid:
-    plugin: migration
-    migration: d7_comment
-    source: pid
+    - plugin: migration
+      migration: d7_comment
+      source: pid
+      no_stub: true
+    - plugin: default_value
+      default_value: 0
   entity_id: nid
   entity_type: 'constants/entity_type'
   comment_type: comment_type
diff --git a/core/modules/migrate/src/Plugin/migrate/process/Migration.php b/core/modules/migrate/src/Plugin/migrate/process/Migration.php
index 6a24495..5017437 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Migration.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Migration.php
@@ -155,7 +155,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
   }
 
   /**
-   * Skips the migration process entirely if the value is FALSE.
+   * Skips the migration process entirely if the value is NULL.
    *
    * @param mixed $value
    *   The incoming value to transform.
@@ -163,9 +163,12 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
    * @throws \Drupal\migrate\MigrateSkipProcessException
    */
   protected function skipOnEmpty($value) {
-    if (!array_filter($value)) {
-      throw new MigrateSkipProcessException();
+    foreach ($value as $v) {
+      if (!is_null($v)) {
+        return;
+      }
     }
+    throw new MigrateSkipProcessException();
   }
 
 }
diff --git a/core/modules/taxonomy/migration_templates/d6_taxonomy_term.yml b/core/modules/taxonomy/migration_templates/d6_taxonomy_term.yml
index 0c41c6d..582921d 100644
--- a/core/modules/taxonomy/migration_templates/d6_taxonomy_term.yml
+++ b/core/modules/taxonomy/migration_templates/d6_taxonomy_term.yml
@@ -14,9 +14,12 @@ process:
   description: description
   weight: weight
   parent:
-    plugin: migration
-    migration: d6_taxonomy_term
-    source: parent
+    - plugin: migration
+      migration: d6_taxonomy_term
+      source: parent
+      no_stub: true
+    - plugin: default_value
+      default_value: 0
   changed: timestamp
 destination:
   plugin: entity:taxonomy_term
diff --git a/core/modules/taxonomy/migration_templates/d7_taxonomy_term.yml b/core/modules/taxonomy/migration_templates/d7_taxonomy_term.yml
index 7546660..1385a47 100644
--- a/core/modules/taxonomy/migration_templates/d7_taxonomy_term.yml
+++ b/core/modules/taxonomy/migration_templates/d7_taxonomy_term.yml
@@ -14,9 +14,12 @@ process:
   description: description
   weight: weight
   parent:
-    plugin: migration
-    migration: d7_taxonomy_term
-    source: parent
+    - plugin: migration
+      migration: d7_taxonomy_term
+      source: parent
+      no_stub: true
+    - plugin: default_value
+      default_value: 0
   changed: timestamp
 destination:
   plugin: entity:taxonomy_term
diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php
index 399c3ed..4c98e41 100644
--- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php
+++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTaxonomyTermTest.php
@@ -69,6 +69,17 @@ public function testTaxonomyTerms() {
       ),
     );
     $terms = Term::loadMultiple(array_keys($expected_results));
+
+    // Find each term in the tree.
+    $storage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
+    $vids = array_unique(array_column($expected_results, 'vid'));
+    $tree_terms = [];
+    foreach ($vids as $vid) {
+      foreach ($storage->loadTree($vid) as $term) {
+        $tree_terms[$term->tid] = $term;
+      }
+    }
+
     foreach ($expected_results as $tid => $values) {
       /** @var Term $term */
       $term = $terms[$tid];
@@ -86,6 +97,11 @@ public function testTaxonomyTerms() {
         }
         $this->assertIdentical($parents, $values['parent']);
       }
+
+      $this->assertArrayHasKey($tid, $tree_terms, "Term $tid exists in vocabulary tree");
+      $tree_term = $tree_terms[$tid];
+      $this->assertEquals($values['parent'], $tree_term->parents,
+        "Term $tid has correct parents in vocabulary tree");
     }
   }
 
