Skip to main content

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

Get URL Parameter - server side script (portal or classic UI)

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }

ServiceNow - script include: build up the results as a JSON object (array) - example 2

function call var sCurrentGroupMembers = new <script_include> (). getGroupMembers ( group_sysid ); gs . print ( 'sCurrentGroupMembers:' + sCurrentGroupMembers ); var oGroupMembers = JSON . parse ( sCurrentGroupMembers ); gs . print ( JSON . stringify ( oGroupMembers . users )); oNewGroupMember = JSON . parse ( group_members ); var oGroupConfig = getGroupDeltas ( oGroupMembers . users , oNewGroupMember ); gs . print ( JSON . stringify ( oGroupConfig . remove )); gs . print ( JSON . stringify ( oGroupConfig . add )) output : *** Script: sCurrentGroupMembers: {"manager":"3b2649efdb0f8c10cc0652f3f39xxxxx", "email":"", "type":"33a2226edb99c340edfc7cbdae96xxxx", "description":"Created for xyz", "users":[{"user":"3b2649efdb0f8c10cc0652f3f396xxxx"},{"user":"856a8f71db3d73041b4ffc45ae96196a"},{"user":"3752771