This guide explains how to create an auto-deactivating-user task in OpenMRS. The task setup involves setting the "number of days to retire users" via the user interface and then running and configuring the auto-deactivation task .
Setting the Number of Days to Retire Users
Log in to OpenMRS.
Set the global property
number_of_days_to_auto_retire_users
:Find global property
GP_NUMBER_OF_DAYS_FOR_AUTO_RETIRING_USER
.Enter the desired number of days of inactivity after which a user should be retired.
Save the changes.
Running the Auto-Deactivating User Task
via the user interface.
The auto-deactivating user task is implemented as a scheduled task in OpenMRS. This task will automatically retire users who have been inactive for the specified number of days.
Implementation
The task is defined in the AutoRetireUsersTask
class.
Steps to Schedule the Task:
...
Note: Admin users (aka super users) will not be retired.
Task Configuration
Set up configuration details for the task:
Name: Name of the task e.g.
Auto Retire Users
Description: Short description of the task e.g. Retires all active users that are inactive for XX number of days specified by the value of the global property 'users.numberOfDaysToRetire'.
Schedulable Class:
org.openmrs.scheduler.tasks.AutoRetireUsersTask
Schedule the task:
Start Time: Set the desired start time.
Repeat Interval: Set to
...
desired repeat interval.
Start on Startup: Set to
true
...
if you want the schedule to start immediately after the
...
application starts.
...
Set the global property
users.numberOfDaysToRetire
and it’s value as numeric value e.g. 2 (if you want to auto-retire users after 2 days of inactivity).Save the
...
configuration.
The task will now be scheduled to run at the specified interval, automatically retiring inactive users based on the global property setting
...
Example Database Changeset
Code Block | ||
---|---|---|
| ||
<changeSet author="name (generated)" id="202405201900-1">
<insert tableName="scheduler_task_config">
<column name="task_config_id" valueNumeric="3"/>
<column name="name" value="Auto Retire users"/>
<column name="description" value="Retires all active users that are inactive for XX number of days specified by the value of the global property 'users.numberOfDaysToRetire'"/>
<column name="schedulable_class" value="org.openmrs.scheduler.tasks.AutoRetireUsersTask"/>
<column name="start_time" value="2024-05-22T23:59:59"/>
<column name="start_time_pattern" value="MM/dd/yyyy HH:mm:ss"/>
<column name="repeat_interval" valueNumeric="86400"/>
<column name="start_on_startup" valueBoolean="true"/>
<column name="started" valueBoolean="false"/>
<column name="created_by" valueNumeric="1"/>
<column name="date_created" value="2024-05-20T10:00:00"/>
<column name="changed_by"/>
<column name="date_changed"/>
<column name="last_execution_time"/>
<column name="uuid" value="02f598d9-e3bb-4f6f-94b6-182c6856413a"/>
</insert>
</changeSet> |
By following these steps, you can schedule and run the auto-deactivating user task in OpenMRS, ensuring that inactive users are retired after the specified period of inactivity.