This feature requires a CommCare Software Plan
This feature (Automatically Close Cases) is only available to CommCare users with a Pro Plan or higher. For more details, see the CommCare Software Plan page.
This feature allows users with Edit Data access (see CommCareHQ Web Users) to configure updates to cases, including the ability to close cases. Without this feature the only ways to close cases are by filling out a form which closes a case, finding the case in the Case List and manually using the Close Case button, or by using the Importing Cases Using Excel tool.
Note that automatic update rules will only trigger on cases that are currently open. If a case has already been closed, it will not be updated by a rule, even if it otherwise matches the filter criteria.
Here are some examples of when this is useful:
Automatically closing and removing stale cases from users phones
Regularly closing cases that have a specified combination of case properties (for example, a case updated by two apps where both users' protocols are completed)
Cases are closed by creating rules.
The basic process of defining a rule is:
Define all of the criteria for the cases you want to match.
Choose all of the actions to apply to the cases that match the criteria.
Navigating to Data → Automatically Updates Cases you will see a list of all rules for the project along with the name, case type, status and last time the rule has run to completion.
If "Last Run" is not updated, it means that the rule has not yet run or did not run to completion on its last run. The completion could not have succeeded due to exceeding of the maximum number of automatic updates per day (10,000), due to exceeding the max run time (24 hours), or that there was an error during the run.
Creating a New Rule
For example, imagine that you want to close any "Patient" cases which have not been updated in a year. You want to do this to reduce the case load on the users' phones and to keep the reports accurate.
- You can create a rule by navigating to Data → Automatically Update Cases → + Add Automatic Case Close Rule button:
- Fill out the basic information by giving the rule a name you can use to remember what it's for:
- Next, add your filter criteria which define the cases that the rule will apply to. The criteria pictured below say to match all cases with case type "Patient" that have not been modified in 365 days:
- And lastly, specify the actions that will be applied to the cases that match these criteria. These actions say to close the case and update case property "close_reason", setting it to the value "automatic" and save.
Case Filter Criteria
The following filter criteria are available for matching cases:
- Case Type - is always a required part of the criteria. Select the case type of the cases you want to update or close, and if you want to match more than one case type you will need to create a rule for each case type.
- Case Not Modified Since - specify the number of days elapsed since the date the case was last modified. This last modified date is based on the time the last form to update the case was received (server time).
- Case Property - this filter allows you to match case property equality, inequality, or that a case property has a value.
- Date Case Property - this filter allows you to match when the current date comes after or before a date in a case property.
- Date Case Property (advanced) - this filter is similar to the Date Case Property filter, only it lets you add or subtract an offset to the value in the date case property before comparing to the current date. This filter could also be set up to be logically identical to the Case Not Modified Since filter by configuring it to 'when the current date is greater than the date in the case property modified_on plus X days', where modified_on corresponds to the case metadata property last_modified. However, for this purpose Case Not Modified Since is advised instead for the sake of simplicity.
- Parent Case is Closed - this filter lets you match cases whose parent case is closed.
NB: It is possible to reference parent/master case properties in any of the case property filters. The syntax follows the convention of "parent/<case_property>" or "host/<case_property>". Possible use case: Close the growth monitoring case when the parent (i.e person case) turns 6.5 years old.
The following actions can be performed on cases which match the filter criteria:
- Close the case - when this action is chosen, all cases which match the filter criteria will be closed.
- Update case property - you can choose to update a case property with or without closing the case. If you are closing the case, this may be useful if you want to specify why the case was closed for future data analysis. If you choose to update a case property you also have the option of setting it to either an exact value or setting it to the value from another case property.
Running a Rule
Rules run automatically every day at Midnight GMT. You cannot choose when a rule is run.
You can update, delete, or deactivate a rule at anytime from the list of rules.
In addition to the dynamic case properties created by your app(s), you can reference the following case properties in automatic update rule criteria:
|name||The case's name|
|owner_id||The system identifier for the case's owner|
|opened_on||The timestamp that the case was opened|
|opened_by||The system identifier for the case's opener|
|modified_on||The timestamp that the case was last modified on mobile|
|server_modified_on||The timestamp that the case was last modified on the server|
|external_id||An optional external id your app may assign to the case|
Parent cases may also be referenced in the automatic update rule criteria by prefixing the property name with "parent/". So, for example, parent/name references the parent case's name.
Reporting and Case Actions
The case close action shows up the case history as a form submission. You can view the form that closed the case by looking in the Submit History report or the Manage Forms tool. The form will also show up in the Case History of any cases closed by a rule. In the case history for the form name will show up as "Unknown" and the user as "system":
Reversing a Rule
If a rule ran and closed cases and you want to undo that action, you should go to Manage Forms or Submit History report, locate the form submission that closed the cases, and archive it. This will restore the case to its prior status. For more information on archiving forms, please see Archive Forms.
To find the forms you will want to use the following filters:
You can add the filter options in the following order:
- Choose [admin], [Web Users] and [Unknown Users]
- For application: select "Show all forms of this Application Type..."
- Run the search and the case update rule form will be listed as "