Last updated: September 24, 2026 · Reading time: 3–4 minutes
Manually transferring ServiceNow CMDB data into Icinga Director takes time and quickly results in outdated data. The Icinga Web 2 module ” icingaweb2-module-servicenow-import ” from NETWAYS fills this gap: It retrieves servers and network devices directly from ServiceNow via API and automatically creates them as hosts in Director.
Key Points
icingaweb2-module-servicenow-importis an Icinga Web 2 module that provides ServiceNow CMDB data via API as a new import source for Icinga Director.- Installation is performed as usual by cloning the Git repository into the module directory and activating it via the CLI or web interface.
- Any valid ServiceNow Table API endpoint can be integrated; columns and records can optionally be filtered using “Columns” and “Query.”
- There are three authentication methods to choose from: HTTP Basic Auth, API token, or OAuth2 client credentials.
Introduction to the Module
icingaweb2-module-servicenow-import is an Icinga Web 2 module from NETWAYS that provides a new import source for the Icinga Director. This allows CMDB objects—that is, servers and network devices—to be retrieved directly from a ServiceNow instance via its API and automatically created as hosts in Director.
Installation
Like a standard Icinga Web 2 module, it is cloned directly into the module directory:
cd /usr/share/icingaweb2/modules
git clone https://github.com/NETWAYS/icingaweb2-module-servicenow-import.git servicenowimportThen enable it, either via the CLI:
icingacli module enable servicenowimportor via the web interface under Configuration → Modules.
Configuration and Example
In Icinga Director, create a new import source and select “ServiceNow Table API” as the type. The ServiceNow API URL is the base URL of your own instance, for example, https://instance0815.service-now.com. Under “ServiceNow CMDB Table Endpoint,” enter the full API path to the desired table, such as api/now/table/cmdb_ci_server. The ServiceNow API timeout controls how long the system waits for a response; the default is 20 seconds.
Optionally, you can limit the amount of data loaded: Using ServiceNow Columns, specify a comma-separated list of the desired columns, for example, name,ip_address. If you leave this field blank, all columns will be loaded. Using ServiceNow Query, you can also filter results using ServiceNow’s own filter syntax, such as nameSTARTSWITHlnux. If no specification is provided, the entire table will be imported.
The module deliberately does not restrict itself to a specific table; any valid ServiceNow Table API endpoint can be entered. The official ServiceNow documentation provides an overview of possible CMDB tables.
Not sure about the ServiceNow integration?
Our consultants provide support for the setup and operation of Icinga Director, including custom integrations.
Request a free quote now →
Authentication
There are three methods to choose from:
- HTTP Basic Authentication: The username and password for an account with read access to the target table.
- API token: A bearer token that is included in the `
x-sn-apikey` header. - OAuth2 Client Credentials: Client ID, Client Secret, and scopes, which must be authorized for the endpoints being used. This requires the system property `
glide.oauth.inbound.client.credential.grant_type.enabled` on the ServiceNow side. According to the documentation, the access token is not currently cached; instead, it is requested anew with every query.
Conclusion on the ServiceNow CMDB Import
If you’re already using the notification integration described in the main article, this module lets you close the loop: CMDB data flows automatically from ServiceNow to Icinga Director, while notifications travel the other way back to ServiceNow. Both integrations can be used independently of one another, but for a complete picture, it’s worth taking a look at both.
