diff --git a/thehive/app/org/thp/thehive/services/ObservableSrv.scala b/thehive/app/org/thp/thehive/services/ObservableSrv.scala index c4a39db6d1..f3d6c1025f 100644 --- a/thehive/app/org/thp/thehive/services/ObservableSrv.scala +++ b/thehive/app/org/thp/thehive/services/ObservableSrv.scala @@ -162,10 +162,16 @@ class ObservableSrv @Inject() ( def remove(observable: Observable with Entity)(implicit graph: Graph, authContext: AuthContext): Try[Unit] = get(observable).alert.headOption() match { case None => - for { - share <- get(observable).share(authContext.organisation).getOrFail("Observable") - _ <- auditSrv.observable.delete(observable, share) - } yield get(observable).remove() + get(observable) + .shares + .toIterator + .toTry { share => + auditSrv + .observable + .delete(observable, share) + .map(_ => get(observable).remove()) + } + .map(_ => ()) case Some(alert) => alertSrv.removeObservable(alert, observable) } diff --git a/thehive/app/org/thp/thehive/services/TaskSrv.scala b/thehive/app/org/thp/thehive/services/TaskSrv.scala index 4d7ad0456f..56d26460d6 100644 --- a/thehive/app/org/thp/thehive/services/TaskSrv.scala +++ b/thehive/app/org/thp/thehive/services/TaskSrv.scala @@ -42,11 +42,25 @@ class TaskSrv @Inject() (caseSrvProvider: Provider[CaseSrv], auditSrv: AuditSrv) auditSrv.task.update(task, Json.obj("assignee" -> JsNull)) } - def cascadeRemove(task: Task with Entity)(implicit graph: Graph, authContext: AuthContext): Try[Unit] = - for { - share <- get(task).share(authContext.organisation).getOrFail("Task") - _ <- auditSrv.task.delete(task, share) - } yield get(task).remove() + def remove(task: Task with Entity)(implicit graph: Graph, authContext: AuthContext): Try[Unit] = + get(task).caseTemplate.headOption() match { + case None => + get(task) + .shares + .toIterator + .toTry { share => + auditSrv + .task + .delete(task, share) + .map(_ => get(task).remove()) + } + .map(_ => ()) + case Some(caseTemplate) => + auditSrv + .caseTemplate + .update(caseTemplate, JsObject.empty) + .map(_ => get(task).remove()) + } override def update( steps: TaskSteps,