When Commitments have many Offerings, how can I tell which SLA task relates to which Offering?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 hours ago
Hi All,
So we have set up Service Commitments to make managing incident SLA Definitions easier. Each Commitment (e.g. for P1, P2, P3, P4 etc) has many, many related offerings. We have set up the SLA definitions, so each time the incident moves to a new Offering, the old SLA is completed and a new one is attached. The idea is that we can then measure the performance of each offering individually.
When that incident passes through many Offerings, many SLA Tasks are created in task_sla table. They all look very, very similar. My issue comes when I try to do reporting. Imagine a ticket that passes through four Offerings - four SLA tasks are created but in the task_sla table I can't work out which SLA tasks relates to which Offering.
It is no good me trying to make a report and dotwalk to the incident to see what the Offering is, because I can only find the current Offering in the ticket, not the history, so I cannot relate the four SLA tasks to the four historic offerings.
I guess I need to be able to tell, which Offering triggered each SLA task.
Any ideas on that would be greatly appreciated!
Many thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
43m ago
Hi @CMH
To track which task_sla record relates to a specific offering in ServiceNow, you can capture the offering at the exact moment the SLA is created.
Since the parent incident only stores the current offering upon closure, historical offerings are lost unless you map them directly onto the task_sla table.
So here you need customization.
1. Create a custom field u_service_offering in task_sla table.
2.
Create a Business Rule:
- Name: Copy Offering to Task SLA
- Table: Task SLA (task_sla)
- When: Before / Insert
- Condition: Service offering is empty AND Task.Service offering is not empty.
(function executeRule(current, previous /*null when async*/) {
current.u_service_offering = current.task.service_offering;
})(current, previous);
