Integrations

ServiceNow SolarWinds ITOM Integration Guide

advancedBasic Authentication with username and passwordSolarWinds

The ServiceNow SolarWinds integration enables automated synchronization of network infrastructure data from SolarWinds Orion into ServiceNow's Configuration Management Database (CMDB), transforming how IT operations teams manage infrastructure visibility and incident response. This integration serves network operations centers (NOCs) and IT service management teams who need unified visibility across their monitoring and ITSM platforms. The integration supports bi-directional data flows, with SolarWinds nodes, interfaces, and volumes automatically populating ServiceNow CIs, while SolarWinds alerts trigger incident creation and updates in ServiceNow. The primary automation pattern uses SolarWinds webhooks and ServiceNow's REST APIs to maintain real-time synchronization, with all integration logic residing within ServiceNow's Integration Hub and Event Management modules.

Prerequisites

  • ServiceNow Quebec or later with Integration Hub Professional license
  • SolarWinds Orion Platform 2020.2 or later with Orion API access enabled
  • ServiceNow Event Management plugin (com.snc.event_management) activated
  • SolarWinds administrator credentials with API access permissions
  • ServiceNow ITOM Administrator role for configuration access
  • Active MID Server with network connectivity to SolarWinds Orion server
  • SolarWinds SWQL (SolarWinds Query Language) query permissions for node and interface data

Architecture Overview

The integration leverages ServiceNow's SolarWinds Orion spoke within Integration Hub, providing pre-built actions for data synchronization and alert processing. Authentication is established using Basic Authentication with SolarWinds credentials stored in ServiceNow Connection & Credential Aliases, ensuring secure credential management through encrypted storage. Data flows uni-directionally from SolarWinds to ServiceNow for CMDB population, while alert data flows bi-directionally with SolarWinds sending alerts via webhooks and ServiceNow potentially updating alert statuses back to SolarWinds. A MID Server is required for outbound REST calls to the SolarWinds Orion API since the Orion server typically resides within internal network segments not directly accessible from ServiceNow's cloud instances. The SolarWinds Information Service (SWIS) REST API enforces rate limiting of approximately 100 requests per minute per connection, requiring careful batch sizing and retry logic implementation.

Sourdough
Chrome Extension

Sourdough: ServiceNow Monitoring and Analytics

A Chrome extension for ServiceNow Admins and Developers with essential tools, analytics, graphs and monitoring features.

Instance HealthGraphs & ChartsAPI HealthDeveloper ToolsQuick SearchInstance Switcher
Add to Chrome

Free to install. Pro $5/month after a 14-day no-card trial.
Pro requires the ServiceNow admin role. Upgrade inside the extension.

Overview
Tasks
CMDB
API
Metrics
Monitor
Internals
Instance:sourdoughdev·Version:Yokohama
Instance StateONLINE
System StatusFully Operational
Session Timeout90 minutes
Logged-In Sessions2 (20 active)
Build Nameyokohama-12-18-2024_p1
IP Address10.159.128.43
Instance HealthHealth Score: 90%
🔥 5dSourdough (Chrome Plugin)Dark Mode

Implementation Steps

1

Create SolarWinds connection and credential alias in ServiceNow

Navigate to Connections & Credentials > Credentials and click New to create a new Basic Auth credential record. Set the Name field to 'SolarWinds Orion API' and enter your SolarWinds username and password in the respective fields. Navigate to Connections & Credentials > Connection Aliases and create a new alias named 'SolarWinds Connection' pointing to your credential record. Verify the connection by testing connectivity from the Connection Alias record using the Test Connection related link.

2

Install and configure the SolarWinds Orion spoke in Integration Hub

Navigate to System Applications > All Available Applications > All and search for 'SolarWinds Orion' to locate the official spoke. Install the SolarWinds Orion spoke and activate it through the Integration Hub interface. Once installed, navigate to Process Automation > Flow Designer and verify that SolarWinds actions like 'Get Nodes', 'Get Node Details', and 'Get Alerts' are available in the action palette. Configure the spoke's default connection to use your previously created Connection Alias by editing the spoke configuration settings.

3

Create REST message for SolarWinds SWIS API integration

