diff --git a/cubicweb_rodolf/hooks.py b/cubicweb_rodolf/hooks.py
index 6ad5b6834f8e431d991fcc6609b6a5ab88b74bcc_Y3ViaWN3ZWJfcm9kb2xmL2hvb2tzLnB5..bf8d91cb69ef6b15acb4b9fb17efdde46bf9a36d_Y3ViaWN3ZWJfcm9kb2xmL2hvb2tzLnB5 100644
--- a/cubicweb_rodolf/hooks.py
+++ b/cubicweb_rodolf/hooks.py
@@ -115,3 +115,49 @@
             f"urn:rodolf:{procedure.eid}:ontology",
             file.download_file_name(),
         )
+
+
+class DeleteImportProcedureHook(Hook):
+    __regid__ = "rodolf.delete-import-procedure-hook"
+    __select__ = Hook.__select__ & is_instance("ImportProcedure")
+    events = ("before_delete_entity",)
+
+    def __call__(self):
+        # Delete linked ImportProcess, ImportRecipe and RqTask
+        self._cw.execute(
+            "DELETE ImportRecipe X WHERE PROCEDURE eid %(eid)s, PROCEDURE import_recipes X",
+            {"eid": self.entity.eid},
+        )
+        self._cw.execute(
+            "DELETE RqTask X WHERE PROCESS import_procedure %(eid)s, PROCESS rq_task X",
+            {"eid": self.entity.eid},
+        )
+        self._cw.execute(
+            "DELETE ImportProcess X WHERE X import_procedure %(eid)s",
+            {"eid": self.entity.eid},
+        )
+        self._cw.commit()
+
+
+class DeleteDataServiceHook(Hook):
+    __regid__ = "rodolf.delete-data-service-hook"
+    __select__ = Hook.__select__ & is_instance("DataService")
+    events = ("before_delete_entity",)
+
+    def __call__(self):
+        # Delete linked ImportProcess, ImportRecipe and RqTask
+        self._cw.execute(
+            "DELETE RqTask X WHERE RECIPE dataservice %(eid)s, "
+            "PROCESS import_recipe RECIPE, PROCESS rq_task X",
+            {"eid": self.entity.eid},
+        )
+        self._cw.execute(
+            "DELETE ImportProcess X WHERE RECIPE dataservice %(eid)s, "
+            "PROCESS import_recipe RECIPE",
+            {"eid": self.entity.eid},
+        )
+        self._cw.execute(
+            "DELETE ImportRecipe X WHERE X dataservice %(eid)s",
+            {"eid": self.entity.eid},
+        )
+        self._cw.commit()