diff --git a/arkindex_worker/worker/metadata.py b/arkindex_worker/worker/metadata.py
index d0995d469de26c51f006a08961f63390ba4ee721..74866797198ee153187d3024533218fe6094570f 100644
--- a/arkindex_worker/worker/metadata.py
+++ b/arkindex_worker/worker/metadata.py
@@ -105,18 +105,22 @@ class MetaDataMixin(object):
 
         return metadata["id"]
 
-    def create_metadatabulk(
+    def create_metadatas(
         self,
         element: Element,
         metadata_list: list,
         worker_version: str = None,
     ):
         """
-        Create multiple metadata on an existing element.
+        Create multiple metadatas on an existing element.
         This method does not support cache.
 
         :param element Element: The element to create multiple metadata on.
-        :param metadata_list List(MetaDataBulkItem): The list of MetaDataBulkItem.
+        :param metadata_list List(MetaDataBulkItem): The list m contains the following elements:
+            - type : MetaType
+            - name : str
+            - value : str or number
+            - entity_id : str or None
         """
         assert element and isinstance(
             element, Element
@@ -124,20 +128,47 @@ class MetaDataMixin(object):
 
         assert metadata_list and isinstance(
             metadata_list, list
-        ), "type shouldn't be null and should be of type list of MetaType"
+        ), "type shouldn't be null and should be of type list of MetaDataBulkItem"
+
+        assert (
+            len(metadata_list) >= 3
+        ), "The metadata_list does not contain the correct amount of data"
+
+        type = metadata_list[0]
+        name = metadata_list[1]
+        value = metadata_list[2]
+        assert type and isinstance(
+            type, MetaType
+        ), "name shouldn't be null and should be of type MetaType"
+        assert name and isinstance(
+            name, str
+        ), "name shouldn't be null and should be of type str"
+        assert (
+            value and isinstance(value, str) or value and isinstance(value, float)
+        ), "value shouldn't be null and should be of type str or float"
+
+        if len(metadata_list) > 3:
+            entity_id = metadata_list[3]
+            assert entity_id is None or isinstance(
+                entity_id, str
+            ), "entity_id should be None or a str"
 
         metadatabulk = self.request(
             "CreateMetaDataBulk",
             id=element.id,
-            body={"worker_version": worker_version, "metadata_list": metadata_list},
+            body={
+                "worker_version": worker_version,
+                "worker_run_id": self.worker_run_id,
+                "metadata_list": metadata_list,
+            },
         )
 
-        return metadatabulk
+        return metadatabulk["metadata_list"]
 
     def list_metadata(self, element: Element):
         """
         List all metadata linked to an element.
-        This method does not support cache..
+        This method does not support cache.
 
         :param element Element: The element to list metadata on.
         """
diff --git a/tests/test_elements_worker/test_metadata.py b/tests/test_elements_worker/test_metadata.py
index 2a1ff4d4c80fdb9ed37c8f8f2f87e6b9fa6b419b..f56e684b8485db9d4fde372aac59b424851060f5 100644
--- a/tests/test_elements_worker/test_metadata.py
+++ b/tests/test_elements_worker/test_metadata.py
@@ -199,21 +199,40 @@ def test_create_metadata(responses, mock_elements_worker):
 
 
 @pytest.mark.parametrize(
-    "worker_version",
-    [(None), (), ("worker_version")],
+    "worker_version, metadatas",
+    [
+        (None, [MetaType("text"), "fake_name", "fake_value"]),
+        (None, [MetaType("text"), "fake_name", "fake_value", "fake_entity_id"]),
+        (None, [MetaType("text"), "fake_name", "fake_value", None]),
+        (None, [MetaType("text"), "fake_name", 13.5, None]),
+        (None, [MetaType("text"), "fake_name", 13.5, "fake_entity_id"]),
+        ("worker_version", [MetaType("text"), "fake_name", "fake_value"]),
+        (
+            "worker_version",
+            [MetaType("text"), "fake_name", "fake_value", "fake_entity_id"],
+        ),
+        ("worker_version", [MetaType("text"), "fake_name", "fake_value", None]),
+        ("worker_version", [MetaType("text"), "fake_name", 13.5, None]),
+        ("worker_version", [MetaType("text"), "fake_name", 13.5, "fake_entity_id"]),
+    ],
 )
-def test_create_metadatabulk(fake_dummy_worker, worker_version):
+def test_create_metadatas(fake_dummy_worker, worker_version, metadatas):
     element = Element({"id": "element_id"})
-    metadata_list = [MetaType("text"), "fake_name", "fake_value"]
+    fake_dummy_worker.worker_run_id = "fake_worker_run_id"
     fake_dummy_worker.api_client.add_response(
         "CreateMetaDataBulk",
         id=element.id,
-        response={"worker_version": worker_version, "metadata_list": metadata_list},
-        body={"worker_version": worker_version, "metadata_list": metadata_list},
+        response={"metadata_list": metadatas},
+        body={
+            "worker_version": worker_version,
+            "worker_run_id": fake_dummy_worker.worker_run_id,
+            "metadata_list": metadatas,
+        },
+    )
+    assert (
+        fake_dummy_worker.create_metadatas(element, metadatas, worker_version)
+        == metadatas
     )
-    assert fake_dummy_worker.create_metadatabulk(
-        element, metadata_list, worker_version
-    ) == {"worker_version": worker_version, "metadata_list": metadata_list}
 
     assert len(fake_dummy_worker.api_client.history) == 1
     assert len(fake_dummy_worker.api_client.responses) == 0