
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-22-2017 07:59 AM
Hi Community,
Using Helsinki - helsinki-03-16-2016__patch7-11-02-2016
Following a recent audit I need to prevent any Requester being able to Approve their own Change Requests.
I have read a couple of articles similar to my situation but they have been specific to a particular Assignment Group and my scripting skills are non existent to be able to turn their suggestions into something that works!! I have also tried writing a Business Rules on the sysapproval_approver table but could not get this to work either.
I have attempted to change the below script from another post from 2014 to work in our Instance but I cannot get it to work - the best result was skipping the Peer check step of the workflow where an approval is required from the Assignment group of the Requester.
- answer = [];
- var approvers = new GlideRecord('sys_user_grmember');
- approvers.addQuery('group.name', 'IT Infrastructure Managers');
- approvers.query();
- while(approvers.next()) {
- if(approvers.user.toString() != current.requested_by.toString()) {
- answer.push(approvers.user.toString());
- }
- }
My version:
1. answer = [];
2. var approvers = new GlideRecord('sys_user_grmember');
3. approvers.addQuery('current.assignment_group');
4. approvers.query();
5. while(approvers.next()) {
6. if(approvers.user.toString() != current.requested_by.toString()) {
7. answer.push(approvers.user.toString());
8. }
9. }
I think the script is doing the following:
2 - Identifying the Group the Requester is in
3 - Is the Requester in the Assignment Group?
4 - ??
5 - ??
6 - If the Requester is in the Assignment Group
7 - ?? do something!
Many thanks in advance.
Steve Brown
Solved! Go to Solution.
- Labels:
-
Change Management
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-22-2017 08:28 AM
There is an additional quotes in the current.assignment_group which will not make it work. I have done a minor update to code
answer = [];
var approvers = new GlideRecord('sys_user_grmember');
approvers.addQuery('group', current.assignment_group); //Matches assignment group on change with the group membership table
approvers.query();
while(approvers.next()) {
if(approvers.user.toString() != current.requested_by.toString()) {
answer.push(approvers.user.toString());
}
}
I have tested this and it was working on my developer instance.
Thanks
Please Hit like, Helpful or Correct depending on the impact of the response
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-27-2022 10:23 AM
I set the state to "No Longer Required" and it immediately set that for all other approvers. This is not working and I have the same issues - why isn't servicenow fixing this - they know darn well nobody should self approve in group approvals... ugh... Or at least give us an out of the box option to set "no self approval" so that we don't all have to struggle trying to find the right places to put this code into.