Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

how to see if updated by is member of a group

mduluk
Giga Expert

We are trying to have a SLA where if the service desk incident is updated by some one other then the service desk it will start a two hour timer.   The SLA would stop when the Service Desk updates the ticket or it is closed/transferred.\

 

The problem is updated by is a string.   I have a script include that returns an array of all the service desk usernames, but it looks like the filter is reading the whole comma separated arraty, not each element as a different user name.   Any ideas?

 

function getServiceDeskUserNames(){

     

      var arrayUtil = new ArrayUtil();

      var groupMembers = [];

      var grGroupMembers = new GlideRecord('sys_user_grmember');

      //get the service desk group

      grGroupMembers.addQuery('group','9d4cb8b538494900a06b750aa778bbcc');

      grGroupMembers.query();

      while (grGroupMembers.next()) {

              groupMembers.push(grGroupMembers.user.user_name.toString());

      }

return arrayUtil.unique(groupMembers);

}

1 ACCEPTED SOLUTION

This is untested but you get the general idea...   Just ensure you change lines 2 and 3 to match your environment and please mark the post as answered if this works out



function getServiceDeskUserNames() {


  var user = current.sys_updated_by;


  var groupName = "Service Desk";



  //Get Users sys_id


  var usrGr = new GlideRecord('sys_user');


  if(usrGr.get('user_name', user) {


  userID = usrGr.sys_id + '';


  }


  else {


  //we didn't find the user return false


  return false;


  }




  //get Group sys_id


  var grpGr = new GlideRecord('sys_user_group');


  if(grpGr.get('name', groupName)) {


  groupID = grpGr.sys_id + '';


  }


  else {


  //we didn't find the group return false


  return false;


  }




  //Now see if they are a member of the group


  var grpMbr = new GlideRecord('sys_user_grmember');


  grpMbr.addQuery('user', userID);


  grpMbr.addQuery('group', groupID);


  gr.query();


  if (gr.next()) {


  return true;


  }


  return false;


}


View solution in original post

6 REPLIES 6

Crusty1
Giga Contributor

You may be able to use a combo of the 2 previous answers in one line:



gs.getUser().getUserByID(current.sys_updated_by).isMemberOf('Group Name')


mduluk
Giga Expert

I did have to change it a little.   It did not like true or false being the return values, so I set the true return to be current.sys_updated_by.