Chapter 145. ServiceNow

ServiceNow Component

The ServiceNow component provides access to all of ServiceNow REST API.
Maven users will need to add the following dependency to their pom.xml for this component:
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-servicenow</artifactId>
    <version>${camel-version}</version>
</dependency>

URI format

servicenow://InstanceName[?Options]

Options

Name
Default Value
Description
userName
null
The user name to use for authentication
password null The password to use for authentication
oauthClientId null OAuth2 client id
oauthClientSecret null OAuth2 client secret
oauthTokenUrl https://incenceName.service-now.com/oauth_token.do The OAuth2 token url
apiUrl https://incenceName.service-now.com/api/now The ServiceNow API url
table null The default table, can be overridden by header CamelServiceNowTable
excludeReferenceLink false True to exclude Table API links for reference fields
suppressAutoSysField false True to suppress auto generation of system fields
displayValue false
Return the display value (true), actual value (false), or both (all) for reference fields (default: false)
inputDisplayValue false True to set raw value of input fields
models null Defines the default model to use for a table i.e models.incident = my.company.model.Incident
mapper ServiceNow component uses Jackson Databind to translate request/response to/from Json and you can customize how it is done by providing a custom ObjectMapper

Headers

NameTypeDescription
CamelServiceNowResource String The resource to access TABLE, AGGREGATE, IMPORT
CamelServiceNowTable String
The table to access
CamelServiceNowAction String
The action to perform RETRIEVE, CREATE, MODIFY, DELETE, UPDATE
CamelServiceNowModel Class The data model
CamelServiceNowSysId String ServiceNow sysy_id
CamelServiceNowQuery String An encoded query
CamelServiceNowDisplayValue String Return the display value (true), actual value (false), or both (all) for reference fields (default: false)
CamelServiceNowInputDisplayValue Boolean True to set raw value of input fields
CamelServiceNowExcludeReferenceLink Boolean True to exclude Table API links for reference fields
CamelServiceNowFields String Comma-separated field names to return in the response
CamelServiceNowMinFields String A comma-separated list of fields for which to calculate the minimum value
CamelServiceNowMaxFields String A comma-separated list of fields for which to calculate the maximum value
CamelServiceNowSumFields String A comma-separated list of fields for which to calculate the sum of the values
CamelServiceNowLimit Integer Limit to be applied on pagination
CamelServiceNowView String UI view to determine fields returned in the response.
CamelServiceNowSuppressAutoSysField Boolean True to suppress auto generation of system fields
CamelServiceNowAvgFields String A comma-separated list of fields for which to calculate the average value
CamelServiceNowCount Boolean A boolean flag. You can set this parameter to true for the number of records returned by the query
CamelServiceGroupBy String The fields to group the returned data by
CamelServiceOrderBy String A list of values to order grouped results by
CamelServiceHaving String An additional query allowing you to filter the data based on an aggregate operation

Usage examples

context.addRoutes(new RouteBuilder() {
    public void configure() {
       from("direct:servicenow")
           .to("servicenow:{{env:SERVICENOW_INSTANCE}}"
               + "?userName={{env:SERVICENOW_USERNAME}}"
               + "&password={{env:SERVICENOW_PASSWORD}}"
               + "&oauthClientId={{env:SERVICENOW_OAUTH2_CLIENT_ID}}"
               + "&oauthClientSecret={{env:SERVICENOW_OAUTH2_CLIENT_SECRET}}"
               + "&model.incident=org.apache.camel.component.servicenow.model.Incident")
           .to("mock:servicenow");
    }
}); Map<String, Object> headers = new HashMap<>();headers.put(ServiceNowConstants.RESOURCE, "table");
headers.put(ServiceNowConstants.ACTION, ServiceNowConstants.ACTION_RETRIEVE);
headers.put(ServiceNowConstants.SYSPARM_LIMIT, "10");
headers.put(ServiceNowConstants.TABLE, "incident");template.sendBodyAndHeaders("direct:servicenow", null, headers);