diff --git a/core/modules/node/migrations/d6_node_revision.yml b/core/modules/content_translation/migrations/d6_node_revision_translation.yml
similarity index 58%
copy from core/modules/node/migrations/d6_node_revision.yml
copy to core/modules/content_translation/migrations/d6_node_revision_translation.yml
index 732c9abe27..951094ef98 100644
--- a/core/modules/node/migrations/d6_node_revision.yml
+++ b/core/modules/content_translation/migrations/d6_node_revision_translation.yml
@@ -1,17 +1,20 @@
-id: d6_node_revision
-label: Node revisions
-audit: true
+id: d6_node_revision_translation
+label: Node revision translations
 migration_tags:
   - Drupal 6
+  - translation
   - Content
+  - Multilingual
 deriver: Drupal\node\Plugin\migrate\D6NodeDeriver
 source:
   plugin: d6_node_revision
+  translations: true
+  constants:
+    revision_translation_affected: true
 process:
   # If you are using this file to build a custom migration consider removing
-  # the nid and vid fields to allow incremental migrations.
-  nid: nid
-  vid: vid
+  # the nid field to allow incremental migrations.
+  nid: tnid
   langcode:
     plugin: default_value
     source: language
@@ -32,12 +35,12 @@ process:
   revision_uid: revision_uid
   revision_log: log
   revision_timestamp: timestamp
-
-#  unmapped d6 fields.
-#  tnid
-#  translate
-#  moderate
-#  comment
-
+  content_translation_source: source_langcode
+  revision_translation_affected: constants/revision_translation_affected
 destination:
   plugin: entity_revision:node
+  translations: true
+  destination_module: content_translation
+migration_dependencies:
+  required:
+    - d6_node_translation
diff --git a/core/modules/node/migrations/d7_node_revision.yml b/core/modules/content_translation/migrations/d7_node_revision_translation.yml
similarity index 60%
copy from core/modules/node/migrations/d7_node_revision.yml
copy to core/modules/content_translation/migrations/d7_node_revision_translation.yml
index 7310b0d5b0..d163cea4ec 100644
--- a/core/modules/node/migrations/d7_node_revision.yml
+++ b/core/modules/content_translation/migrations/d7_node_revision_translation.yml
@@ -1,17 +1,18 @@
-id: d7_node_revision
-label: Node revisions
-audit: true
+id: d7_node_revision_translation
+label: Node revision translations
 migration_tags:
   - Drupal 7
+  - translation
   - Content
+  - Multilingual
 deriver: Drupal\node\Plugin\migrate\D7NodeDeriver
 source:
   plugin: d7_node_revision
+  translations: true
 process:
   # If you are using this file to build a custom migration consider removing
-  # the nid and vid fields to allow incremental migrations.
-  nid: nid
-  vid: vid
+  # the nid field to allow incremental migrations.
+  nid: tnid
   langcode:
     plugin: default_value
     source: language
@@ -26,8 +27,13 @@ process:
   revision_uid: revision_uid
   revision_log: log
   revision_timestamp: timestamp
+  content_translation_source: source_langcode
 destination:
   plugin: entity_revision:node
+  translations: true
+  content_translation_update_definitions:
+    - node
+  destination_module: content_translation
 migration_dependencies:
   required:
-    - d7_node
+    - d7_node_translation
diff --git a/core/modules/file/migrations/d6_upload.yml b/core/modules/file/migrations/d6_upload.yml
index 1c34e5873c..a4e1dedf61 100644
--- a/core/modules/file/migrations/d6_upload.yml
+++ b/core/modules/file/migrations/d6_upload.yml
@@ -7,7 +7,6 @@ source:
   plugin: d6_upload
 process:
   nid: nid
-  vid: vid
   langcode:
     plugin: user_langcode
     source: language
diff --git a/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php b/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
index 24e552edde..39c17be6f4 100644
--- a/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
+++ b/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
@@ -227,6 +227,9 @@ protected function updateEntity(EntityInterface $entity, Row $row) {
         $language = $row->getDestinationProperty($property);
         if (!$entity->hasTranslation($language)) {
           $entity->addTranslation($language);
+          if ($this->storage->getEntityType()->isRevisionable()) {
+            $entity->setNewRevision(TRUE);
+          }
 
           // We're adding a translation, so delete it on rollback.
           $rollback_action = MigrateIdMapInterface::ROLLBACK_DELETE;
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
index caa55b0e4c..c40bb46a4d 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
@@ -3066,6 +3066,18 @@
   'active' => '1',
   'locked' => '0',
 ))
