Skip to main content

ServiceNow ARRAYS: looking for matching values in alerts and events (e.g. problemID)

 (ServiceNow )


gs.info("checking list of today's Alerts by common problemID"); var grAlerts=new GlideRecord('em_alert'); grAlerts.addQuery('source', 'SGO-Dynatrace'); grAlerts.addEncodedQuery('sys_created_onONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()'); grAlerts.query(); grAlerts.orderBy('message_key'); gs.info('TOTAL SGO ALERTS FOR TODAY: ' + grAlerts.getRowCount()); var dupl_prbID_arr = []; var dupl_cmdbci_arr = []; while (grAlerts.next()){ var sAddInfo=JSON.parse(grAlerts.additional_info); var sProblemID=sAddInfo.ProblemID+""; //gs.info('message key=' + grAlerts.message_key + '; ProblemID=' + sProblemID); dupl_cmdbci_arr.push(grAlerts.cmdb_ci+""); dupl_prbID_arr.push(sProblemID); } dupl_prbID_arr.sort(); dupl_cmdbci_arr.sort(); count_duplicate(dupl_prbID_arr, 'sProblemID', 1, 'alerts'); gs.info('******************************************************************************'); count_duplicate(dupl_cmdbci_arr, 'configuration item', 1, 'alerts'); gs.info('******************************************************************************'); var grEvents=new GlideRecord('em_event'); grEvents.addQuery('source', 'SGO-Dynatrace'); grEvents.addNotNullQuery('alert'); grEvents.addEncodedQuery('sys_created_onONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()'); grEvents.query(); grEvents.orderBy('alert'); gs.info('TOTAL SGO EVENTS FOR TODAY: ' + grEvents.getRowCount()); var dupl_prbID_arr_2 = []; while (grEvents.next()){ var sAddInfo_event=JSON.parse(grEvents.additional_info); var sProblemID_event=sAddInfo_event.ProblemID+""; dupl_prbID_arr_2.push(sProblemID_event); } dupl_prbID_arr_2.sort(); count_duplicate(dupl_prbID_arr_2, 'sProblemID_event', 2, 'events'); function count_duplicate (a, fieldBeingChecked, iDuplicateThreshold, ticketType ) { var iCounter=0; var counts = {}; var bLog=true; //bDebug=false; var bBreak = false; for (ic = 0; ic < a.length; ic++) { if (counts[a[ic]]) { counts[a[ic]] += 1; } else { counts[a[ic]] = 1; } } for (prop in counts) { if (counts[prop] >iDuplicateThreshold) { if (bLog) { gs.info(fieldBeingChecked + ': ' + prop + " counted: " + counts[prop] + " times"); iCounter++; } if (bBreak) { gs.info('BREAK statement enabled', 'SIDTINCPRB:_count_duplicate'); break; } } } // gs.info(fieldBeingChecked+': DUPLICATE COUNTS::' + counts.length); gs.info(fieldBeingChecked+': DUPLICATE COUNTS::' + iCounter + ' groups of ' + ticketType + ' affected'); }

Comments

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){

Service Catalog: variable advanced reference qualifiers

Call a script include to apply a reference qualifier on a catalog item variable: - variable reference qualifier dependent on another variable selection, in this case a variable referencing sys_user (requested_for) On the catalog item form. variable name to apply ref qual filter : retail_equipment variable reference qualifier (on cmdb table ): javascript : new  refqual_functions (). lostStolen_getAssignedCIs (); client-callable script include ( refqual_functions)  function : lostStolen_getAssignedCIs : function (){         //--called from variable set client script, for lost/stolen request (service catalog)     gs . log ( current . variables . requested_for , 'retail_lostStolen_getAssignedCIs' );         return ( 'install_statusNOT IN8,7^owned_by=' + current . variables . requested_for );             //owned_by=1269b79937f1060041c5616043990e41^install_statusNOT IN8,7            },