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 running the auto-deactivation task.
Setting the Number of Days to Retire Users
Log in to OpenMRS.
Set the global property (
users.numberOfDaysToRetire
):Find global property
users.numberOfDaysToRetire
.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:
Set up configuration details for the task:
Task config ID: A unique id
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'.
Class: Set
schedulable_class
to beorg.openmrs.scheduler.tasks.AutoRetireUsersTask
Start Time: Set the desired start time.
Start Time Pattern: Determines the pattern of 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.Started: Set to
true
to start the task.Other properties: You can set other properties as desired (see example below)
Save the configuration:
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="05/22/2024T23: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.