diff --git a/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php b/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
index 3e18d28..bd16073 100644
--- a/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
+++ b/core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php
@@ -220,6 +220,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 5793fd3..2d8e325 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
@@ -3016,6 +3016,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(
@@ -3446,6 +3458,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(
@@ -3579,21 +3603,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',
 ))
@@ -3604,6 +3635,34 @@
   'field_reference_nid' => '11',
   'field_reference_2_nid' => '11',
 ))
+->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(
@@ -43548,14 +43607,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',
@@ -43565,14 +43624,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',
@@ -43582,14 +43641,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',
@@ -43599,14 +43658,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',
@@ -44285,10 +44344,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',
 ))
@@ -44296,10 +44355,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',
 ))
@@ -44307,10 +44366,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',
 ))
@@ -44318,10 +44377,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',
 ))
@@ -44402,6 +44461,50 @@
   'timestamp' => '1520613305',
   '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(
@@ -47007,7 +47110,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 3bd7e70..688ace8 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php
@@ -4582,7 +4582,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '0',
   'body_value' => "...is that it's the absolute best show ever. Trust me, I would know.",
@@ -4594,7 +4594,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '0',
   'body_value' => "is - ...is that it's the absolute best show ever. Trust me, I would know.",
@@ -6005,7 +6005,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '0',
   'field_link_url' => '<front>',
@@ -6017,7 +6017,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '0',
   'field_link_url' => '<front>',
@@ -6760,7 +6760,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '0',
   'field_tags_tid' => '9',
@@ -6770,7 +6770,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '1',
   'field_tags_tid' => '14',
@@ -6780,7 +6780,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '2',
   'field_tags_tid' => '17',
@@ -6790,7 +6790,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '0',
   'field_tags_tid' => '9',
@@ -6800,7 +6800,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '1',
   'field_tags_tid' => '14',
@@ -6810,7 +6810,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '2',
   'field_tags_tid' => '17',
@@ -7641,6 +7641,64 @@
   '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' => '8',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'DS9 current revision (en)',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '9',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'DS9 current revision (is)',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '10',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'Firefly current revision (is)',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '5',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'Firefly current revision (en)',
