diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py
index dab3dc1b400c0a0d171ba79c49b9ba5c643e1513..13a0aedf31da3efac36fd9c00bb64b4d73923119 100644
--- a/djangoldp/tests/models.py
+++ b/djangoldp/tests/models.py
@@ -14,10 +14,12 @@ class JobOffer(models.Model):
 
 class Thread(models.Model):
     description = models.CharField(max_length=255, blank=True, null=True)
+    author_user = models.ForeignKey(settings.AUTH_USER_MODEL)
 
 
 class Message(models.Model):
     text = models.CharField(max_length=255, blank=True, null=True)
     thread = models.ForeignKey(Thread, on_delete=models.DO_NOTHING)
+    author_user = models.ForeignKey(settings.AUTH_USER_MODEL)
 
 
diff --git a/djangoldp/tests/tests_update.py b/djangoldp/tests/tests_update.py
index e87360ddbcb309f75f397ae69fb580c12658af94..53a5d16f8dd3491ce029d64a67ae1c29d20069f6 100644
--- a/djangoldp/tests/tests_update.py
+++ b/djangoldp/tests/tests_update.py
@@ -1,3 +1,4 @@
+from django.contrib.auth.models import User
 from django.test import TestCase
 
 from djangoldp.serializers import LDPSerializer
@@ -136,9 +137,10 @@ class Serializer(TestCase):
             self.assertEquals(skills[2].title, "skill2 UP")  # title updated
 
     def test_update_list_with_reverse_relation(self):
-        thread = Thread.objects.create(description="Thread 1")
-        message1 = Message.objects.create(text="Message 1", thread=thread)
-        message2 = Message.objects.create(text="Message 2", thread=thread)
+        user1 = User.objects.create()
+        thread = Thread.objects.create(description="Thread 1", author_user=user1)
+        message1 = Message.objects.create(text="Message 1", thread=thread, author_user=user1)
+        message2 = Message.objects.create(text="Message 2", thread=thread, author_user=user1)
 
 
         json = {"@graph": [
@@ -173,3 +175,58 @@ class Serializer(TestCase):
         self.assertIs(result.message_set.count(), 2)
         self.assertEquals(messages[0].text, "Message 1 UP")
         self.assertEquals(messages[1].text, "Message 2 UP")
+
+    def test_add_new_element_with_foreign_key_id(self):
+        user1 = User.objects.create()
+        thread = Thread.objects.create(description="Thread 1", author_user=user1)
+        message1 = Message.objects.create(text="Message 1", thread=thread, author_user=user1)
+        message2 = Message.objects.create(text="Message 2", thread=thread, author_user=user1)
+
+
+        json = {"@graph": [
+            {"@id": "https://happy-dev.fr/messages/{}/".format(message1.pk),
+             "text": "Message 1 UP",
+             "author_user_id": user1.pk,
+             },
+            {"@id": "https://happy-dev.fr/messages/{}/".format(message2.pk),
+             "text": "Message 2 UP",
+             "author_user_id": user1.pk,
+             },
+            {"@id": "_:b1",
+             "text": "Message 3 NEW",
+             "author_user_id": user1.pk,
+             },
+            {
+                '@id': "https://happy-dev.fr/threads/{}".format(thread.pk),
+                "author_user_id": user1.pk,
+                'description': "Thread 1 UP",
+                'message_set': {
+                    "@id": "https://happy-dev.fr/threads/{}/message_set".format(thread.pk)
+                }
+            },
+            {
+                '@id': "https://happy-dev.fr/threads/{}/message_set".format(thread.pk),
+                "ldp:contains": [
+                    {"@id": "https://happy-dev.fr/messages/{}/".format(message1.pk)},
+                    {"@id": "https://happy-dev.fr/messages/{}/".format(message2.pk)},
+                    {"@id": "_:b1"}
+                ]
+            }
+        ]
+        }
+
+        meta_args = {'model': Thread, 'depth': 1, 'fields': ("@id", "description", "message_set" )}
+
+        meta_class = type('Meta', (), meta_args)
+        serializer_class = type(LDPSerializer)('ThreadSerializer', (LDPSerializer,), {'Meta': meta_class})
+        serializer = serializer_class(data=json, instance=thread)
+        serializer.is_valid()
+        result = serializer.save()
+
+        messages = result.message_set.all().order_by('text')
+
+        self.assertEquals(result.description, "Thread 1 UP")
+        self.assertIs(result.message_set.count(), 3)
+        self.assertEquals(messages[0].text, "Message 1 UP")
+        self.assertEquals(messages[1].text, "Message 2 UP")
+        self.assertEquals(messages[2].text, "Message 3 NEW")
\ No newline at end of file