Workflow Binding (wf_workflow_binding) prevents workflow from triggering
How it works:
Workflow Binding (wf_workflow_binding) was introduced starting in Jakarta. It's main purpose is to prevent the same workflow from being triggered on a given record after the workflow context has been removed by the table cleaner.
When a record is created and a workflow context is attached to that record, an associated wf_workflow_binding record gets created.
By default, the table cleaner on wf_context table removes workflow contexts after 180 days it has been completed. When the workflow engine is called to check whether to start a workflow, it checks the wf_workflow_context table if the record is created less than 180 days. If the record is created more than 180 days, the workflow engine will check the wf_workflow_binding table.
It is not recommended to change the 'age' of when the record is deleted in the table cleaner, as this number is hard-coded. For example, lowering the 'age' will cause workflows to restart once the previous context has been removed.
- One example of an issue that may occur is that when a user expects a workflow to be retriggered after being deleted, the wf_workflow_binding will prevent that workflow from being triggered on that record.
- Approvals are not being regenerated when your implementation requires the re-triggering of the workflow after it has been deleted.
- You see old records with no workflow contexts attached to them.
- Check the age of the affected record. Usually, older records would be affected since the table cleaner will remove workflow contexts that ended after 180 days.
- See if the affected record still has a workflow context attach to it.
- Check the wf_workflow_binding table. Copy the sys_id of the affected record and search for it in the 'Related record' field in the wf_workflow_binding table to verify if a wf_workflow_binding record exists.
- If you are simply trying to re-trigger a workflow for a particular record that has an associated wf_workflow_binding record, you can delete the wf_workflow_binding record and try updating the record. (Workflow must match the conditions to run in order to trigger).
- If you have already developed an implementation where it is required for workflows to be re-triggered at any given time, you can create an on 'insert after' business rule that will query for the wf_workflow_binding record and have it deleted.
KB0677378 - Workflow context deletion doesn't clean up wf_workflow_binding records