Closed entities reappear in the workflow
Symptoms
Upon updating a request UDF (for example, by running ValidateUDFs job), closed requests for which the UDF were updated re-entered the workflow.
Reason
Closed requests were automatically closed by a workflow, and then updated in a process step within the same auto-closure workflow so that they would be picked up by another workflow (based on the filter criteria) if/when they are re-opened. Workflow job processed UDF updates as expected, and detected that the target workflow was not the same as the workflow in which the requests were closed. As a result, requests were re-opened in the target workflow.
Entities are processed by the workflow job when the UDF values are updated. This behaviour is by design; the workflow job will always try to find a matching target workflow definition for an entity if the UDF value is updated.
During this process, when the job identifies the target workflow definition, it then checks whether the entity was closed in the same workflow definition by looking into the last entry in the WorkflowLog table. It leaves the entity in closed status if the workflow identified in the last WorkflowLog table entry is the same as the target workflow. It will, however, push the entity into workflow engine if the target workflow is different.
Workaround
Use "Reset workflow state instance" page in System Manager to set request statuses to "Closed".
Resolution
In order to prevent entities from re-entering the workflow, modify the request workflow to redirect requests into Closed state within the same workflow, instead of involving a second workflow to auto-close them.
Additional notes:
In this context, two workflows are considered as "different" if they have different filter criteria.
Two workflows are considered as "the same" if they have the same filter criteria, e.g. if one is a modified, active version of the other inactive workflow having the same filter criteria.