Name

global.SAMPTXCounter

Description

Calculate the Orchestration transaction counts generated by SAMP

Script

var SAMPTXCounter = Class.create();
SAMPTXCounter.prototype = {
  initialize: function() {
  	this.isSAMPremiumEnabled=false;
  	if(new GlidePluginManager().isActive("com.snc.samp")){
  		this.isSAMPremiumEnabled=true;
  	}
  },
  
  isSAMPEnable:function(){
  	return this.isSAMPremiumEnabled;
  },
  
  getReclamationTXCountForThisYear:function(){
  	var thisYearTxQuery = "sys_created_onONThis year@javascript:gs.beginningOfThisYear()@javascript:gs.endOfThisYear()";
  	return this.getReclamationTXCount(thisYearTxQuery);
  },
  
  getReclamationTXCountForLast12Months:function(){
  	var last12MonthsQuery = "sys_created_onONLast 12 months@javascript:gs.monthsAgoStart(12)@javascript:gs.endOfThisMonth()";
  	return this.getReclamationTXCount(last12MonthsQuery);
  },
  
  getReclamationTXCountForLastMonth:function(){
  	var lastMonthQuery = "sys_created_onONLast month@javascript:gs.beginningOfLastMonth()@javascript:gs.endOfLastMonth()";
  	return this.getReclamationTXCount(lastMonthQuery);
  },
  
  getReclamationTXCountForLast30Days:function(){
  	var last30DaysQuery = "sys_created_onBETWEENjavascript:gs.daysAgoStart(30)@javascript:gs.daysAgoEnd(1)";
  	return this.getReclamationTXCount(last30DaysQuery);
  },
  
  getReclamationTXCount:function(queryString){
  	var count = 0;
  	if(!this.isSAMPremiumEnabled){
  		return count;
  	}
  	
  	var sampTxGr = new GlideAggregate("samp_sw_reclamation_candidate");
  	sampTxGr.addAggregate("COUNT");
  	sampTxGr.addEncodedQuery(queryString);
  	sampTxGr.addQuery("state", "15"); //Closed Complete state
  	sampTxGr.query();
  	sampTxGr.next();		
  	// Each reclamation triggers CSD revoke SCCM application worklfow, which contains 2 Orchestration SCCM activities
      return (sampTxGr.getAggregate("COUNT") * 2);
  },
  
  getReclamationCICount:function(trackingDays){
  	var count = 0;
  	if(!this.isSAMPremiumEnabled){
  		return count;
  	}
  	var reclamationCandidate = new GlideAggregate("samp_sw_reclamation_candidate");
  	if(!reclamationCandidate.isValid()){
  		return count;
  	}
  	reclamationCandidate.setGroup(false);
  	reclamationCandidate.addAggregate("count(distinct", "cmdb_ci.sys_id"); //the dot walk is required since count distinct picks up the cmdb_ci.name which is not correct
  	reclamationCandidate.addQuery("state", "15"); //Closed Complete state
  	reclamationCandidate.addQuery('sys_updated_on', '>=', gs.daysAgoStart(trackingDays));
  	reclamationCandidate.query();
  	reclamationCandidate.next();
  	count = reclamationCandidate.getAggregate("count(distinct", "cmdb_ci.sys_id");
  	return count;
  },
  
  type: 'SAMP_Candidate'
};

Sys ID

c0b75bccb3aa32009ac486d256a8dc1e

Offical Documentation

Official Docs: