CMDB Clean-up of duplicate CIs

PHOTO EMBED

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