Press "Enter" to skip to content

How to configure Service Level Agreement(SLA) in Pega?

34

Introduction

  • Service Level Agreement main objective is to process any time bound requirements in the application.

Imagine, Timesheet application. If an employee fails to submit timesheet by end of month (April 30th), then he/she has to be sent with a reminder email. If he/she didn’t submit after 5th of next month, then we should send an email copy reporting Manager.

In Pega, we can have a separate case generated for those who didn’t submit Timesheet and we have have an SLA running for the case.

SLA can be configured to send an email to the employee.

We will discuss about it in detail later in this post.

What is a SLA?

SLA – Service Level Agreement.

  • SLA is supported by a Pega OOTB agent – ServiceLevelEvents under Pega-ProCom agent.

  • We can configure the SLA on an entire flow or for a particular assignment.
  • SLAs can update the urgencies as well as executing the Escalation activities (like sending Email).

How do we configure a SLA?

  • SLA rule comes under Process category.

Create a new SLA rule.

  • There is single main tab – General

General Tab

In this, we configure the urgency calculation as well as configure the escalation activities.

Start of Service Level

Initial Urgency – We can set a numeric value between 0-99.

What do you mean by urgency?

  • Urgency can be associated with assignment as well as work item.
  • Numeric value can be set from 0-99 range.
  • In most of the application, we use urgency to prioritize the unresolved cases.
  • So based on urgency, we can sort the worklist or workbasket and also we can use GetNextWork to pull the work item with highest urgency.
  • Normally for every assignment the urgency is default to 10.

Imagine, if you configure this SLA in an assignment shape with Initial urgency as 10. Then the total urgency will be Default urgency (10) + Initial Urgency (10) = 20

Assignment Ready – There are 3 values which you can configure for assignment ready.

Let’s first discuss, “Why do we need this field?”

Imagine in an Organization, a particular division – say call center division works from 9 p.m to 6 a.m

That means user can start working on their case only from 9 p.m. In such cases, we can start the SLA from the start time not the assignment creation time.

Assignments can be created and assigned to the user by mid-day, say 11 am. But no one is there to work and some business don’t want to start the SLA from the assignment creation time.

Hope you get it 🙂

Now, let’s get to the options available:

  1. Immediately – As soon as the assignment is created.
  2. Dynamically defined on a property – We can refer a property and set the time prior.
  3. Time delay – You can introduce a time delay (some constant values).

Service Level Definitions
Before checking the configuration, let’s know about the basics of the definitions.

There are 3 definitions available in a Service level:

  1. Goal
  2. Deadline
  3. Passed deadline

Imagine I got a postpaid connection and need to pay the bill by 25th of every month.
The service providers have some business policies like, on 25th they will send me an e-mail along with post mail.
If I didn’t pay my bill by 27th, then they will send a reminder again.
If I still didn’t pay the bill by 30th, then they will start sending a reminder mail in 3 days’ time interval by adding Rs.100 each day as a fine amount.

Let us solve this in Pega. Imagine, here we create a work item by 24th of every month for all the connections. The work item will get resolved after bill payment.

Calculate Service levels

We know Assignment ready field is the starting point for SLA calculation.

a) Interval from when assignment is ready

For the postpaid bill scenario, I set the goal date as 1 day next to work item creation.

Work item creation date – 24th,so goal date will be 25th. You can also restrict it to business days.

b) Set to the value of a property – You can set the date value to the property dynamically prior.

We can use some property like BillGoalDate with values as 25th of that month.

Goal Date – 25th

Escalation activity

As per our requirement, on 25th they need to send a reminder mail to the user (me).

So goal date, we can configure the SLA as Notify Party. You can also use custom Run activity to solve your business requirement.

You also have an option to increase the urgency of the case on goal date.

Now we have configured GOAL.

Deadline – 27th

Note: Deadline date time interval is calculated from assignment ready date. Not from goal date.

So work item creation date is 24th and deadline(second reminder) on 27th, so you can configure deadline as 3 days. Increase urgency value and execute notify party escalation activity.

