CMDB Clean-up of duplicate CIs
Wed Mar 16 2022 22:24:59 GMT+0000 (Coordinated Universal Time)
Saved by
@RajanMurkute
#javascript
//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;
}
content_copyCOPY
on PROD to clean up duplicated CIs for Natacha's task request
Comments
@RajanMurkute - Wed Mar 16 2022 22:25:32 GMT+0000 (Coordinated Universal Time)Used for generating De-Duplication list.