diff --git a/src/Normalizer/EntityReferenceRevisionItemNormalizer.php b/src/Normalizer/EntityReferenceRevisionItemNormalizer.php
index 5c63cf2..d6aa7fb 100644
--- a/src/Normalizer/EntityReferenceRevisionItemNormalizer.php
+++ b/src/Normalizer/EntityReferenceRevisionItemNormalizer.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\entity_reference_revisions\Normalizer;
 
+use Drupal\Core\Entity\Entity;
 use Drupal\entity_reference_revisions\Plugin\Field\FieldType\EntityReferenceRevisionsItem;
 use Drupal\hal\Normalizer\EntityReferenceItemNormalizer;
 
@@ -33,11 +34,25 @@ class EntityReferenceRevisionItemNormalizer extends EntityReferenceItemNormalize
    */
   public function normalize($field_item, $format = NULL, array $context = array()) {
     $data = parent::normalize($field_item, $format, $context);
-    $field_name = $field_item->getParent()->getName();
-    $entity = $field_item->getEntity();
-    $field_uri = $this->linkManager->getRelationUri($entity->getEntityTypeId(), $entity->bundle(), $field_name, $context);
-    $data['_embedded'][$field_uri][0]['target_revision_id'] = $field_item->target_revision_id;
+    $target_entity = $field_item->get('entity')->getValue();
+    if ($target_entity->getEntityType()->get('entity_revision_parent_id_field')) {
+      $embedded_context = $context;
+      $embedded_context['included_fields'] = NULL;
+      $embedded = $this->serializer->normalize($target_entity, $format, $embedded_context);
+      $data[$field_item->getParent()->getName()] = [$embedded];
+      // Unset the _embedded field so it does not overwrite the referenced entity.
+      foreach ($data['_embedded'] as $relation => $field) {
+        if ($field[0]['uuid'][0]['value'] === $embedded['uuid'][0]['value']) {
+          unset($data['_embedded'][$relation]);
+        }
+      }
+    }
+    else {
+      $entity = $field_item->getEntity();
+      $field_name = $field_item->getParent()->getName();
+      $field_uri = $this->linkManager->getRelationUri($entity->getEntityTypeId(), $entity->bundle(), $field_name, $context);
+      $data['_embedded'][$field_uri][0]['target_revision_id'] = $field_item->target_revision_id;
+    }
     return $data;
   }
-
 }