+  'field_text_plain_format' => NULL,
+))
+->execute();
+
 $connection->schema()->createTable('field_data_field_text_plain_filtered', array(
   'fields' => array(
     'entity_type' => array(
@@ -8298,7 +8356,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '0',
   'body_value' => "...is that it's the absolute best show ever. Trust me, I would know.",
@@ -8310,7 +8368,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '0',
   'body_value' => "is - ...is that it's the absolute best show ever. Trust me, I would know.",
@@ -8322,7 +8380,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '4',
-  'revision_id' => '4',
+  'revision_id' => '10',
   'language' => 'und',
   'delta' => '0',
   'body_value' => 'is - Is that is it awesome.',
@@ -8334,7 +8392,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '5',
-  'revision_id' => '5',
+  'revision_id' => '11',
   'language' => 'und',
   'delta' => '0',
   'body_value' => 'en - Is that is it awesome.',
@@ -9760,7 +9818,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '0',
   'field_link_url' => '<front>',
@@ -9772,7 +9830,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '0',
   'field_link_url' => '<front>',
@@ -10532,7 +10590,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '0',
   'field_tags_tid' => '9',
@@ -10542,7 +10600,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '0',
   'field_tags_tid' => '9',
@@ -10552,7 +10610,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '1',
   'field_tags_tid' => '14',
@@ -10562,7 +10620,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '1',
   'field_tags_tid' => '14',
@@ -10572,7 +10630,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '2',
-  'revision_id' => '2',
+  'revision_id' => '8',
   'language' => 'und',
   'delta' => '2',
   'field_tags_tid' => '17',
@@ -10582,7 +10640,7 @@
   'bundle' => 'article',
   'deleted' => '0',
   'entity_id' => '3',
-  'revision_id' => '3',
+  'revision_id' => '9',
   'language' => 'und',
   'delta' => '2',
   'field_tags_tid' => '17',
@@ -11422,6 +11480,108 @@
   '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 first revision (en)',
+  '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' => 'DS9 first revision (is)',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '4',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'Firefly first revision (is)',
+  '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 first revision (en)',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '2',
+  'revision_id' => '8',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'DS9 current revision (en)',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '3',
+  'revision_id' => '9',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'DS9 current revision (is)',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '4',
+  'revision_id' => '10',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'Firefly current revision (is)',
+  'field_text_plain_format' => NULL,
+))
+->values(array(
+  'entity_type' => 'node',
+  'bundle' => 'article',
+  'deleted' => '0',
+  'entity_id' => '5',
+  'revision_id' => '11',
+  'language' => 'und',
+  'delta' => '0',
+  'field_text_plain_value' => 'Firefly current revision (en)',
+  'field_text_plain_format' => NULL,
+))
+->execute();
+
 $connection->schema()->createTable('field_revision_field_text_plain_filtered', array(
   'fields' => array(
     'entity_type' => array(
@@ -34994,7 +35154,7 @@
 ))
 ->values(array(
   'nid' => '2',
-  'vid' => '2',
+  'vid' => '8',
   'type' => 'article',
   'language' => 'en',
   'title' => 'The thing about Deep Space 9',
@@ -35010,7 +35170,7 @@
 ))
 ->values(array(
   'nid' => '3',
-  'vid' => '3',
+  'vid' => '9',
   'type' => 'article',
   'language' => 'is',
   'title' => 'is - The thing about Deep Space 9',
@@ -35026,7 +35186,7 @@
 ))
 ->values(array(
   'nid' => '4',
-  'vid' => '4',
+  'vid' => '10',
   'type' => 'article',
   'language' => 'is',
   'title' => 'is - The thing about Firefly',
@@ -35042,7 +35202,7 @@
 ))
 ->values(array(
   'nid' => '5',
-  'vid' => '5',
+  'vid' => '11',
   'type' => 'article',
   'language' => 'en',
   'title' => 'en - The thing about Firefly',
@@ -35451,8 +35611,8 @@
   'nid' => '2',
   'vid' => '2',
   'uid' => '1',
-  'title' => 'The thing about Deep Space 9',
-  'log' => '',
+  'title' => 'The thing about Deep Space 9 (first revision)',
+  'log' => 'First revision (en)',
   'timestamp' => '1441306832',
   'status' => '1',
   'comment' => '2',
@@ -35463,8 +35623,8 @@
   'nid' => '3',
   'vid' => '3',
   'uid' => '1',
-  'title' => 'is - The thing about Deep Space 9',
-  'log' => '',
+  'title' => 'is - The thing about Deep Space 9 (first revision)',
+  'log' => 'First revision (is)',
   'timestamp' => '1471428152',
   'status' => '1',
   'comment' => '2',
@@ -35475,8 +35635,8 @@
   'nid' => '4',
   'vid' => '4',
   'uid' => '1',
-  'title' => 'is - The thing about Firefly',
-  'log' => '',
+  'title' => 'is - The thing about Firefly (first revision)',
+  'log' => 'First revision (is)',
   'timestamp' => '1478755274',
   'status' => '1',
   'comment' => '1',
@@ -35487,8 +35647,8 @@
   'nid' => '5',
   'vid' => '5',
   'uid' => '1',
-  'title' => 'en - The thing about Firefly',
-  'log' => '',
+  'title' => 'en - The thing about Firefly (first revision)',
+  'log' => 'First revision (en)',
   'timestamp' => '1478755314',
   'status' => '1',
   'comment' => '1',
@@ -35519,6 +35679,54 @@
   'promote' => '0',
   'sticky' => '0',
 ))
+->values(array(
+  'nid' => '2',
+  'vid' => '8',
+  'uid' => '1',
+  'title' => 'The thing about Deep Space 9',
+  'log' => 'Current revision (en)',
+  'timestamp' => '1441306832',
+  'status' => '1',
+  'comment' => '2',
+  'promote' => '1',
+  'sticky' => '0',
+))
+->values(array(
+  'nid' => '3',
+  'vid' => '9',
+  'uid' => '1',
+  'title' => 'is - The thing about Deep Space 9',
+  'log' => 'Current revision (is)',
+  'timestamp' => '1471428152',
+  'status' => '1',
+  'comment' => '2',
+  'promote' => '1',
+  'sticky' => '0',
+))
+->values(array(
+  'nid' => '4',
+  'vid' => '10',
+  'uid' => '1',
+  'title' => 'is - The thing about Firefly',
+  'log' => 'Current revision (is)',
+  'timestamp' => '1478755274',
+  'status' => '1',
+  'comment' => '1',
+  'promote' => '1',
+  'sticky' => '0',
+))
+->values(array(
+  'nid' => '5',
+  'vid' => '11',
+  'uid' => '1',
+  'title' => 'en - The thing about Firefly',
+  'log' => 'Current revision (en)',
+  'timestamp' => '1478755314',
+  'status' => '1',
+  'comment' => '1',
+  'promote' => '1',
+  'sticky' => '0',
+))
 ->execute();
 
 $connection->schema()->createTable('node_type', 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 80bc221..d6b3ca7 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
@@ -64,8 +64,8 @@ protected function getEntityCounts() {
       'contact_form' => 5,
       'configurable_language' => 5,
       'editor' => 2,
-      'field_config' => 89,
-      'field_storage_config' => 63,
+      'field_config' => 90,
+      'field_storage_config' => 64,
       'file' => 8,
       'filter_format' => 7,
       'image_style' => 5,
@@ -91,7 +91,7 @@ protected function getEntityCounts() {
       'date_format' => 11,
       'entity_form_display' => 29,
       'entity_form_mode' => 1,
-      'entity_view_display' => 55,
+      'entity_view_display' => 57,
       'entity_view_mode' => 14,
       'base_field_override' => 38,
     ];
@@ -104,7 +104,7 @@ protected function getEntityCountsIncremental() {
     $counts = $this->getEntityCounts();
     $counts['block_content'] = 3;
     $counts['comment'] = 7;
-    $counts['entity_view_display'] = 55;
+    $counts['entity_view_display'] = 57;
     $counts['entity_view_mode'] = 14;
     $counts['file'] = 9;
     $counts['menu_link_content'] = 11;
diff --git a/core/modules/node/migrations/d6_node_translation.yml b/core/modules/node/migrations/d6_node_translation.yml
index b1345ed..c8ab43e 100644
--- a/core/modules/node/migrations/d6_node_translation.yml
+++ b/core/modules/node/migrations/d6_node_translation.yml
@@ -13,6 +13,7 @@ process:
   # If you are using this file to build a custom migration consider removing
   # the nid field to allow incremental migrations.
   nid: tnid
+  vid: vid
   type: type
   langcode:
     plugin: default_value
diff --git a/core/modules/node/migrations/d6_node_translation_revision.yml b/core/modules/node/migrations/d6_node_translation_revision.yml
new file mode 100644
index 0000000..d0985c0
--- /dev/null
+++ b/core/modules/node/migrations/d6_node_translation_revision.yml
@@ -0,0 +1,43 @@
+id: d6_node_translation_revision
+label: Node translation revisions
+migration_tags:
+  - Drupal 6
+  - translation
+  - Content
+deriver: Drupal\node\Plugin\migrate\D6NodeDeriver
+source:
+  plugin: d6_node_revision
+  translations: true
+process:
+  # If you are using this file to build a custom migration consider removing
+  # the nid field to allow incremental migrations.
+  nid: tnid
+  vid: vid
+  langcode:
+    plugin: default_value
+    source: language
+    default_value: "und"
+  title: title
+  uid: node_uid
+  status: status
+  created: created
+  changed: changed
+  promote: promote
+  sticky: sticky
+  'body/format':
+    plugin: migration_lookup
+    migration: d6_filter_format
+    source: format
+  'body/value': body
+  'body/summary': teaser
+  revision_uid: revision_uid
+  revision_log: log
+  revision_timestamp: timestamp
+  content_translation_source: source_langcode
+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_translation.yml b/core/modules/node/migrations/d7_node_translation.yml
index b5d488e..8de6a15 100644
--- a/core/modules/node/migrations/d7_node_translation.yml
+++ b/core/modules/node/migrations/d7_node_translation.yml
@@ -13,6 +13,7 @@ process:
   # If you are using this file to build a custom migration consider removing
   # the nid field to allow incremental migrations.
   nid: tnid
+  vid: vid
   type: type
   langcode:
     plugin: default_value
diff --git a/core/modules/node/migrations/d7_node_translation_revision.yml b/core/modules/node/migrations/d7_node_translation_revision.yml
new file mode 100644
index 0000000..5661ddd
--- /dev/null
+++ b/core/modules/node/migrations/d7_node_translation_revision.yml
@@ -0,0 +1,39 @@
+id: d7_node_translation_revision
+label: Node translation revisions
+migration_tags:
+  - Drupal 7
+  - translation
+  - Content
+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 field to allow incremental migrations.
+  nid: tnid
+  vid: vid
+  langcode:
+    plugin: default_value
+    source: language
+    default_value: "und"
+  title: title
+  uid: node_uid
+  status: status
+  created: created
+  changed: changed
+  promote: promote
+  sticky: sticky
+  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_translation
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 6292498..e098829 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/MigrateNodeRevisionTest.php b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTest.php
new file mode 100644
index 0000000..d8c1597
--- /dev/null
+++ b/core/modules/node/tests/src/Kernel/Migrate/d6/MigrateNodeRevisionTest.php
@@ -0,0 +1,76 @@
+<?php
+
+namespace Drupal\Tests\node\Kernel\Migrate\d6;
+
+use Drupal\node\NodeInterface;
+
+/**
+ * Tests node revision migrations.
+ *
+ * @group node
+ */
+class MigrateNodeRevisionTest extends MigrateNodeTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'language',
+    'content_translation',
+    'menu_ui',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->executeMigrations([
+      'language',
+      'd6_language_content_settings',
+      'd6_node',
+      'd6_node_revision',
+      'd6_node_translation',
+      'd6_node_translation_revision',
+    ]);
+
+    $this->storage = $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.
+   */
+  protected function assertRevision($id, $langcode, $title, $log, $field_text_field) {
+    $revision = $this->storage->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);
+  }
+
+  /**
+   * Tests the migration of node revisions with translated nodes.
+   */
+  public function testNodeTranslationRevisions() {
+    $this->assertRevision(13, 'en', 'The Real McCoy (first revision)', 'First revision (en)', 'McCoy first revision (en)');
+    $this->assertRevision(14, 'fr', 'Le Vrai McCoy (first revision)', 'First revision (fr)', 'McCoy first revision (fr)');
+    $this->assertRevision(15, 'zu', 'Abantu zulu (first revision)', 'First revision (zu)', 'Zulu first revision (zu)');
+    $this->assertRevision(16, 'en', 'The Zulu People (first revision)', 'First revision (en)', 'Zulu first revision (en)');
+    $this->assertRevision(24, 'en', 'The Real McCoy', 'Current revision (en)', 'McCoy current revision (en)');
+    $this->assertRevision(25, 'fr', 'Le Vrai McCoy', 'Current revision (fr)', 'McCoy current revision (fr)');
+    $this->assertRevision(26, 'zu', 'Abantu zulu', 'Current revision (zu)', 'Zulu current revision (zu)');
+    $this->assertRevision(27, 'en', 'The Zulu People', 'Current revision (en)', 'Zulu current revision (en)');
+  }
+
+}
diff --git a/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTest.php b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTest.php
new file mode 100644
index 0000000..1f86bdb
--- /dev/null
+++ b/core/modules/node/tests/src/Kernel/Migrate/d7/MigrateNodeRevisionTest.php
@@ -0,0 +1,120 @@
+<?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 MigrateNodeRevisionTest extends MigrateDrupal7TestBase {
+
+  use FileMigrationSetupTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'content_translation',
+    'comment',
+    'datetime',
+    'file',
+    'filter',
+    'image',
+    'language',
+    'link',
+    '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->installConfig(static::$modules);
+    $this->installSchema('comment', ['comment_entity_statistics']);
+    $this->installSchema('node', ['node_access']);
+    $this->installSchema('system', ['sequences']);
+
+    $this->executeMigrations([
+      'language',
+      'd7_user_role',
+      'd7_user',
+      'd7_node_type',
+      'd7_language_content_settings',
+      'd7_comment_type',
+      'd7_taxonomy_vocabulary',
+      'd7_field',
+      'd7_field_instance',
+      'd7_node',
+      'd7_node_revision',
+      'd7_node_translation',
+      'd7_node_translation_revision',
+    ]);
+
+    $this->storage = $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.
+   */
+  protected function assertRevision($id, $langcode, $title, $log, $field_text_plain) {
+    $revision = $this->storage->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_plain, $revision->field_text_plain->value);
+  }
+
+  /**
+   * Tests the migration of node revisions with translated nodes.
+   */
+  public function testNodeTranslationRevisions() {
+    $this->assertRevision(2, 'en', 'The thing about Deep Space 9 (first revision)', 'First revision (en)', 'DS9 first revision (en)');
+    $this->assertRevision(3, 'is', 'is - The thing about Deep Space 9 (first revision)', 'First revision (is)', 'DS9 first revision (is)');
+    $this->assertRevision(4, 'is', 'is - The thing about Firefly (first revision)', 'First revision (is)', 'Firefly first revision (is)');
+    $this->assertRevision(5, 'en', 'en - The thing about Firefly (first revision)', 'First revision (en)', 'Firefly first revision (en)');
+    $this->assertRevision(8, 'en', 'The thing about Deep Space 9', 'Current revision (en)', 'DS9 current revision (en)');
+    $this->assertRevision(9, 'is', 'is - The thing about Deep Space 9', 'Current revision (is)', 'DS9 current revision (is)');
+    $this->assertRevision(10, 'is', 'is - The thing about Firefly', 'Current revision (is)', 'Firefly current revision (is)');
+    $this->assertRevision(11, 'en', 'en - The thing about Firefly', 'Current revision (en)', 'Firefly current revision (en)');
+  }
+
+}