Passed Deadline – 30th – It means 3 days after our deadline 27th.

Note: Passed deadline date time interval is calculated from deadline date. So it’s 3 days.

You have an option to repeat the same escalation process for n number of times.

Here, in our example it is for 20 times. So by 3rd , 6th,… of next month the same passed deadline escalation events  occur.

What are the types of SLA?

The was by which we use SLA, it is of two types:

  1. Assignment SLA
  2. Work item SLA

What is an Assignment level SLA?

  • We can specify time bound process for particular assignments.

Throughout the application, I will explain with a simple leave application.

Step 1: Create a SLA rule.

We set Initial urgency to 10 & Assignment ready – Immediately.

For testing purpose, I set the goal as 10 seconds and Urgency will be increased by 20.

Now, SLA is ready.

Step 2: Create a sample flow rule with an assignment shape.

Step 3: Configure the SLA in the assignment shape.

You will see a clock symbol in the assignment shape. Remember, whenever you see a clock symbol in the assignment shape, it means SLA is configured.

Remember to route the assignment to your Operator ID and configure my work to see your worklist.

Step 4: Run the flow rule. Flow rests on assignment shape, where it expects user input.

Assignment urgency is calculated using the Declare Expression,

pxUrgencyAssign = @min(100,@max(0, .pxUrgencyWork  + .pxUrgencySLA + .pxUrgencyAdjust)))

Min max is for restricting the value within 100. Cool 🙂

pxUrgencyWork – Work SLA (Default 10)

pxUrgencySLA – What we set from SLA

pxUrgencyAdjust – Manually, we can adjust SLA

We set SLA Initial urgency is 10.

So Urgency should be 20 at the time of work item creation.

Refresh the worklist in sometime, the SLA agent should run and set the Urgency to 40.

Yes, it is 🙂

Let us now trace and check what is happening behind the scene.

Step 5: Trace the flow run.

  • You can see ‘DefineSLATimes’ activity which sets the SLA value to Assign-Worklist class.

You can verify the assignment SLA values in PC_ASSIGN_WorkList table as well as in the clipboard newassignpage. You can find other values too. Like when is the goal date, deadline date, etc.,.

  • You can see Assign-.AddAssign activity getting called and declare expression getting fired.

AddAssign activity is responsible for queuing the Goal event to SLA Agent.

The standard SLA agent activity does the rest in Updating SLA, based on Goal/ Deadline and executing escalation activities.

What is a Work-item level SLA?

  • We can configure an SLA to run on the complete workitem life cycle.

Imagine, you are in a repair application. The business is like whatever repair request comes in, it should be solved in 5 days. Irrespective of how many people work, it is basically like tracking the entire life cycle. You can implement a work item SLA to send reminder mail/Advance flow/Auto approve.

We will try to use up the same Leave request flow as an example.

Step 1: Create a SLA – Use the same SLA.

Step 2: Create a Flow rule – Use the same flow 😀

Step 3: In the process tab of the flow rule, add the Service Level agreement.

Actually pySLAName is the property configured in the SLA rule form.

You can dynamically update the value ‘pySLAName in the pyDefault data transform too, at the time of work item creation.

Step 4: Run the flow rule and check the work item urgency.

pxUrgencyWork = @min(100,@max(0,.pxUrgencyWorkClass + .pyUrgencyWorkAdjust + .pxUrgencyWorkSLA + .pxUrgencyPartyTotal + .pxUrgencyWorkStageSLA +.pxUrgencyWorkStepSLA))

pxUrgencyWorkClass  – Default work SLA – 10

pyUrgencyWorkAdjust – You can manually adjust the SLA by setting the value here.

pxUrgencyWorkSLA  – Urgency configured in the work item SLA – 10

pxUrgencyPartyTotal  – Urgency included for each party with the application -0

Based on the flow type, pxUrgencyWorkStageSLA, pxUrgencyWorkStepSLA are assigned.

Since it is Internal process flow, pxUrgencyWorkStepSLA = 10

Let’s wait for goal time and check the case urgency and status.

The Urgency is increased.

