current Assignment group members

Kavita1
Giga Contributor

I have requirement 'Current Assignment group members, plus problem management team and Submitter should be able to cancel problem. User other than those should not be able to cancel the ticket.

I have implemented for submitter and Problem Management group. But not able to do for current assignment group. Below is the business rule:

var gr = new GlideRecord('problem');
var isOpenedBy = gr.opened_by;
var usrID = gs.getUserID();
var assignGrp = gr.assignment_group;

var grp = new GlideRecord('sys_user_group');
grp.addQuery('name',assignGrp);
grp.query();
if(grp.next()){
var assignGrpID = grp.sys_id;
}

var assignMember = new isMemberOfGroup().grpMember(usrID,assignGrpID);
 if(assignMember == 'false' || assignMember == false){
current.setAbortAction(true);
gs.addErrorMessage('You dont have permission to cancel the problem');
}

Script Include:

var isMemberOfGroup = Class.create();
isMemberOfGroup.prototype = {
grpMember: function(usrID,grpID){
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('user',usrID);
gr.addQuery('group',grpID);
gr.query();
if(gr.next()){
return true;
}
else{
return false;
}
},
type: 'isMemberOfGroup'
};

Please help

1 ACCEPTED SOLUTION

Suseela Peddise
Kilo Sage

Hi,

You no need to use Gliderecord and Script include. You can check the logged in user is member of group or not using isMemberOf() . Please see below code to check loggedin user is member of problem grp or assignment group

//check logged in user is member of problem managemnt grp
var pblm_grpmem= gs.getUser().isMemberOf('problem managament');//update group name
//get the problem assignment grp
var asg_name= current.assignment_group.getDisplayValue();
//check logged in user is member of problem assignment grp
var asg_grpmem=gs.getUser().isMemberOf(asg_name);//update group name

if(pblm_grpmem == false && asg_grpmem == false && current.opened_by!=gs.getUserID())
{
//if all conditions are not satiisfied then abort the cation
gs.addErrorMessage('You dont have permission to cancel the problem');
current.setAbortAction(true);
}

 

If I have answered your question please mark my response as correct and/or helpful.

Thanks,

Suseela P.

View solution in original post

6 REPLIES 6

Voona Rohila
Kilo Patron
Kilo Patron

Hi Kavita

Below highlighted yellow code is missing and few changes on existing code.

var gr = new GlideRecord('problem');

gr.addQuery("","");

gr.query(); 

if(gr.next())

{

var pblm_assignGrp = gr.assignment_group;

}
var isOpenedBy = current.opened_by;
var usrID = gs.getUserID();
var gr1 = new GlideRecord('sys_user_grmember');
gr1.addQuery('user',usrID);
gr1.addEncodedQuery("group="+pblm_assignGrp +"^ORgroup="+current.assignment_group);
gr1.query();
if(!gr1.hasNext() && isOpenedBy ==usrID   ){
current.setAbortAction(true);
gs.addErrorMessage('You dont have permission to cancel the problem');

}

 


Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP

John Zhang1
Kilo Patron
Kilo Patron

I think you are talking about Cancelling "problem" ticket permission using OOB "Cancel" UI action.   The following is OOB UI action screenshot.

I think you shall add the condition script to meet your requirement rather than BR.  Let me know if you want to discuss more about the implementation approach

find_real_file.png

 

Please mark reply as Helpful/Correct, if applicable. Thanks!

Suseela Peddise
Kilo Sage

Hi,

You no need to use Gliderecord and Script include. You can check the logged in user is member of group or not using isMemberOf() . Please see below code to check loggedin user is member of problem grp or assignment group

//check logged in user is member of problem managemnt grp
var pblm_grpmem= gs.getUser().isMemberOf('problem managament');//update group name
//get the problem assignment grp
var asg_name= current.assignment_group.getDisplayValue();
//check logged in user is member of problem assignment grp
var asg_grpmem=gs.getUser().isMemberOf(asg_name);//update group name

if(pblm_grpmem == false && asg_grpmem == false && current.opened_by!=gs.getUserID())
{
//if all conditions are not satiisfied then abort the cation
gs.addErrorMessage('You dont have permission to cancel the problem');
current.setAbortAction(true);
}

 

If I have answered your question please mark my response as correct and/or helpful.

Thanks,

Suseela P.

This solution makes the most sense to be honest just put it in a UI Action which you will use to cancel the Problem