mail Niels.Gandrass@haw-hamburg.de
globe https://gandrass.de
Moodle.NRW Community Conference 2026
Ruhr University Bochum
2026-11-12
Why and when do we even want to get rid of users and other content?
Let's get through the boring stuff first ...
We need to remove old user records and other personally
identifiable information (PII) from our systems without undue delay
Students deleted from the university IDM must be deleted
from Moodle without undue delay
Students can't simply request the deletion of exam data or grades. Deletion can't be a simple self-service process.
moodledata/ folder is only getting bigger
How user lifecycles differ from course lifecycles
And can't we just have one plugin?!
Both, tool_lifecycle and tool_userautodelete, are powerful workflow engines
with pluggable building blocks ... they just look after different things!
|
Course Lifecycle
tool_lifecycle
|
User Lifecycle
tool_userautodelete
|
Why having one generalist if you can have two specialists?
Each plugin does one job, and does it well!
|
Course Lifecycle
tool_lifecycle
|
add |
User Lifecycle
tool_userautodelete
|
equal |
A Clean Moodle |
How users get on and off our Moodle platforms
We run a number of Moodle platforms with diverging user management
|
University Moodles
|
Public Moodle
|
The simple and straightforward case
The "slightly" more complicated case ...
The Automatic User Deletion plugin grew into a fully-fledged workflow management engine.
|
auto_transmission
Automatically manages users based on flexible workflows
filter_alt
Extensive criteria for selection / filtering users
settings_account_box
Various actions to perform on user accounts
security
GDPR-compliant deletion of user data
science
Dry-run mode for verifying the configuration
monitoring
Action log to audit performed actions
construction
Highly configurable (time thresholds, auth method, ...)
dynamic_form
Dynamic variables (e.g., user names) in email templates
|
![]() Moodle Plugin: Automatic User Lifecycle Management (tool_userautodelete) |
User filters and actions are lightweight and flexible sub-plugins
| Filters | Actions |
|
web_traffic
Last access
passkey
Auth method
id_card (Custom) Profile field approval_delegation Role school Enrolments groups Cohort account_circle_off Suspension check_circle Confirmation date_range Date range timer Time delay |
id_card
Set (Custom) profile field
account_circle_off Suspend account_circle Unsuspend groups Add / Remove cohort mail Send mail license Remove badges delete Delete security Anonymize |
|
|
All actions performed by the plugin are logged in a cumulative fashion.
Specific workflows, steps, and actions can be identified, filtered for, and sorted by.
Removing the remaining personally identifiable information (PII) after Moodle "deleted" a user
|
arrow_right_alt
Delete user |
|
arrow_right_alt
Remove PII |
|
Leveraging the workflow engine to support your institution's lifecycles
You got various user groups that require different lifecycles? We got you covered!
All filters and user actions are small yet flexible sub-plugins and
can therefore easily be extended according to your specific needs
![]() |
https://moodleuserlifecycle.gandrass.de/dev |
![]() |
You can find detailed instructions on implementing your own sub-plugins
within the developer documentation!
You created something that could help others? Wonderful!
|
bug_report
Open an issueFound a bug or have an idea? Let us know! merge
Submit a pull requestFixes, features, and docs are always welcome extension
Share your sub-pluginsYour custom filters and actions can help others |
|
I got you hooked and you would like to start exploring the plugin? Nice!
You can find a quick guide on how to install the plugin and
get started with your first workflow in the comprehensive online documentation
The user lifecycle management plugin is available on GitHub
and via the Moodle Marketplace!
|
https://marketplace.moodle.com/plugins/tool_userautodelete |
https://github.com/ngandrass/moodle-tool_userautodelete |
Now it's time for your questions!
You can find all slides of this talk at
globe https://gandrass.de