Professional Documents
Culture Documents
Managing Approval Rules in Oracle Fusion HCM - Examples
Managing Approval Rules in Oracle Fusion HCM - Examples
Overview.................................................................................................................................................3
1. Auto Approval..................................................................................................................................5
4. Approval to One level line manager, FYI to HR (HR identified using AOR).......................................9
5. Approval to One level line manager, if Line manager is not there then route to HR.....................11
3|Page
Overview
This document illustrates few examples of Approval Rules that can be configured in Fusion
HCM.
You can manage approval rules using the tasks Manage Approval Transactions for Human
Capital Management and Manage Task Configurations for Human Capital Management.
Using the Manage Approval Transactions page, you can configure approval policies for many
HCM tasks.
You can select approvers for a task, arrange approvers in the required sequence, define approval
rules for each approver, and configure conditions for each rule.
The Manage Task Configurations for Human Capital Management task navigates to the BPM
Worklist. You can use the BPM Worklist to review and configure approval policies for HCM
tasks; however, You may use the BPM Worklist to configure the following approval details:
4|Page
Define Area Of Responsibility (AOR)
Setup and Maintenance Manage assignment Responsibility lookups
Select lookup type Per_responsibility_types
Add a new code
5|Page
1. Auto Approval
Number of levels = 1
Starting participant = HierarchyBuilder.getPrincipal(Task.payload.transactionApprovalRequest.Requestor,-1,"","")
Top participant = HierarchyBuilder.getPrincipal(Task.payload.transactionApprovalRequest.Requestor,-1,"","")
Auto action enabled = True
Auto action = "APPROVE"
6|Page
For Absence Auto Approvals:
Number of levels = 1
Starting participant = HierarchyBuilder.getPrincipal(Task.payload. absencesApprovalsRequest.Requestor,-1,"","")
Top participant = HierarchyBuilder.getPrincipal(Task.payload. absencesApprovalsRequest.Requestor,-1,"","")
Auto action enabled = True
Auto action = "APPROVE"
7|Page
List Builder Supervisory
Response Type: Required
Number of levels: 1
Starting Participant: HierarchyBuilder.getManager("supervisory",Task.payload.transactionApprovalRequest.Requestor,-1,"","")
Top Participant: HierarchyBuilder.getManager("supervisory",Task.payload.transactionApprovalRequest.Requestor,-1,"","")
Auto Action Enabled: True
Auto Action: "APPROVE"
8|Page
3. Approval to One Level Line Manager
Number of levels = 1
Starting participant and Top participant can be written in any of the following ways.
9|Page
4. Approval to One level line manager, FYI to HR (HR identified using AOR)
10 | P a g e
IF
1 is 1
THEN
11 | P a g e
5. Approval to One level line manager, if Line manager is not there then
route to HR
The rule is defined to check if Requestor has a line manager or not. If he has a line manager then
it will send one level approval.
12 | P a g e
If the requestor does not have a line manager then Send approval notification to HR.
ManageWorkRelationshipRule
13 | P a g e
IF
GetManager("LINE_MANAGER",Task.payload.Requestor's Assignment.result.Request Manager) isn't ""
THEN
ManageWorkRelationshipRule1
IF
GetManager("LINE_MANAGER",Task.payload.Requestor's Assignment.result.Request Manager) is ""
THEN
14 | P a g e
15 | P a g e
6. Approval to Resource Manager (Matrix Manager)
17 | P a g e
ManageWorkRelationshipRule
IF
GetManager("LINE_MANAGER",Task.payload.Requestor's Assignment.result.Request Manager) isn't ""
THEN
18 | P a g e
19 | P a g e
8. Approval to three levels. Line Manager Line Manager's Manager
HR.
IF
GetManager("LINE_MANAGER",Task.payload.Requestor's Assignment.result.Request Manager) isn't ""
20 | P a g e
THEN
21 | P a g e
9. Approval to three levels, Line manager Resource manager HR
22 | P a g e
ManageWorkRelationshipRule
IF
1 is 1
THEN
23 | P a g e
Response Type: Required
Number of levels: 1
Starting Participant:
HierarchyBuilder.getManager("supervisory",Task.payload.transactionApprovalRequest.Requestor,-1,"","")
24 | P a g e
10. Approval to a single User
IF
1 is 1
THEN
25 | P a g e
11. Approval to an Approval Group
IF
1 is 1
THEN
26 | P a g e
12. Approval to an Enterprise Role (Parallel Approvals)
27 | P a g e
IF
i
1 1
s
THEN
Response
Required
Type
Use nu
rs ll
Application nu
Role ll
28 | P a g e
13. Approvals Based on initiator
Check if initiator is HR
- HR initiates transaction goes for auto approval and if any other user initiates go for one level line
manager approval.
29 | P a g e
IF
Task.payload.transactionApprovalRequest. i GetRepresentative("NE_REP",Task.payload.Requestor's
Requestor s Representative.result)
THEN
Number of levels 1
Starting HierarchyBuilder.getPrincipal(Task.payload.transactionApprovalRequest.
Participant Requestor,-1,"","")
HierarchyBuilder.getPrincipal(Task.payload.transactionApprovalRequest.
Top Participant Requestor,-1,"","")
True
Auto Action
Enabled
Other
Users
IF
THEN
30 | P a g e
List Builder Supervisory
Number of levels 1
Starting HierarchyBuilder.getManager("supervisory",Task.payload.transactionApprovalReque
Participant st.Requestor,-1,"","")
HierarchyBuilder.getManager("supervisory",Task.payload.transactionApprovalReque
Top Participant st.Requestor,-1,"","")
False
Auto Action
Enabled
31 | P a g e
Check if Initiator is line manager
- Line manager initiates transaction goes for HR approval and if any other user initiates Line manager
approval.
32 | P a g e
Line
Manage
r
IF
33 | P a g e
THEN
Number of levels 1
Starting HierarchyBuilder.getPrincipal(GetRepresentative("NE_REP",Task.payload.Requestor's
Participant Representative.result),-1,"","")
HierarchyBuilder.getPrincipal(GetRepresentative("NE_REP",Task.payload.Requestor's
Top Participant Representative.result),-1,"","")
False
Auto Action
Enabled
Other
Users
IF
THEN
Number of levels 1
Starting HierarchyBuilder.getPrincipal(Task.payload.transactionApprovalRequest.
Participant Requestor,-1,"","")
HierarchyBuilder.getPrincipal(Task.payload.transactionApprovalRequest.
Top Participant Requestor,-1,"","")
True
Auto Action
34 | P a g e
Enabled
35 | P a g e
Employ
ee
IF
Task.payload.absencesApprovalsRequest. i Task.payload.absencesApprovalsRequest.e
createdBy s mpUserId
THEN
Number of levels 1
Starting HierarchyBuilder.getManager("supervisory",Task.payload.absencesApprovalsRequest.Requestor,-
Participant 1,"","LINE_MANAGER")
HierarchyBuilder.getManager("supervisory",Task.payload.absencesApprovalsRequest.Requestor,-
Top Participant 1,"","LINE_MANAGER")
False
Auto Action
Enabled
Manag
er
IF
THEN
36 | P a g e
List Builder Supervisory
Number of levels 1
Starting HierarchyBuilder.getPrincipal(Task.payload.absencesApprovalsRequest.
Participant Requestor,-1,"","")
HierarchyBuilder.getPrincipal(Task.payload.absencesApprovalsRequest.
Top Participant Requestor,-1,"","")
True
Auto Action
Enabled
37 | P a g e
14. Absence Approvals with Payload Attributes
1. When Employee initiates, go for one level line manager
2. When Manager initiates, Auto approval and FYI to HR
3. When HR initiates, Auto approval, FYI to Employee and HR
1. Go to Manage Common Lookups and search for code “ORA_ANC_ADDL_PAYLOAD” and add
values for Employee, HR and Manager
38 | P a g e
2. Manage Absence Type
39 | P a g e
3. Approval rules
40 | P a g e
41 | P a g e
42 | P a g e
Employee
IF
Task.payload.absencesApprovalsRequest.absenceDispStatusCd. i "EM
toUpperCase() s P"
THEN
Number of levels 1
Starting HierarchyBuilder.getManager("supervisory",Task.payload.absencesApprovalsRequest.Requestor,-
Participant 1,null,"LINE_MANAGER")
Top HierarchyBuilder.getManager("supervisory",Task.payload.absencesApprovalsRequest.Requestor,-
Participant 1,null,"LINE_MANAGER")
False
Auto Action
Enabled
Manag
er
IF
43 | P a g e
Task.payload.absencesApprovalsRequest.absenceDispStatusCd. i "MG
toUpperCase() s R"
THEN
Number of levels 1
Starting HierarchyBuilder.getPrincipal(Task.payload.
Participant absencesApprovalsRequest.Requestor,-1,"","")
HierarchyBuilder.getPrincipal(Task.payload.
Top Participant absencesApprovalsRequest.Requestor,-1,"","")
True
Auto Action
Enabled
Response FYI
Type
User GetRepresentative("HR_REP",Task.payload.getRepresentativeListR
s esponse.result)
Participants Grou nu
ps ll
Application nu
Role ll
H
R
IF
44 | P a g e
Task.payload.absencesApprovalsRequest.absenceDispStatusCd. i "HR
toUpperCase() s"
THEN
Number of levels 1
Starting HierarchyBuilder.getPrincipal(Task.payload.
Participant absencesApprovalsRequest.Requestor,-1,"","")
HierarchyBuilder.getPrincipal(Task.payload.
Top Participant absencesApprovalsRequest.Requestor,-1,"","")
True
Auto Action
Enabled
Number of levels 1
Starting HierarchyBuilder.getManager("supervisory",Task.payload.absencesApprovalsRequest.Requestor,-
Participant 1,"","LINE_MANAGER")
HierarchyBuilder.getManager("supervisory",Task.payload.absencesApprovalsRequest.Requestor,-
Top Participant 1,"","LINE_MANAGER")
False
Auto Action
Enabled
Number of levels 1
Starting HierarchyBuilder.getPrincipal(Task.payload.absencesApprovalsRequest.e
Participant mpUserId,-1,"","")
45 | P a g e
HierarchyBuilder.getPrincipal(Task.payload.absencesApprovalsRequest.e
Top Participant mpUserId,-1,"","")
False
Auto Action
Enabled
Route the transaction to auto approval if the user is having a role of LINE Manager
46 | P a g e
Detailed steps of configuring the above rule are given below.
47 | P a g e
48 | P a g e
49 | P a g e
50 | P a g e
51 | P a g e