- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-13-2018 02:01 AM
Hello All,
I want add current demand assignment group members into approvers tab which is available in the related list of current demand?
Please have a look into screen shot highlighted in red color.
I have selected current assignment group as "Cab Approval", It contains 15 group members, so I want insert all 15 members into below approvers tab(on insert or update), If I changed current assignment group to other group immediately I want remove previous group members and need to insert new group members
I have written below code but its not working as expected
(function executeRule(current, previous /*null when async*/) {
gs.addInfoMessage("sarting");
var grMember = new GlideRecord("sys_user_grmember");
grMember.addQuery("user","!=","NULL");
grMember.addQuery("group",current.assignment_group);
grMember.query();
while(grMember.next())
{
var ins = new GlideRecord("sysapproval_approver");
ins.query();
while(ins.next())
{
gs.addInfoMessage(grMember.user.getDisplayValue());
gs.addInfoMessage("inside while");
ins.initialize();
ins.sysapproval = current.number;
ins.state = "not requested";
ins.approver = grMember.user;
ins.insert();
gs.addInfoMessage("last");
}
}
})(current, previous);
Many Thanks
Solved! Go to Solution.
- Labels:
-
Personal Developer Instance
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-15-2018 07:12 AM
The below code is working fine
total three scenarios
1.if current.assignment group is not null I want add approvers into approvers tab
2.if current.assignment group is null and previous.current.assignment group is not null I want delete approvers from the tab
3.if current.assignment group is not null and previous.assignment group is not null I want delete previous group members from the approvers tab and add newly added current.assignment group members into approvers tab.
The last scenario is not working as expected I have highlighted in the bold , I think i need to change the conditions can any one help me
Business Rule
(function executeRule(current, previous /*null when async*/) {
if(( current.assignment_group.nil() || current.assignment_group != null || current.assignment_group == "") && !previous.assignment_group.nil() ) //
{
gs.addInfoMessage("delete operatiop");
var obj1 = new AddApproversForDemand();
obj1.deleting(current.assignment_group,current.sys_id);
}
else if(!current.assignment_group.nil() && previous.assignment_group.nil() )
{
gs.addInfoMessage("running");
var obj = new AddApproversForDemand();
obj.adding(current.assignment_group,current.sys_id);
}
else if(!current.assignment_group.nil() && !previous.assignment_group.nil()) {
gs.addInfoMessage("deleting & adding ");
var obj2 = new AddApproversForDemand();
obj2.deleting(current.assignment_group,current.sys_id);
obj2.adding(current.assignment_group,current.sys_id);
}
})(current, previous);
Script Include
var AddApproversForDemand = Class.create();
AddApproversForDemand.prototype = {
initialize: function() {
},
adding: function(assGrp,sysId){
gs.log("starting","harish");
var grMember = new GlideRecord("sys_user_grmember");
//grMember.addQuery("user","!=","NULL");
grMember.addQuery("group",assGrp);
gs.log("chk","harish");
grMember.query();
while(grMember.next())
{
var ins = new GlideRecord("sysapproval_approver");
gs.log("inside aprover","harish");
gs.log(grMember.user.getDisplayValue(),"harish");
ins.initialize();
ins.sysapproval = sysId;
ins.state = "not requested";
ins.approver = grMember.user;
ins.insert();
gs.log("last","harish");
}
},
deleting: function(assGrp,sysId){
var grMember = new GlideRecord("sys_user_grmember");
//grMember.addQuery("user","!=","NULL");
grMember.addQuery("group", "!=", assGrp);
gs.log("chk delete","harish");
grMember.query();
while(grMember.next())
{
var ins = new GlideRecord("sysapproval_approver");
ins.addQuery("sysapproval", sysId);
ins.query();
while(ins.next())
{
ins.deleteMultiple();
gs.log(grMember.user.getDisplayValue(),"harish delete");
}
}
},
type: 'AddApproversForDemand'
};

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-13-2018 02:21 AM
Can you try like this.
(function executeRule(current, previous /*null when async*/) {
gs.addInfoMessage("sarting");
var grMember = new GlideRecord("sys_user_grmember");
grMember.addQuery("user","!=","NULL");
grMember.addQuery("group",current.assignment_group);
grMember.query();
while(grMember.next())
{
var ins = new GlideRecord("sysapproval_approver");
gs.addInfoMessage(grMember.user.getDisplayValue());
gs.addInfoMessage("inside while");
ins.initialize();
ins.sysapproval = current.number;
ins.state = "not requested";
ins.approver = grMember.user;
ins.insert();
gs.addInfoMessage("last");
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-13-2018 02:30 AM
Hi Vinod,
Thanks for the response
Where did you modified in the code I haven't seen any modifications, Is this code work for removing current assignment group and adding a new assignment group.
Thanks

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-13-2018 03:42 AM
I have just commented the below line as those are needed. Regarding your question will it update, when we change the assignment group, you have to trigger this BR whenever an assignment group of the demand has been changed.
var ins = new GlideRecord("sysapproval_approver");
//ins.query();
//while(ins.next())
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-13-2018 04:21 AM
Hi Rao,
Change this line ins.sysapproval = current.number; to ins.sysapproval = current.sys_id;
Thanks