Question
Pegasystems Inc.
IN
Last activity: 4 Oct 2018 11:08 EDT
Start & Stop SLA
I have a requirement to start/stop SLA on a parent case based on child case's action. Also I need to task duration to be automatically paused when SLA stops.
E.g. I have a Parent case where SLA is 3 days to complete an action, in some situation business users will create a child case to request information from external system. Until the response is received the clock should stop. Task duration and other assignment related parameters should be paused and restarted when response is received.
is there any Out of box way to implement this? I analysed DefineSLATimes but it is useful to start/stop only on child case but not able to figure out how to do it.
Thanks
K S Jayakumar.
**Moderation Team has archived post**
This post has been archived for educational purposes. Contents and links will no longer be updated. If you have the same/similar question, please write a new post.
-
Like (0)
-
Share this page Facebook Twitter LinkedIn Email Copying... Copied!
Accepted Solution
Pegasystems Inc.
IN
Thanks everyone, we have documented both approaches and presented to business. We will proceed based on the feedback received.
Option 1 - Set Goal to a future time (01/01/3000 or existing pre-defined Goal + X Days) and adjust once a un-paused
Option 2 - Change work SLA to something else 'STOPSLA' which will simply stop the SLA and change it back to existing SLA with paused time added to Goal/Deadline.
Pegasystems
US
One idea that comes to mind is that if your parent SLA is associated with a flow assignment shape, rather than associated with the overall parent object, then to cancel the SLA or change it, you would only need to advance the flow to another assignment shape that either has no SLA or has the appropriate SLA value. /Eric
Pegasystems Inc.
IN
Parent SLA is defined at case level so your option might not help
Pegasystems Inc.
IN
You can use OOTB pxAdjustSLATimes or pxAdjustSLA activity to adjust the SLA on parent.
This activity along with some smart logic should be able to solve this issue.
Let us know if this helps
Pegasystems Inc.
IN
I checked the OOTB activities pxAdjustSLATimes & pxAdjustSLA, both are not suiting my purpose. What I want is to 'STOP' the SLA completely until a response is received,
i.e. if SLA is 3 days for Parent case and when a child case is created after 1 day. The SLA of parent should be frozen at 2 days left until child case is resolved. SLA clock should not run at all.
Once when response is received I can use pxAdjustSLATimes/DefineSLATimings to add the time taken to close the case to parent but I am not able to figure out how I can put a pause on SLA.
Pegasystems Inc.
IN
Use pxAdjustSLA to change SLA to Default, that will pause the SLA on that assignment as there is no SLA defined.
Pegasystems Inc.
IN
I tried using pxAdjustSLA to change to ‘Default’, it only works for assignment SLA, so I used “ChangeWorkSLA” but still I can see that work object has values for pySLAGoal, pySLADeadline etc and there is entry in SLA queue. I don’t know how to implement ‘PAUSE’ whereby the SLA will simply freeze.
Thanks,
K S Jayakumar
Pegasystems Inc.
IN
for suspend work items, SLA processing would not happen until the case is resumed.
So, could you please refer: https://community.pega.com/sites/default/files/help_v718/procomhelpmain.htm if suites for the use case...
Pegasystems Inc.
IN
Suspending an WO will not work, as user might choose to continue working on other case activities which are not SLA tracked.
Please refer below post,it might help you here.
https://pdn.pega.com/forums/716/suspend-process-flow-for-a-while
Pegasystems Inc.
US
Soundarajan,
It sounds like what you need to do is well outside the guardrails so you're going to have to do much of the heavy lifting in custom code. There is no pause for an SLA because the underlying queue item's pxMinimumDateTimeToRun value is either in the past (and it runs) or not. If you don't want the database trigger to fire for that item, the simplest solution is to delete the queue item entirely. In that case, you haven't paused the SLA, you have removed it. If you do this, you will then need to build into whatever code would trigger the SLA to be unpaused to determine, is there already a queue item for this SLA? If not, create one and set the values appropriately. Alternately, you could choose some sort of hack for the pause, like set the date to run 100 years into the future and then when you unpause, you reset the date to whenever you really want it.
I hope that helps,
Mike
BNY Mellon
US
This wouldn't require much of a hack, or even going well outside the guardrails.
Define a ServiceLevel DelayableDeadline to be triggered off of a property value, like .AdjustedDeadline.
Work items with an SLA manage their assignment under .pxFlow(OverallSLA).
Upon the pause,
- Store the remaining time in a property, .DeadlineTimeRemaining.
- Call pxAdjustSLA, and pass it an ServiceLevel called Indefinite, 1000 days ahead.
Upon resume,
- Recalculate .AdjustedDeadline by adding .DeadlineTimeRemaining
- Call pxAdjustSLA, and pass it the ServiceLevel DelayableDeadline, as above.
Pegasystems Inc.
IN
Thanks for your update, post business discussion we see more questions,
When SLA is paused, the time left should be frozen in all the report/display/wherever referenced. We tried the approach below but we see that time left jumps from 3 hours to 999 days left.
E.g. My Original SLA is 8 hours, when SLA is Paused the time left is 3 hours. The business expectation is that they should see 3 hours everywhere. We tried a approach of using a different property to show value in the report which will be populated when SLA is frozen but we are hitting issues when SLA is normally running in which case it is blank. If we try to add a custom function to arrive at time left based on SLA available in work, it becomes very complex to use in performance related reports.
Thanks,
K S Jayakumar
BNY Mellon
US
Excellent points.
I would suggest that the these two values are logically distinct (and mutually exclusive)
- Real time remaining till due
- Deferred time remaining till due
You could have a declare expression display whichever value is blank, if you want.
SynTouch
NL
Hi Jon,
As part of my LSA endeavours it seems that using pxAdjustSLATimes has some unwanted side-effect. Calling this activity with Fixed adjustments for goal and deadline alters pyWorkPage in some unexpected way. Is the Primary page overriden or not correctly restored by this activity in Pega 7.1.9. perhaps?
Hope to learn more about automation of the Service Level features instead of relying on the manual but functional pyAdjustSLATimes flow action.
Ref. https://collaborate.pega.com/question/adjusting-service-level-sla-pxadjustslatimes
Pegasystems Inc.
JP
the goal time and the dead line of SLA could be specified using a date time property.
so what you need is an expression which calculate the goal time and the dead line based on
T1: the time stamp of when the case is created
T2: the time stamp of when SLA is stopped
T3: the time stamp of current moment
For example,
set T2 = 01/01/3000, when case is created
set T2 = systimestamp, when SLA is stopped
Then,
delayed time = max(T3 - T2, 0)
goal time = T1 + 3Daye + delayed time
dead line = T1 + 5Day+ delayed time
Accepted Solution
Pegasystems Inc.
IN
Thanks everyone, we have documented both approaches and presented to business. We will proceed based on the feedback received.
Option 1 - Set Goal to a future time (01/01/3000 or existing pre-defined Goal + X Days) and adjust once a un-paused
Option 2 - Change work SLA to something else 'STOPSLA' which will simply stop the SLA and change it back to existing SLA with paused time added to Goal/Deadline.
-
Sibani Rath
de Volksbank
NL
Hi - i had the same requirement, i have implemented and is working in production.
Requirement - Pause SLA both case level and assignment level, when user clicks on pause SLA button and where in he will select the time till it has to be paused.
Solution:
1) Delete the SLA Items, 1 for case level, 1 assignment level
2) Updated the goal and deadline properties for both assignment and case level.
3) Call pyAdjustSLAWrapper activity and reset the SLA.
User has option to change the pend time - if he changes the time again you have to repeat the above process.
Regards
Gouri Shankar K
-
Madhusudan Sharma