How to check approval state for change request

anilkumarsharma
Giga Guru

@Ankur Bawiskar 

@Gunjan Kiratkar

Good morning All,

 i want to check that state of the approval are approved not against change number CHG0000087 if all are not approved the send notification.

 

Please let me know How will I check? Please help.

 i used hasnext() in while loop to check the record but background script went in infinite loop.

 

anilkumarsharma_0-1674624085609.png

 

var gr = new GlideRecord('sysapproval_approver');
gr.addEncodedQuery('sysapproval.number=CHG0000087^state=approved');
gr.query()
gs.info("Print number:"+gr.getRowCount());
while(gr.next()){

gs.info("print state:"+gr.state);
}
1 ACCEPTED SOLUTION

Gunjan Kiratkar
Kilo Patron
Kilo Patron

Hi @anilkumarsharma 

You can do something like below:-

var gr = new GlideRecord('sysapproval_approver');
gr.addEncodedQuery('sysapproval=e2cdf552db252200a6a2b31be0b8f57f^state!=not_required^ORstate=NULL'); //Copy encoded query from list view
gr.query()
var allCount=gr.getRowCount();
var approvedCount=0;
while(gr.next() && gr.state=='approved'){
approvedCount++;
}
if(approvedCount==allCount){

gs.eventQueue("EventName");

}

Please Mark My Response as Correct/Helpful based on Impact
Regards,
Gunjan Kiratkar
2X ServiceNow MVP
Community Rising Star 2022
Youtube : ServiceNow Guy

View solution in original post

5 REPLIES 5

Chetan Mahajan
Kilo Sage
Kilo Sage

Hello Anil,

                  Please find below code 

var gr = new GlideRecord('sysapproval_approver');
gr.addEncodedQuery('sysapproval=7370d8391b90a11093bf8480cd4bcbaa^state!=approved'); // sys_id of change
gr.query()
gs.info("Print number:"+gr.getRowCount());
if(gr.next()){
gs.info("print state:"+gr.state);  // if all are not approved then it will enter in if loop and you can erite logic here
}

 Kindly mark correct and helpful if applicable

Shekhar Navhak1
Kilo Sage
Kilo Sage

Hi @anilkumarsharma ,

 

Update your script as shown below and add variable flags if needed:

 var aggChange = new GlideAggregate('sysapproval_approver');
        aggChange.addEncodedQuery('sysapproval.number=CHG0000087');
        aggChange.addAggregate('COUNT','state');
        aggChange.query();
        while(aggChange.next()){
            // add a message with the count
            var msg = "Change request has a total of " + aggChange.getAggregate('COUNT','state') + " approval state "+aggChange.getDisplayValue('state') ;
            gs.addInfoMessage(msg);
        }

 

Please mark the answer correct/helpful based on Impact.
Regards, Shekhar

Namrata Ghorpad
Mega Sage
Mega Sage

Hello,

 

You can change the code like below.

 

var gr = new GlideRecord('sysapproval_approver');
gr.addEncodedQuery('sysapproval.number=CHG0000087');
gr.query();
gs.info("Print number:"+gr.getRowCount());
while(gr.next()){
gs.info("print state:"+gr.state);

}
if(gr.state=='approved')
{
gs.print("change approved");
}

 

Please mark my answer as helpful/correct if it helps you.

Regards,

Namrata

Gunjan Kiratkar
Kilo Patron
Kilo Patron

Hi @anilkumarsharma 

You can do something like below:-

var gr = new GlideRecord('sysapproval_approver');
gr.addEncodedQuery('sysapproval=e2cdf552db252200a6a2b31be0b8f57f^state!=not_required^ORstate=NULL'); //Copy encoded query from list view
gr.query()
var allCount=gr.getRowCount();
var approvedCount=0;
while(gr.next() && gr.state=='approved'){
approvedCount++;
}
if(approvedCount==allCount){

gs.eventQueue("EventName");

}

Please Mark My Response as Correct/Helpful based on Impact
Regards,
Gunjan Kiratkar
2X ServiceNow MVP
Community Rising Star 2022
Youtube : ServiceNow Guy