- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-22-2024 02:07 AM
Hi All,
I am trying to replace the duplicate number in the table and write down the below script
var dupRecords = [];
var gaDupCheck1 = new GlideAggregate('cmdb_ci_business_app');
gaDupCheck1.addQuery('active','true');
gaDupCheck1.addAggregate('COUNT', 'number');
gaDupCheck1.groupBy('number');
gaDupCheck1.addHaving('COUNT', '>', 1);
gaDupCheck1.query();
while (gaDupCheck1.next()) {
dupRecords.push(gaDupCheck1.number.toString());
}
gs.print(dupRecords);
fixDuplicates(dupRecords);
function fixDuplicates(dupRecords) {
var gr = new GlideRecord('cmdb_ci_business_app');
gr.addQuery('number', dupRecords);
gr.orderByDesc('sys_created_on');
gr.query();
while (gr.next()) {
var nm = new NumberManager('cmdb_ci_business_app');
gr.number = nm.getNextObjNumberPadded();
//gr.update();
}
gs.print(gr.number);
}
But when i executed this script, it will replace both the duplicate number with the next available counter where I just need to update only one duplicate number record.
Can someone check this and provide the solution?
Thanks!
Vaibhav J
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-22-2024 02:37 AM
Hi @VaibhavJ,
Please try the below code -
var gaDupCheck1 = new GlideAggregate('cmdb_ci_business_app');
gaDupCheck1.addQuery('active', 'true');
gaDupCheck1.addAggregate('COUNT', 'number');
gaDupCheck1.addHaving('COUNT', '>', 1);
gaDupCheck1.query();
while (gaDupCheck1.next()) {
var grDup = new GlideRecord('cmdb_ci_business_app');
grDup.addQuery('number', gaDupCheck1.number);
grDup.orderByDesc('sys_created_on');
grDup.query();
while (grDup.next()) {
if (grDup.hasNext()) {
var nm = new NumberManager('cmdb_ci_business_app');
grDup.number = nm.getNextObjNumberPadded();
grDup.setWorkflow(false);
grDup.autoSysFields(false);
grDup.update();
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-22-2024 02:37 AM
Hi @VaibhavJ,
Please try the below code -
var gaDupCheck1 = new GlideAggregate('cmdb_ci_business_app');
gaDupCheck1.addQuery('active', 'true');
gaDupCheck1.addAggregate('COUNT', 'number');
gaDupCheck1.addHaving('COUNT', '>', 1);
gaDupCheck1.query();
while (gaDupCheck1.next()) {
var grDup = new GlideRecord('cmdb_ci_business_app');
grDup.addQuery('number', gaDupCheck1.number);
grDup.orderByDesc('sys_created_on');
grDup.query();
while (grDup.next()) {
if (grDup.hasNext()) {
var nm = new NumberManager('cmdb_ci_business_app');
grDup.number = nm.getNextObjNumberPadded();
grDup.setWorkflow(false);
grDup.autoSysFields(false);
grDup.update();
}
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-22-2024 02:55 AM
Hi,
Try below updated script.
var dupRecords = [];
var gaDupCheck1 = new GlideAggregate('cmdb_ci_business_app');
gaDupCheck1.addQuery('active','true');
gaDupCheck1.addAggregate('COUNT', 'number');
gaDupCheck1.groupBy('number');
gaDupCheck1.addHaving('COUNT', '>', 1);
gaDupCheck1.query();
while (gaDupCheck1.next()) {
dupRecords.push(gaDupCheck1.number.toString());
}
gs.print(dupRecords);
fixDuplicates(dupRecords);
function fixDuplicates(dupRecords) {
var gr = new GlideRecord('cmdb_ci_business_app');
gr.addQuery('number', dupRecords);
gr.orderByDesc('sys_created_on');
gr.setLimit(1);
gr.query();
while (gr.next()) {
var nm = new NumberManager('cmdb_ci_business_app');
gr.number = nm.getNextObjNumberPadded();
//gr.update();
}
gs.print(gr.number);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-22-2024 03:07 AM
Hi @VaibhavJ,
Please try this below code:
var dupRecords = [];
var gaDupCheck1 = new GlideAggregate('cmdb_ci_business_app');
gaDupCheck1.addQuery('active', 'true');
gaDupCheck1.addAggregate('COUNT', 'number');
gaDupCheck1.groupBy('number');
gaDupCheck1.addHaving('COUNT', '>', 1);
gaDupCheck1.query();
while (gaDupCheck1.next()) {
dupRecords.push(gaDupCheck1.number.toString());
}
gs.print(dupRecords);
fixDuplicates(dupRecords);
function fixDuplicates(dupRecords) {
for (var i = 0; i < dupRecords.length; i++) {
var gr = new GlideRecord('cmdb_ci_business_app');
gr.addQuery('number', dupRecords[i]);
gr.orderByDesc('sys_created_on');
gr.query();
if (gr.next()) {
var nm = new NumberManager('cmdb_ci_business_app');
gr.number = nm.getNextObjNumberPadded();
gr.update();
gs.print("Updated duplicate number for record with sys_id: " + gr.sys_id);
// Exit the loop after updating one record per duplicate number group
break;
}
}
}
Please accept my solution if it works for you or thumps
Thanks
Jitendra