User Suspension

Administration tool ::: tool_usersuspension
Maintained by Sebsoft Plugins, Rogier van Dongen
The Sebsoft User Suspension Plugin offers you the possibility to automate the process of suspending users and/or removing user accounts (using moodle's default methods to delete users).
Latest release:
477 sites
56 fans
Current versions available: 5

The Sebsoft User Suspension Plugin offers you the possibility to automate the process of suspending users and/or removing user accounts (using moodle's default methods to delete users).

Suspending users is provided in three different ways:

  • Using a folder
  • Using a file upload
  • Manually through a status table

Deleting users is, if configured to be enabled, provided by comparing the date of suspending to the configured period before removal. Once the configured interval has past and the user is deemed suspended for the configured period, the useraccount will be removed using moodle's standard methods.

Furthermore, there's extensive settings that can be configured to turn every feature on or off, as well as disabling the whole tool's features.

This tool also provides a way of excluding users to be suspended or processed in case of automated processing. There are two methods provided at the moment: single user exclusion and cohort exclusion. During all three different ways of automated suspending / deleting users, only users that have NOT been configured to be excluded, either by cohort or by single user, will be processed.

Important note

Site administrators and the default guest account are completely left out of this tool. For safety measures, it is not recommended to put any form of automation on suspending or deleting administrator accounts or the default guest account, hence the decision to exclude them in any processing.


Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4
Screenshot #5
Screenshot #6
Screenshot #7
Screenshot #8


Sebsoft Plugins (Lead maintainer)
Rogier van Dongen: Project leader
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Larry Johnson
    Fri, Dec 17, 2021, 2:21 AM
    Great plugin. I am using the folder option and it both suspends and un-suspends a user. Currently it does this ever 30 minutes. I have changed the time to once per minute or every 2 minutes but it still does it ever 30 minutes. I have moodle 3.9

    We use an alert system, so if a student gets a red alert, our databases will automatically upload the suspend.csv file Once the red alert goes off, then it uploads the un-suspend.csv file. This works great. We need our moodle to be available to them quicker than 30 minutes. Some of our classes use Moodle and a student cannot do their work until they are un-suspended.

    I would like to be able to set it ever 5 minutes.


    I do not use the automatic cleanup or other smart features. Just the .csv file features.
  • Rogier van Dongen
    Fri, Dec 17, 2021, 4:51 PM
    Hi @Larry,
    Can you confirm, or make sure, your background task for this specific task is set to run at the wanted interval?
    Looking through the sources quickly, I realize we never updated the global settings and the setting seems to be unused at the moment.
    I _think _ at some point the decision was made to replace a generic background task with dedicated background tasks to avoid a few issues and it looks like the thing that was forgotten was to update the settings and remove some options that are no longer in use.
    You should be looking at the tasks "fromfolder" in this plugin in your scheduled tasks overview.
    It'd be great if you can confirm this resolves your issue. I'll take a look at cleaning up some unused options, after confirmation, for the next release.
  • Larry Johnson
    Fri, Dec 17, 2021, 10:07 PM
    Thanks for the quick reply. I believe I have the settings correct. It works great just not frequent enough. I do think it ignores the settings on the config.
    Im not sure what your asking.

    Users Suspension Settings are enabled.
    Suspend from Folder Automatic using stored csv file = Yes
    Automatic Unsuspension = Yes
    This does work.

    Upload folder processing interval = 15 minutes but would like it to be 5, but does 30 minutes no matter what minutes I use

    Configuration Check doesn't detect any problems.
    Smart Detection is disabled. this is the way I want it
    Cleanup is disabled. "

    Historical logs show ever 30 minutes.

    Thanks for you help.

  • Rogier van Dongen
    Fri, Dec 17, 2021, 10:18 PM
    Hi Larry,
    Provided you have sufficient adminstration rights, go to
    site administration -> tab "Server" -> category "Tasks" -> "Scheduled tasks"
    Then, in the list of tasks, locate the task "
    It's very likely the entry there will show "*/30" for the minute column, meaning the background task itself will only run every 30 minutes.
    You have to modify that task by hitting the cog icon and then enter "*/5" (or even */1) there. */5 would imply to run every 5th minute (practically running every 5 minutes).
    Please _do_ be aware that this by itself will not have any effect when your main CRONTAB only runs scheduled tasks every 30 minutes.

    So for this to work every 5 minutes, the following _must_ be true:
    - CRONTAB runs the generic Moodle tasks every 5 minutes
    - The specific scheduled task, as explained above, has to be set to run every 5 minutes (or less).

    The culprit here is that no specific scheduled task will run at the intended frequency if the main task runs at a lower frequency (hence why Moodle says your background tasks should run at least every 5-10 minutes, but preferably _every_ minute).
    Please also be aware the settings you're looking for are by no means part of the settings you're looking at (in fact: the frequency intervals for any task should no longer be part of the plugin settings because it's handled on a different level: the scheduled tasks in Moodle).

    Cheers and good luck!
  • Larry Johnson
    Sat, Dec 18, 2021, 12:01 AM
    I set the task to 5 minutes and that did the trick. Thanks for helping.
    Hopefully when you have time you will correct this in the settings.

    This app will help our school a great deal . Thank you for your hard work on developing this.
  • Larry Johnson
    Sat, Dec 18, 2021, 2:18 AM
    I wish there was a similar plugin that would do the same as this, except it would create a user based on .csv account. I know the bulk imports users, but that is not cron.
  • Hemam Taleb
    Mon, Mar 14, 2022, 3:22 PM
    I use Moodle 3.11.4 (Build: 20211120)
    When accessing "Users to suspend" tab I got this error message:
    SQL Server][SQL Server]'GREATEST' is not a recognized built-in function name.
    SQL Server][SQL Server]Invalid usage of the option NEXT in the FETCH statement.
    User Suspension option 'smart detection' is disabled in global tool configuration

  • Rogier van Dongen
    Thu, Apr 14, 2022, 4:47 PM
    New release is here!

    @Larry, welcomed input. I'll take this into account for possible future extension because it seems like a neat feature!

    @Hemam, a modification has been made so the two tabs causing the error are now useable again. In other words: SQL Server should no longer be an issue and the tool now works on SQL Server as well.

  • Ricardo Caiado
    Thu, Aug 4, 2022, 2:04 AM
    Hi, Rogier.

    I want to suspend a user not by inactivity but pure on a period of time. Is that something you'll add to functionality of your plugin?

  • Rogier van Dongen
    Thu, Sep 29, 2022, 5:04 PM
    Hi @Ricardo,
    The question has been asked before but unfortunately without my desired feedback.
    I can see the added value here so not unwilling to implement.
    However, there can be a possible clashing of the titans without a specification/detection mechanism.
    There are some prerequisites I'd like to discuss, primarily how those users should be detected. It's more or less critical when using a combination of functionalities from the plugin.
    I.e.: the different processes shouldn't interfere with one another.
    Currently, all users are "under investigation" apart from those specifically excluded.
    So I'd need a way to identify the specific group of users you're intending to suspend.
    Another question that arises would be what happens when one of those intended users would be unsuspended again. You can see I most lilely cannot use the creation date of the account, so I can already see the need for some date-tracking there as well.
    In other words: this needs to be specified more. It'd be great to discuss through the issue tracker on github for this plugin.
    Thanks and cheers!
  • Elmar Schmidt
    Tue, Oct 25, 2022, 9:57 PM
    Hello, is there any documentation for this plugin? Asking about this:

    "Manually through a status table"

    How to configure this?
  • Rogier van Dongen
    Tue, Oct 25, 2022, 10:02 PM
    No need to configure anything. Regular Moodle users recognize the correct icon.
    Go to the tab stating "users to suspend". The eye icon can be used to immediately suspend the user (much like the same action type in Moodle's core user list).
    No documentation other than the readme is available at the moment (expecting the interface and alt/title attributes on icons etc to be self explanatory).
    Cheers smile
  • Elmar Schmidt
    Tue, Oct 25, 2022, 10:35 PM
    Hello Rogier,
    got it now, thanks for the reply.

    We sync an external User DB with Moddle. We have a table field "Status" which is 0, 1 or 2. I was thinking that we can disable the users according to this table field.
  • Jacques Meyer
    Fri, Mar 17, 2023, 3:36 PM
    Hi, where can I edit the message that is sent on email to inform the user of suspension? using moodle 4.
  • Rogier van Dongen
    Fri, Mar 17, 2023, 4:48 PM
    Hi Jacques,
    Modifying the messages can be done using the language customisation options from within core Moodle.
    The string IDs you're looking for all start with "email:user:"
1 2 3
Please login to post comments