
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2023 02:07 AM
I am building a workflow for SN group access requests.
On the sys_user_group table we have the group manager field and I have just created an access approval group field (u_access_approval_group). So in this set up, either the manager or group must be completed. In some cases, both will be complete.
Now on the workflow, I already have an approval script set up for the manager:
var gr = new GlideRecord("sys_user_group");
gr.addQuery("sys_id", current.variables.access_group_required);
gr.query();
var answer = [];
while (gr.next()) {
if (gr.manager != ''){
answer.push(gr.manager);
}
}
So, in the new process, I would like the approvals to go to all of the members in the group and groups manager. Taking into account that one of the fields on the group maybe empty.
How would I incorporate this into the script?
Many thanks
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2023 03:27 AM - edited ‎01-06-2023 03:28 AM
Yes, need to actually look-up the approval group and not the current group. I have updated the code (but still couldn't test it, so maybe add some debugging to see if if works?)
var gr = new GlideRecord("sys_user_group");
gr.addQuery("sys_id", current.variables.access_group_required);
gr.query();
var answer = [];
while (gr.next()) {
if (gr.manager != ''){
answer.push(gr.manager);
}
var approvalGroup = gr.getValue('u_access_approval_group');
if(approvalGroup) {
addGroupApprovers(approvalGroup);
}
}
function addGroupApprovers(group) {
if(!group) {
return;
} else {
var grMember = new GlideRecord("sys_user_grmember");
grMember.addQuery("group",group);
grMember.query();
while(grMember.next()) {
answer.push(grMember.user);
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2023 02:34 AM
You could extend your code to something like this (code not tested):
var gr = new GlideRecord("sys_user_group");
gr.addQuery("sys_id", current.variables.access_group_required);
gr.query();
var answer = [];
while (gr.next()) {
if (gr.manager != ''){
answer.push(gr.manager);
}
if(gr.u_access_approval_group) {
addGroupApprovers(gr);
}
}
function addGroupApprovers(group) {
if(!group) {
return;
} else {
var grMember = new GlideRecord("sys_user_grmember");
grMember.addQuery("group",group.sys_id);
grMember.query();
while(grMember.next()) {
answer.push(grMember.user);
}
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2023 03:02 AM
Thanks for taking the time to respond @Laszlo Balla
Unfortunately, the code didnt pull the group members. Just the groups manager. If I take the manager out, it doesnt create any approvals based on the access approval group
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2023 03:27 AM - edited ‎01-06-2023 03:28 AM
Yes, need to actually look-up the approval group and not the current group. I have updated the code (but still couldn't test it, so maybe add some debugging to see if if works?)
var gr = new GlideRecord("sys_user_group");
gr.addQuery("sys_id", current.variables.access_group_required);
gr.query();
var answer = [];
while (gr.next()) {
if (gr.manager != ''){
answer.push(gr.manager);
}
var approvalGroup = gr.getValue('u_access_approval_group');
if(approvalGroup) {
addGroupApprovers(approvalGroup);
}
}
function addGroupApprovers(group) {
if(!group) {
return;
} else {
var grMember = new GlideRecord("sys_user_grmember");
grMember.addQuery("group",group);
grMember.query();
while(grMember.next()) {
answer.push(grMember.user);
}
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-06-2023 04:07 AM
Thats nearly there @Laszlo Balla , thanks
Its pulling just the 1st member of the group for approval. I therefore updated:
answer.push(grMember.user);
to:
answer.push(grMember.getValue('user'));
This now works as expected.
Thanks so much for your help