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.

insert approval record

Hafsa1
Mega Sage
if (approvers1.length > 0) {
        var gr1 = new GlideRecord('sysapproval_approver');
        for (var j = 0; j < approvers1.length; j++) {
            gs.info("Approval 1-"+approvers1);
            gr1.initialize();
            gr1.sysapproval = current.sys_id;
            gr1.document_id = current.sys_id;
            gr1.source_table = 'sn_customerservice_north_america_procurement';
            gr1.approver = approvers1[j];
            gr1.state = 'requested';
            gr1.insert();
        }
    }
 
Output:-
getting sysid of users but when approver record is added, it's blank
Approval 1-b8da035adb8aafc4227d18df4b96193d,20a26b08db97a740e4f5138b4b961998
Hafsa1_0-1738238380656.png

 

 
1 ACCEPTED SOLUTION

@Hafsa1 

what is field type for u_category_lead in table sn_customerservice_category_leader?

Seems it's a list field holding multiple sysIds and hence it's not working

If yes then script include function needs change so that it pushes the values correctly

var LeaderApproval = Class.create();
LeaderApproval.prototype = {
    initialize: function() {},

    getCategory: function(category, functions, regionValue) {
        var categoryList = [];
        var categoryValue = '';
        var functionsValue = '';
        var grn = new GlideRecord("sn_customerservice_procurement_category");
        grn.addQuery("sys_id", category);
        grn.addQuery("u_procurement_function", functions);
        grn.query();
        if (grn.next()) {
            categoryValue = grn.u_procurement_category.toString();
            functionsValue = grn.u_procurement_function.toString();
        }

        var arrayUtil = new global.ArrayUtil();
        var gr = new GlideRecord('sn_customerservice_category_leader');
        gr.addQuery('u_category', categoryValue);
        gr.addQuery('u_tower', functionsValue);
        gr.addQuery('u_region', regionValue);
        gr.query();
        while (gr.next()) {
            var arr = gr.u_category_lead.toString().split(',');
            if (arr.length > 0) {
                // if it's array then concat and store in categoryList array
                categoryList = arrayUtil.concat(categoryList, arr);
            } else {
                categoryList.push(gr.u_category_lead.toString());
            }
        }
		categoryList = arrayUtil.unique(categoryList); // get unique
        //return "sys_idIN" + categoryList;
        return categoryList;

    },

    type: 'LeaderApproval'
};

If my response helped please mark it correct and close the thread so that it benefits future readers.

 
Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

14 REPLIES 14

@Hafsa1 

try this and share the log

 

if (approvers1.length > 0) {
    for (var j = 0; j < approvers1.length; j++) {
        var gr1 = new GlideRecord('sysapproval_approver');
        gs.info("Approval 1-" + approvers1[j].toString());
        gr1.initialize();
        gr1.sysapproval = current.sys_id;
        gr1.document_id = current.sys_id;
        gr1.source_table = 'sn_customerservice_north_america_procurement';
        gr1.approver = approvers1[j].toString();
        gr1.state = 'requested';
        gr1.insert();
    }
}

 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hafsa1
Mega Sage

@Ankur Bawiskar 

Approval 1-b8da035adb8aafc4227d18df4b96193d,20a26b08db97a740e4f5138b4b961998

approve isb8da035adb8aafc4227d18df4b96193d,20a26b08db97a740e4f5138b4b961998

@Hafsa1 

approvers1 is an array

So seems each array elements contains more than 1 sysId as comma separated values

please share the complete script how that array is getting populated

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hafsa1
Mega Sage

@Ankur Bawiskar 

approvers1 is getting populated via script include. We are fetching multiple approver sysid then need to create separate approval record for each of them

 

var LeaderApproval = Class.create();
LeaderApproval.prototype = {
    initialize: function() {},

    getCategory: function(category, functions, regionValue) {
        var categoryList = [];
        var categoryValue = '';
        var functionsValue = '';
        var grn = new GlideRecord("sn_customerservice_procurement_category");
        grn.addQuery("sys_id", category);
        grn.addQuery("u_procurement_function", functions);
        grn.query();
        if (grn.next()) {
            categoryValue = grn.u_procurement_category.toString();
            functionsValue = grn.u_procurement_function.toString();
        }

        var gr = new GlideRecord('sn_customerservice_category_leader');
        gr.addQuery('u_category', categoryValue);
        gr.addQuery('u_tower', functionsValue);
        gr.addQuery('u_region', regionValue);
        gr.query();
        while (gr.next()) {
            categoryList.push(gr.u_category_lead.toString());
        }
        //return "sys_idIN" + categoryList;
        return categoryList;

    },

    type: 'LeaderApproval'
};

@Hafsa1 

this script is not related to the array of approver

can you share the relevant script

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader