diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py
index f1de6db990c54cdbecdcd1562245d686e1bf7639..aa77a01419f2c05406b5bfad8575e8eb2e61e08a 100644
--- a/arkindex/documents/serializers/elements.py
+++ b/arkindex/documents/serializers/elements.py
@@ -92,12 +92,10 @@ class MetaDataSerializer(MetaDataLightSerializer):
         fields = MetaDataLightSerializer.Meta.fields + (
             "entity_id",
             "entity",
-            "worker_version",
             "worker_run",
         )
         read_only_fields = MetaDataLightSerializer.Meta.read_only_fields + (
             "entity",
-            "worker_version",
             "worker_run",
         )
         validators = [
@@ -126,19 +124,6 @@ class MetaDataSerializer(MetaDataLightSerializer):
 
 @extend_schema_serializer(deprecate_fields=("worker_version", ))
 class MetaDataCreateSerializer(MetaDataSerializer):
-    worker_version = serializers.UUIDField(
-        required=False,
-        allow_null=True,
-        source="worker_version_id",
-        validators=[
-            ForbiddenValidator(),
-        ],
-        help_text=dedent("""
-            ID of a WorkerVersion that created this MetaData.
-
-            Creating new MetaData with a WorkerVersion is forbidden. Use `worker_run_id` instead.
-        """),
-    )
     worker_run_id = WorkerRunIDField(
         required=False,
         write_only=True,
@@ -189,7 +174,6 @@ class MetaDataBulkSerializer(serializers.Serializer):
     """
     Allow editing several MetaData
     """
-    worker_version = ForbiddenField()
     worker_run_id = WorkerRunIDField(
         help_text=dedent("""
             A WorkerRun ID that the new metadata will refer to.
diff --git a/arkindex/documents/tests/test_metadata.py b/arkindex/documents/tests/test_metadata.py
index 063a87681948afebb01bdcc3c8c8519c7aed185e..569a906247976f3ec1bad99c4a465431101530b0 100644
--- a/arkindex/documents/tests/test_metadata.py
+++ b/arkindex/documents/tests/test_metadata.py
@@ -1,4 +1,3 @@
-import uuid
 from unittest.mock import call, patch
 
 from django.contrib.auth.models import AnonymousUser
@@ -67,7 +66,6 @@ class TestMetaData(FixtureAPITestCase):
                 "value": "123",
                 "dates": [],
                 "entity": None,
-                "worker_version": None,
                 "worker_run": None
             },
         ])
@@ -106,7 +104,6 @@ class TestMetaData(FixtureAPITestCase):
                 "type": "text",
                 "value": "123",
                 "entity": None,
-                "worker_version": None,
                 "worker_run": None
             },
             {
@@ -128,31 +125,10 @@ class TestMetaData(FixtureAPITestCase):
                     "worker_version_id": str(self.worker_version.id),
                     "worker_run": None,
                 },
-                "worker_version": None,
                 "worker_run": None,
             },
         ])
 
-    def test_list_with_worker_version(self):
-        self.metadata.worker_version = self.worker_version
-        self.metadata.save()
-        self.client.force_login(self.user)
-        with self.assertNumQueries(4):
-            response = self.client.get(reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}))
-        self.assertEqual(response.status_code, status.HTTP_200_OK)
-        self.assertListEqual(response.json(), [
-            {
-                "dates": [],
-                "id": str(self.metadata.id),
-                "name": "folio",
-                "type": "text",
-                "value": "123",
-                "entity": None,
-                "worker_version": str(self.worker_version.id),
-                "worker_run": None
-            },
-        ])
-
     def test_list_with_worker_run(self):
         self.metadata.worker_version = self.worker_version
         self.metadata.worker_run = self.worker_run
@@ -171,7 +147,6 @@ class TestMetaData(FixtureAPITestCase):
                 "value": "123",
                 "entity": None,
                 "dates": [],
-                "worker_version": str(self.worker_version.id),
                 "worker_run": {
                     "id": str(self.worker_run.id),
                     "summary": "Worker Recognizer @ version 1",
@@ -212,7 +187,6 @@ class TestMetaData(FixtureAPITestCase):
             "type": "text",
             "value": "1r",
             "worker_run": None,
-            "worker_version": None,
         }])
 
     def test_list_with_parents(self):
@@ -244,7 +218,6 @@ class TestMetaData(FixtureAPITestCase):
                         "value": "123",
                         "dates": [],
                         "entity": None,
-                        "worker_version": None,
                         "worker_run": None,
                     },
                     {
@@ -254,7 +227,6 @@ class TestMetaData(FixtureAPITestCase):
                         "type": "text",
                         "value": "1r",
                         "entity": None,
-                        "worker_version": None,
                         "worker_run": None,
                     },
                     {
@@ -265,7 +237,6 @@ class TestMetaData(FixtureAPITestCase):
                         "type": "numeric",
                         "value": 1337.0,
                         "worker_run": None,
-                        "worker_version": None,
                     },
                 ],
                 key=lambda x: metadata_ordering(x["id"]),
@@ -319,9 +290,9 @@ class TestMetaData(FixtureAPITestCase):
         md = self.vol.metadatas.get(type=MetaType.Location, name="location")
         self.assertEqual(md.value, "Texas")
 
-    def test_create_metadata_worker_version(self):
+    def test_create_metadata_worker_version_ignored(self):
         self.client.force_login(self.user)
-        with self.assertNumQueries(3):
+        with self.assertNumQueries(7):
             response = self.client.post(
                 reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}),
                 data={
@@ -331,27 +302,17 @@ class TestMetaData(FixtureAPITestCase):
                     "worker_version": str(self.worker_version.id),
                 }
             )
-            self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-        self.assertEqual(response.json(), {
-            "worker_version": ["This field is forbidden."],
-        })
+            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
 
-    def test_create_metadata_worker_run_or_version(self):
-        self.client.force_login(self.user)
-        with self.assertNumQueries(4):
-            response = self.client.post(
-                reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}),
-                data={
-                    "type": "location",
-                    "name": "location",
-                    "value": "Texas",
-                    "worker_run_id": str(self.local_worker_run.id),
-                    "worker_version": str(self.worker_version.id),
-                }
-            )
-            self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-        self.assertDictEqual(response.json(), {
-            "worker_version": ["This field is forbidden."],
+        created_md = MetaData.objects.get(id=response.json()["id"])
+        self.assertEqual(response.json(), {
+            "id": str(created_md.id),
+            "name": "location",
+            "type": "location",
+            "value": "Texas",
+            "entity": None,
+            "dates": [],
+            "worker_run": None
         })
 
     def test_create_metadata_bad_worker_run(self):
@@ -385,7 +346,6 @@ class TestMetaData(FixtureAPITestCase):
                 "type": "exact",
                 "year": 1885
             }],
-            "worker_version": None,
             "worker_run": None
         })
 
@@ -538,7 +498,6 @@ class TestMetaData(FixtureAPITestCase):
             "value": "Texas",
             "entity": None,
             "dates": [],
-            "worker_version": str(self.local_worker_run.version.id),
             "worker_run": {
                 "id": str(self.local_worker_run.id),
                 "summary": "Worker Custom worker @ version 1",
@@ -718,7 +677,6 @@ class TestMetaData(FixtureAPITestCase):
             "type": "date",
             "value": "2019-12-04",
             "entity": None,
-            "worker_version": None,
             "worker_run": None
         })
         self.metadata.refresh_from_db()
@@ -802,8 +760,6 @@ class TestMetaData(FixtureAPITestCase):
             # DRF should ignore the field silently
             self.assertEqual(response.status_code, status.HTTP_200_OK)
 
-        data = response.json()
-        self.assertIsNone(data["worker_version"])
         self.metadata.refresh_from_db()
         self.assertIsNone(self.metadata.worker_version_id)
         self.assertEqual(self.metadata.name, "hello")
@@ -829,7 +785,6 @@ class TestMetaData(FixtureAPITestCase):
             "type": "date",
             "value": "2019-12-04",
             "entity": None,
-            "worker_version": None,
             "worker_run": None
         })
         self.metadata.refresh_from_db()
@@ -855,7 +810,6 @@ class TestMetaData(FixtureAPITestCase):
             "type": "date",
             "value": "123",
             "entity": None,
-            "worker_version": None,
             "worker_run": None
         })
         self.metadata.refresh_from_db()
@@ -880,7 +834,6 @@ class TestMetaData(FixtureAPITestCase):
             "type": "text",
             "value": "2019-12-04",
             "entity": None,
-            "worker_version": None,
             "worker_run": None
         })
         self.metadata.refresh_from_db()
@@ -975,8 +928,6 @@ class TestMetaData(FixtureAPITestCase):
             # DRF should ignore the field silently
             self.assertEqual(response.status_code, status.HTTP_200_OK)
 
-        data = response.json()
-        self.assertIsNone(data["worker_version"])
         self.metadata.refresh_from_db()
         self.assertIsNone(self.metadata.worker_version_id)
 
@@ -1012,7 +963,6 @@ class TestMetaData(FixtureAPITestCase):
                 "value": "123",
                 "entity": None,
                 "dates": [],
-                "worker_version": None,
                 "worker_run": None
             }
         )
@@ -1038,7 +988,6 @@ class TestMetaData(FixtureAPITestCase):
                 "value": 123.0,
                 "entity": None,
                 "dates": [],
-                "worker_version": None,
                 "worker_run": None
             }
         )
@@ -1060,7 +1009,6 @@ class TestMetaData(FixtureAPITestCase):
             "value": "123",
             "entity": None,
             "dates": [],
-            "worker_version": str(self.worker_version.id),
             "worker_run": {
                 "id": str(self.worker_run.id),
                 "summary": "Worker Recognizer @ version 1",
@@ -1072,7 +1020,8 @@ class TestMetaData(FixtureAPITestCase):
         entity = self.corpus.entities.create(
             name="Texas",
             type=self.location_type,
-            worker_version=self.worker_version,
+            worker_run=self.worker_run,
+            worker_version=self.worker_version
         )
         response = self.client.post(
             reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}),
@@ -1086,7 +1035,8 @@ class TestMetaData(FixtureAPITestCase):
         entity = self.corpus.entities.create(
             name="Texas",
             type=self.location_type,
-            worker_version=self.worker_version,
+            worker_run=self.worker_run,
+            worker_version=self.worker_version
         )
         metadata = self.vol.metadatas.create(type=MetaType.Location, name="location", value="Texas")
         response = self.client.patch(
@@ -1102,7 +1052,8 @@ class TestMetaData(FixtureAPITestCase):
         entity = self.corpus.entities.create(
             name="Texas",
             type=self.location_type,
-            worker_version=self.worker_version,
+            worker_run=self.worker_run,
+            worker_version=self.worker_version
         )
         metadata = self.vol.metadatas.create(type=MetaType.Location, name="location", value="Texas", entity=entity)
         response = self.client.patch(
@@ -1120,7 +1071,8 @@ class TestMetaData(FixtureAPITestCase):
         entity = self.private_corpus.entities.create(
             name="Texas",
             type=location_type,
-            worker_version=self.worker_version,
+            worker_run=self.worker_run,
+            worker_version=self.worker_version
         )
         response = self.client.post(
             reverse("api:element-metadata", kwargs={"pk": str(self.vol.id)}),
@@ -1134,7 +1086,8 @@ class TestMetaData(FixtureAPITestCase):
         entity = self.private_corpus.entities.create(
             name="Texas",
             type=location_type,
-            worker_version=self.worker_version,
+            worker_run=self.worker_run,
+            worker_version=self.worker_version
         )
         metadata = self.vol.metadatas.create(type=MetaType.Location, name="location", value="Texas")
         response = self.client.patch(
@@ -1159,7 +1112,6 @@ class TestMetaData(FixtureAPITestCase):
                 "value": "# Title\n## Subtitle\nbla",
                 "entity": None,
                 "dates": [],
-                "worker_version": None,
                 "worker_run": None
             }
         )
@@ -1178,7 +1130,6 @@ class TestMetaData(FixtureAPITestCase):
                 "value": "<h1>Title</h1>",
                 "entity": None,
                 "dates": [],
-                "worker_version": None,
                 "worker_run": None
             }
         )
@@ -1197,7 +1148,6 @@ class TestMetaData(FixtureAPITestCase):
                 "value": '&lt;style type="text/css"&gt;* { display: none !important; }&lt;/style&gt;',
                 "entity": None,
                 "dates": [],
-                "worker_version": None,
                 "worker_run": None
             }
         )
@@ -1407,13 +1357,12 @@ class TestMetaData(FixtureAPITestCase):
                 data={"metadata_list": [
                     {"type": "text", "name": "language", "value": "Chinese"},
                     {"type": "text", "name": "alt_language", "value": "Mandarin"}
-                ], "worker_version": str(self.worker_version.id)},
+                ]},
                 format="json"
             )
             self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
         self.assertDictEqual(response.json(), {
-            "worker_run_id": ["This field is required."],
-            "worker_version": ["This field is forbidden."],
+            "worker_run_id": ["This field is required."]
         })
 
     def test_bulk_create_metadata_bad_worker_run(self):
@@ -1538,7 +1487,6 @@ class TestMetaData(FixtureAPITestCase):
                     "type": "text",
                     "name": "language",
                     "value": "Chinese",
-                    "worker_version_id": str(uuid.uuid4()),
                     "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
                 },
                 ], "worker_run_id": str(self.local_worker_run.id)},