diff --git a/classes/local/manager/process_manager.php b/classes/local/manager/process_manager.php
index 48268d6a9972c94f78470490517231757fcb7186..fbc806f85b4223a8b92ecfdeb1ecc97c3923380a 100644
--- a/classes/local/manager/process_manager.php
+++ b/classes/local/manager/process_manager.php
@@ -23,6 +23,7 @@
  */
 namespace tool_lifecycle\local\manager;
 
+use core\event\course_deleted;
 use tool_lifecycle\local\entity\process;
 use tool_lifecycle\event\process_proceeded;
 use tool_lifecycle\event\process_rollback;
@@ -220,4 +221,19 @@ class process_manager {
             return null;
         }
     }
+
+    /**
+     * Callback for the course deletion observer.
+     * @param course_deleted $event The course deletion event.
+     * @throws \dml_exception
+     */
+    public static function course_deletion_observed($event) {
+        $process = self::get_process_by_course_id($event->get_data()['courseid']);
+        if ($process) {
+            $step = step_manager::get_step_instance_by_workflow_index($process->workflowid, $process->stepindex);
+            $steplib = lib_manager::get_step_lib($step->subpluginname);
+            $steplib->abort_course($process);
+            self::remove_process($process);
+        }
+    }
 }
diff --git a/db/events.php b/db/events.php
new file mode 100644
index 0000000000000000000000000000000000000000..fa9c644903c868f40393d70064ea801ff1f59a26
--- /dev/null
+++ b/db/events.php
@@ -0,0 +1,32 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Event observer.
+ *
+ * @package   tool_lifecycle
+ * @copyright 2020 Justus Dieckmann WWU
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$observers = array(
+        array(
+                'eventname' => 'core\event\course_deleted',
+                'callback' => 'tool_lifecycle\local\manager\process_manager::course_deletion_observed',
+        )
+);
diff --git a/step/lib.php b/step/lib.php
index 03018d932e729e91023fd483b5d5c21582b5de25..f544e9ea7ea761cfb61bf452fa7b300fd229b283 100644
--- a/step/lib.php
+++ b/step/lib.php
@@ -24,6 +24,7 @@
  */
 namespace tool_lifecycle\step;
 
+use tool_lifecycle\local\entity\process;
 use tool_lifecycle\local\manager\step_manager;
 use tool_lifecycle\local\response\step_response;
 
@@ -123,6 +124,14 @@ abstract class libbase {
     public function extend_add_instance_form_definition_after_data($mform, $settings) {
     }
 
+    /**
+     * This method can be overridden. It is called when a course and the
+     * corresponding process get deleted.
+     * @param process $process the process that was aborted.
+     */
+    public function abort_course($process) {
+    }
+
 }
 
 /**