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
Open an incident.
In the upper-left corner of the screen, click the form context menu, and then select Configure > Dictionary.
In the Reference qual field, enter
javascript:"sys_idIN"+getRoledUsers("itil_admin").join(",").Save the record.
To see the base system business rule that this JavaScript code calls, navigate to System Definition > Business Rules.
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; }