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
Kilo 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.