diff --git a/arkindex/documents/tests/test_destroy_elements.py b/arkindex/documents/tests/test_destroy_elements.py
index 2dece9f44a25b15baf3db873474ea368f0f578a2..5348e927cd32d8ac00787e15db03ec29ef7c6c10 100644
--- a/arkindex/documents/tests/test_destroy_elements.py
+++ b/arkindex/documents/tests/test_destroy_elements.py
@@ -467,3 +467,14 @@ class TestDestroyElements(FixtureAPITestCase):
             'user_id': self.user.id,
             'description': 'Element deletion',
         })
+
+    def test_element_dot_delete(self):
+        """
+        test Element.delete method
+        """
+        self.maxDiff = None
+        self.client.force_login(self.user)
+        with self.assertExactQueries('element_dot_delete.sql', params={'id': str(self.vol.id)}):
+            self.vol.delete()
+        with self.assertRaises(Element.DoesNotExist):
+            self.vol.refresh_from_db()
diff --git a/arkindex/sql_validation/element_dot_delete.sql b/arkindex/sql_validation/element_dot_delete.sql
new file mode 100644
index 0000000000000000000000000000000000000000..cb144dc710a40a69adf8a8992304d443d354202a
--- /dev/null
+++ b/arkindex/sql_validation/element_dot_delete.sql
@@ -0,0 +1,61 @@
+DELETE FROM documents_transcriptionentity te WHERE transcription_id IN (
+    SELECT t.id FROM documents_transcription t
+    LEFT JOIN documents_elementpath elementpath USING (element_id)
+    WHERE t.element_id = '{id}'::uuid OR elementpath.path && ARRAY['{id}'::uuid]
+) ;
+
+DELETE FROM documents_transcription
+WHERE element_id = '{id}'::uuid
+OR element_id IN (
+    SELECT element_id FROM documents_elementpath WHERE path && ARRAY['{id}'::uuid]
+) ;
+
+DELETE FROM documents_classification
+WHERE element_id = '{id}'::uuid
+OR element_id IN (
+    SELECT element_id FROM documents_elementpath WHERE path && ARRAY['{id}'::uuid]
+) ;
+
+DELETE FROM documents_metadata
+WHERE element_id = '{id}'::uuid
+OR element_id IN (
+    SELECT element_id FROM documents_elementpath WHERE path && ARRAY['{id}'::uuid]
+ ) ;
+
+DELETE FROM dataimport_dataimportelement
+WHERE element_id = '{id}'::uuid
+OR element_id IN (
+    SELECT element_id FROM documents_elementpath WHERE path && ARRAY['{id}'::uuid]
+) ;
+
+UPDATE dataimport_dataimport
+SET element_id = NULL
+WHERE element_id = '{id}'::uuid
+OR element_id IN (
+    SELECT element_id FROM documents_elementpath WHERE path && ARRAY['{id}'::uuid]
+) ;
+
+DELETE FROM documents_selection selection
+WHERE element_id = '{id}'::uuid
+OR element_id IN (
+    SELECT element_id FROM documents_elementpath WHERE path && ARRAY['{id}'::uuid]
+) ;
+
+DELETE FROM dataimport_workeractivity
+WHERE element_id = '{id}'::uuid
+OR element_id IN (
+    SELECT element_id FROM documents_elementpath WHERE path && ARRAY['{id}'::uuid]
+) ;
+
+WITH children_ids (id) AS (
+    DELETE FROM documents_elementpath
+    WHERE element_id = '{id}'::uuid OR path && ARRAY['{id}'::uuid]
+    RETURNING element_id
+)
+DELETE FROM documents_element element
+USING children_ids
+WHERE element.id = children_ids.id ;
+
+DELETE
+FROM "documents_element"
+WHERE "documents_element"."id" = '{id}'::uuid
\ No newline at end of file