Feature Wiki

Information about planned and released features

Tabs

Streamline and Enhance User Deletion Cron-Jobs

This article has been renamed (former "Delete Users After Expiration") because JF decided that, at the latest after this proposal for a new trigger (expiration), there are too many single cron-tasks dealing with user deletion, so they must be combined into some multi-trigger cron-task deleting users.

1 Initial Problem

1.1 New Trigger

There are four cron-tasks in ILIAS which automatically delete inactive and inactivated user accounts, or those who never logged in.
However, there are accounts in ILIAS who only have "expired", i.e., the end date of their temporally restricted validity has exceeded.
By now (ILIAS 5.4.x), „expired“ user accounts can’t be transferred into „inactive“ (which not only has technical reasons but also conceptual ones).
Therefore, there should be a possibility in ILIAS to automatically delete user accounts with expired access.

1.2 Unifying and Streamlining Cron-Tasks

With this new trigger supposed above, at the latest, user deletion cron-tasks became too many to offer good usability for administrators.
So, according to a JF decision, those cron-tasks are supposed to be combined in one cron-task with multiple trigger options.

By now (ILIAS 6), there are the following cron-tasks referring to this article:

Title

Byline

'Frequency' or 'Schedule' setting

'Considered roles' or 'Included Roles' setting

'Days passed since …' or 'Threshold' setting

'Warning Mail' setting

Check user accounts

If enabled, all users whose account expires will be informed by e-mail two weeks before. Furthermore all users which have not confirmed their account after a registration with e-mail confirmation will be deleted.

(no configuration at all)

Delete user accounts with no login for a long time

If enabled, user accounts will be deleted depending on the date of their last login.

yes

yes

yes

yes

Delete inactivated user accounts

If enabled, user accounts will be deleted [n] days after their inactivation.

yes

yes

yes

Delete user accounts without login

All user accounts without login at all be deleted.

yes

yes

yes

2 Conceptual Summary

2.1 Unifying and Streamlining Cron-Tasks

2.1.1 General

adm/cron_jobs/ shows only one cron-task "Delete User Automatically" (byline: "If enabled, user accounts will be deleted depending on the date of one or more trigger events.")

The "Actions" column offers "Activate" / "Deactivate" and "Edit" links (and a "Reset" link in case the cron-task has been aborted).

After clicking "Edit", ILIAS displays a form offering a setting "Trigger Events" with five multiple choice options:

  • User hasn't logged in for a long time
  • User has never logged in at all
  • User hasn't confirmed account after registration with e-mail confirmation
  • User has been inactivated
  • User has expired

Each activated trigger shows settings which allow to configure the same parameters:

  • Frequency (of execution) - radio buttons with options:
    • Daily
    • Weekly
    • Monthly
    • Quarterly
    • Yearly
  • Considered roles (of users to be deleted) - checkboxes for all global roles existing on the installation
  • Days passed since trigger event - textbox for number of days
  • Warning Mail - textbox for number of days

2.2 Trigger Events

The trigger events are defined as follows:

  • "User hasn't logged in for a long time":
    [n] days passed since last login
  • "User has never logged in at all":
    [n] days passed since creation
  • "User hasn't confirmed account after registration with e-mail confirmation":
    [n] days passed since creation
  • "User has been inactivated":
    [n] days passed since inactivation
  • "User has expired":
    [n] days passed since expiration

The following functionalities must be added for specific trigger events because they have not been available in the corresponding cron-tasks so far:

Trigger event

So far executed by cron-task

'Frequency' or 'Schedule' setting

'Considered roles' or 'Included Roles' setting

'Days passed since …' or 'Threshold' setting

'Warning Mail' functionality / configurability

User hasn't logged in for a long time

Delete user accounts with no login for a long time

User has never logged in at all

Delete user accounts without login

yes

User has been inactivated

Delete inactivated user accounts

yes

User hasn't confirmed account after registration with e-mail confirmation

Check user accounts:
Only deletion

Configurability of deletion

User has expired

Check user accounts:
Only warning mail

Configurability of warning mail

2.3 New Trigger

An additional trigger "User has expired" appears in the cron-task's list of possible triggers that has not been available in former versions of ILIAS.
It offers automatic deletion of user accounts who have limited access and whose access is expired.

3 User Interface Modifications

3.1 List of Affected Views

adm/cron_jobs/

3.2 User Interface Details

The cron-task configuration offers the following parameters:

  • First level:
    • "Trigger Event" checkboxes
  • Second level of each checkbox:
    • Schedule (radio buttons, obligatory)
    • Included roles (scrollable checkox list, optional)
    • Days passed since expiration date (textbox, obligatory)
    • Warning mail x days before deletion (textbox, optional)

3.3 New User Interface Concepts

none

4 Technical Information

{The maintainer has to provide necessary technical information, e.g. dependencies on other ILIAS components, necessary modifications in general services/architecture, potential security or performance issues.}

5 Contact

6 Funding

If you are interest in funding this feature, please add your name and institution to this list.

  • Qualitus

7 Discussion

Florian Suittenpointner, 22 Oct 2019:
A feature Workshop took place today (https://docu.ilias.de/goto_docu_sess_8057.html) on this topic.
All participants agreed that there is a need for a solution.
We discussed approaches with a different or wider scope (unifying the "expired" and "inactive" status, cron-job transposing "expired" to "inactive" status) but in end the end came back to the concept presented here.

JourFixe, ILIAS [jourfixe], 06 JAN 2020 : We prefer to have one cron job to delete inactive users as well as users that haven't logged in for a long time or never logged in. This would reduce the number of cronjobs and ease the daily work of administrators.

8 Implementation

{The maintainer has to give a description of the final implementation and add screenshots if possible.}

Test Cases

Test cases completed at {date} by {user}

  • {Test case number linked to Testrail} : {test case title}

Approval

Approved at {date} by {user}.

Last edited: 7. Jan 2020, 14:13, Suittenpointner, Florian [suittenpointner]