- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2021 09:59 AM
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
Solved! Go to Solution.
- Labels:
- 
						
							
		
			Problem Management
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2021 10:24 AM
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.
 
					
				
		
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2021 01:01 PM
  I agree with 
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-28-2021 01:07 PM
Of course, if State is not read-only, users would be able to just Cancel from list view, the condition on the UI Action would be useless. Cleverer users would be able to do the same using a variety of methods. The best solution is to implement the check in the Script Include meant for that (new ProblemStateUtils().canMarkDuplicateOrCancel()) and call the same method in a/the Business Rule too.
