Multi-level SLA breach notification in SAP BPM
In SAP BPM, we know how to design a simple SLA breach notification (Single level). But there are many cases, in the business process, it should escalate and send SLA breach notifications to multiple levels of users.
For example, a human task has assigned to an employee to approve a request. Due to some reason employee miss to approve the same within a predefined SLA duration. In this case a notification has to be send to his manager to escalate the same. Currently in SAP BPM this is very simple. Now let is consider 2nd level of escalation. The condition is that, if the Manager also not responded to this notification, within the 2nd SLA duration, the system should send a notification to CEO of the company.
There is no direct way to implement this in BPM. One way is that using Event based choice, an Intermediate Timer, an Intermediate Message event and a notification activity within a parallel path. If you see the objects used here, it will utilize huge amount of server resources. This will highly impact the performance. This approach we cannot use where no of process instances are high or medium. Also manager and CEO will get bunch of emails every day. This will be an annoying situation.
Consider, if a design can give a solution which will send only one consolidated SLA notification per day (If any) to Manager and CEO. Also this will not be using any event based choice, Intermediate Timer, Intermediate Message event or parallel path. All will be replaced with a job scheduler and a database table.
The design is explained below in detail:
1. BPM flow
2. Database design
Table Name: PROC_SLA | ||||||
Field Name | Java Field Name | DB Column Name | DB-Data Type | Primary Key | Mandatory | Field Length |
Request ID* | requestid | REQ_ID | String | Yes | Yes | 50 |
Task ID* | taskid | TAS_ID | String | Yes | Yes | 20 |
SLA Level* | slalevel | SLA_LEV | Int | Yes | Yes | NA |
Task Name | taskname | TAS_NAM | String | No | Yes | 100 |
SLA Breach Date | slabreachdate | SLA_BRE_DAT | Date | No | Yes | NA |
Potential Owner (email-id /role /group) | potentialowner | POT_OWN | String | No | Yes | 100 |
Task ID: we can give any unique task name to identify the task. Example: LEAVE_APR1
3. BRM design
BRM we can use the same routing rule decision table by modifying a little bit. Here we need to include the Task ID, SLA duration, and potential owner to send the SLA notifications.
SLA Rule Decision Table (Individual rule for each process) | |||
Input | Output | ||
TASK ID | LEVEL | SLA DURATION | POTENTIAL OWNER |
LEAVE_APR1 | 0 | 0 | APPROVER1 |
1 | 2 | MANAGER | |
2 | 4 | CEO |
4. Java JOB scheduler
This job scheduler will run every day (Consider the SLA duration will be in days). This will monitor the table PROC_SLA once in every day if any items which are breached SLA or not. It will send a consolidated list of requests in the notification which are breached SLA duration.
Steps to execute:
Perform below steps before assigning the human task to the potential owner
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
6 | |
4 | |
4 | |
4 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 |