ServiceNow
The ServiceNow node connects your workflows to a ServiceNow instance through the Table API and Service Catalog API. It performs generic CRUD on any table, and adds purpose-built actions for incidents, change requests, service requests, configuration items (CIs), and catalog item orders. Use it to drive ITSM processes directly from automations.
Common uses include:
- Creating and updating records in any ServiceNow table.
- Opening incidents automatically when monitoring detects a problem.
- Resolving and closing incidents once remediation completes.
- Raising and closing change requests as part of a controlled workflow.
- Reading and updating configuration items in the CMDB.
- Ordering catalog items on behalf of a requester.
Before You Start
| What you may need | Where to set it up | Why it matters |
|---|---|---|
| ServiceNow connection | ServiceNow Connection | Stores the instance URL, username, and password used to authenticate every action. |
| Table names, assignment groups, catalog IDs | Global Variables | Keep ServiceNow values consistent and easy to update across workflows. |
| A service account | ServiceNow admin | The connector authenticates with Basic auth using an instance account. |
Connection
Every ServiceNow action requires a ServiceNow connection, referenced by connectionId. The connection is a ServiceNowConnectionDetails record with these fields:
| Field | Required | Description |
|---|---|---|
instanceUrl | Yes | Instance base URL (e.g., https://your-instance.service-now.com) |
username | Yes | Instance account username |
password | Yes | Instance account password |
The connector authenticates with HTTP Basic auth. Table operations use /api/now/table, and catalog orders use /api/sn_sc/servicecatalog/items.
Configure the connection under Connections > ServiceNow in the Global Configurator, then reference it from each step.
The ServiceNow connector currently sets insecureSsl=true for all handlers, which disables TLS certificate verification on calls to the instance. This matches the platform's known INSECURE_TLS posture and is flagged for hardening (VAPT). Until it is addressed, connections do not validate the server certificate chain, so treat the transport as untrusted for man-in-the-middle risk. Restrict use to trusted networks and track remediation with the platform team.
How Parameters Are Resolved
Each action reads its inputs from a configuration key named snow<Action>Details — for example, snowCreateRecordDetails for snow:createRecord.
connectionIdreferences the ServiceNow connection.- Number-based actions (incidents, change requests, service requests) resolve the target record's
sys_idthroughresolveRecordSysId: a 32-character hex value is used as-is; otherwise the connector looks the record up by its number. - HTTP failures surface as
ServiceNow API HTTP error (<status>): <body>.
Actions
| Action | Description |
|---|---|
snow:createRecord | Create a record in any table |
snow:getRecord | Read a record by table and sys_id |
snow:updateRecord | Update a record by table and sys_id |
snow:queryRecords | Query records in a table |
snow:createIncident | Create an incident |
snow:updateIncident | Update an incident by number |
snow:resolveIncident | Resolve an incident (state 6) |
snow:closeIncident | Close an incident (state 7) |
snow:getIncident | Read an incident by number |
snow:createChangeRequest | Create a change request |
snow:updateChangeRequest | Update a change request by number |
snow:closeChangeRequest | Close a change request (state 3) |
snow:getChangeRequest | Read a change request by number |
snow:createServiceRequest | Create a service request |
snow:getServiceRequest | Read a service request by number |
snow:getCIRecord | Read a configuration item |
snow:updateCIRecord | Update a configuration item |
snow:orderCatalogItem | Order a catalog item |
snow:createRecord
Creates a record in any ServiceNow table.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
tableName | string | Yes | -- | Target table (e.g., incident, problem, cmdb_ci) |
recordData | object | Yes | -- | Field name-value pairs for the new record |
snow:getRecord
Reads a single record by table and sys_id.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
tableName | string | Yes | -- | Table containing the record |
sysId | string | Yes | -- | 32-character sys_id of the record |
fields | string or list | No | all | Fields to return |
snow:updateRecord
Updates a record by table and sys_id.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
tableName | string | Yes | -- | Table containing the record |
sysId | string | Yes | -- | sys_id of the record to update |
recordData | object | Yes | -- | Field name-value pairs to update |
snow:queryRecords
Queries records in a table using an encoded query.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
tableName | string | Yes | -- | Table to query |
query | string | No | -- | Encoded query string (sysparm_query syntax) |
fields | string or list | No | all | Fields to return per record |
limit | number | No | -- | Maximum records to return |
offset | number | No | -- | Starting offset for paging |
Example: Find active P1 incidents
| Field | Value |
|---|---|
| connectionId | snow-prod |
| tableName | incident |
| query | active=true^priority=1 |
| limit | 50 |
snow:createIncident
Creates an incident. The short description is required; other fields are optional.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
shortDescription | string | Yes | -- | Incident short description |
caller | string | No | -- | Caller (user) for the incident |
description | string | No | -- | Detailed description |
urgency | string | No | -- | Urgency value |
impact | string | No | -- | Impact value |
category | string | No | -- | Incident category |
assignmentGroup | string | No | -- | Assignment group |
assignedTo | string | No | -- | Assigned user |
additionalFields | object | No | -- | Extra field name-value pairs |
snow:updateIncident
Updates an incident identified by its number.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
incidentNumber | string | Yes | -- | Incident number (e.g., INC0012345) |
recordData | object | Yes | -- | Field name-value pairs to update |
snow:resolveIncident
Resolves an incident, setting its state to 6 (Resolved).
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
incidentNumber | string | Yes | -- | Incident number |
closeCode | string | Yes | -- | Resolution/close code |
closeNotes | string | Yes | -- | Resolution notes |
caller | string | No | -- | Caller associated with the resolution |
snow:closeIncident
Closes an incident, setting its state to 7 (Closed).
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
incidentNumber | string | Yes | -- | Incident number |
closeNotes | string | No | -- | Close notes |
snow:getIncident
Reads an incident by number.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
incidentNumber | string | Yes | -- | Incident number |
fields | string or list | No | all | Fields to return |
snow:createChangeRequest
Creates a change request.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
shortDescription | string | Yes | -- | Change short description |
description | string | No | -- | Detailed description |
type | string | No | -- | Change type (e.g., normal, standard, emergency) |
priority | string | No | -- | Priority value |
assignmentGroup | string | No | -- | Assignment group |
additionalFields | object | No | -- | Extra field name-value pairs |
snow:updateChangeRequest
Updates a change request identified by its number.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
changeNumber | string | Yes | -- | Change request number (e.g., CHG0004567) |
recordData | object | Yes | -- | Field name-value pairs to update |
snow:closeChangeRequest
Closes a change request, setting its state to 3 (Closed).
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
changeNumber | string | Yes | -- | Change request number |
closeCode | string | Yes | -- | Close code |
closeNotes | string | No | -- | Close notes |
snow:getChangeRequest
Reads a change request by number.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
changeNumber | string | Yes | -- | Change request number |
fields | string or list | No | all | Fields to return |
snow:createServiceRequest
Creates a service request.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
shortDescription | string | Yes | -- | Service request short description |
description | string | No | -- | Detailed description |
priority | string | No | -- | Priority value |
requestedFor | string | No | -- | User the request is for |
additionalFields | object | No | -- | Extra field name-value pairs |
snow:getServiceRequest
Reads a service request by number.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
requestNumber | string | Yes | -- | Service request number |
fields | string or list | No | all | Fields to return |
snow:getCIRecord
Reads a configuration item from the CMDB.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
ciClass | string | Yes | -- | CI class/table (e.g., cmdb_ci_server) |
sysId | string | Yes | -- | sys_id of the configuration item |
fields | string or list | No | all | Fields to return |
snow:updateCIRecord
Updates a configuration item in the CMDB.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
ciClass | string | Yes | -- | CI class/table |
sysId | string | Yes | -- | sys_id of the configuration item |
recordData | object | Yes | -- | Field name-value pairs to update |
snow:orderCatalogItem
Orders a catalog item through the Service Catalog API (/order_now).
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the ServiceNow connection |
catalogItemId | string | Yes | -- | sys_id of the catalog item |
requestedFor | string | No | -- | User the item is ordered for |
variables | object | No | -- | Catalog item variable name-value pairs |
Example: Order a laptop for a new hire
| Field | Value |
|---|---|
| connectionId | snow-prod |
| catalogItemId | 04b7e94b4f7b4200086eeed18110c7fd |
| requestedFor | new.hire@example.com |
| variables | {"model": "standard-laptop", "os": "windows"} |
Output
Each action returns the relevant ServiceNow response payload. Create, read, and update actions return the affected record's fields; query actions return the matching record set; snow:orderCatalogItem returns the placed request details.
Common Error Scenarios
| Error | Type | Likely Cause | What to Check |
|---|---|---|---|
| Missing configuration | VALIDATION_ERROR | The snow<Action>Details config map is missing or empty | Confirm the action's parameter block is populated |
| Required parameter missing | VALIDATION_ERROR | A required field (e.g., tableName, shortDescription, incidentNumber) is blank | Provide all required parameters for the action |
| Record not found | HTTP error / lookup failure | The number or sys_id does not resolve to a record | Verify the number or sys_id and that the account can read the table |
| ServiceNow API error | HTTP error | The instance rejects the request (ACL, bad field, invalid table) | The node reports ServiceNow API HTTP error (<status>): <body> — inspect the status and body |
| Permission denied | HTTP 403 | The account lacks rights on the table or record | Confirm the service account's roles and ACLs |
Best Practices
- Address TLS verification. Because the connector runs with
insecureSsl=true, use it only on trusted networks and track hardening with the platform team (see the security note above). - Use numbers, not sys_ids, for tickets. Incident, change, and service-request actions accept the human-readable number and resolve the sys_id automatically. Reserve raw sys_ids for generic table operations.
- Set close codes and notes.
snow:resolveIncidentandsnow:closeChangeRequestrequire close codes and notes — populate them from workflow data so records close cleanly. - Query with encoded queries. Use
sysparm_querysyntax (e.g.,active=true^priority=1) and setlimitto keep result sets manageable. - Store table and group names centrally. Keep table names, assignment groups, and catalog IDs in global variables so workflows stay readable and easy to update.
- Use
additionalFieldsfor the long tail. Pass any table-specific fields not covered by the named parameters throughadditionalFieldsorrecordData.