Linking a CI to a Business Criticality for Incident Service Level Management

jtshone
Tera Expert

Hi, company has a list of 150 (CIs) that it has tiered Gold, Silver and Bronze.  Incident SLAs for P1-P3, resolution times are based on the G/S/B tiering.  Company has no mature CSDM and is not using service or service offering to any real extent and only 50 CI relationships defined.

 

In order to do this I see 2 options:

 

A) Add the CIs to each SLA definition, e.g. P1 Bronze Resolution will have x CIs added as a start condition

Effort=low, Complexity=low, Maintability=medium

To achieve this I'd make the cmdb_ci mandatory on the INC

 

B) Leverage the business criticality on the ci_service level and map CI to the service

Effort=medium, Complexity=medium, Maintainability=medium

To achieve this I'd:

require cmdb_ci field to be made mandatory on INC
require service field to be made r-o on INC
require SLA condition to dotwalk to service criticality (working OK)
require Bronze, Silver, Gold Level Application Services creating

possibly requires a new ci relationship type to create 1-2-1 mapping

requires logic (SI) to lookup Service from the given cmdb_ci value on INC and use as a ref qualifier on INC.business_service
requires more logic to set the value automatically in business_service field

 

I have coded a first draft SI to validate the feasibility and all OK, but I'd like to know:

 

1. Is Option B OK as an approach or is Option A best here?

2. Am I ok to create new CI relationship types (I've not found any documentation on this) so that I am confident of a 1-2-1 match on cmdb_rel_ci lookup routine?

 

Basic SI below:

function u_CIServiceLookup() {
   var svc = ' ';
   var a = current.cmdb_ci;
   
   //return everything if the assigned_to value is empty
   if(!a)
      return;
 
   //Example encoded query child.name=ADCCCMB1^parent.name=SCCM^type=60bc4e22c0a8010e01f074cbe6bd73c3
   //sys_user_grmember has the user to group relationship
   var rel = new GlideRecord('cmdb_rel_ci');
   rel.addQuery('child',a);
   rel.query();
   while(rel.next()) {
      if (svc.length > 0) {
         //build a comma separated string of groups if there is more than one
         svc += (',' + rel.parent);
      }
      else {
         svc = rel.parent;
      }
   }
   // return Groups where assigned to is in those groups we use IN for lists
   return 'sys_idIN' + svc;
}

 

0 REPLIES 0