Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Script Include is not Working

Rakshanda Kunte
Tera Contributor

Hi All,

I have a vm named 'vmName' from 'cmdb_ci_vmware_instance' table and I want to populate all the key & values from table 'cmdb_key_value' related to vmName in a field named 'tags' in a catalog item. I want script include to fetch the key & value from cmdb_key_value table for vmName in servicenow.

 

Issue: Script works in Background Script but does not give result when pasted in Script include. Below are the scripts.

 

Background Script : (working)

var vmName = '1234567890ab65ajsdh826hsk';
var keyValues = [];

 

var cmdbKeyGr = new GlideRecord('cmdb_key_value');
cmdbKeyGr.addQuery('configuration_item', vmName); // Update the field name here
cmdbKeyGr.query();

 

while (cmdbKeyGr.next()) {
   var key = cmdbKeyGr.key.toString();
   var value = cmdbKeyGr.value.toString();
   keyValues.push({ key: key, value: value });
}

 

 

// Log each object separately for better readability
for (var i = 0; i < keyValues.length; i++) {
   gs.log('Key: ' + keyValues[i].key + ', Value: ' + keyValues[i].value);
}

 

 

Script Include (return null value)

 

Tags: function() {

 

        var cmdbKeyGr = new GlideRecord('cmdb_key_value');

        cmdbKeyGr.addQuery('sys_id', this.getParameter('sysparm_vmname'));

        cmdbKeyGr.query();

 

        while (cmdbKeyGr.next()) {

            var key = cmdbKeyGr.key.toString();

            var value = cmdbKeyGr.value.toString();

            keyValues.push({key: key,value: value});

        }

 

 

        // Log each object separately for better readability

        for (var i = 0; i < keyValues.length; i++) {

            gs.log('Key: ' + keyValues[i].key + ', Value: ' + keyValues[i].value);

            return ('Key: ' + keyValues[i].key + ', Value: ' + keyValues[i].value);

        }

    },

 

 

Client Script 

 

function onChange(control, oldValue, newValue, isLoading) {

    if (isLoading || newValue == '') {

        return;

    }

 

    var a = g_form.getValue('vm_name');

    var ga = new GlideAjax('SRO_Catalog_Items');

 

 

    ga.addParam('sysparm_name', 'Tags');

    ga.addParam('sysparm_vmName', a);

 

    ga.getXML(settags);

 

    function settags(response) {

        var b = response.responseXML.documentElement.getAttribute("answer");

        alert(b);

        g_form.setValue('current_tags', b);

 

 

 

 

    }

}

 

Desired Output:

*** Script: Key: BusinessServiceName, Value: BSN1023
*** Script: Key: CostAllocation, Value: BSN456
*** Script: Key: Environment, Value: dev
*** Script: Key: Service Now Type, Value: appliance

 

 

Kindly, provide inputs if any correction required. 

0 REPLIES 0