diff --git a/entity_reference_revisions.info.yml b/entity_reference_revisions.info.yml
index ac32e2c..c0ec683 100644
--- a/entity_reference_revisions.info.yml
+++ b/entity_reference_revisions.info.yml
@@ -3,4 +3,6 @@ type: module
 description: Adds a Entity Reference field type with revision support.
 core: 8.x
 package: Field types
-
+dependencies:
+  - hal
+  - serialization
diff --git a/entity_reference_revisions.services.yml b/entity_reference_revisions.services.yml
new file mode 100644
index 0000000..0e3c3ad
--- /dev/null
+++ b/entity_reference_revisions.services.yml
@@ -0,0 +1,7 @@
+services:
+  serializer.normalizer.entity_reference_revision_item.hal:
+    class: Drupal\entity_reference_revisions\Normalizer\EntityReferenceRevisionItemNormalizer
+    parent: serializer.normalizer.entity_reference_item.hal
+    arguments: ['@rest.link_manager', '@serializer.entity_resolver']
+    tags:
+      - { name: normalizer, priority: 11 }
diff --git a/src/EntityReferenceRevisionsServiceProvider.php b/src/EntityReferenceRevisionsServiceProvider.php
new file mode 100644
index 0000000..7eb2630
--- /dev/null
+++ b/src/EntityReferenceRevisionsServiceProvider.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\entity_reference_revisions\EntityReferenceRevisionsFieldItemList.
+ */
+
+namespace Drupal\entity_reference_revisions;
+
+use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\Core\DependencyInjection\ServiceProviderBase;
+use Symfony\Component\DependencyInjection\Definition;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Service Provider for Entity Reference Revisions.
+ */
+class EntityReferenceRevisionsServiceProvider extends ServiceProviderBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function alter(ContainerBuilder $container) {
+    $modules = $container->getParameter('container.modules');
+      // Add a normalizer service for entity reference revision entities.
+      $service_definition = new Definition('Drupal\entity_reference_revisions\Normalizer\EntityReferenceRevisionItemNormalizer', array(
+        new Reference('rest.link_manager'),
+        new Reference('serializer.entity_resolver'),
+      ));
+      // The priority must be higher than that of
+      // serializer.normalizer.entity_reference_revisions.hal in hal.services.yml
+      $service_definition->addTag('normalizer', array('priority' => 20));
+      $container->setDefinition('serializer.normalizer.entity_reference_revision_item', $service_definition);
+  }
+}
diff --git a/src/Normalizer/EntityReferenceRevisionItemNormalizer.php b/src/Normalizer/EntityReferenceRevisionItemNormalizer.php
new file mode 100644
index 0000000..3d11e05
--- /dev/null
+++ b/src/Normalizer/EntityReferenceRevisionItemNormalizer.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\entity_reference_revisions\Normalizer\EntityReferenceRevisionItemNormalizer.
+ */
+
+namespace Drupal\entity_reference_revisions\Normalizer;
+
+use Drupal\hal\Normalizer\EntityReferenceItemNormalizer;
+
+class EntityReferenceRevisionItemNormalizer extends EntityReferenceItemNormalizer {
+
+  /**
+   * The interface or class that this Normalizer supports.
+   *
+   * @var string
+   */
+	 protected $supportedInterfaceOrClass = 'Drupal\entity_reference_revisions\Plugin\Field\FieldType\EntityReferenceRevisionsItem';
+	 /**
+    * Overrides \Drupal\hal\Normalizer\FieldItemNormalizer::constructValue().
+    */
+   protected function constructValue($data, $context) {
+		 $value = parent::constructValue($data, $context);
+     if ($value) {
+			 $value['target_revision_id'] = $value['target_id'];
+     }
+		 return $value;
+   }
+}
diff --git a/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php b/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
index 9ad688c..147715f 100644
--- a/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
+++ b/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
@@ -243,7 +243,7 @@ class EntityReferenceRevisionsItem extends EntityReferenceItem implements Option
    */
   public function preSave() {
     parent::preSave();
-    $this->target_revision_id = $this->entity->getRevisionId();
+    $this->target_revision_id = $this->values['target_revision_id'];
   }
 
   /**
