ServiceNow
How it works​
ServiceNow open-tickets provider uses the ServiceNow REST API to get configuration data and open incidents about your monitoring alerts. Since it gathers a lot of configurations objects from ServiceNow, it puts them in cache. Loging out or waiting 10 hours will flush the cache.

Compatibility​
This integration is (at least) compatible with the following ServiceNow versions:
- Madrid
- London
- New York
Feature information​
| Open ticket | Close ticket (from Centreon to ServiceNow) | Handle custom fields |
|---|---|---|
| ✓ | ✘ | ✘ |
Requirements​
You need to configure Open Tickets in order for resources (hosts and services) to receive a ticket number.
Our provider requires the following parameters:
| Parameter | Example of value |
|---|---|
| Instance Name | MyCompany |
| OAuth Client ID | xxxxxxxxx |
| OAuth Client Secret | yyyyyyyy |
| Username | centreon |
| Password | MyPassword |
| Protocol | https |
| Timeout | 60 |
Network flow​
| Source | Destination | Protocol/Port |
|---|---|---|
| Centreon central server | ServiceNow instance | TCP/443 (https) or TCP/80 (http) |
Account​
You need the following information:
- Client ID
- Client secret
- Username
- Password
- Instance name
The aforementioned account must at least be able to open a ticket through the ServiceNow Table REST API. This is a POST action into the incident table.
The connector will also try to access the following tables from the API depending on the configuration of your open ticket rule:
- sys_user table
- sys_user_group table
- sys_choice
Some test commands that you can run from your Centreon central server are available in the Test commands section.
Retrieved data​
This open ticket connector can retrieve the following information from your ServiceNow instance:
- Categories
- Subcategories
- Impact
- Urgency
- Severity
- Assignment Group
- Assignment
If you need more information regarding retrieved data from an open ticket connector, please read the retrieved data chapter from the Open Ticket global documentation.
Test commands​
The curl commands listed below must be run from your central server. You need to replace everything between <>. For example <server_address> may be replaced with service-now.com.
Get oauth tokens​
curl --location 'https://<instance_name>.<server_address>/oauth_token.do' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'client_id=<client_id>' \
--data-urlencode 'client_secret=<client_secret>' \
--data-urlencode 'username=<username>' \
--data-urlencode 'password=<password>'
Get ServiceNow severities​
curl --location 'https://<instance_name>.<server_address>/api/now/table/sys_choice?sysparm_fields=value%2Clabel%2Cinactive&sysparm_query=nameSTARTSWITHincident%5EelementSTARTSWITHseverity' \
--header 'Authorization: Bearer <authentication_token>' \
--header 'Content-Type: application/json'
Get ServiceNow urgencies​
curl --location 'https://<instance_name>.<server_address>/api/now/table/sys_choice?sysparm_fields=value,label,inactive&sysparm_query=nameSTARTSWITHincident%5EelementSTARTSWITHurgency' \
--header 'Authorization: Bearer <authentication_token>' \
--header 'Content-Type: application/json'
Get ServiceNow impact​
curl --location 'https://<instance_name>.<server_address>/api/now/table/sys_choice?sysparm_fields=value,label,inactive&sysparm_query=nameSTARTSWITHtask%5EelementSTARTSWITHimpact' \
--header 'Authorization: Bearer <authentication_token>' \
--header 'Content-Type: application/json'
Get ServiceNow categories​
curl --location 'https://<instance_name>.<server_address>/api/now/table/sys_choice?sysparm_fields=value,label,inactive&sysparm_query=nameSTARTSWITHincident%5EelementSTARTSWITHcategory' \
--header 'Authorization: Bearer <authentication_token>' \
--header 'Content-Type: application/json'
Get Service Now subcategories​
curl --location 'https://<instance_name>.<server_address>/api/now/table/sys_choice?sysparm_fields=value,label,inactive&sysparm_query=nameSTARTSWITHincident%5EelementSTARTSWITHsubcategory' \
--header 'Authorization: Bearer <authentication_token>' \
--header 'Content-Type: application/json'
Get ServiceNow users​
curl --location 'https://<instance_name>.<server_address>/api/now/table/sys_user?sysparm_fields=sys_id,active,name' \
--header 'Authorization: Bearer <authentication_token>' \
--header 'Content-Type: application/json'
Get ServiceNow user groups​
curl --location 'https://<instance_name>.<server_address>/api/now/table/sys_user_group?sysparm_fields=sys_id,active,name' \
--header 'Authorization: Bearer <authentication_token>' \
--header 'Content-Type: application/json'
Open a ticket​
Keep in mind that the data in the command down below is just an example and your ServiceNow instance may ask you to add mandatory data
curl --location 'https://<instance_name>.<server_address>/api/now/table/incident' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Basic <authentication_token>' \
--data '{
"short_description": "This a test ticket",
"description": "Believe it or not, but it is just a test."
}'