Need to run background script to find duplicate CI names using a unique name on another column
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-29-2022 06:18 AM
13 REPLIES 13

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-29-2022 06:36 AM
You can use GlideAggregate in this case
var ga = new GlideAggregate('cmdb_ci');
ga.addQuery('active', '=','true');
// add proper filter condition so that the query does not take more time
ga.addAggregate('COUNT', 'name');
ga.query();
while (ga.next()) {
var name = ga.category;
var count = ga.getAggregate('COUNT', 'name');
gs.info("Name : " + name + " count : " + count);
}
Thank you,
Palani
Palani
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-29-2022 06:49 AM
Hello
you can try this script
var duparr=[];
var gr = new GlideRecord('cmdb_ci');
gr.addQuery('<field_name>','<value>') // put your query if you want to filter unwanted records which will save the execution time
gr.query();
while(gr.next())
{
var dup= new GlideRecord('cmdb_ci');
dup.addQuery('name',gr.name);
dup.addQuery('sys_id','!=',gr.sys_id);
dup.query();
while(dup.next())
{
var obj ={};
obj.name = dup.name.toString();
obj.source = dup.discovery_source.getDisplayvalue();
duparr.push(obj);
}
}
var parsed = JSON.parse(duparr);
for(var i=0; i<parsed.length; i++)
{
gs.print("Name :"+parsed[i].name+" "+"Discovery Source :"+parsed[i].source);
}
PLEASE MARK MY ANSWER CORRECT IF IT HELPS YOU
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-29-2022 07:09 AM
Hi, i'm running your script and added the EncodedQuery but getting following error
Error
Evaluator: org.mozilla.javascript.EcmaError: Unexpected token: o
Caused by error in script at line 155
Evaluator: org.mozilla.javascript.EcmaError: Unexpected token: o
Caused by error in script at line 17
14: duparr.push(obj);
15: }
16: }
==> 17: var parsed = JSON.parse(duparr);
18: for (var i = 0; i < parsed.length; i++) {
19: gs.print("Name :" + parsed[i].name + " " + "Discovery Source :" + parsed[i].source);
20: }
Script
var duparr = [];
var gr = new GlideRecord('cmdb_ci');
gr.addEncodedQuery('discovery_source=ServiceNow^ORdiscovery_source=OpenView^ORdiscovery_source=ServiceWatch')
gr.query();
while (gr.next()) {
var dup = new GlideRecord('cmdb_ci');
dup.addQuery('name', gr.name);
dup.addQuery('sys_id', '!=', gr.sys_id);
dup.query();
while (dup.next()) {
var obj = {};
obj.name = dup.name.toString();
obj.source = dup.discovery_source.getDisplayvalue();
duparr.push(obj);
}
}
var parsed = JSON.parse(duparr);
for (var i = 0; i < parsed.length; i++) {
gs.print("Name :" + parsed[i].name + " " + "Discovery Source :" + parsed[i].source);
}
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-29-2022 07:13 AM
var duparr = [];
var gr = new GlideRecord('cmdb_ci');
gr.addEncodedQuery('discovery_source=ServiceNow^ORdiscovery_source=OpenView^ORdiscovery_source=ServiceWatch')
gr.query();
while (gr.next()) {
var dup = new GlideRecord('cmdb_ci');
dup.addQuery('name', gr.name);
dup.addQuery('sys_id', '!=', gr.sys_id);
dup.query();
while (dup.next()) {
var obj = {};
obj.name = dup.name.toString();
obj.source = dup.discovery_source.getDisplayvalue();
duparr.push(obj);
}
}
var str = JSON.stringify(duparr);
var parsed = JSON.parse(str);
for (var i = 0; i < parsed.length; i++) {
gs.print("Name :" + parsed[i].name + " " + "Discovery Source :" + parsed[i].source);
}