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.

Submitter cant be an approver Catalog Item

Ricardo Sanchez
Tera Contributor

i created a workflow "approval group" activity but it just keep skipping this activity all together


var answer = [];

// Get the approval group using sys_id
var group = new GlideRecord('sys_user_group');
group.get('c34f36ec8393d2106e4aafd0deaad367'); // Use the provided sys_id directly

// Get the requested_by variable from the current record's variables
var requesterUser = current.variables.requested_by + ''; // Convert to string if necessary

// Query the group members
var groupMember = new GlideRecord('sys_user_grmember');
groupMember.addQuery('group', group.sys_id);
groupMember.query();

// Loop through the group members
while (groupMember.next()) {
var memberUser = groupMember.user.sys_id + ''; // Convert to string if necessary

// Exclude the requester from the approvers list
if (memberUser !== requesterUser) {
answer.push(memberUser); // Add user sys_id to answer array
}
}

// The 'answer' array is now populated with sys_ids of the group members excluding the requester

2 REPLIES 2

Chaitanya ILCR
Mega Patron

Hi @Ricardo Sanchez 

 

try this script

var answer = [];

var groupMember = new GlideRecord('sys_user_grmember');
groupMember.addQuery('group', 'c34f36ec8393d2106e4aafd0deaad367');
groupMember.query();
while (groupMember.next()) {
    var memberUser = groupMember.getValue('user');

    // Exclude the requester from the approvers list
    if (memberUser != current.variables.requested_by) {
        answer.push(memberUser);
    }
}

 

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya

 

Raphael Zani
Tera Expert

Hi @Ricardo Sanchez 

 

  1. Ensure the requested_by field is properly populated in current.variables.

  2. Use the script inside a Script Include or Function Definition, and return a valid array of sys_ids.

  3. Assign the result correctly to the approvers field in the workflow/activity:

Example (inside a Script Include with function getApprovers

getApprovers: function(current) {
  var approvers = [];
  var group = new GlideRecord('sys_user_group');
  if (group.get('c34f36ec8393d2106e4aafd0deaad367')) {
    var requester = current.variables.requested_by + '';
    var members = new GlideRecord('sys_user_grmember');
    members.addQuery('group', group.sys_id);
    members.query();
    while (members.next()) {
      if (members.user.sys_id.toString() !== requester) {
        approvers.push(members.user.sys_id.toString());
      }
    }
  }
  return approvers;
}

In the Approval Activity approvers field, call:

getApprovers(current)

 

If this resolves your issue, please mark my response as helpful or correct.
Best regards,

Zani.