ServiceNow
Create, read, update, and comment on ServiceNow tickets from a workbench
The ServiceNow tool lets a workbench agent work with tickets in your ServiceNow instance through the Table API. It covers four ticket tables: incidents (incident), change requests (change_request), problems (problem), and catalog tasks (sc_task). Requests for any other table are rejected before they reach ServiceNow. The tool does not limit which columns a query can read, so only the integration user's ACLs restrict data, including fields reached through references such as caller_id.email.
For the complete list of integrations and general tool behavior, see Workbench tools.
Prerequisites
- A ServiceNow instance and an admin who can create users and roles.
- Permission in Plural Console to create a configured tool and edit the target workbench.
- An existing workbench, or permission to create one. See Setting up a workbench.
Create an integration user
Use a dedicated service account with the narrowest role that works. The agent can set any field the account can write, including assigned_to and caller_id, so its permissions limit what a prompt can change.
- In ServiceNow, open User Administration → Users and create a dedicated user, for example
plural.agent. - Check Web service access only so the account cannot sign in to the UI.
- Set a password.
- Grant the
itilrole, or a custom role with read and write access to the four ticket tables.
Comments and work notes are stored in the sys_journal_field table. Base instances usually restrict that table, so add an ACL that lets the integration user read it if you want the agent to read ticket history. The same goes for the state choices in sys_choice, which list_states and transition_record read to resolve state labels such as In Progress. See Allow reading state choices.
Allow reading state choices
State values differ per table and per instance, so the agent looks them up in the sys_choice table. For example, 2 is In Progress on an incident. The itil role usually cannot query that table through the API. The request fails with: