diff --git a/core/modules/migrate/src/Entity/Migration.php b/core/modules/migrate/src/Entity/Migration.php
index c287e1f..a250e56 100644
--- a/core/modules/migrate/src/Entity/Migration.php
+++ b/core/modules/migrate/src/Entity/Migration.php
@@ -533,9 +533,14 @@ public function calculateDependencies() {
     parent::calculateDependencies();
     $this->calculatePluginDependencies($this->getSourcePlugin());
     $this->calculatePluginDependencies($this->getDestinationPlugin());
-    // Add dependencies on required migration dependencies.
-    foreach ($this->getMigrationDependencies()['required'] as $dependency) {
-      $this->addDependency('config', $this->getEntityType()->getConfigPrefix() . '.' . $dependency);
+
+    // Add dependencies on required migrations.
+    $dependencies = $this->getMigrationDependencies();
+    if (!empty($dependencies['required'])) {
+      $dependencies = \Drupal::entityManager()->getStorage($this->entityTypeId)->expandDependencies($dependencies);
+      foreach ($dependencies['required'] as $dependency) {
+        $this->addDependency('config', $this->getEntityType()->getConfigPrefix() . '.' . $dependency);
+      }
     }
 
     return $this->dependencies;
diff --git a/core/modules/migrate/src/MigrationStorage.php b/core/modules/migrate/src/MigrationStorage.php
index ccb188f..1003e53 100644
--- a/core/modules/migrate/src/MigrationStorage.php
+++ b/core/modules/migrate/src/MigrationStorage.php
@@ -88,7 +88,7 @@ public function loadMultiple(array $ids = NULL) {
    * @return array
    *   The expanded list of dependencies, organized by group.
    */
-  protected function expandDependencies(array $dependencies) {
+  public function expandDependencies(array $dependencies) {
     $expanded_dependencies = [];
 
     foreach (array_keys($dependencies) as $group) {
diff --git a/core/modules/node/migration_templates/d6_node_revision.yml b/core/modules/node/migration_templates/d6_node_revision.yml
index 9ba85d3..772daec 100644
--- a/core/modules/node/migration_templates/d6_node_revision.yml
+++ b/core/modules/node/migration_templates/d6_node_revision.yml
@@ -39,6 +39,3 @@ process:
 
 destination:
   plugin: entity_revision:node
-migration_dependencies:
-  required:
-    - d6_node:*
diff --git a/core/modules/node/src/Plugin/migrate/builder/d6/Node.php b/core/modules/node/src/Plugin/migrate/builder/d6/Node.php
index 6bc0966..c0a8fc8 100644
--- a/core/modules/node/src/Plugin/migrate/builder/d6/Node.php
+++ b/core/modules/node/src/Plugin/migrate/builder/d6/Node.php
@@ -51,6 +51,13 @@ public function buildMigrations(array $template) {
       $node_type = $row->getSourceProperty('type');
       $values = $template;
       $values['id'] = $template['id'] . '__' . $node_type;
+
+      // If this migration is based on the d6_node_revision template, it should
+      // explicitly depend on the corresponding d6_node variant.
+      if ($template['id'] == 'd6_node_revision') {
+        $values['migration_dependencies']['required'][] = 'd6_node__' . $node_type;
+      }
+
       $migration = Migration::create($values);
 
       $fields = $this->getSourcePlugin('d6_field_instance', ['node_type' => $node_type] + $template['source']);
