This guide explains how to create an auto-deactivating-user task in OpenMRS. The task involves setting the "number of days to retire users" via the user interface and then running the auto-deactivation task.
Setting the Number of Days to Retire Users
Log in to OpenMRS.
Set the global property
GP_NUMBER_OF_DAYS_FOR_AUTO_RETIRING_USER
:Find global property
GP_NUMBER_OF_DAYS_FOR_AUTO_RETIRING_USER
.Enter the desired number of days of inactivity after which users should be retired.
Save the changes.
Running the Auto-Deactivating User Task
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.
Note: Admin users (aka super users) will not be retired.
Implementation
The task is defined in the AutoRetireUsersTask
class.
Steps to Schedule the Task:
Fill in the details for the task:
Name: Auto Retire Users
Description: e.g Retires all active users that are inactive for XX number of days specified by the value of the global property 'users.numberOfDaysToRetire'.
Class:
org.openmrs.scheduler.tasks.AutoRetireUsersTask
Start Time: Set the desired start time.
Repeat Interval: Set to
86400
(which represents 24 hours) to run daily.Start on Startup: Set to
true
.Started: Set to
true
to start the task immediately.
Save the Task:
Save the task 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
<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.