ServiceNow GlideAggregate: using arrays to identify duplicate strings: Identify duplicate values in events/alerts

 in this case, we want to identify when a duplicate occurs more than 2 times: (as a create event followed by a clear event is expected) - checking on additional_info.problem_id:


var sQuery = 'sys_created_onONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()'; duplEvents(sQuery); //--uncomment to run on events //duplAlerts(sQuery); //--uncomment to run on alerts function duplEvents(sQuery) { var grEvents = new GlideAggregate('em_event'); grEvents.addQuery('source', 'DYNATRACE'); if (sQuery != "") { grEvents.addQuery(sQuery); } grEvents.query(); var eventArr = []; while (grEvents.next()) { var sAddInfo = JSON.parse(grEvents.additional_info); var sPrbID = sAddInfo.problem_id; //gs.print(grEvents.message_key); //gs.print(sPrbID); eventArr.push(sPrbID + ""); } eventArr.sort(); gs.print("*************DUPLICATE EVENTS ON PROBLEM ID:"); count_duplicate(eventArr); } function duplAlerts(sQuery) { var grEvents = new GlideAggregate('em_alert'); grEvents.addQuery('source', 'DYNATRACE'); if (sQuery != "") { grEvents.addQuery(sQuery); } grEvents.query(); var eventArr = []; while (grEvents.next()) { var sAddInfo = JSON.parse(grEvents.additional_info); var sPrbID = sAddInfo.problem_id; //gs.print(grEvents.message_key); //gs.print(sPrbID); eventArr.push(sPrbID + ""); } eventArr.sort(); gs.print("*************DUPLICATE ALERTS ON PROBLEM ID:"); count_duplicate(eventArr); } function count_duplicate(a) { var counts = {}; 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] > 2) { gs.print(prop + " counted: " + counts[prop] + " times."); } } gs.print(counts); }
 
 



(ServiceNow ) 

Comments

Popular posts from this blog

GlideRecord setValue

URL link in addInfoMessage