How pass Cis into the table alm_asset

Harold Hoyos
Tera Contributor

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

HaroldHoyos_0-1713632854697.png

Have anyone idea to solve this problem?

 

2 ACCEPTED SOLUTIONS

Community Alums
Not applicable

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

View solution in original post

Community Alums
Not applicable

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

 

View solution in original post

3 REPLIES 3

Community Alums
Not applicable

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

There are just a issue

HaroldHoyos_0-1713649055443.png

This field is not added and show the warning

Community Alums
Not applicable

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