Impact, Urgency, and Priority of a case
One of the best practices that ITIL brings to the party within Incident (case) Management is prioritization.
ITIL calls out 3 separate attributes: impact, urgency, and priority.
Impact: the measure of how business critical it is.
Urgency: a necessary speed of resolving an incident.
Priority: formulated from the combination of impact and urgency. Some formulate it as Priority = Urgency + Impact. Others use Priority = Urgency * Impact.
They key difference that ITIL presents with the concept of Priority versus the classic usage of Severity is that severity alone does not provide enough context for Prioritization. The urgency factor needs to be added to severity in order to provide an accurate understanding of how to prioritize activity.
Example of a priority coding system
Impact, Urgency, and Priority within Dovetail
Within Dovetail (and Clarify/Amdocs), Severity and Priority are provided, but not Impact. No worries, its easy to add this third attribute.
First, we’ll add a custom field for the impact. A little SchemaScript using SchemaEditor does the trick.
<schemaScript xmlns=”http://www.dovetailsoftware.com/2006/10/SchemaScript.xsd”>
<addColumn name=”x_impact” dataType=”String” table=”case”>
<length>40</length>
</addColumn>
</schemaScript>
Second, we’ll create a new User Defined Popup List to hold the Impact values. We’ll use the Dovetail Admin UI to do this.
Third, we’ll add a new drop-down list element to the case.asp page.
<% var x_impact=boCase(‘x_impact’);%>
<%=BuildUserDropDownList(“x_impact”,”x_impact”,bReadOnly,x_impact,”)%>
Finally, we’ll add the code to save the value when the case is saved in case2.asp.
fld_list.AppendItem(“x_impact”);
val_list.AppendItem(Request.Form(‘x_impact’).Item);
type_list.AppendItem(“String”);
The case page, now with the 3 attributes:
We now have a drop-down for each attribute. But ITIL suggests that the Priority should be set based on the Impact & Urgency. Lets make that happen.
Dynamically set the priority within Dovetail Agent
First, we’ll change the priority from a drop-down list to a readonly textbox. Comment out the priority select element, and then add the textbox:
<input type=”text” name=”priority” id=”priority” value=”<%=lPriority%>” readonly>
Second, we’ll add some code to dynamically set the priority based on the impact and urgency. jQuery will help with this. We’ll map the string values to a numeric weighting, multiply the 2 numeric weightings together to get the priority weight, and then use this to set the priority string value. We’ll do this on page load, and also when either the Impact or the Urgency(Severity) drop-downs change.
function GetWeight(inputString){
if (inputString == “Medium”) return 2;
if (inputString == “High”) return 3;
return 1;
}function SetPriority(){
var impact = $(“#x_impact”).val();
var urgency = $(“#severity”).val();
var weight = GetWeight(impact) * GetWeight(urgency);if (weight > 6){
$(‘#priority’).val(“Critical”);return;
}
if (weight > 4){
$(‘#priority’).val(“High”);return;
}
if (weight > 2){
$(‘#priority’).val(“Medium”);return;
}
if (weight > 1){
$(‘#priority’).val(“Low”);return;
}
$(‘#priority’).val(“Planning”);
}$(document).ready(function(){
SetPriority();
$(“#x_impact”).change( function() {
SetPriority();
});
$(“#severity”).change( function() {
SetPriority();
});
})
Here’s how the page looks now:
And changing either the Urgency or the Impact will dynamically set the Priority.
And there you have – an Incident Priority Automation Customization. (yikes, that sounds enterprisey. blurg.)