diff --git a/tests/src/Kernel/EntityReferenceRevisionsNormalizerTest.php b/tests/src/Kernel/EntityReferenceRevisionsNormalizerTest.php
new file mode 100644
index 0000000..25355b1
--- /dev/null
+++ b/tests/src/Kernel/EntityReferenceRevisionsNormalizerTest.php
@@ -0,0 +1,170 @@
+<?php
+
+namespace Drupal\Tests\entity_reference_revisions\Kernel;
+
+use Drupal\entity_composite_relationship_test\Entity\EntityTestCompositeRelationship;
+use Drupal\field\Entity\FieldConfig;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
+use Drupal\node\Entity\Node;
+use Drupal\node\Entity\NodeType;
+use Drupal\paragraphs\Entity\Paragraph;
+use Drupal\paragraphs\Entity\ParagraphsType;
+use Drupal\simpletest\ContentTypeCreationTrait;
+use Drupal\simpletest\NodeCreationTrait;
+
+/**
+ * Tests the entity_reference_revisions normalizer.
+ *
+ * @group entity_reference_revisions
+ * @requires module paragraphs
+ */
+class EntityReferenceRevisionsNormalizerTest extends EntityKernelTestBase {
+
+  use ContentTypeCreationTrait;
+  use NodeCreationTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array(
+    'node',
+    'field',
+    'entity_reference_revisions',
+    'entity_composite_relationship_test',
+    'language',
+    'hal',
+    'serialization',
+    'rest',
+  );
+
+  /**
+   * The current database connection.
+   *
+   * @var \Drupal\Core\Database\Connection
+   */
+  protected $database;
+
+  /**
+   * The entity type manager.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   *
+   */
+  protected $entityTypeManager;
+
+  /**
+   * SerializerInterface which is used for serialization.
+   *
+   * @var \Symfony\Component\Serializer\Normalizer\NormalizerInterface $serializer
+   */
+  protected $serializer;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->installEntitySchema('entity_test_composite');
+    $this->installSchema('node', ['node_access']);
+
+    // Create article content type.
+    NodeType::create(['type' => 'article', 'name' => 'Article'])->save();
+
+    // Create the reference to the composite entity test for a nested composite entity test.
+    $field_storage = FieldStorageConfig::create([
+        'field_name' => 'composite_nested_reference',
+        'entity_type' => 'entity_test_composite',
+        'type' => 'entity_reference_revisions',
+        'settings' => [
+            'target_type' => 'entity_test_composite'
+        ],
+    ]);
+    $field_storage->save();
+    $field = FieldConfig::create([
+        'field_storage' => $field_storage,
+        'bundle' => 'entity_test_composite',
+        'translatable' => FALSE,
+    ]);
+    $field->save();
+
+    // Create the reference to the composite entity test.
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => 'composite_reference',
+      'entity_type' => 'node',
+      'type' => 'entity_reference_revisions',
+      'settings' => [
+        'target_type' => 'entity_test_composite'
+      ],
+    ]);
+    $field_storage->save();
+    $field = FieldConfig::create(array(
+      'field_storage' => $field_storage,
+      'bundle' => 'article',
+      'translatable' => FALSE,
+    ));
+    $field->save();
+
+    // Inject serializer.
+    $this->serializer = $this->container->get('serializer');
+
+    // Inject database connection and entity type manager for the tests.
+    $this->database = \Drupal::database();
+    $this->entityTypeManager = \Drupal::entityTypeManager();
+  }
+
+  /**
+   * Tests the embedded paragraph when normalizing.
+   */
+  public function testEmbedEntityReference() {
+    // Create the test composite entity.
+    $composite = EntityTestCompositeRelationship::create([
+        'uuid' => $this->randomMachineName(),
+        'name' => $this->randomMachineName(),
+    ]);
+    $composite->save();
+
+    $nested_composite = EntityTestCompositeRelationship::create([
+      'uuid' => $this->randomMachineName(),
+      'name' => $this->randomMachineName(),
+      'composite_nested_reference' => $composite
+    ]);
+    $nested_composite->save();
+
+    // Add content with the nested composite entity test.
+    $node = Node::create([
+      'type' => 'article',
+      'title' => 'Normalizing paragraph test',
+      'composite_reference' => $nested_composite,
+    ]);
+    $node->save();
+
+    // Check the serialization of embedded composite field.
+    $normalizer = $this->serializer->normalize($node, 'hal_json');
+
+    // Check the id of the composite reference in the node.
+    $revision_id = $node->composite_reference->target_revision_id;
+    $this->assertEquals($revision_id, $normalizer['composite_reference'][0]['id'][0]['value']);
+
+    // Check the id of the nested composite reference in the entity test composite.
+    $nested_revision_id = $nested_composite->composite_nested_reference->target_revision_id;
+    $this->assertEquals($nested_revision_id, $normalizer['composite_reference'][0]['composite_nested_reference'][0]['id'][0]['value']);
+
+    // Check the denormalization of the embedded composite field.
+    $nested_composite->delete();
+    $node->delete();
+    $node = $this->serializer->denormalize($normalizer, Node::class, 'hal_json');
+
+/*
+    FAILING TEST
+    // Check the id of the composite reference in the node.
+    $this->assertEquals($revision_id, $node->composite_reference->target_revision_id);
+
+    // Check the id of the nested composite reference in the entity test composite.
+    $this->assertEquals($nested_revision_id, $node->composite_reference->composite_nested_reference->target_revision_id);
+*/
+  }
+}
