9.5 Workflow Derivation Rules and How They Work with Event Reason Derivation
Key Takeaways
- Workflow derivation rules use the Trigger Workflows scenario and are assigned only as onSave rules.
- The THEN statement sets wfConfig, the field that stores the workflow to run; only one workflow can be assigned to a transaction.
- Without a workflow derivation rule, the system saves the data directly without approval.
- Workflow derivation for new hires must be assigned under the jobInfo element.
- A workflow rule can test the derived event reason because ERD runs before workflow derivation on save.
9.5 Workflow Derivation Rules and How They Work with Event Reason Derivation
Quick Answer: A workflow derivation rule (scenario Trigger Workflows, assigned onSave) sets the wfConfig value, which is the workflow record that must approve the transaction. Without such a rule, EC saves the change directly, with no approval. Because ERD runs before workflow derivation, the workflow rule can branch on the derived event reason.
Purpose
Workflow derivation rules define the conditions that start a specific workflow. For example, when an employee's salary increases, a salary-approval workflow starts. With ERD in place, the combination is powerful. If the system derives Promotion with Pay Change, the workflow rule can route that reason to the matching approval chain.
Setting Up a Workflow Derivation Rule
- Create a rule with the scenario Employee Central Core > Trigger Workflows. In BCUI, rules from this scenario can be assigned only as onSave.
- Choose the relevant standard or model base object for the element.
- Build IF / ELSE IF conditions, for example IF Event Reason.Value = Promotion with Pay Change.
- In each THEN, set wfConfig, the field that stores the workflow record to run.
- Assign the rule in Manage Business Configuration under the element's Trigger Rules as onSave.
Only one workflow can be assigned to a transaction.
Elements That Support Workflows
- National ID Card
- Home Address
- Personal Information
- Global Information
- Personal Relationship Info
- Work Permit Information
- Job Information
- Job Relationship Information
- Employment Information
- Compensation Information
- Pay Component Recurring
- Pay Component Non-Recurring
- Foundation Objects
SAP's Recommendations
- Prefer one rule with several IF statements over many single rules.
- On the UI, the element's onSave rule is evaluated, and the workflow in the THEN runs when the condition is met. If no workflow configuration is assigned by the onSave rule, the system saves the data without approval.
- Workflow derivation rules for new hires must be assigned under the jobInfo element.
- Approval is not triggered for changes made in History, because History actions never start workflows (Sections 7.5 and 9.4).
Execution Order: Why ERD Comes First
On save of Job Information, the order is: Job Information rules, then event reason derivation, then workflow derivation. When MSS saves Job and Compensation Information together: Job Information rules, Compensation Information rules, ERD for Job Information, workflow derivation for Job Information, ERD for Compensation Information, and workflow derivation for Compensation Information (Section 5.2). The workflow rule therefore always sees the final event reason.
Worked Example 1: ERD and Workflow Together
THR81's optional step assigns the existing WF_jobInfo rule (base object Job Information Model, onSave) to Job Information next to ERD_JOBINFO. When Is Eligible for Benefit changes, ERD sets Benefits Adjustment (PAYBEN), and the workflow rule derives the Data Change (DTACHNG) workflow. SAP also suggests an alternative: add ELSE IF branches to the existing jobInfoModel_ERD_migrated_rule and WF_jobInfo rules instead of creating a separate ERD rule, which keeps the logic grouped.
Worked Example 2: A Workflow for Job Relationships
ACE wants approval when job relationships change, except when System Administrators make the change.
Step 1 – Workflow record (Manage Organization, Pay and Job Structures):
| Field | Value |
|---|---|
| Workflow ID / Name | JobRelWorkFlow / Job Relationship WF |
| Is Delegate Supported | No |
| Step 1 | Approver Type Role, Approver Role Manager Manager |
| Step 2 | Approver Type Dynamic Role, Approver Role HR Approval |
Step 2 – Rule:
| Setting | Value |
|---|---|
| Scenario / ID | Trigger Workflows / WF_JobRel |
| Base object | Job Relationships Model |
| IF | Job Relationship Type or Name ≠ previous value and user is in Permission Group ≠ "System Administrators" → Set wfConfig = JobRelWorkFlow |
| ELSE IF | Same change and user is in Permission Group = "System Administrators" → no workflow |
| Assignment | BCUI > Job Relationships > Trigger Rules, onSave |
Step 3 – Test: proxy as a manager (Sean Arnold) and add a Matrix Manager relationship for an employee. The workflow is triggered. As the administrator, the same change saves without approval.
This example shows two useful techniques: comparing a field with its previous value (Model base object), and branching on the current user's permission group.
Workflows Beyond HRIS Elements
- Foundation objects can also be protected by workflows, as the element list shows.
- MDF objects such as Position use MDF rules with the Workflow purpose, assigned as a Save rule on the object, plus Pending Data = Yes (Section 13.3).
Troubleshooting Checklist
| Symptom | Check |
|---|---|
| Change saves without approval | Is a Trigger Workflows rule assigned onSave to this element, and does a branch match? Was the change made in History? |
| Wrong workflow chosen | Does the rule test the derived event reason? Is the ELSE IF order right? |
| Hire has no approval | Is the hire workflow rule assigned in jobInfo? |
| The rule never fires | Is the base object in BCUI the same Model object used to build the rule? Does the rule ID contain spaces? |
A Job Information change is saved without any approval, although workflow records exist. What is the most likely cause?
Where must the workflow derivation rule for new hires be assigned?
A workflow derivation rule on Job Information tests whether the event reason equals 'Promotion with Pay Change', and the reason is set by an ERD rule on the same element. Why does this work?