diff --git a/classes/privacy/provider.php b/classes/privacy/provider.php
index a77ccf2a8e1c8cbabd0be437f5da246282e4d8eb..c042f7bd2e3597ee103827e6b019a7352cedbd5c 100644
--- a/classes/privacy/provider.php
+++ b/classes/privacy/provider.php
@@ -26,7 +26,10 @@ namespace tool_lifecycle\privacy;
 
 use core_privacy\local\metadata\collection;
 use core_privacy\local\request\approved_contextlist;
+use core_privacy\local\request\approved_userlist;
+use core_privacy\local\request\context;
 use core_privacy\local\request\contextlist;
+use core_privacy\local\request\userlist;
 use core_privacy\local\request\writer;
 
 defined('MOODLE_INTERNAL') || die();
@@ -37,8 +40,15 @@ defined('MOODLE_INTERNAL') || die();
  * @copyright  2019 Justus Dieckmann WWU
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-class provider implements \core_privacy\local\metadata\provider,
-        \core_privacy\local\request\plugin\provider{
+class provider implements
+        // This plugin has data.
+        \core_privacy\local\metadata\provider,
+
+        // This plugin currently implements the original plugin_provider interface.
+        \core_privacy\local\request\plugin\provider,
+
+        // This plugin is capable of determining which users have data within it.
+        \core_privacy\local\request\core_userlist_provider {
 
     /**
      * Returns meta data about this system.
@@ -84,7 +94,7 @@ class provider implements \core_privacy\local\metadata\provider,
     public static function export_user_data(approved_contextlist $contextlist) {
         global $DB;
         foreach ($contextlist->get_contexts() as $context) {
-            if ($context->contextlevel === CONTEXT_SYSTEM) {
+            if ($context instanceof \context_system) {
                 $records = $DB->get_records('tool_lifecycle_action_log', array('userid' => $contextlist->get_user()->id));
                 $writer = writer::with_context($contextlist->current());
                 foreach ($records as $record) {
@@ -125,4 +135,36 @@ class provider implements \core_privacy\local\metadata\provider,
             }
         }
     }
+
+    /**
+     * Get the list of users who have data within a context.
+     *
+     * @param userlist $userlist The userlist containing the list of users who have data in this context/plugin combination.
+     */
+    public static function get_users_in_context(userlist $userlist) {
+        $context = $userlist->get_context();
+        if ($context instanceof \context_system) {
+            $sql = "SELECT userid 
+                    FROM {tool_lifecycle_action_log}";
+            $userlist->add_from_sql('userid', $sql, array());
+        }
+    }
+
+    /**
+     * Delete multiple users within a single context.
+     *
+     * @param approved_userlist $userlist The approved context and user information to delete information for.
+     */
+    public static function delete_data_for_users(approved_userlist $userlist) {
+        global $DB;
+        $context = $userlist->get_context();
+        if ($context instanceof \context_system) {
+            list($insql, $params) = $DB->get_in_or_equal($userlist->get_userids());
+            $sql = "UPDATE {tool_lifecycle_action_log}
+                    SET userid = -1
+                    WHERE $insql";
+
+            $DB->execute($sql, $params);
+        }
+    }
 }