diff --git a/src/Plugin/Diff/EntityReferenceRevisionsFieldDiffBuilder.php b/src/Plugin/Diff/EntityReferenceRevisionsFieldDiffBuilder.php
new file mode 100644
index 0000000..50ecc48
--- /dev/null
+++ b/src/Plugin/Diff/EntityReferenceRevisionsFieldDiffBuilder.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Drupal\entity_reference_revisions\Plugin\Diff;
+
+use Drupal\diff\FieldDiffBuilderBase;
+use Drupal\Core\Field\FieldItemListInterface;
+
+/**
+ * This plugins offers the possibility to compare ERR fields.
+ *
+ * @FieldDiffBuilder(
+ *   id = "entity_reference_revisions_field_diff_builder",
+ *   label = @Translation("Field Diff for Paragraphs"),
+ *   field_types = {
+ *     "entity_reference_revisions"
+ *   },
+ * )
+ */
+class EntityReferenceRevisionsFieldDiffBuilder extends FieldDiffBuilderBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function build(FieldItemListInterface $field_items) {
+    $result_text = array();
+    $item_counter = 0;
+    /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
+    foreach ($field_items as $field_key => $field_item) {
+      if (!$field_item->isEmpty() && $field_item->entity) {
+        $parsed_text = $this->entityParser->parseEntity($field_item->entity);
+        if (is_array($parsed_text)) {
+          foreach ($parsed_text as $field_id => $field) {
+            foreach ($field as $id => $text) {
+              $result_text[$item_counter + $id] = $text;
+            }
+            $item_counter = $item_counter + $id + 1;
+          }
+        }
+      }
+    }
+    return $result_text;
+  }
+}
diff --git a/src/Tests/EntityReferenceRevisionsDiffTest.php b/src/Tests/EntityReferenceRevisionsDiffTest.php
new file mode 100644
index 0000000..28cf807
--- /dev/null
+++ b/src/Tests/EntityReferenceRevisionsDiffTest.php
@@ -0,0 +1,113 @@
+<?php
+
+namespace Drupal\entity_reference_revisions\Tests;
+
+use Drupal\field_ui\Tests\FieldUiTestTrait;
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests the entity_reference_revisions diff plugin.
+ *
+ * @group entity_reference_revisions
+ *
+ * @dependencies diff
+ */
+class EntityReferenceRevisionsDiffTest extends WebTestBase {
+
+  use FieldUiTestTrait;
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array(
+    'block_content',
+    'node',
+    'field',
+    'entity_reference_revisions',
+    'field_ui',
+    'diff',
+  );
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    // Create article content type.
+    $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
+    $admin_user = $this->drupalCreateUser(array(
+      'administer site configuration',
+      'administer nodes',
+      'administer content types',
+      'administer node fields',
+      'administer node display',
+      'administer node form display',
+      'view all revisions',
+      'edit any article content',
+    ));
+    $this->drupalLogin($admin_user);
+    $this->drupalPlaceBlock('system_breadcrumb_block');
+  }
+
+  /**
+   * Test for maintaining composite relationship.
+   *
+   * Tests that the referenced entity saves the parent type and id when saving.
+   */
+  public function testEntityReferenceRevisionsCompositeRelationship() {
+    // Add an entity_reference_revisions field.
+    static::fieldUIAddNewField('admin/structure/types/manage/article', 'err_field', 'err_field', 'entity_reference_revisions', array(
+      'settings[target_type]' => 'node',
+      'cardinality' => '-1',
+    ), array(
+      'settings[handler_settings][target_bundles][article]' => TRUE,
+    ));
+
+    // Create first referenced node.
+    $title_node_1 = 'referenced_node_1';
+    $edit = array(
+      'title[0][value]' => $title_node_1,
+      'body[0][value]' => 'body_node_1',
+    );
+    $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
+
+    // Create second referenced node.
+    $title_node_2 = 'referenced_node_2';
+    $edit = array(
+      'title[0][value]' => $title_node_2,
+      'body[0][value]' => 'body_node_2',
+    );
+    $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
+
+    // Create referencing node.
+    $title = 'referencing_node';
+    $node = $this->drupalGetNodeByTitle($title_node_1);
+    $edit = array(
+      'title[0][value]' => $title,
+      'field_err_field[0][target_id]' => $title_node_1 . ' (' . $node->id() . ')',
+    );
+    $this->drupalPostForm('node/add/article', $edit, t('Save and publish'));
+
+    // Enable the plugin.
+    $this->drupalGet('admin/config/content/diff/fields');
+    $this->drupalPostForm(NULL, ['fields[entity_reference_revisions][plugin][type]' => 'entity_reference_revisions_field_diff_builder'], t('Save'));
+
+    // Update the referenced node of the err field and create a new revision.
+    $node = $this->drupalGetNodeByTitle($title);
+    $referenced_node_new = $this->drupalGetNodeByTitle($title_node_2);
+    $edit = array(
+      'field_err_field[0][target_id]' => $title_node_2 . ' (' . $referenced_node_new->id() . ')',
+      'revision' => TRUE,
+    );
+    $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
+
+    // Compare the revisions of the referencing node.
+    $this->drupalPostForm('node/' . $node->id() . '/revisions', [], t('Compare'));
+
+    // Assert the field changes.
+    $this->assertRaw('class="diffchange">' . $title_node_1);
+    $this->assertRaw('class="diffchange">' . $title_node_2);
+  }
+
+}