+->values(array(
+  'field_name' => 'field_text_field',
+  'type' => 'text',
+  'global_settings' => 'a:4:{s:15:"text_processing";s:1:"0";s:10:"max_length";s:0:"";s:14:"allowed_values";s:0:"";s:18:"allowed_values_php";s:0:"";}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'text',
+  'db_columns' => 'a:1:{s:5:"value";a:5:{s:4:"type";s:4:"text";s:4:"size";s:6:"normal";s:8:"not null";b:0;s:8:"sortable";b:1;s:5:"views";b:1;}}',
+  'active' => '1',
+  'locked' => '0',
+))
 ->execute();
 $connection->schema()->createTable('content_node_field_instance', array(
   'fields' => array(
@@ -3519,6 +3531,18 @@
   'widget_module' => 'number',
   'widget_active' => '1',
 ))
+->values(array(
+  'field_name' => 'field_text_field',
+  'type_name' => 'page',
+  'weight' => '31',
+  'label' => 'Text',
+  'widget_type' => 'text_textfield',
+  'widget_settings' => 'a:4:{s:4:"rows";i:5;s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:5:"value";s:0:"";s:14:"_error_element";s:48:"default_value_widget][field_text_field][0][value";}}s:17:"default_value_php";N;}',
+  'display_settings' => 'a:5:{s:5:"label";a:2:{s:6:"format";s:5:"above";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+  'description' => '',
+  'widget_module' => 'text',
+  'widget_active' => '1',
+))
 ->execute();
 $connection->schema()->createTable('content_type_employee', array(
   'fields' => array(
@@ -3673,21 +3697,28 @@
 ->values(array(
   'vid' => '13',
   'nid' => '10',
-  'field_text_field_value' => NULL,
+  'field_text_field_value' => 'McCoy first revision (en)',
   'field_reference_nid' => '13',
   'field_reference_2_nid' => '13',
 ))
 ->values(array(
   'vid' => '14',
   'nid' => '11',
-  'field_text_field_value' => NULL,
+  'field_text_field_value' => 'McCoy first revision (fr)',
   'field_reference_nid' => '20',
   'field_reference_2_nid' => '20',
 ))
 ->values(array(
+  'vid' => '15',
+  'nid' => '12',
+  'field_text_field_value' => 'Zulu first revision (zu)',
+  'field_reference_nid' => NULL,
+  'field_reference_2_nid' => NULL,
+))
+->values(array(
   'vid' => '16',
   'nid' => '13',
-  'field_text_field_value' => NULL,
+  'field_text_field_value' => 'Zulu first revision (en)',
   'field_reference_nid' => '10',
   'field_reference_2_nid' => '10',
 ))
@@ -3698,7 +3729,34 @@
   'field_reference_nid' => '11',
   'field_reference_2_nid' => '11',
 ))
-->execute();
+->values(array(
+  'vid' => '24',
+  'nid' => '10',
+  'field_text_field_value' => 'McCoy current revision (en)',
+  'field_reference_nid' => '13',
+  'field_reference_2_nid' => '13',
+))
+->values(array(
+  'vid' => '25',
+  'nid' => '11',
+  'field_text_field_value' => 'McCoy current revision (fr)',
+  'field_reference_nid' => '20',
+  'field_reference_2_nid' => '20',
+))
+->values(array(
+  'vid' => '26',
+  'nid' => '12',
+  'field_text_field_value' => 'Zulu current revision (zu)',
+  'field_reference_nid' => NULL,
+  'field_reference_2_nid' => NULL,
+))
+->values(array(
+  'vid' => '27',
+  'nid' => '13',
+  'field_text_field_value' => 'Zulu current revision (en)',
+  'field_reference_nid' => '10',
+  'field_reference_2_nid' => '10',
+))->execute();
 $connection->schema()->createTable('content_type_story', array(
   'fields' => array(
     'nid' => array(
@@ -44615,14 +44673,14 @@
 ))
 ->values(array(
   'nid' => '10',
-  'vid' => '13',
+  'vid' => '24',
   'type' => 'page',
   'language' => 'en',
   'title' => 'The Real McCoy',
   'uid' => '1',
   'status' => '1',
   'created' => '1444238800',
-  'changed' => '1444238808',
+  'changed' => '1521927089',
   'comment' => '2',
   'promote' => '1',
   'moderate' => '0',
@@ -44632,14 +44690,14 @@
 ))
 ->values(array(
   'nid' => '11',
-  'vid' => '14',
+  'vid' => '25',
   'type' => 'page',
   'language' => 'fr',
   'title' => 'Le Vrai McCoy',
   'uid' => '1',
   'status' => '1',
   'created' => '1444239050',
-  'changed' => '1444239050',
+  'changed' => '1521927113',
   'comment' => '2',
   'promote' => '1',
   'moderate' => '0',
@@ -44649,14 +44707,14 @@
 ))
 ->values(array(
   'nid' => '12',
-  'vid' => '15',
+  'vid' => '26',
   'type' => 'page',
   'language' => 'zu',
   'title' => 'Abantu zulu',
   'uid' => '1',
   'status' => '1',
   'created' => '1444238800',
-  'changed' => '1444238808',
+  'changed' => '1521927131',
   'comment' => '0',
   'promote' => '0',
   'moderate' => '0',
@@ -44666,14 +44724,14 @@
 ))
 ->values(array(
   'nid' => '13',
-  'vid' => '16',
+  'vid' => '27',
   'type' => 'page',
   'language' => 'en',
   'title' => 'The Zulu People',
   'uid' => '1',
   'status' => '1',
   'created' => '1444239050',
-  'changed' => '1444239050',
+  'changed' => '1521927148',
   'comment' => '0',
   'promote' => '0',
   'moderate' => '0',
@@ -45397,10 +45455,10 @@
   'nid' => '10',
   'vid' => '13',
   'uid' => '1',
-  'title' => 'The Real McCoy',
+  'title' => 'The Real McCoy (first revision)',
   'body' => "In the original, Queen's English.",
   'teaser' => "In the original, Queen's English.",
-  'log' => '',
+  'log' => 'First revision (en)',
   'timestamp' => '1444238808',
   'format' => '1',
 ))
@@ -45408,10 +45466,10 @@
   'nid' => '11',
   'vid' => '14',
   'uid' => '1',
-  'title' => 'Le Vrai McCoy',
+  'title' => 'Le Vrai McCoy (first revision)',
   'body' => 'Ooh là là!',
   'teaser' => 'Ooh là là!',
-  'log' => '',
+  'log' => 'First revision (fr)',
   'timestamp' => '1444239050',
   'format' => '1',
 ))
@@ -45419,10 +45477,10 @@
   'nid' => '12',
   'vid' => '15',
   'uid' => '1',
-  'title' => 'Abantu zulu',
+  'title' => 'Abantu zulu (first revision)',
   'body' => 'Mr. Crusher, ready a collision course with the Borg ship.',
   'teaser' => 'Mr. Crusher, ready a collision course with the Borg ship.',
-  'log' => '',
+  'log' => 'First revision (zu)',
   'timestamp' => '1444238808',
   'format' => '1',
 ))
@@ -45430,10 +45488,10 @@
   'nid' => '13',
   'vid' => '16',
   'uid' => '1',
-  'title' => 'The Zulu People',
+  'title' => 'The Zulu People (first revision)',
   'body' => 'Mr. Crusher, ready a collision course with the Borg ship.',
   'teaser' => 'Mr. Crusher, ready a collision course with the Borg ship.',
