Skip to content
Release: Australia · Updated: 2026-03-12 · Official documentation · View source

Constrain the assigned to field by role

This example shows how to use JavaScript and a business rule 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 [sys_user] table.

Procedure

  1. Open an incident.

  2. In the upper-left corner of the screen, click the form context menu, and then 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 now_GR = new GlideRecord('sys_user_has_role');
       if (roleListIds) {
          now_GR.addQuery('role', queryCondition, roleListIds);
       }
       now_GR.query();
       while (now_GR.next()) {
          users[now_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 now_GR = new GlideRecord('sys_user_role');
       now_GR.addQuery('name','IN',roleList);
       now_GR.query();
       while (now_GR.next()) {
          ids.push(now_GR.sys_id.toString());
       }
       return ids;
    }