Name

global.CSDMCMDBUtilClient

Description

No description available

Script

var CSDMCMDBUtilClient = Class.create();
CSDMCMDBUtilClient.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  isTSOSharingCI : function() {
  	
  	var json = new JSON();
  	var results = {
  		"value": false
  	};
  	
  	
  	var tsoSysId = this.getParameter('sysparm_tso_sys_id');
  	var util = new CSDMCMDBUtil();
  	
  	if(!util.isTechnicalService(tsoSysId)) {
  		results.value = false;
  		return json.encode(results); 
  	}
  	
  	// TSO not connected to any DCG
  	var dcgs = util.getDynamicCIGroupsFromTSO(tsoSysId);

  	if(JSUtil.nil(dcgs)) {
  		results.value = false;
  		return json.encode(results); 
  	}
  		
  	
  	// If multiple TSOs are connected to a DCG
  	var gaRel = new GlideAggregate('cmdb_rel_ci'); 
  	
  	gaRel.addQuery('parent.sys_class_name=service_offering^childIN' + dcgs + '^parent!=' + tsoSysId);
  	gaRel.addAggregate('COUNT');
  	gaRel.query();
  	if(gaRel.next()) {
  		if (gaRel.getAggregate('COUNT') > 0) {
  			results.value = true;
  			return json.encode(results);
  		}
  			
  	}
  	
  	// check if a CI is shared between multiple DCG
  	
  	var ciSysIds = [];
  	var map = util.getCIsFromDCG(dcgs);
  	Object.keys(map).forEach(function(v){
  		ciSysIds = ciSysIds.concat(map[v]);
  	});
  	
  	var ga = new GlideAggregate('svc_ci_assoc');
  	ga.addQuery('service_id.sys_class_name=cmdb_ci_query_based_service^service_id.service_classification=Technical Service');
  	ga.groupBy('ci_id');
  	ga.addHaving('COUNT', '>', '1');
  	ga.addQuery('ci_id', 'IN', ciSysIds);
  	ga.query();
  	var sharedCIs = [];
  	while(ga.next()) {
  		sharedCIs.push(ga.getValue('ci_id'));
  	}
  	
  	results.value = sharedCIs.length > 0;
  	return json.encode(results);
  },
  
  type: 'CSDMCMDBUtilClient'
});

Sys ID

8a99cc1b7353901061b79c0c6df6a73c

Offical Documentation

Official Docs: