diff --git a/arkindex/documents/tasks.py b/arkindex/documents/tasks.py
index 1ef26c2177f3f96083cdca6a6c8835187b72c8f7..c73f7db481033c2ddf771e28b868a847042ee290 100644
--- a/arkindex/documents/tasks.py
+++ b/arkindex/documents/tasks.py
@@ -102,6 +102,7 @@ def worker_results_delete(corpus_id: str, version_id: str, parent_id: str) -> No
             | Q(entity__corpus_id=corpus_id)
         )
     )
+    metadata = MetaData.objects.filter(worker_version_id=version_id, element__corpus_id=corpus_id)
 
     if parent_id:
         elements = elements.filter(Q(id=parent_id) | Q(paths__path__overlap=[parent_id]))
@@ -110,12 +111,14 @@ def worker_results_delete(corpus_id: str, version_id: str, parent_id: str) -> No
         transcription_entities_filter = Q(transcription__element_id=parent_id) | Q(transcription__element__paths__path__overlap=[parent_id])
         transcription_entities = transcription_entities.filter(transcription_entities_filter)
         worker_transcription_entities = worker_transcription_entities.filter(transcription_entities_filter)
+        metadata = metadata.filter(Q(element_id=parent_id) | Q(element__paths__path__overlap=[parent_id]))
 
     elements.trash()
     classifications.delete()
     transcription_entities.delete()
     worker_transcription_entities.delete()
     transcriptions._raw_delete(using='default')
+    metadata.delete()
 
 
 @job('high', timeout=settings.RQ_TIMEOUTS['move_element'])
diff --git a/arkindex/documents/tests/tasks/test_worker_results_delete.py b/arkindex/documents/tests/tasks/test_worker_results_delete.py
index cb9f5849d1c2adeff0680b6c93caa04c5c4baa32..ef094fff82bf74f6293c5dcc54b97b0030551fff 100644
--- a/arkindex/documents/tests/tasks/test_worker_results_delete.py
+++ b/arkindex/documents/tests/tasks/test_worker_results_delete.py
@@ -8,7 +8,6 @@ class TestDeleteWorkerResults(FixtureTestCase):
 
     @classmethod
     def setUpTestData(cls):
-        super().setUpTestData()
         super().setUpTestData()
         cls.text = MLClass.objects.create(name='text', corpus=cls.corpus)
         cls.version_1 = WorkerVersion.objects.get(worker__slug='reco')
diff --git a/arkindex/sql_validation/worker_results_delete_in_corpus.sql b/arkindex/sql_validation/worker_results_delete_in_corpus.sql
index 749316f1b05ac39009a580eb303a35e796e4a321..99a3e2a40f473016f63e7893c8b8b49b053c69b6 100644
--- a/arkindex/sql_validation/worker_results_delete_in_corpus.sql
+++ b/arkindex/sql_validation/worker_results_delete_in_corpus.sql
@@ -256,5 +256,14 @@ WHERE "documents_transcription"."id" IN
         (SELECT U0."id"
          FROM "documents_transcription" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid));
+
+DELETE
+FROM "documents_metadata"
+WHERE "documents_metadata"."id" IN
+        (SELECT U0."id"
+         FROM "documents_metadata" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid))
diff --git a/arkindex/sql_validation/worker_results_delete_under_parent.sql b/arkindex/sql_validation/worker_results_delete_under_parent.sql
index cae89ae74d3d40680fa3b0da03a8bb13b17ee1dd..948a2e7f6397d2b1ea2eac30d52fcfb5785b816d 100644
--- a/arkindex/sql_validation/worker_results_delete_under_parent.sql
+++ b/arkindex/sql_validation/worker_results_delete_under_parent.sql
@@ -174,6 +174,18 @@ WHERE "documents_transcription"."id" IN
          FROM "documents_transcription" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
          LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND (U0."element_id" = '{parent_id}'::uuid
+                     OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
+
+DELETE
+FROM "documents_metadata"
+WHERE "documents_metadata"."id" IN
+        (SELECT U0."id"
+         FROM "documents_metadata" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
                 AND (U0."element_id" = '{parent_id}'::uuid
diff --git a/arkindex/sql_validation/worker_results_delete_under_parent_included.sql b/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
index 083a76fc72fda27271a8345c4370c0b9929cd925..4796cae3dbf85b57379399c10afcfef3d12051cd 100644
--- a/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
+++ b/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
@@ -329,6 +329,18 @@ WHERE "documents_transcription"."id" IN
          FROM "documents_transcription" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
          LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND (U0."element_id" = '{parent_id}'::uuid
+                     OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
+
+DELETE
+FROM "documents_metadata"
+WHERE "documents_metadata"."id" IN
+        (SELECT U0."id"
+         FROM "documents_metadata" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
                 AND (U0."element_id" = '{parent_id}'::uuid