How to get the dot walking field value on workflow?

Santhosh15
Tera Guru

Hello All,

 

When i try to dot-walk one custom (list collector) field, which is created on change request.

I try to dot-walk that field it is not working. The field is list collector which is referencing cmdb_ci_appl table. 

I want to fetch the assignment group by dot working, but it is not working.

 

Requirement: Given that one or more Impacted CIs are selected, then approval is requested from the SDM and Manager of the Support group of the Impacted Services / CI(s). Approval is only required from either the SDM or Manager of the group (first to approve). This approval should happen in the ASSESS state.

 

Below code is script include:

==============

 

  getApprovers: function(chgGR) {
        var approvers = [];
        var addlApprovers = [];
 
        var ag = '';
        var agGR = new GlideRecord('change_request');
        agGR.addQuery('sys_id', chgGR);
        agGR.query();
        if (agGR.next()) {
            gs.log("Testing for change" + agGR.number);
            ag = agGR.u_critical_impacted_services_cis.support_group.getRefRecord();
gs.log("Testing for cI" + ag.name);
           // addApprovers(ag);
            if (!hasAlreadyApprovedLastApproval(agGR.u_critical_impacted_services_cis.support_group.manager.getRefRecord(), agGR)) { //1) If AG Mgr has not already approved
                approvers.push(agGR.u_critical_impacted_services_cis.support_group.manager.getRefRecord());
                gs.log("Testing for manager approver" + agGR.u_critical_impacted_services_cis.support_group.manager.getRefRecord());
                if (!gs.nil(agGR.u_critical_impacted_services_cis.support_group.u_sdm.getRefRecord()))
                    approvers.push(agGR.u_critical_impacted_services_cis.support_group.u_sdm.getRefRecord());
            } else if (!gs.nil(agGR.u_critical_impacted_services_cis.support_group.u_sdm.getRefRecord())) { //2) If AG Mgr already approved and had SDM, send to both
                approvers.push(agGR.u_critical_impacted_services_cis.support_group.manager.getRefRecord());
                approvers.push(agGR.u_critical_impacted_services_cis.support_group.u_sdm.getRefRecord());
            } //2.1) Do not send any additional approvals if AG Mgr has already approved and no SDM
        }
 
 
        // if(!gs.nil(chgGR.u_additional_assignment_groups)){
        // addlApprovers = chgGR.u_additional_assignment_groups.split(',');
        // addlApprovers.forEach(addAdditionalApprovers,approvers);
        // }
 
        // return approvers;
    },
    addApprovers: function(agGR) {
        if (!hasAlreadyApprovedLastApproval(agGR.manager)) { //1) If AG Mgr has not already approved
            approvers.push(agGR.manager);
            gs.log("Testing for manager approver" + agGR.manager);
            if (!gs.nil(agGR.u_sdm))
                approvers.push(agGR.u_sdm);
        } else if (!gs.nil(agGR.u_sdm)) { //2) If AG Mgr already approved and had SDM, send to both
            approvers.push(agGR.manager);
            approvers.push(agGR.u_sdm);
        } //2.1) Do not send any additional approvals if AG Mgr has already approved and no SDM
    },
 
    //for each additional assignment group, need to lookup the SDM person assigned to group
    addAdditionalApprovers: function(item) {
        var grp = new GlideRecord("sys_user_group");
        if (grp.get(item)) {
            addApprovers(grp);
        }
    },
 
    //has the user specified already made an approval on the current record
    hasAlreadyApprovedLastApproval: function(userSysId, chgGR1) {
        if (gs.nil(userSysId))
            return true;
 
        var grApproval = new GlideRecord('sysapproval_approver');
        grApproval.addQuery('document_id', chgGR1);
        grApproval.addQuery('approver', userSysId);
        grApproval.orderByDesc('sys_created_on');
        grApproval.query();
 
        return grApproval.next() && grApproval.getValue('state') === 'approved';
    },
 
    isApproved: function(chgGR) {
 
        return "";
    },




Thank you all in advance

@Maik Skoddow @Ankur Bawiskar @Samaksh Wani @SwarnadeepNandy @Palani Kumar 

8 REPLIES 8

Ankur Bawiskar
Tera Patron
Tera Patron

@Santhosh15 

you cannot dot walk list field.

you need to query the sysIds and then get the field value from that record?

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

@Ankur Bawiskar How to query the sysIds and then get the field value from that record?

 

Can you provide the code or any sample examples do you have?

@Santhosh15 

list field is nothing but list of sysIds

get that and query the table which is being referred by that list field and do whatever processing you want

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

@Ankur Bawiskar , This is list collector field "u_critical_impacted_services_cis" refering CMDB_CI_APPL table created on change request.

But i want to get the support group manager details of the ci, which support_group field is present on cmdb_ci_appl.

How to achieve this requirement?