-  'log' => '',
+  'log' => 'First revision (en)',
   'timestamp' => '1444239050',
   'format' => '1',
 ))
@@ -45547,6 +45605,50 @@
   'timestamp' => '1534014687',
   'format' => '1',
 ))
+->values(array(
+  'nid' => '10',
+  'vid' => '24',
+  'uid' => '1',
+  'title' => 'The Real McCoy',
+  'body' => "In the original, Queen's English.",
+  'teaser' => "In the original, Queen's English.",
+  'log' => 'Current revision (en)',
+  'timestamp' => '1521927089',
+  'format' => '1',
+))
+->values(array(
+  'nid' => '11',
+  'vid' => '25',
+  'uid' => '1',
+  'title' => 'Le Vrai McCoy',
+  'body' => 'Ooh là là!',
+  'teaser' => 'Ooh là là!',
+  'log' => 'Current revision (fr)',
+  'timestamp' => '1521927113',
+  'format' => '1',
+))
+->values(array(
+  'nid' => '12',
+  'vid' => '26',
+  'uid' => '1',
+  'title' => 'Abantu zulu',
+  'body' => 'Mr. Crusher, ready a collision course with the Borg ship.',
+  'teaser' => 'Mr. Crusher, ready a collision course with the Borg ship.',
+  'log' => 'Current revision (zu)',
+  'timestamp' => '1521927131',
+  'format' => '1',
+))
+->values(array(
+  'nid' => '13',
+  'vid' => '27',
+  'uid' => '1',
+  'title' => 'The Zulu People',
+  'body' => 'Mr. Crusher, ready a collision course with the Borg ship.',
+  'teaser' => 'Mr. Crusher, ready a collision course with the Borg ship.',
+  'log' => 'Current revision (en)',
+  'timestamp' => '1521927148',
+  'format' => '1',
+))
 ->execute();
 $connection->schema()->createTable('node_type', array(
   'fields' => array(
@@ -48278,7 +48380,7 @@
 ->values(array(
   'fid' => '3',
   'nid' => '12',
-  'vid' => '15',
+  'vid' => '26',
   'description' => 'file 12-15-3',
   'list' => '0',
   'weight' => '0',
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
index dcdb0897d3..07efa0fa75 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
@@ -5080,7 +5080,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'body_value' => "...is that it's the absolute best show ever. Trust me, I would know.",
@@ -5092,7 +5092,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '0',
   'body_value' => "is - ...is that it's the absolute best show ever. Trust me, I would know.",
@@ -6926,23 +6926,23 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'field_link_url' => '<front>',
-  'field_link_title' => 'Home',
-  'field_link_attributes' => 'a:0:{}',
+  'field_link_title' => NULL,
+  'field_link_attributes' => 'a:1:{s:5:"title";s:0:"";}',
 ))
 ->values(array(
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '0',
   'field_link_url' => '<front>',
-  'field_link_title' => 'Home',
+  'field_link_title' => NULL,
   'field_link_attributes' => 'a:1:{s:5:"title";s:0:"";}',
 ))
 ->execute();
@@ -7554,7 +7554,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'field_reference_target_id' => '5',
@@ -7564,7 +7564,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '0',
   'field_reference_target_id' => '4',
@@ -7574,7 +7574,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '4',
-  'revision_id' => '4',
+  'revision_id' => '13',
   'language' => 'und',
   'delta' => '0',
   'field_reference_target_id' => '3',
@@ -7584,7 +7584,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '5',
-  'revision_id' => '5',
+  'revision_id' => '14',
   'language' => 'und',
   'delta' => '0',
   'field_reference_target_id' => '2',
@@ -7690,7 +7690,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'field_reference_2_target_id' => '5',
@@ -7700,7 +7700,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '0',
   'field_reference_2_target_id' => '4',
@@ -7710,7 +7710,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '4',
-  'revision_id' => '4',
+  'revision_id' => '13',
   'language' => 'und',
   'delta' => '0',
   'field_reference_2_target_id' => '3',
@@ -7720,7 +7720,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '5',
-  'revision_id' => '5',
+  'revision_id' => '14',
   'language' => 'und',
   'delta' => '0',
   'field_reference_2_target_id' => '2',
@@ -7803,7 +7803,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'field_tags_tid' => '9',
@@ -7813,7 +7813,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '0',
   'field_tags_tid' => '9',
@@ -7823,7 +7823,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '1',
   'field_tags_tid' => '14',
@@ -7833,7 +7833,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '1',
   'field_tags_tid' => '14',
@@ -7843,7 +7843,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '2',
   'field_tags_tid' => '17',
@@ -7853,7 +7853,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '2',
   'field_tags_tid' => '17',
@@ -8694,6 +8694,63 @@
   'mysql_character_set' => 'utf8',
 ));
 
+$connection->insert('field_data_field_text_plain')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_text_plain_value',
+  'field_text_plain_format',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'DS9 2nd rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'is - DS9 2nd rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '13',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'is - Firefly 2nd rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '5',
+  'revision_id' => '14',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'Firefly 2nd rev',
+  'field_text_plain_format' => NULL,
+))
+->execute();
 $connection->schema()->createTable('field_data_field_text_plain_filtered', array(
   'fields' => array(
     'entity_type' => array(
@@ -9279,7 +9336,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'field_vocab_fixed_tid' => '24',
@@ -9385,7 +9442,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'field_vocab_localize_tid' => '20',
@@ -9395,7 +9452,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '0',
   'field_vocab_localize_tid' => '20',
@@ -9501,7 +9558,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'field_vocab_translate_tid' => '21',
@@ -9511,7 +9568,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '0',
   'field_vocab_translate_tid' => '23',
@@ -10165,6 +10222,18 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'body_value' => "...is that it's the absolute best show ever. Trust me, I would know.",
+  'body_summary' => '',
+  'body_format' => 'filtered_html',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '3',
   'revision_id' => '3',
   'language' => 'und',
@@ -10177,11 +10246,11 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '4',
-  'revision_id' => '4',
+  'entity_id' => '3',
+  'revision_id' => '12',
   'language' => 'und',
   'delta' => '0',
-  'body_value' => 'is - Is that is it awesome.',
+  'body_value' => "is - ...is that it's the absolute best show ever. Trust me, I would know.",
   'body_summary' => '',
   'body_format' => 'filtered_html',
 ))
@@ -10189,11 +10258,11 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
-  'entity_id' => '5',
-  'revision_id' => '5',
+  'entity_id' => '4',
+  'revision_id' => '4',
   'language' => 'und',
   'delta' => '0',
-  'body_value' => 'en - Is that is it awesome.',
+  'body_value' => 'is - Is that is it awesome.',
   'body_summary' => '',
   'body_format' => 'filtered_html',
 ))
@@ -12025,8 +12094,20 @@
   'language' => 'und',
   'delta' => '0',
   'field_link_url' => '<front>',
-  'field_link_title' => 'Home',
-  'field_link_attributes' => 'a:0:{}',
+  'field_link_title' => NULL,
+  'field_link_attributes' => 'a:1:{s:5:"title";s:0:"";}',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_link_url' => '<front>',
+  'field_link_title' => NULL,
+  'field_link_attributes' => 'a:1:{s:5:"title";s:0:"";}',
 ))
 ->values(array(
   'entity_type' => 'node',
@@ -12037,7 +12118,19 @@
   'language' => 'und',
   'delta' => '0',
   'field_link_url' => '<front>',
-  'field_link_title' => 'Home',
+  'field_link_title' => NULL,
+  'field_link_attributes' => 'a:1:{s:5:"title";s:0:"";}',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '0',
+  'field_link_url' => '<front>',
+  'field_link_title' => NULL,
   'field_link_attributes' => 'a:1:{s:5:"title";s:0:"";}',
 ))
 ->execute();
@@ -12674,6 +12767,16 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_reference_target_id' => '5',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '3',
   'revision_id' => '3',
   'language' => 'und',
@@ -12684,6 +12787,16 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '0',
+  'field_reference_target_id' => '4',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '4',
   'revision_id' => '4',
   'language' => 'und',
@@ -12694,12 +12807,32 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '13',
+  'language' => 'und',
+  'delta' => '0',
+  'field_reference_target_id' => '3',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '5',
   'revision_id' => '5',
   'language' => 'und',
   'delta' => '0',
   'field_reference_target_id' => '2',
 ))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '5',
