Thank you for your feedback.
Form temporarily unavailable. Please try again or contact docfeedback@servicenow.com to submit your comments.
Versions
  • London
  • Kingston
  • Jakarta
  • Istanbul
  • Helsinki
  • Geneva
  • Store
Close

Constrain the assigned to field by role

Constrain the assigned to field by role

This example shows how to use JavaScript to restrict the incident Assigned to field choices to only the users with the itil_admin role.

Before you begin

Role required: personalize_dictionary or admin

About this task

You can also change itil_admin to any other role on a reference field that refers to the User table.

Procedure

  1. Open an incident.
  2. Right-click the Assigned to field and select Configure Dictionary.
  3. In the Reference qual field, enter javascript:"sys_idIN"+getRoledUsers("itil_admin").join(",").
  4. Save the record.
  5. To see the base-system business rule that this JavaScript code calls, navigate to System Definition > Business Rules.
  6. Open getRoledUsers.
    The business rule uses the following JavaScript code.
    // Return an array of sys_ids of the users that have at least one role
    // optional parameters allow the exclusion (NOT IN) of some roles or
    // look for specific roles (IN)
    //
    // optional: queryCondition - 'IN' or 'NOT IN'
    // optional: roleList - a comma separated list of role names
    //
    function getRoledUsers(queryCondition, roleList) {
       var roleListIds;
       if (queryCondition && roleList) {
          roleListIds = getRoleListIds(roleList);
       }
    
       var users = {};
       var gr = new GlideRecord('sys_user_has_role');
       if (roleListIds) {
          gr.addQuery('role', queryCondition, roleListIds);
       }
       gr.query();
       while (gr.next()) {
          users[gr.user.toString()] = true;
       }
       
       var ids = [];
       for (var id in users)
          ids.push(id);
          
       return ids;
    }
    
    // get sys_id's for the named roles
    function getRoleListIds(roleList) {
       var ids = [];
       var gr = new GlideRecord('sys_user_role');
       gr.addQuery('name','IN',roleList);
       gr.query();
       while (gr.next()) {
          ids.push(gr.sys_id.toString());
       }
       return ids;
    }