- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2024 10:09 AM - edited 04-20-2024 10:26 AM
Hi every one, I need pass a lot of Ci from the table cmdb_ci and add this Ci to the table alm_asset, I'm using a background script:
(function runBackgroundScript() {
var cmdbCiGr = new GlideRecord('cmdb_ci');
cmdbCiGr.addQuery('manufacturer.name', 'STARTSWITH', 'Apple');
cmdbCiGr.addQuery('model_id', 'c9279c7f87a43910ddb640c6dabb35e2');
cmdbCiGr.query();
while (cmdbCiGr.next()) {
var serialNumber = cmdbCiGr.getValue('serial_number');
if (serialNumber) {
var almHardwareGr = new GlideRecord('alm_hardware');
almHardwareGr.addQuery('serial_number', serialNumber);
almHardwareGr.query();
if (!almHardwareGr.next()) {
var newHardware = new GlideRecord('alm_hardware');
newHardware.initialize();
newHardware.name = cmdbCiGr.getValue('name');
newHardware.model = cmdbCiGr.getValue('model');
newHardware.model_category = 'Ipads';
newHardware.serial_number = serialNumber;
newHardware.insert();
} else {
gs.info('Duplicidad encontrada para el serial_number: ' + serialNumber);
}
}
}
})();
But this add the Ci empty in the table
Have anyone idea to solve this problem?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2024 10:44 AM - edited 04-20-2024 10:46 AM
Hi @Harold Hoyos ,
I tried your problem in my PDI and it works for me, Please refer below script
var gr = new GlideRecord('cmdb_ci');
gr.addEncodedQuery('manufacturer=aa0a6df8c611227601cd2ed45989e0ac^sys_class_name=cmdb_ci_computer'); // You can give any filter condtion as per your requirments. I gave manufacture as Lenovo and class name as cmdb_ci_computer
gr.query();
while(gr.next()){
var serialNumber = gr.getValue('serial_number');
if (serialNumber != null) {
// gs.print('ser = ' + serialNumber);
var almHardwareGr = new GlideRecord('alm_hardware');
almHardwareGr.addQuery('serial_number', serialNumber);
almHardwareGr.query();
if (!almHardwareGr.next()) {
gs.print('inside if ');
var newHardware = new GlideRecord('alm_hardware');
newHardware.initialize();
newHardware.name = gr.getValue('name');
newHardware.model = gr.getValue('model_id');
newHardware.model_category = 'Ipads';
newHardware.serial_number = serialNumber;
newHardware.insert();
} else {
gs.info('Duplicidad encontrada para el serial_number: ' + serialNumber);
}
}
}
Please feel free to reach me out if you have any query
Please mark my answer correct and helpful if this works for you!
Thanks and Regards
Sarthak
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-21-2024 03:32 AM - edited 04-21-2024 03:33 AM
Hi @Harold Hoyos ,
As I checked, Model Category is reference field so you need to pass sys_id over there.
var newHardware = new GlideRecord('alm_hardware');
newHardware.initialize();
newHardware.name = gr.getValue('name');
newHardware.model = gr.getValue('model_id');
newHardware.model_category = '<sys_id of cmdb_model_category table>';
newHardware.serial_number = serialNumber;
newHardware.insert();
This will wokrk now by passing the sys_id
Please mark my answer correct and helpful if this works for you
Thanks and Regards
Sarthak
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2024 10:44 AM - edited 04-20-2024 10:46 AM
Hi @Harold Hoyos ,
I tried your problem in my PDI and it works for me, Please refer below script
var gr = new GlideRecord('cmdb_ci');
gr.addEncodedQuery('manufacturer=aa0a6df8c611227601cd2ed45989e0ac^sys_class_name=cmdb_ci_computer'); // You can give any filter condtion as per your requirments. I gave manufacture as Lenovo and class name as cmdb_ci_computer
gr.query();
while(gr.next()){
var serialNumber = gr.getValue('serial_number');
if (serialNumber != null) {
// gs.print('ser = ' + serialNumber);
var almHardwareGr = new GlideRecord('alm_hardware');
almHardwareGr.addQuery('serial_number', serialNumber);
almHardwareGr.query();
if (!almHardwareGr.next()) {
gs.print('inside if ');
var newHardware = new GlideRecord('alm_hardware');
newHardware.initialize();
newHardware.name = gr.getValue('name');
newHardware.model = gr.getValue('model_id');
newHardware.model_category = 'Ipads';
newHardware.serial_number = serialNumber;
newHardware.insert();
} else {
gs.info('Duplicidad encontrada para el serial_number: ' + serialNumber);
}
}
}
Please feel free to reach me out if you have any query
Please mark my answer correct and helpful if this works for you!
Thanks and Regards
Sarthak
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2024 02:40 PM
There are just a issue
This field is not added and show the warning
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-21-2024 03:32 AM - edited 04-21-2024 03:33 AM
Hi @Harold Hoyos ,
As I checked, Model Category is reference field so you need to pass sys_id over there.
var newHardware = new GlideRecord('alm_hardware');
newHardware.initialize();
newHardware.name = gr.getValue('name');
newHardware.model = gr.getValue('model_id');
newHardware.model_category = '<sys_id of cmdb_model_category table>';
newHardware.serial_number = serialNumber;
newHardware.insert();
This will wokrk now by passing the sys_id
Please mark my answer correct and helpful if this works for you
Thanks and Regards
Sarthak