KB Approval Issue

Palak5
Tera Contributor

Hi All,

I am trying to attach approvals to the knowledge article through the script of the "Approval User" workflow activity.

The requirement is: Approval should go to the common users of the current ownership group and another specific group.

The logs show the correct output, but the approval is just added once for a random user from the ownership group but that user is not a member of the second group.

answer = [];
var assignmentGroup = current.u_ownership_group.name;
gs.info("Assignment group is - " + assignmentGroup);
var approvers = new GlideRecord("sys_user_grmember");
approvers.addQuery('group.name', assignmentGroup);
approvers.query();
gs.info("Total members - " + approvers.getRowCount());
while (approvers.next()) {
    gs.info("User tested - " + approvers.user.name);
    var gr = new GlideRecord('sys_user_grmember'); //
    gr.addQuery('user', approvers.user);
    gr.addQuery('group', "sys_id_of_another_group");
    gr.query();
    if (gr.next()) {
        var user = approvers.user;
        gs.info("User is Member of Group!" + approvers.user.name);
        answer.push(user);
    }

}

 

Unable to find the issue here. 

 

1 ACCEPTED SOLUTION

piyushsain
Tera Guru

Hi,

In the push you should convert it to string. Try ;

answer.push(approvers.user.toString());

 

If my answer has helped with your question, please mark my answer as accepted solution and give a thumb up.
Regards,
Piyush Sain

View solution in original post

6 REPLIES 6

vermaamit16
Kilo Patron

Hi @Palak5 

 

Please check if the below logic works :

 

var answer = [];
var count = 0;
var currentGroup = current.u_ownership_group.name ;
var othergroupSysID = 'b0d2ed4c2fc9bd502b86d4a72799b676'
var approvers = new GlideRecord('sys_user_grmember');
approvers.addQuery('group.name',currentGroup);
approvers.query();
while(approvers.next()){
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('group='+othergroupSysID+'^user='+approvers.user);
gr.query();
if(gr.next()){
answer.push(approvers.user.name.toString());
}
}
gs.info(answer);

 

Thanks & Regards

Amit Verma

Thanks and Regards
Amit Verma

This logic skips the activity altogether.

I tried something similar previously, but that also skipped the approval activity. 

Palak5_0-1704886582489.png

 

Hi @Palak5 

 

Sorry I copied wrong code. Please try below code. It should work :

 

var answer = [];
var currentGroup = current.u_ownership_group.name ;
var othergroupSysID = 'Sys_id of the group'
var approvers = new GlideRecord('sys_user_grmember');
approvers.addQuery('group.name',currentGroup);
approvers.query();
while(approvers.next()){
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('group='+othergroupSysID+'^user='+approvers.user);
gr.query();
if(gr.next()){
answer.push(approvers.user.toString());
}
}

 

 

I have changed the last line to push into array to answer.push(user.toString());

 

Thanks & Regards

Amit Verma

Thanks and Regards
Amit Verma

piyushsain
Tera Guru

Hi,

In the push you should convert it to string. Try ;

answer.push(approvers.user.toString());

 

If my answer has helped with your question, please mark my answer as accepted solution and give a thumb up.
Regards,
Piyush Sain