Navigate to System Web Services > Outbound > REST Message and create a new REST Message record named 'SolarWinds SWIS API'. Set the endpoint URL to your SolarWinds server SWIS endpoint (typically https://your-solarwinds-server:17778/SolarWinds/InformationService/v3/Json). Create HTTP methods for Query (POST), Invoke (POST), and Create (POST) operations, setting appropriate headers including 'Content-Type: application/json'. Configure authentication to use your Connection Alias and set the MID Server selection to your designated MID Server that can reach the SolarWinds infrastructure.

4

Implement node discovery and CMDB population script

Create a new Script Include to handle SolarWinds node discovery and CI population in the CMDB. The script should query SolarWinds for node information using SWQL queries and map the results to ServiceNow CI records in tables like cmdb_ci_server, cmdb_ci_network_gear, and cmdb_ci_computer. Navigate to System Definition > Script Includes and create the discovery logic with proper error handling and logging. Test the script execution by running it manually and verifying that nodes from SolarWinds appear as CIs in your CMDB with accurate attributes like IP addresses, node names, and operational status.

ServiceNow Script
var SolarWindsDiscovery = Class.create();
SolarWindsDiscovery.prototype = {
    initialize: function() {
        this.restMessage = new sn_ws.RESTMessageV2('SolarWinds SWIS API', 'Query');
    },
    
    discoverNodes: function() {
        var swqlQuery = "SELECT NodeID, Caption, IPAddress, NodeDescription, Status FROM Orion.Nodes WHERE Status = 1";
        this.restMessage.setRequestBody(JSON.stringify({query: swqlQuery}));
        
        var response = this.restMessage.execute();
        if (response.getStatusCode() == 200) {
            var nodes = JSON.parse(response.getBody()).results;
            nodes.forEach(function(node) {
                this._createOrUpdateCI(node);
            }, this);
        }
    },
    
    _createOrUpdateCI: function(nodeData) {
        var ci = new GlideRecord('cmdb_ci_server');
        ci.addQuery('ip_address', nodeData.IPAddress);
        ci.query();
        
        if (!ci.next()) {
            ci.initialize();
            ci.ip_address = nodeData.IPAddress;
        }
        
        ci.name = nodeData.Caption;
        ci.short_description = nodeData.NodeDescription;
        ci.operational_status = nodeData.Status == 1 ? 1 : 4;
        ci.correlation_id = 'solarwinds_' + nodeData.NodeID;
        ci.update();
    },
    
    type: 'SolarWindsDiscovery'
};
5

Configure SolarWinds alert webhook integration

Navigate to System Web Services > Scripted Web Services > Scripted REST APIs and create a new API named 'SolarWinds Alert Processor' with a resource for receiving webhook payloads. Configure SolarWinds to send alert webhooks to your ServiceNow instance endpoint (https://your-instance.service-now.com/api/x_custom_app/solarwinds/alert). Implement the webhook processing logic to parse SolarWinds alert JSON payloads and create corresponding incident records in ServiceNow with proper categorization and priority mapping. Test the webhook by triggering a test alert in SolarWinds and verifying that an incident is automatically created in ServiceNow with the correct alert details and affected CI relationships.

ServiceNow Script
(function process(request, response) {
    var alertData = request.body.data;
    var incident = new GlideRecord('incident');
    
    incident.initialize();
    incident.short_description = 'SolarWinds Alert: ' + alertData.AlertName;
    incident.description = alertData.AlertMessage + '\nNode: ' + alertData.NodeName + '\nIP: ' + alertData.NodeIP;
    incident.urgency = this._mapSeverityToUrgency(alertData.Severity);
    incident.impact = this._mapSeverityToImpact(alertData.Severity);
    incident.source = 'SolarWinds';
    incident.correlation_id = 'sw_alert_' + alertData.AlertObjectID;
    
    // Link to affected CI
    var ci = new GlideRecord('cmdb_ci');
    if (ci.get('correlation_id', 'solarwinds_' + alertData.NodeID)) {
        incident.cmdb_ci = ci.sys_id;
    }
    
    var incidentSysId = incident.insert();
    
    response.setStatus(200);
    response.setBody({success: true, incident: incidentSysId});
    
})(request, response);
6

Create scheduled job for continuous node synchronization

Navigate to System Scheduler > Scheduled Jobs and create a new scheduled job named 'SolarWinds Node Sync' that runs your discovery script at regular intervals. Set the job to run every 4 hours to maintain current CI data without overwhelming the SolarWinds API with excessive requests. Configure the job to execute your SolarWindsDiscovery script include with appropriate error handling and logging to track synchronization success and failures. Monitor the job execution through System Logs > System Log > All to ensure consistent data synchronization and troubleshoot any API connectivity or data mapping issues that arise.

ServiceNow Script
var discovery = new SolarWindsDiscovery();
try {
    discovery.discoverNodes();
    gs.info('SolarWinds node synchronization completed successfully');
} catch (error) {
    gs.error('SolarWinds sync failed: ' + error.message);
    
    // Create event for monitoring
    var event = new GlideRecord('sysevent');
    event.initialize();
    event.name = 'solarwinds.sync.failure';
    event.description = 'SolarWinds synchronization job failed: ' + error.message;
    event.severity = '2';
    event.insert();
}
7

Configure Event Management rules for SolarWinds alerts

Navigate to Event Management > Event Processing > Event Rules and create rules to process SolarWinds-originated events and alerts. Create specific event rules that match on source='SolarWinds' to automatically create incidents, assign to appropriate groups, and set correct priority levels based on alert severity. Configure alert suppression rules to prevent duplicate incidents from being created for the same SolarWinds node within defined time windows. Set up event correlation rules to group related SolarWinds alerts from the same network segment or device family to reduce incident noise and improve analyst efficiency.

8

Test end-to-end integration and validate data flow

Execute comprehensive testing by manually triggering your node discovery script and verifying that SolarWinds nodes appear as CIs in the CMDB with accurate mapping of attributes like IP addresses, node names, and operational status. Test the alert workflow by simulating or triggering actual alerts in SolarWinds and confirming that incidents are created in ServiceNow with proper CI relationships and severity mapping. Validate that the scheduled synchronization job runs successfully and updates existing CI records when node information changes in SolarWinds. Review System Logs and REST Message logs to ensure all API calls are completing successfully and troubleshoot any authentication or connectivity issues before moving to production.

Common Use Cases

Automated network device discovery and CMDB population

SolarWinds continuously discovers network devices, servers, and infrastructure components which are automatically synchronized to ServiceNow's CMDB as configuration items. This use case involves scheduled jobs that query the SolarWinds SWIS API for node information and create or update CI records in tables like cmdb_ci_network_gear, cmdb_ci_server, and cmdb_ci_computer. The business value includes maintaining an accurate, real-time inventory of all monitored infrastructure assets with consistent naming conventions and attribute mapping between monitoring and ITSM systems.

Real-time alert to incident creation workflow

When SolarWinds Orion detects infrastructure issues like network outages, performance threshold breaches, or device failures, webhooks automatically trigger incident creation in ServiceNow with appropriate priority and assignment. The integration maps SolarWinds alert severity levels to ServiceNow urgency and impact values while establishing CI relationships to affected infrastructure components. This workflow eliminates manual alert review processes and ensures consistent incident response procedures with complete audit trails from initial alert detection through resolution.

Performance metric integration for proactive service management

SolarWinds performance data including CPU utilization, memory usage, network bandwidth, and response times are periodically synchronized to ServiceNow for trend analysis and capacity planning. This integration populates custom fields on CI records with current performance metrics and historical data points to support proactive service management decisions. The business value includes early identification of performance degradation trends and data-driven infrastructure capacity planning integrated directly within ServiceNow's service management workflows.

Bi-directional status synchronization for operational visibility

ServiceNow incident updates and resolution status information flows back to SolarWinds to update alert acknowledgment status and close resolved alerts automatically. This bi-directional workflow prevents alert storms from continuing after incidents are resolved and provides SolarWinds operators with visibility into ServiceNow incident handling progress. The integration maintains consistent operational status across both platforms while reducing manual status update overhead for operations teams managing both tools simultaneously.

Automated change impact assessment using network topology

SolarWinds network topology and dependency information synchronizes to ServiceNow to enhance change management impact assessment capabilities by providing accurate upstream and downstream device relationships. When change requests are submitted for network infrastructure components, the integration automatically populates related CI fields and dependency relationships based on SolarWinds discovery data. This use case delivers more accurate change impact analysis and reduces the risk of unplanned outages caused by incomplete dependency mapping during change implementation.

Troubleshooting

401 Unauthorized errors when calling SolarWinds SWIS API

First verify that your SolarWinds credentials stored in the Connection Alias are correct by testing them directly against the SWIS API endpoint using a REST client. Check that the SolarWinds user account has appropriate API permissions by logging into SolarWinds Orion Web Console and verifying the account has 'Allow Node Management Rights' and 'Allow Access via SWIS' permissions enabled. If using domain authentication, ensure the username format matches SolarWinds expectations (domain\username or username@domain.com) and that the MID Server can resolve domain controllers for authentication validation.

Node discovery script completes but no CIs are created in CMDB

Enable debug logging in your Script Include and check System Logs for specific error messages during CI creation or update operations. Verify that your SWQL query is returning expected results by testing it directly in SolarWinds SWQL Studio or through the SWIS API documentation interface. Check that the CI table permissions allow your integration user to create and update records, and ensure that required fields on the target CI table are being populated correctly by reviewing field validation rules and mandatory field configurations.

SolarWinds webhook payloads not creating incidents in ServiceNow

Check the Scripted REST API execution logs by navigating to System Logs > System Log > All and filtering for your webhook processor to identify parsing or execution errors. Verify that SolarWinds is configured with the correct webhook URL and that the payload format matches your parsing logic by reviewing sample webhook payloads in SolarWinds alert configuration. Ensure your ServiceNow instance's IP address or domain is accessible from SolarWinds and test webhook delivery using SolarWinds' webhook testing feature to confirm network connectivity and payload delivery.

Duplicate incidents created for the same SolarWinds alert

Implement duplicate detection logic in your webhook processor by checking for existing incidents with the same correlation_id before creating new records. Review your Event Management rules to ensure proper alert suppression and correlation settings are configured for SolarWinds-sourced events. Add database indexes on correlation_id fields to improve duplicate detection query performance and consider implementing time-based deduplication windows to handle alert flapping scenarios where the same alert fires and clears repeatedly within short timeframes.

Scheduled synchronization jobs failing with timeout errors

Reduce the batch size of nodes processed in each API call by implementing pagination in your SWQL queries using OFFSET and LIMIT clauses to prevent request timeouts. Increase the REST Message timeout values by navigating to your REST Message record and adjusting the HTTP timeout settings to accommodate larger data sets or slower SolarWinds server response times. Monitor SolarWinds server performance during synchronization windows and consider adjusting the scheduled job frequency or running synchronization during off-peak hours to reduce server load impact.

CI relationships not properly established between SolarWinds nodes and ServiceNow CIs

Review your correlation_id mapping strategy to ensure consistent identification of CIs across both systems and implement fallback matching logic using IP addresses or hostnames when correlation IDs are not available. Check that your CI relationship creation logic properly handles different SolarWinds node types and maps them to appropriate ServiceNow CI classes based on device categories or custom properties. Validate that parent-child relationships in SolarWinds network topology are correctly translated to ServiceNow CI relationship records using the cmdb_rel_ci table with appropriate relationship types.

Pro Tips

  • Implement custom CI identification rules that combine SolarWinds NodeID with instance-specific prefixes to prevent correlation_id conflicts when integrating multiple SolarWinds environments with a single ServiceNow instance. Use Transform Maps for complex data transformations instead of inline scripting to improve maintainability and leverage ServiceNow's built-in data validation and error handling capabilities.
  • Configure SolarWinds custom properties to store ServiceNow sys_id values for true bi-directional reference tracking, enabling more efficient updates and reducing API query overhead when synchronizing changes between systems. This approach also supports advanced use cases like automated change scheduling based on SolarWinds maintenance windows.
  • Leverage SolarWinds SWQL query optimization techniques like selective column retrieval and WHERE clause filtering to minimize API response payload sizes and improve synchronization performance. Create indexed views in SolarWinds for frequently accessed node collections to reduce query execution time and API rate limit consumption.
  • Implement circuit breaker patterns in your integration scripts to automatically suspend synchronization when SolarWinds API becomes unavailable or returns excessive errors, preventing unnecessary MID Server resource consumption and alert noise. Include automatic retry logic with exponential backoff for transient network issues.
  • Use ServiceNow's Event Management alert intelligence features to create correlation rules specific to SolarWinds network topology, automatically grouping related alerts from connected network segments and reducing incident volume during large-scale outages. Configure parent-child alert suppression based on SolarWinds device dependencies.
  • Create custom SolarWinds application templates that include ServiceNow-specific custom properties for CI classification, assignment group mapping, and priority calculation to streamline the integration configuration and ensure consistent data mapping across your environment.

Known Limitations

  • The SolarWinds SWIS REST API enforces rate limiting of approximately 100 requests per minute per connection, which can significantly impact large-scale synchronization operations and require careful batch processing and scheduling to avoid API throttling. Complex SWQL queries involving multiple table joins may timeout or consume excessive API quota, requiring query optimization and pagination strategies.
  • SolarWinds webhook delivery does not include built-in retry mechanisms or guaranteed delivery confirmation, making it possible to lose alert notifications during network outages or ServiceNow maintenance windows. Organizations must implement custom queuing and acknowledgment systems if guaranteed alert delivery is critical for their operations.
  • The integration requires ServiceNow Integration Hub Professional licensing for access to the official SolarWinds spoke and advanced orchestration capabilities, which may not be available in all ServiceNow licensing tiers. Custom REST Message implementations can provide similar functionality but require additional development and maintenance overhead.
  • SolarWinds network topology data synchronization becomes increasingly complex with large enterprise networks containing thousands of devices, potentially requiring custom optimization techniques and selective synchronization strategies to maintain acceptable performance. Real-time topology changes may not be immediately reflected in ServiceNow without frequent synchronization polling.
  • Bi-directional status synchronization requires careful coordination to prevent infinite update loops between systems, particularly when both SolarWinds and ServiceNow operators are actively managing the same alerts and incidents. Custom logic must handle conflict resolution and audit trail maintenance for dual-system update scenarios.

Frequently Asked Questions

Does ServiceNow provide an official Integration Hub spoke for SolarWinds Orion?

Yes, ServiceNow provides an official SolarWinds Orion spoke in the ServiceNow Store that includes pre-built actions for node discovery, alert retrieval, and basic CMDB population workflows. The spoke requires Integration Hub Professional licensing and includes actions like 'Get Nodes', 'Get Node Details', 'Get Interfaces', and 'Get Alerts' that simplify common integration scenarios. However, complex custom workflows and bi-directional synchronization often require additional custom scripting beyond the spoke's standard capabilities.

What SolarWinds API permissions are required for ServiceNow integration?

The integration requires a SolarWinds user account with 'Allow Node Management Rights' and 'Allow Access via SWIS' permissions enabled in the SolarWinds Orion Web Console account management section. Additional permissions may be needed for specific operations like updating alert acknowledgment status or accessing custom SolarWinds application data. The account should have read access to all node types and network devices that need to be synchronized to ServiceNow's CMDB for comprehensive integration coverage.

How can I handle SolarWinds alert storms without overwhelming ServiceNow with incidents?

Implement Event Management correlation rules in ServiceNow that group related SolarWinds alerts based on network topology, device relationships, or time-based patterns to reduce incident creation volume. Configure alert suppression windows and duplicate detection logic using correlation IDs to prevent multiple incidents for the same underlying issue. Use SolarWinds alert escalation chains and dependency-based alert suppression within SolarWinds itself to reduce the volume of alerts sent to ServiceNow, focusing on root cause alerts rather than symptom-based alerts.

Can the integration sync SolarWinds custom properties to ServiceNow CI fields?

Yes, SolarWinds custom properties can be synchronized to ServiceNow by modifying SWQL queries to include custom property names and mapping them to custom fields on ServiceNow CI tables. You'll need to create corresponding custom fields in ServiceNow CI tables and update your transformation logic to populate these fields from the SolarWinds API response data. This approach enables organization-specific metadata like cost centers, business applications, or compliance classifications to flow from SolarWinds discovery into ServiceNow's CMDB for comprehensive asset management.

What happens to ServiceNow CIs when devices are removed from SolarWinds monitoring?

By default, the integration does not automatically delete ServiceNow CIs when devices are removed from SolarWinds, as CIs may have historical service management data and relationships that should be preserved. Best practice is to implement a retirement workflow that marks CIs as 'Retired' or 'Decommissioned' when they no longer appear in SolarWinds discovery results for a specified time period. You can create scheduled jobs that identify orphaned CIs by comparing SolarWinds inventory against ServiceNow CIs and flag them for manual review or automated status updates based on your organization's asset lifecycle policies.

How do I troubleshoot MID Server connectivity issues with SolarWinds?

First verify that your MID Server can reach the SolarWinds Orion server by testing network connectivity on port 17778 (default SWIS API port) using telnet or netcat from the MID Server host. Check MID Server logs located in the agent/logs directory for specific connection errors and SSL certificate validation issues that may prevent HTTPS connections to SolarWinds. Verify that any corporate firewalls or network security appliances allow outbound HTTPS traffic from the MID Server to the SolarWinds server, and ensure that SolarWinds SSL certificates are trusted by the MID Server's Java certificate store if using HTTPS endpoints.

Is it possible to trigger SolarWinds actions from ServiceNow change requests or incidents?

Yes, you can create custom workflows in ServiceNow that trigger SolarWinds actions like placing nodes in maintenance mode, acknowledging alerts, or scheduling monitoring suspensions through the SWIS REST API. This requires creating outbound REST Messages that call SolarWinds API endpoints with appropriate authentication and implementing business rules or workflow activities that execute these calls based on ServiceNow record state changes. Common scenarios include automatically suppressing SolarWinds monitoring during approved maintenance windows or acknowledging SolarWinds alerts when related ServiceNow incidents are assigned to resolver groups.

Test Your Knowledge

Quick 3-question quiz — see how your ServiceNow skills stack up.

Question 1 of 3Performance

A list view on a table with millions of records is slow. Best fix?

Select an answer to continue