Service Now Adapter

Adapter Download

The Kinetic Calendar web server must be using JDK 6.0 or higher.
The following java libraries must be included in the Kinetic Calendar web application classpath:​

  • Http Client 4.1.2 (httpclient-4.1.2.jar)
  • Http Core 4.1.2 (httpcore-4.1.2.jar)
  • Apache Commons Logging (commons-logging-1.1.1.jar)
    The adapter and required jars can be downloaded using this zip file
    • kinetic-calendar-servicenow-1.0.0.zip.*

Developing With Service Now

This bridge uses the SOAP API to make calls to Service Now so that the desired information can be retrieved. Here is a quick primer on how to retrieve your data from Service Now.

A list of standard tables can be found on the Service Now wiki (here).

  • The table name is what needs to be inputted as the "Object" to get data from that particular class
  • Another place to find table names is under the System Definition header there is a Tables table that lists all of the tables, including both the names and labels
  • Keep in mind that all custom tables will have 'u_' appended onto the beginning of the name

A list of fields can be found a couple of different ways

  • Go to the Tables table located under System Definition and click on the name of the table you want to find the fields for. This will pull up a list of field labels. To find the name just click on a field and look in the Column Name input box.
  • The other way to find out the field names for a table is to look at the WSDL. This will give you a list of all the names in XML format. To find that just go to the url with the form .service-now.com/<table_name>.do?WSDL. A list of fields can be found under many of the elements (getResults, getResponse, getRecords, etc).

Make sure that you are using the field name and not the field label when configuring the event mappings. (Hint: If there is a space in the field you are trying to use, you are likely using the field label.

Adapter Configuration

Adapter Class - This value must be added to the adapters.json configuration file:

    • com.kineticdata.calendar.adapters.servicenow.ServiceNowAdapter*

Connection Configuration

Properties

  • Username - The username used to login to Service Now.
  • Password - The password used to login to Service Now.
  • Service Now Instance - The instance of Service Now that your data is stored on. The Service Now instance can be found in the Url in the form of .servicenow.com.

Event Type Source Configuration

The event type source for a Service Now Adapter defines the name of the connection for the calendar events and configuration parameters. Under configuration, you will define which Service Now object you want to retrieve data from (ie. incident, pm_project_list, ast_contract_list, etc.).

"source": {
  "connectionName": "Service Now",
  "configuration": {"Object" : "pm_project_list"}
}

Event Type Mappings

Event type mappings create a relationship between Service Now object attributes and one of the event properties.

The syntax used to parse Service Now attributes must be consistent with the rules for mappings, which means that all Service Now properties must be enclosed in mustaches (double braces). These rules apply to all event type mappings - core mappings, details mappings, and filter mappings.

Core Mappings

In the core mappings there are 5 required properties to map and one optional property.

"coreMappings": {
  "Id" : "{{sys_id}}",
  ​"Name" : "{{number}}",
  ​"Description" : "{{description}}",
  ​"Start" : "{{start_date}}",
  ​"End" : "{{end_date}}",
  ​"IsAllDay" : "{{all_day_event}}" //Optional
}

📘

Note

IsAllDay is an optional field because not all object contain 'All Day Event' attributes. For example, the Contract object StartDate and EndDate attributes are just xsd:date objects instead of xsd:datetime (which means they don't have a time of the day associated with them), so they are automatically made All Day Events.

Detail Mappings

An example of a Service Now property mapping:

"detailMappings": {
  "Created By": "{{sys_created_by}}",
  ​"Created At" "{{sys_created_at}}"
}

In the detail mappings, you have the freedom to name and map fields that will show up when a specific event is clicked in the form of "Name" : "{{FieldName}}" where 'Name' is the label that will be shown on the calendar while 'FieldName' is what the field is named in Service Now.

Filter Mapping Properties

An example of an Service Now filter mapping:

"filterMappings": [
  {
  {
    "name": "Impact",
    "value": "{{impact}}",
    "values": {
        "3 - Low": "green",
        "2 - Medium": "blue",
        "1 - High": "red"
    }
  }
]

Filter mappings can be created to allow the calendar events to be filtered based on the field values. As shown when filtering by 'Impact' in this example, you can also relate filter values with colors. So in this example, events sorted as '1 - High' would show up red, '2 - Medium' events would show up blue, and '3 - Low' events would show up green.