Let us now trace and check, what is happening behind the scene.

Step 5: Trace the flow run.

SaveNew – > DefineSLATimes -> OverallSLA (Flow rule)

OverAllSLA Flow

It is nothing but a parallel flow to the workitem with single assignment shape.

If you see the assignment shape, then SLA is configured. Now it leads to the assignment SLA.

There is a router activity, which routes the assignment to workbasket default@org.com

You may get a question, “So what happens to this assignment? Who will process it?”

Yes, the OverallSLA flow will end, when the main process flow ends.

Tracer snippet after resolving the primary, leave request flow. Overall SLA flow ends with a ticket.

How to configure SLA in a Case?

From the case designer, you can open the case settings tab.

You can configure the goal and deadline time here.

On saving the form, a SLA rule name ‘pyCaseTypeDefault’ is created in that class.

In the case designer, you select parent case or top level case as start time.

Then the SLA rule assignment ready is configured dynamically with a property.

Finally we are at the end of SLA post 🙂

What do we need to remember while configuring SLA rule?

  • SLA processing depends on Standard Pega-ProCom agent – ProcessSLAEvents (Discussed in detail in ‘Requestor types‘ (http://myknowpega.com/2017/05/13/requestor-types/) post).
  • Remember SLA agent needs lock to update the workitem. If lock is acquired by any other user, then SLA processing will get delayed.
  • You can adjust the SLA times dynamically. Pega provides OOTB flowaction ‘pyAdjustSLA’, ‘pyAdjustSLATimes’. Check out these.
  • You can delegate the SLA rule to business users.
  1. Saleem Saleem

    Hi Prem, Nice article.

    Generally we use OOTB locations (pyAdjustSLA,pyAdjustSLATimes) on assignment to change or for doing any modifications on existing SLA on same Assignment.

    1.Can we change the SLA values by directly opening the Queue item which is created on Assignment in newAssignment Page?

    2. Is there any OOTBs to set SLA on Assignment via activities by knowing the Assignment key instead of directly setting on Assignment shape?

  2. Naresh Naresh

    It’s very important information about SLA …Thks for sharing

    • Premkumar G Premkumar G

      You are welcome, Naresh. Thank you so much for your appreciation. Please subscribe and stay tuned for more posts.

  3. Brahmesh Brahmesh

    What happens if assignment SLA his configured for more days than work level SLA. Let’s say..process should be completed in 5 days but one of the assignment (exceptional) is configured for 7 days. Will process be resolved on 6th day? Is there any mechanism that pega internally sync up both work level and Assignment SLA.

    • Premkumar G Premkumar G

      Hi Brahmesh,
      There will not be any problem. Assuming you configured the flow level SLA to end the flow by 5th day, then the flow will end, which mean all assignments will end.

  4. Kumar Kumar

    Hi Prem, Once we create an SLA, how does system/Agent(Pega-Procom) knows that the SLA is created. Is there any Access configuration that has to be done??

    • Premkumar G Premkumar G

      Hi Kumar, SLA should be tagged to either assignment or a flow.

      Let’s take assignments, you can set SLA rule in the assignment. Now when you flow reach the assignment shape, Pega OOTB queues an entry to standard agent to process the item. It all happens at the back end. Pega takes care of it well. 😊

  5. shaik shaik

    hi prem,

    i have a small question. can we call a when rule in decision table insted of if- else.

    • Premkumar G Premkumar G

      Hi Shaik, Yes you can. when rule returns either true or false. In the expression builder, you can use a function ‘Callwhen’ to evaluate a when rule.

  6. Saheli Saheli

    Hi,
    How to configure month in goal/ deadline/ passed deadline in SLA?

  7. Vikas Vikas

    Hi Prem,

    As per your explanation, we have 2 types of SLA – Assignment Level, Work Item Level SLA. Are Work Item Level SLA and CASE level SLA are same? what do you mean by default urgency, is that urgency included always while calculating work-item urgency?

    • Premkumar G Premkumar G

      Hi Vikas, Sorry for that confusion. the two types of SLA should be assignment level and flow level.
      After some severe modification of Case designer, we can call three types of SLA including Case level SLA.

      Default Urgency – Yes it is set default by OOTB data transform

  8. ramachandra ramachandra

    hi prem,
    what is the difference between flow level SLA and Work Object SLA. How to configure both.

    • Premkumar G Premkumar G

      Flow level SLA – applicable in the flow life cycle. Once the flow ends, the SLA ends.
      Work Object / Case level SLA. You can configure an SLA that runs in the Complete case life cycle. If the case is resolved, then the SLA ends

  9. Hari Prasad Hari Prasad

    Hi Prem,

    In my project, we are using SLA to retry service calls. SLA starts whenever service call fails. There is no urgency mentioned and we are not considering that at all. We are just using the SLA to retry service call. Mentioned the Goal as 5mins, Deadline as 20 mins and Passed dead line as 1 for 10 intervals.

    My doubt is:
    After Goal, Deadline and Passed Deadline are reached, what exactly SLA agent do? Please confirm.

    • Premkumar G Premkumar G

      It does nothing 🙂 . It just execute the escalation activities on Goal, Deadline, Passed deadline. Once the time limits are crossed no queue entries for SLA agents. so it does nothing 🙂

  10. Daud Daud

    Great explanation….appreciated!! Thanks 🙂

    • Premkumar G Premkumar G

      Thank you so much, Daud. You are most welcome. 🙂

  11. Ravikiran Ravikiran

    Thanks Prem for your effort in explaining PRPC to the folks.

    • Premkumar G Premkumar G

      You are welcome, Ravikiran. 🙂

  12. Ankit Ankit

    Hi Prem,

    A great platform created by you to learn PEGA and surely within couple of years all PDN queries will be routed to you (if you continue this practice).

    I have a query regarding case level SLA and assignment level SLA.
    Let us assume that overall SLA of a case expire at the same time as the assignment level SLA for a case. Which escalation activity will be triggered first (Assignment level or the Case level).
    Please explain.

    Let me know if you need more info about the question.

    Thanks,
    Ankit

    • Premkumar G Premkumar G

      Hi Ankit,
      SLA escalation activities are triggered by SLA agent ( standard agent). The standard agent process the queue entries in the order they got queued once the current date has crossed the minimum date time for processing ( goal time, deadline or passed deadline) So whatever queued first will get processed first.

      In the above example, if you meant goal level escalation activity, then ideally case level goal escalation gets queued before any assignment SLA. So it will be processed first.

  13. Ankit Ankit

    Thanks Prem for the explanation.

    • Premkumar G Premkumar G

      You are welcome, Ankit. 🙂

  14. Ankit Ankit

    Hi Prem,

    Do we have different work baskets / queue for case level and assignment level SLA once they have been queued or all work objects reside in the same work basket?

    Thanks
    Ankit

    • Premkumar G Premkumar G

      Hi Ankit, I think you are bit confused. There is no workbasket concept in agent queues. The queue entries resides in Sys_queue_Defautentry ( or other sys_queue tables) table. they are just instances of sys-queue classes.

  15. Ankit Ankit

    Thanks Prem. It’s clear now.

    • Premkumar G Premkumar G

      You are welcome. 🙂

  16. Lakshmi S Lakshmi S

    Hey Prem,

    Nice Expalnation!!

    I have gone through almost all the posts, Its very helpful.

    • Premkumar G Premkumar G

      Hello Lakshmi,
      Thank you so much for your appreciation. 🙂

  17. Veera Reddy Kesari Veera Reddy Kesari

    Nice Expalnation Prem.

    • Premkumar G Premkumar G

      Thank you, Veera. 🙂

  18. Suman Suman

    Hi Prem,

    Nice Explanation !!
    It is very helpful 🙂

    Can you please post how to configure Correspondence rule. it would be helpful for me.

    Thanks in Advance.

    • Premkumar G Premkumar G

      Hello Suman,

      Thank you so much !! Glad to hear that you found it useful.
      Yeah I’ll post about it soon. Stay tuned ! 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

error: Content is protected !!