+  'revision_id' => '14',
+  'language' => 'und',
+  'delta' => '0',
+  'field_reference_target_id' => '2',
+))
 ->execute();
 $connection->schema()->createTable('field_revision_field_reference_2', array(
   'fields' => array(
@@ -12811,6 +12944,16 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_reference_2_target_id' => '5',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '3',
   'revision_id' => '3',
   'language' => 'und',
@@ -12821,6 +12964,16 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '0',
+  'field_reference_2_target_id' => '4',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '4',
   'revision_id' => '4',
   'language' => 'und',
@@ -12831,12 +12984,32 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '13',
+  'language' => 'und',
+  'delta' => '0',
+  'field_reference_2_target_id' => '3',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '5',
   'revision_id' => '5',
   'language' => 'und',
   'delta' => '0',
   'field_reference_2_target_id' => '2',
 ))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '5',
+  'revision_id' => '14',
+  'language' => 'und',
+  'delta' => '0',
+  'field_reference_2_target_id' => '2',
+))
 ->execute();
 $connection->schema()->createTable('field_revision_field_tags', array(
   'fields' => array(
@@ -12925,6 +13098,16 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_tags_tid' => '9',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '3',
   'revision_id' => '3',
   'language' => 'und',
@@ -12935,6 +13118,16 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '0',
+  'field_tags_tid' => '9',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '2',
   'revision_id' => '2',
   'language' => 'und',
@@ -12945,6 +13138,16 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '1',
+  'field_tags_tid' => '14',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '3',
   'revision_id' => '3',
   'language' => 'und',
@@ -12955,6 +13158,16 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '1',
+  'field_tags_tid' => '14',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '2',
   'revision_id' => '2',
   'language' => 'und',
@@ -12965,12 +13178,32 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '2',
+  'field_tags_tid' => '17',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '3',
   'revision_id' => '3',
   'language' => 'und',
   'delta' => '2',
   'field_tags_tid' => '17',
 ))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '2',
+  'field_tags_tid' => '17',
+))
 ->execute();
 $connection->schema()->createTable('field_revision_field_term_entityreference', array(
   'fields' => array(
@@ -13816,6 +14049,96 @@
   'mysql_character_set' => 'utf8',
 ));
 
+$connection->insert('field_revision_field_text_plain')
+->fields(array(
+  'entity_type',
+  'bundle',
+  'deleted',
+  'entity_id',
+  'revision_id',
+  'language',
+  'delta',
+  'field_text_plain_value',
+  'field_text_plain_format',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '2',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'DS9 1st rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'DS9 2nd rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '3',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'is - DS9 1st rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'is - DS9 2nd rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '13',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'is - Firefly 2nd rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '5',
+  'revision_id' => '5',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'Firefly 1st rev',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '5',
+  'revision_id' => '14',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'Firefly 2nd rev',
+  'field_text_plain_format' => NULL,
+))
+->execute();
 $connection->schema()->createTable('field_revision_field_text_plain_filtered', array(
   'fields' => array(
     'entity_type' => array(
@@ -14390,6 +14713,16 @@
   'delta' => '0',
   'field_vocab_fixed_tid' => '24',
 ))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_vocab_fixed_tid' => '24',
+))
 ->execute();
 $connection->schema()->createTable('field_revision_field_vocab_localize', array(
   'fields' => array(
@@ -14501,12 +14834,32 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_vocab_localize_tid' => '20',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '3',
   'revision_id' => '3',
   'language' => 'und',
   'delta' => '0',
   'field_vocab_localize_tid' => '20',
 ))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '0',
+  'field_vocab_localize_tid' => '20',
+))
 ->execute();
 $connection->schema()->createTable('field_revision_field_vocab_translate', array(
   'fields' => array(
@@ -14618,12 +14971,32 @@
   'entity_type' => 'node',
   'bundle' => 'article',
   'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_vocab_translate_tid' => '21',
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
   'entity_id' => '3',
   'revision_id' => '3',
   'language' => 'und',
   'delta' => '0',
   'field_vocab_translate_tid' => '23',
 ))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '12',
+  'language' => 'und',
+  'delta' => '0',
+  'field_vocab_translate_tid' => '23',
+))
 ->execute();
 $connection->schema()->createTable('field_revision_name_field', array(
   'fields' => array(
@@ -15909,6 +16282,33 @@
   'mysql_character_set' => 'utf8',
 ));
 
+$connection->insert('history')
+->fields(array(
+  'uid',
+  'nid',
+  'timestamp',
+))
+->values(array(
+  'uid' => '1',
+  'nid' => '2',
+  'timestamp' => '1564543637',
+))
+->values(array(
+  'uid' => '1',
+  'nid' => '3',
+  'timestamp' => '1564543706',
+))
+->values(array(
+  'uid' => '1',
+  'nid' => '4',
+  'timestamp' => '1564543810',
+))
+->values(array(
+  'uid' => '1',
+  'nid' => '5',
+  'timestamp' => '1564543929',
+))
+->execute();
 $connection->schema()->createTable('i18n_block_language', array(
   'fields' => array(
     'module' => array(
@@ -40340,14 +40740,14 @@
 ))
 ->values(array(
   'nid' => '2',
-  'vid' => '2',
+  'vid' => '11',
   'type' => 'article',
   'language' => 'en',
-  'title' => 'The thing about Deep Space 9',
+  'title' => 'The thing about Deep Space 9 (2nd rev)',
   'uid' => '2',
   'status' => '1',
   'created' => '1441306772',
-  'changed' => '1441306832',
+  'changed' => '1564543637',
   'comment' => '2',
   'promote' => '1',
   'sticky' => '0',
@@ -40356,14 +40756,14 @@
 ))
 ->values(array(
   'nid' => '3',
-  'vid' => '3',
+  'vid' => '12',
   'type' => 'article',
   'language' => 'is',
-  'title' => 'is - The thing about Deep Space 9',
+  'title' => 'is - The thing about Deep Space 9 (2nd rev)',
   'uid' => '1',
   'status' => '1',
   'created' => '1471428152',
-  'changed' => '1471428152',
+  'changed' => '1564543706',
   'comment' => '2',
   'promote' => '1',
   'sticky' => '0',
@@ -40372,14 +40772,14 @@
 ))
 ->values(array(
   'nid' => '4',
-  'vid' => '4',
+  'vid' => '13',
   'type' => 'article',
   'language' => 'is',
-  'title' => 'is - The thing about Firefly',
+  'title' => 'is - The thing about Firefly (1st rev)',
   'uid' => '1',
   'status' => '1',
   'created' => '1478755274',
-  'changed' => '1478755274',
+  'changed' => '1564543810',
   'comment' => '1',
   'promote' => '1',
   'sticky' => '0',
@@ -40388,14 +40788,14 @@
 ))
 ->values(array(
   'nid' => '5',
-  'vid' => '5',
+  'vid' => '14',
   'type' => 'article',
   'language' => 'en',
-  'title' => 'en - The thing about Firefly',
+  'title' => 'en - The thing about Firefly (2nd rev)',
   'uid' => '1',
   'status' => '1',
   'created' => '1478755314',
-  'changed' => '1478755314',
+  'changed' => '1564543929',
   'comment' => '1',
   'promote' => '1',
   'sticky' => '0',
@@ -40724,38 +41124,38 @@
 ))
 ->values(array(
   'nid' => '2',
-  'totalcount' => '1',
-  'daycount' => '0',
-  'timestamp' => '1471428059',
+  'totalcount' => '4',
+  'daycount' => '3',
+  'timestamp' => '1564543637',
 ))
 ->values(array(
   'nid' => '3',
-  'totalcount' => '1',
-  'daycount' => '0',
-  'timestamp' => '1471428153',
+  'totalcount' => '4',
+  'daycount' => '3',
+  'timestamp' => '1564543706',
 ))
 ->values(array(
   'nid' => '4',
-  'totalcount' => '1',
-  'daycount' => '1',
-  'timestamp' => '1478755275',
+  'totalcount' => '3',
+  'daycount' => '2',
+  'timestamp' => '1564543810',
 ))
 ->values(array(
   'nid' => '5',
-  'totalcount' => '1',
-  'daycount' => '1',
-  'timestamp' => '1478755314',
+  'totalcount' => '4',
+  'daycount' => '3',
+  'timestamp' => '1564543929',
 ))
 ->values(array(
   'nid' => '6',
   'totalcount' => '2',
-  'daycount' => '2',
+  'daycount' => '0',
   'timestamp' => '1504715439',
 ))
 ->values(array(
   'nid' => '7',
   'totalcount' => '2',
-  'daycount' => '2',
+  'daycount' => '0',
   'timestamp' => '1504715438',
 ))
 ->execute();
@@ -40857,9 +41257,9 @@
   'nid' => '2',
   'vid' => '2',
   'uid' => '1',
-  'title' => 'The thing about Deep Space 9',
-  'log' => '',
-  'timestamp' => '1441306832',
+  'title' => 'The thing about Deep Space 9 (1st rev)',
+  'log' => 'DS9 1st rev',
+  'timestamp' => '1564543588',
   'status' => '1',
   'comment' => '2',
   'promote' => '1',
@@ -40869,9 +41269,9 @@
   'nid' => '3',
   'vid' => '3',
   'uid' => '1',
-  'title' => 'is - The thing about Deep Space 9',
-  'log' => '',
-  'timestamp' => '1471428152',
+  'title' => 'is - The thing about Deep Space 9 (1st rev)',
+  'log' => 'is - DS9 1st rev',
+  'timestamp' => '1564543677',
   'status' => '1',
   'comment' => '2',
   'promote' => '1',
@@ -40881,8 +41281,8 @@
   'nid' => '4',
   'vid' => '4',
   'uid' => '1',
-  'title' => 'is - The thing about Firefly',
-  'log' => '',
+  'title' => 'is - The thing about Firefly (1st rev)',
+  'log' => 'is - Firefly 1st rev',
   'timestamp' => '1478755274',
   'status' => '1',
   'comment' => '1',
@@ -40893,9 +41293,9 @@
   'nid' => '5',
   'vid' => '5',
   'uid' => '1',
-  'title' => 'en - The thing about Firefly',
-  'log' => '',
-  'timestamp' => '1478755314',
+  'title' => 'en - The thing about Firefly (1st rev)',
+  'log' => 'Firefly 1st rev',
+  'timestamp' => '1564543887',
   'status' => '1',
   'comment' => '1',
   'promote' => '1',
@@ -40961,6 +41361,54 @@
   'promote' => '1',
   'sticky' => '0',
 ))
+->values(array(
+  'nid' => '2',
+  'vid' => '11',
+  'uid' => '1',
+  'title' => 'The thing about Deep Space 9 (2nd rev)',
+  'log' => 'DS9 2nd rev',
+  'timestamp' => '1564543637',
+  'status' => '1',
+  'comment' => '2',
+  'promote' => '1',
+  'sticky' => '0',
+))
+->values(array(
+  'nid' => '3',
+  'vid' => '12',
+  'uid' => '1',
+  'title' => 'is - The thing about Deep Space 9 (2nd rev)',
+  'log' => 'is - DS9 2nd rev',
+  'timestamp' => '1564543706',
+  'status' => '1',
+  'comment' => '2',
+  'promote' => '1',
+  'sticky' => '0',
+))
+->values(array(
+  'nid' => '4',
+  'vid' => '13',
+  'uid' => '1',
+  'title' => 'is - The thing about Firefly (2nd rev)',
+  'log' => 'is - Firefly 2nd rev',
+  'timestamp' => '1564543810',
+  'status' => '1',
+  'comment' => '1',
+  'promote' => '1',
+  'sticky' => '0',
+))
+->values(array(
+  'nid' => '5',
+  'vid' => '14',
+  'uid' => '1',
+  'title' => 'en - The thing about Firefly (2nd rev)',
+  'log' => 'Firefly 2nd rev',
+  'timestamp' => '1564543929',
+  'status' => '1',
+  'comment' => '1',
+  'promote' => '1',
+  'sticky' => '0',
+))
 ->execute();
 $connection->schema()->createTable('node_type', array(
   'fields' => array(
diff --git a/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6TestBase.php b/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6TestBase.php
index 0b2735c8ea..8339142975 100644
--- a/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6TestBase.php
+++ b/core/modules/migrate_drupal/tests/src/Kernel/d6/MigrateDrupal6TestBase.php
@@ -108,6 +108,9 @@ protected function migrateContent(array $include = []) {
     }
     if (in_array('revisions', $include)) {
       $this->executeMigrations(['d6_node_revision']);
+      if (in_array('translations', $include)) {
+        $this->executeMigrations(['d6_node_revision_translation']);
+      }
     }
   }
 
diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
index a83527035a..bc1a029f41 100644
--- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
+++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
@@ -70,8 +70,8 @@ protected function getEntityCounts() {
       'contact_message' => 0,
       'configurable_language' => 5,
       'editor' => 2,
-      'field_config' => 95,
-      'field_storage_config' => 66,
+      'field_config' => 96,
+      'field_storage_config' => 67,
       'file' => 7,
       'filter_format' => 7,
       'image_style' => 5,
diff --git a/core/modules/node/migrations/d6_node.yml b/core/modules/node/migrations/d6_node.yml
index 524448bc38..d0d503aa19 100644
--- a/core/modules/node/migrations/d6_node.yml
+++ b/core/modules/node/migrations/d6_node.yml
@@ -7,6 +7,8 @@ migration_tags:
 deriver: Drupal\node\Plugin\migrate\D6NodeDeriver
 source:
   plugin: d6_node
+  constants:
+    revision_translation_affected: true
 process:
   # In D6, nodes always have a tnid, but it's zero for untranslated nodes.
   # We normalize it to equal the nid in that case.
@@ -35,7 +37,7 @@ process:
   revision_uid: revision_uid
   revision_log: log
   revision_timestamp: timestamp
-
+  revision_translation_affected: constants/revision_translation_affected
 #  unmapped d6 fields.
 #  tnid
 #  translate
diff --git a/core/modules/node/migrations/d6_node_revision.yml b/core/modules/node/migrations/d6_node_revision.yml
index 732c9abe27..1e0ddabcab 100644
--- a/core/modules/node/migrations/d6_node_revision.yml
+++ b/core/modules/node/migrations/d6_node_revision.yml
@@ -7,6 +7,8 @@ migration_tags:
 deriver: Drupal\node\Plugin\migrate\D6NodeDeriver
 source:
   plugin: d6_node_revision
+  constants:
+    revision_translation_affected: true
 process:
   # If you are using this file to build a custom migration consider removing
   # the nid and vid fields to allow incremental migrations.
@@ -32,7 +34,7 @@ process:
   revision_uid: revision_uid
   revision_log: log
   revision_timestamp: timestamp
-
+  revision_translation_affected: constants/revision_translation_affected
 #  unmapped d6 fields.
 #  tnid
 #  translate
diff --git a/core/modules/node/migrations/d7_node.yml b/core/modules/node/migrations/d7_node.yml
index 5bf826164a..7ccae408c9 100644
--- a/core/modules/node/migrations/d7_node.yml
+++ b/core/modules/node/migrations/d7_node.yml
@@ -7,6 +7,8 @@ migration_tags:
 deriver: Drupal\node\Plugin\migrate\D7NodeDeriver
 source:
   plugin: d7_node
+  constants:
+    revision_translation_affected: true
 process:
   # If you are using this file to build a custom migration consider removing
   # the nid and vid fields to allow incremental migrations.
@@ -29,6 +31,7 @@ process:
   revision_uid: revision_uid
   revision_log: log
   revision_timestamp: timestamp
+  revision_translation_affected: constants/revision_translation_affected
 destination:
   plugin: entity:node
 migration_dependencies:
diff --git a/core/modules/node/migrations/d7_node_revision.yml b/core/modules/node/migrations/d7_node_revision.yml
index 7310b0d5b0..15722ed4b4 100644
--- a/core/modules/node/migrations/d7_node_revision.yml
+++ b/core/modules/node/migrations/d7_node_revision.yml
@@ -7,6 +7,8 @@ migration_tags:
 deriver: Drupal\node\Plugin\migrate\D7NodeDeriver
 source:
   plugin: d7_node_revision
+  constants:
+    revision_translation_affected: true
 process:
   # If you are using this file to build a custom migration consider removing
   # the nid and vid fields to allow incremental migrations.
@@ -26,6 +28,7 @@ process:
   revision_uid: revision_uid
   revision_log: log
   revision_timestamp: timestamp
+  revision_translation_affected: constants/revision_translation_affected
 destination:
   plugin: entity_revision:node
 migration_dependencies:
diff --git a/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php b/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
index a8fa1d0bbe..899a1c4372 100644
--- a/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
+++ b/core/modules/node/src/Plugin/migrate/D6NodeDeriver.php
@@ -69,7 +69,7 @@ public static function create(ContainerInterface $container, $base_plugin_id) {
    * {@inheritdoc}
    */
   public function getDerivativeDefinitions($base_plugin_definition) {
-    if ($base_plugin_definition['id'] == 'd6_node_translation' && !$this->includeTranslations) {
+    if (in_array('translation', $base_plugin_definition['migration_tags']) && !$this->includeTranslations) {
       // Refuse to generate anything.
       return $this->derivatives;
     }
@@ -99,7 +99,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
         // If this migration is based on the d6_node_revision migration or
         // is for translations of nodes, it should explicitly depend on the
         // corresponding d6_node variant.
-        if (in_array($base_plugin_definition['id'], ['d6_node_revision', 'd6_node_translation'])) {
+        if ($base_plugin_definition['id'] == ['d6_node_revision'] || in_array('translation', $base_plugin_definition['migration_tags'])) {
           $values['migration_dependencies']['required'][] = 'd6_node:' . $node_type;
         }
 
diff --git a/core/modules/node/src/Plugin/migrate/source/d6/NodeRevision.php b/core/modules/node/src/Plugin/migrate/source/d6/NodeRevision.php
index 629249888d..e0988294d0 100644
--- a/core/modules/node/src/Plugin/migrate/source/d6/NodeRevision.php
+++ b/core/modules/node/src/Plugin/migrate/source/d6/NodeRevision.php
@@ -2,8 +2,6 @@
 
 namespace Drupal\node\Plugin\migrate\source\d6;
 
-use Drupal\Core\Database\Query\SelectInterface;
-
 /**
  * Drupal 6 node revision source from database.
  *
@@ -40,11 +38,4 @@ public function getIds() {
     return $ids;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  protected function handleTranslations(SelectInterface $query) {
-    // @todo in https://www.drupal.org/node/2746541
-  }
-
 }
diff --git a/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTranslationTest.php b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTranslationTest.php
new file mode 100644
index 0000000000..9eb4376492
--- /dev/null
+++ b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTranslationTest.php
@@ -0,0 +1,95 @@
+<?php
+
+namespace Drupal\Tests\node\Kernel\Migrate\d6;
+
+use Drupal\node\NodeInterface;
+
+/**
+ * Tests node revision migrations.
+ *
+ * @group node
+ */
+class MigrateNodeRevisionTranslationTest extends MigrateNodeTestBase {
+
+  /**
+   * The entity storage for node.
+   *
+   * @var \Drupal\Core\Entity\EntityStorageInterface
+   */
+  protected $nodeStorage;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'content_translation',
+    'language',
+    'menu_ui',
+    // Required for translation migrations.
+    'migrate_drupal_multilingual',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->executeMigrations([
+      'language',
+      'd6_language_content_settings',
+      'd6_node',
+      'd6_node_revision',
+      'd6_node_translation',
+      'd6_node_revision_translation',
+    ]);
+
+    $this->nodeStorage = $this->container->get('entity_type.manager')
+      ->getStorage('node');
+  }
+
+  /**
+   * Asserts various aspects of a node revision.
+   *
+   * @param int $id
+   *   The revision ID.
+   * @param string $langcode
+   *   The revision language.
+   * @param string $title
+   *   The expected title.
+   * @param string $log
+   *   The revision log message.
+   * @param string $field_text_field
+   *   The expected field_text_field field value.
+   * @param int $revision_translation_affected
+   *   The revision translation affected field value.
+   */
+  protected function assertRevision($id, $langcode, $title, $log, $field_text_field, $revision_translation_affected) {
+    /* @var  \Drupal\node\NodeInterface $revision */
+    $revision = $this->nodeStorage->loadRevision($id)
+      ->getTranslation($langcode);
+    $this->assertInstanceOf(NodeInterface::class, $revision);
+    $this->assertSame($title, $revision->getTitle());
+    $this->assertSame($log, $revision->revision_log->value);
+    $this->assertSame($field_text_field, $revision->field_text_field->value);
+    $this->assertSame($revision_translation_affected, $revision->get('revision_translation_affected')->value);
+  }
+
+  /**
+   * Tests the migration of node revisions with translated nodes.
+   */
+  public function testNodeTranslationRevisions() {
+    // Test the first revision.
+    $this->assertRevision(13, 'en', 'The Real McCoy (first revision)', 'First revision (en)', 'McCoy first revision (en)', '1');
+    $this->assertRevision(2007, 'fr', 'Le Vrai McCoy (first revision)', 'First revision (fr)', 'McCoy first revision (fr)', '1');
+    $this->assertRevision(15, 'zu', 'Abantu zulu (first revision)', 'First revision (zu)', 'Zulu first revision (zu)', '1');
+    $this->assertRevision(2008, 'en', 'The Zulu People (first revision)', 'First revision (en)', 'Zulu first revision (en)', '1');
+
+    // Test the current revision.
+    $this->assertRevision(24, 'en', 'The Real McCoy', 'Current revision (en)', 'McCoy current revision (en)', '1');
+    $this->assertRevision(2004, 'fr', 'Le Vrai McCoy', 'Current revision (fr)', 'McCoy current revision (fr)', '1');
+    $this->assertRevision(26, 'zu', 'Abantu zulu', 'Current revision (zu)', 'Zulu current revision (zu)', '1');
+    $this->assertRevision(2005, 'en', 'The Zulu People', 'Current revision (en)', 'Zulu current revision (en)', '1');
+  }
+
+}
diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTranslationTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTranslationTest.php
new file mode 100644
index 0000000000..efc3a0154e
--- /dev/null
+++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTranslationTest.php
@@ -0,0 +1,132 @@
+<?php
+
+namespace Drupal\Tests\node\Kernel\Migrate\d7;
+
+use Drupal\node\NodeInterface;
+use Drupal\Tests\file\Kernel\Migrate\d7\FileMigrationSetupTrait;
+use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
+
+/**
+ * Tests node revision migrations.
+ *
+ * @group node
+ */
+class MigrateNodeRevisionTranslationTest extends MigrateDrupal7TestBase {
+
+  use FileMigrationSetupTrait;
+
+  /**
+   * The entity storage for node.
+   *
+   * @var \Drupal\Core\Entity\EntityStorageInterface
+   */
+  protected $nodeStorage;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'content_translation',
+    'comment',
+    'datetime',
+    'file',
+    'filter',
+    'image',
+    'language',
+    'link',
+    // Required for translation migrations.
+    'migrate_drupal_multilingual',
+    'menu_ui',
+    'node',
+    'taxonomy',
+    'telephone',
+    'text',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->fileMigrationSetup();
+
+    $this->installEntitySchema('node');
+    $this->installEntitySchema('comment');
+    $this->installEntitySchema('taxonomy_term');
+    $this->installSchema('comment', ['comment_entity_statistics']);
+    $this->installSchema('node', ['node_access']);
+
+    $this->migrateUsers();
+    $this->migrateFields();
+    $this->executeMigrations([
+      'language',
+      'd7_language_content_settings',
+      'd7_comment_field',
+      'd7_comment_field_instance',
+      'd7_node',
+      'd7_node_translation',
+      'd7_node_revision',
+      'd7_node_revision_translation',
+    ]);
+    $this->nodeStorage = $this->container->get('entity_type.manager')->getStorage('node');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getFileMigrationInfo() {
+    return [
+      'path' => 'public://sites/default/files/cube.jpeg',
+      'size' => '3620',
+      'base_path' => 'public://',
+      'plugin_id' => 'd7_file',
+    ];
+  }
+
+  /**
+   * Asserts various aspects of a node revision.
+   *
+   * @param int $id
+   *   The revision ID.
+   * @param string $langcode
+   *   The revision language.
+   * @param string $title
+   *   The expected title.
+   * @param string $log
+   *   The revision log message.
+   * @param string $field_text_plain
+   *   The expected field_text_plain field value.
+   * @param int $revision_translation_affected
+   *   The revision translation affected field value.
+   */
+  protected function assertRevision($id, $langcode, $title, $log, $field_text_plain, $revision_translation_affected) {
+    /* @var  \Drupal\node\NodeInterface $revision */
+    $revision = $this->nodeStorage->loadRevision($id)->getTranslation($langcode);
+    $this->assertInstanceOf(NodeInterface::class, $revision);
+    $this->assertSame($title, $revision->getTitle());
+    $this->assertSame($log, $revision->revision_log->value);
+    if ($field_text_plain) {
+      $this->assertSame($field_text_plain, $revision->field_text_plain->value);
+    }
+    $this->assertSame($revision_translation_affected, $revision->get('revision_translation_affected')->value);
+  }
+
+  /**
+   * Tests the migration of node revisions with translated nodes.
+   */
+  public function testNodeTranslationRevisions() {
+    // Test the 1st revision.
+    $this->assertRevision(2, 'en', 'The thing about Deep Space 9 (1st rev)', 'DS9 1st rev', 'DS9 1st rev', '1');
+    $this->assertRevision(18, 'is', 'is - The thing about Deep Space 9 (1st rev)', 'is - DS9 1st rev', 'is - DS9 1st rev', '1');
+    $this->assertRevision(4, 'is', 'is - The thing about Firefly (1st rev)', 'is - Firefly 1st rev', NULL, '1');
+    $this->assertRevision(19, 'en', 'en - The thing about Firefly (1st rev)', 'Firefly 1st rev', 'Firefly 1st rev', '1');
+
+    // Test the 2nd revision.
+    $this->assertRevision(11, 'en', 'The thing about Deep Space 9 (2nd rev)', 'DS9 2nd rev', 'DS9 2nd rev', '1');
+    $this->assertRevision(14, 'is', 'is - The thing about Deep Space 9 (2nd rev)', 'is - DS9 2nd rev', 'is - DS9 2nd rev', '1');
+    $this->assertRevision(13, 'is', 'is - The thing about Firefly (2nd rev)', 'is - Firefly 2nd rev', NULL, '1');
+    $this->assertRevision(15, 'en', 'en - The thing about Firefly (2nd rev)', 'Firefly 2nd rev', 'Firefly 2nd rev', '1');
+  }
+
+}
