//This script generates a list for de-duplication task (for CMDB_CI maintenance) //Note, the code below will only look at those CIs where Class = Switchport //and NOT include State = Retired (Retired CIs are by-passed.) gs.log(getDuplicates('dscy_switchport', 'name')); // look for CIs with class = Switchport) function getDuplicates(tablename, val) { var dupRecords = []; var rtnNameArry = []; var count = 0; var gaDupCheck = new GlideAggregate(tablename); gaDupCheck.addEncodedQuery('sys_class_name=dscy_switchport^install_status!=7^ORinstall_status=NULL'); //Class is Switchport and not Retired gaDupCheck.addAggregate('COUNT', val); gaDupCheck.addNotNullQuery(val); gaDupCheck.groupBy(val); gaDupCheck.addHaving('COUNT', '>', 1); gaDupCheck.query(); while (gaDupCheck.next()) { var rtnName = gaDupCheck[val].toString(); rtnNameArry.push(rtnName); } for (var i = 0; i < rtnNameArry.length; i++) { var gr = new GlideRecord("dscy_switchport"); gr.addQuery('name', rtnNameArry[i]); gr.query(); while (gr.next()) { count++; dupRecords.push("" + gr.sys_id); gs.log(gr.name + " - " + gr.sys_class_name.getDisplayValue() + " - " + gr.sys_id); } gs.log(dupRecords.toString()); var taskSysId = new CMDBDuplicateTaskUtils().createDuplicateTask(dupRecords.toString()); gs.log(taskSysId); //*** Un-comment the block below, to create task records for De-duplication /*======================================================================== var remTsk = new GlideRecord("reconcile_duplicate_task"); remTsk.addEncodedQuery("sys_created_onONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()"); remTsk.addQuery('sys_id', taskSysId); remTsk.query(); if (remTsk.next()) { remTsk.assignment_group = "ddf02f53dbb83b806a4d591e5e96190e"; remTsk.update(); gs.log("De-Duplication Task: " + remTsk.number + " is now assigned to the Telus CMDB Team. "); } ===========================================================================*/ dupRecords.length = 0; } gs.log("Number of duplicate CIs found: " + rtnNameArry.length); gs.log("Total number of Affected CIs found: " + count); return rtnNameArry; }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter