- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-29-2014 03:26 AM
Morning all,
Got a question which I don't think is unique but I can't seem to get this working the way I want it.
Background info:
When a ticket is logged, an SLA is fired (This is normal for all of us and this will not change unless the priority changes). Now, certain departments in the IT department have different SLA's.
What I am trying to create is this:
- The current SLA will become the primary business SLA which most departments will use and can't be placed into a cancelled state if reassigned to a department with a different SLA
- I need a second SLA to start when the ticket is transferred to their queue (and if transferred out their queue pauses their SLA and not cancel it in-case it is transferred back)
At the moment I have been able to build SLA's and have them working with no problems when the ticket is assigned to them but I can't figure out how to stop the SLA from being cancelled when transferred and have the primary SLA continue regardless of being reassigned.
Thanks for all help.
Regards,
Lucien
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-06-2014 04:23 AM
from memory, the first SLA cancels as soon as the assignment group changes
I did some work on this here to allow switching between teams and to maintain the teams own SLA's (different local teams, different global teams, all with different SLA's / OLA's)
It did a few extra bits that we were looking at too, but to stop the SLA change cancelling, I had to update the ScriptInclide TaskSLAController to pause instead of Cancel
For reference, we are on Calgary,
You can look at what I did, but it is an OOB scriptinclude so you may not feel you can modify it as it may have future implications.
It could stop future updates from happening, or if you make the relevant update (I cannot remember where), which will then allow this ScriptInclude to be updated with new releases / patches, you may find the "pause" functionality is removed
While I did all this work in DEV and in TEST, we never went live with it. The pressing need that made me investigate and develop this update went away and it is now an update set that sits in an XML file on my machine
but in the above script include, the following section (line 274)
_stopCancel: function(taskSLA) {
var taskSLAgr = taskSLA.getGlideRecord();
var slac = this._newSLACondition(taskSLAgr.sla, this.taskGR);
if (slac.complete() || slac.reattach()) {
taskSLA.updateState(TaskSLA.STATE_COMPLETED);
// Re-evaluate conditions for this specific taskSLA,
// to allow a 'Complete and reapply' mode of operation
if (slac.reattach()) {
var newTaskSLA = SelfCleaningMutex.enterCriticalSection(this.MUTEX_NEW + this.taskGR.sys_id, this,
this._checkNewSLA, taskSLAgr.sla.getRefRecord());
// and just in case it should need to transition to Paused state immediately upon creation
this._pauseUnpause(newTaskSLA);
}
return true; // state was changed
}
else if (slac.cancel()) {
taskSLA.updateState(TaskSLA.STATE_CANCELLED);
return true; // state was changed
}
},
has code amended to this
_stopCancel: function(taskSLA) {
var taskSLAgr = taskSLA.getGlideRecord();
var slac = this._newSLACondition(taskSLAgr.sla, this.taskGR);
if (slac.complete() || slac.reattach()) {
taskSLA.updateState(TaskSLA.STATE_COMPLETED);
// Re-evaluate conditions for this specific taskSLA,
// to allow a 'Complete and reapply' mode of operation
if (slac.reattach()) {
var newTaskSLA = SelfCleaningMutex.enterCriticalSection(this.MUTEX_NEW + this.taskGR.sys_id, this,
this._checkNewSLA, taskSLAgr.sla.getRefRecord());
// and just in case it should need to transition to Paused state immediately upon creation
this._pauseUnpause(newTaskSLA);
}
return true; // state was changed
}
// Jules this is the area that needs looking at
// If you disable this else if, it will pause, however, changing the SLA does not cancel the old one.
// Need to look at team somehow.
else if (slac.pause()) {
taskSLA.updateState(TaskSLA.STATE_PAUSED);
return true;
}
else if (slac.cancel()) {
taskSLA.updateState(TaskSLA.STATE_CANCELLED);
return true; // state was changed
}
else
return false;
},
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-29-2014 03:44 AM
Hi Lucien,
Can you share start/stop/pause conditions for both of them?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-29-2014 05:24 AM
Hi Sumeet,
Here are the conditions that you have asked for.
Start conditions are:
State = Active
Priority = 4* (This changes per priority)
Assignment group. Priority P4 SLA = Priority P4
Stop condition:
State = Closed
Pause condition:
State - is one of - Pending change, Pending Vendor, Resolved
Assignment group. Group Type - is not empty
Thanks,
Lucien
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-06-2014 03:55 AM
How about this:-
Primary SLA
--------------------------
Start Condition- You already have this set
Stop condition- State is one of Closed/Cancelled(or any other similar state you may have)
Second SLA
-------------------------
Start Condition:- Assignment Group is XYZ and
Priority is P4
Pause:- Assigment Group is not XYZ
OR
Priorty is not P4
OR
State is one of Pending change, Pending Vendor, Resolved
Stop:- State is oneof Closed/Cancelled
This might not be the exact conditions that you require, but I guess you have an idea now.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-06-2014 04:23 AM
from memory, the first SLA cancels as soon as the assignment group changes
I did some work on this here to allow switching between teams and to maintain the teams own SLA's (different local teams, different global teams, all with different SLA's / OLA's)
It did a few extra bits that we were looking at too, but to stop the SLA change cancelling, I had to update the ScriptInclide TaskSLAController to pause instead of Cancel
For reference, we are on Calgary,
You can look at what I did, but it is an OOB scriptinclude so you may not feel you can modify it as it may have future implications.
It could stop future updates from happening, or if you make the relevant update (I cannot remember where), which will then allow this ScriptInclude to be updated with new releases / patches, you may find the "pause" functionality is removed
While I did all this work in DEV and in TEST, we never went live with it. The pressing need that made me investigate and develop this update went away and it is now an update set that sits in an XML file on my machine
but in the above script include, the following section (line 274)
_stopCancel: function(taskSLA) {
var taskSLAgr = taskSLA.getGlideRecord();
var slac = this._newSLACondition(taskSLAgr.sla, this.taskGR);
if (slac.complete() || slac.reattach()) {
taskSLA.updateState(TaskSLA.STATE_COMPLETED);
// Re-evaluate conditions for this specific taskSLA,
// to allow a 'Complete and reapply' mode of operation
if (slac.reattach()) {
var newTaskSLA = SelfCleaningMutex.enterCriticalSection(this.MUTEX_NEW + this.taskGR.sys_id, this,
this._checkNewSLA, taskSLAgr.sla.getRefRecord());
// and just in case it should need to transition to Paused state immediately upon creation
this._pauseUnpause(newTaskSLA);
}
return true; // state was changed
}
else if (slac.cancel()) {
taskSLA.updateState(TaskSLA.STATE_CANCELLED);
return true; // state was changed
}
},
has code amended to this
_stopCancel: function(taskSLA) {
var taskSLAgr = taskSLA.getGlideRecord();
var slac = this._newSLACondition(taskSLAgr.sla, this.taskGR);
if (slac.complete() || slac.reattach()) {
taskSLA.updateState(TaskSLA.STATE_COMPLETED);
// Re-evaluate conditions for this specific taskSLA,
// to allow a 'Complete and reapply' mode of operation
if (slac.reattach()) {
var newTaskSLA = SelfCleaningMutex.enterCriticalSection(this.MUTEX_NEW + this.taskGR.sys_id, this,
this._checkNewSLA, taskSLAgr.sla.getRefRecord());
// and just in case it should need to transition to Paused state immediately upon creation
this._pauseUnpause(newTaskSLA);
}
return true; // state was changed
}
// Jules this is the area that needs looking at
// If you disable this else if, it will pause, however, changing the SLA does not cancel the old one.
// Need to look at team somehow.
else if (slac.pause()) {
taskSLA.updateState(TaskSLA.STATE_PAUSED);
return true;
}
else if (slac.cancel()) {
taskSLA.updateState(TaskSLA.STATE_CANCELLED);
return true; // state was changed
}
else
return false;
},