Skip to content

SolarWinds NPM Device Sync

SolarWinds NPM logo
Device Sync integrationSolarWinds NPM
Field tested

Sync your SolarWinds inventory into rConfig. From V8.4.3, rConfig can import nodes from a self-hosted SolarWinds Platform server (Orion, including Network Performance Monitor) through the SolarWinds Information Service (SWIS) REST API. Each node becomes an rConfig device with the right template, credentials and category, and stays in step with SolarWinds on a schedule. The setup follows the same model as the OpenNMS V2 setup; only the Setup tab fields, the filters and the way devices get their profile are different.

Platform rConfig V8 Support Auth supported V2 Status
SolarWinds Platform (self-hosted) V8.4.3+ (Pro only) Orion username and password (HTTP basic) Field tested

SolarWinds Observability SaaS uses a different API and is not supported by this driver.

The point of setting up a V2 integration is to land in a steady state where rConfig’s device inventory is continuously reconciled against SolarWinds on a schedule, with no operator in the loop. That end state looks like this:

A Scheduled Task of type Integration V2 Job runs the SolarWinds instance in Apply mode on a cron, for example nightly. It runs the same six-stage pipeline you’ll run interactively in this guide, writes any create and update decisions to rConfig, leaves any conflicts or ambiguous matches in Problem Devices for review, and notifies you on completion.

To get there, you walk a one-time setup and a sanity-check loop:

  1. Create the integration instance: SWIS connectivity and the Orion account in the Setup tab. Validate with Test Connection.
  2. Set up the Device Profiles the synced devices will inherit from, under Inventory → Device Profiles.
  3. Add Orion groups named rconfig::device_profile::<slug>, so each node knows which profile to use.
  4. Run an Extract Preview to confirm the filters return the right SolarWinds nodes.
  5. Run a Sync Preview to walk the full pipeline (canonicalise → reconcile → decide) without writing.
  6. Run a Full Sync (Apply) once the preview’s decisions look right.
  7. Schedule the integration to run on a cron from the rConfig scheduler.
%%{init: {'themeVariables': {'fontSize': '60px'}}}%%
flowchart LR
    A[Create instance<br/>Setup tab] --> B[Test Connection]
    B --> C[Device Profiles<br/>Inventory]
    C --> D[Extract Preview]
    D --> E[Sync Preview]
    E --> F[Full Sync · Apply]
    F --> G[Scheduled Task<br/>recurring sync]

  classDef step font-size:60px,stroke-width:2px;
  class A,B,C,D,E,F,G step;

SolarWinds:

  • A self-hosted SolarWinds Platform server (Orion) with the SolarWinds Information Service running. SWIS is part of every Orion install.
  • A dedicated, read-only Orion account for rConfig (see below).
  • HTTPS access from rConfig to the SWIS port on the SolarWinds server. SolarWinds Platform 2023.1 and later use port 17774. Older installs use 17778, which SolarWinds has deprecated. SWIS listens on its own port, separate from the web console, so open it in any firewall between rConfig and SolarWinds.

rConfig V8.4.3+:

  • rConfig V8 Pro. Device Sync is not part of rConfig Core.
  • Administrator access.
  • At least one Device Profile for the kinds of device you will import.

In the SolarWinds web console, open Settings → All Settings → Manage Accounts and add an Orion individual account, for example rconfig-readonly, with a strong password.

rConfig only reads nodes, groups and custom properties, so the account needs no admin rights and no right to manage nodes. A local Orion account is the most reliable choice: Windows (Active Directory) accounts can be refused by the REST API even when they work in the web console.

Step 1: Create the Integration Instance (Setup Tab)

Section titled “Step 1: Create the Integration Instance (Setup Tab)”

Navigate to Platform → Integrations. Scroll to the Device Sync section and click + Add Driver under V2 Drivers. The picker shows every V2 driver split into Configured Drivers and Not Configured Yet.

SolarWinds NPM Driver Picker SolarWinds NPM driver card in the V2 driver picker

Each card carries the driver’s verification badge (Field tested for SolarWinds NPM), plus a link to its docs page. Click the SolarWinds NPM card. To sync more than one SolarWinds server, add one instance per server with Add another; each instance keeps its own links.

The driver picker drops you straight into the instance Detail page on the Setup tab.

Connectivity

Field Default Notes
SolarWinds Server required The SolarWinds Platform server, for example https://orion.example.com. rConfig adds the SWIS port unless the URL includes one.
SWIS Port 17774 Use 17778 for installs older than SolarWinds Platform 2023.1.
Timeout (Seconds) 60 Time allowed for each request. rConfig reads nodes 500 at a time. Range 1 to 600.
Web Console URL blank Optional. Used for the Open in SolarWinds link on imported devices. When blank, rConfig uses the server above on the standard HTTPS port.
Verify TLS on SWIS uses a self-signed certificate by default. Install a trusted certificate on the SolarWinds server and keep this on where you can. Turn it off only if you accept the self-signed certificate.
Verify TLS Hostname on Turn off only for controlled troubleshooting when the certificate name does not match the server URL.
Exclude Unmanaged Nodes on Skips nodes that are unmanaged in SolarWinds.
Import Groups as Tags off When on, the names of the Orion groups a node belongs to become rConfig tags on Apply.

Authentication

Field Notes
Username The Orion account. rConfig sends it with HTTP basic auth.
Password Password for that account. Stored encrypted and never shown again.

SolarWinds Platform 2026.4.1 adds per-user API tokens. The driver does not use them yet; use a username and password.

Click Test Connection in the action bar at the top of the page.

Setup tab after a successful Test Connection (Zabbix example) Setup tab after a successful Test Connection. Shown with the Zabbix driver. The SolarWinds NPM screen is the same.

rConfig runs a one-row SWQL query against Orion.Nodes, then counts the nodes the account can see, for example Connection successful (SolarWinds Information Service, 120 nodes visible). Failures are covered in Troubleshooting.

Click Save. The save indicator in the action bar flips to Saved once persisted.

You now have a working SolarWinds integration instance, but no node has a Device Profile yet. Do not run a preview yet. Move to Step 2.

Every imported device needs a Device Profile, which sets its vendor, category, template and credentials. Nodes without one go to Problem Devices instead of being created.

Navigate to Inventory → Device Profiles.

Inventory → Device Profiles list

2.2 Create a Device Profile per device class

Section titled “2.2 Create a Device Profile per device class”

For each device class you want to sync (for example Cisco IOS Core Switches, Juniper Edge Routers), click New Device Profile and fill in:

  • Name: human-readable.
  • Slug: the value your Orion group names will reference.
  • Vendor, Category, Template, Credential set: standard rConfig device classification.
  • SNMP group, Vector agent, default tags, default model / prompt patterns: optional.

SolarWinds organises nodes into groups, so the driver uses them for profiles, the same way the LibreNMS driver uses device groups. In the web console, open Settings → All Settings → Manage Groups and create one group per profile, named with the rconfig::device_profile:: prefix and the profile slug:

rconfig::device_profile::cisco-ios-core
rconfig::device_profile::juniper-junos

Add nodes to each group, either by hand or with a dynamic query (for example, every node whose Vendor is Cisco and Machine Type contains Catalyst).

A few rules:

  • The prefix is not case-sensitive, but the slug after it must match the Device Profile slug in rConfig.
  • Only direct membership counts for profiles. A node inside a subgroup of a profile group does not get that profile.
  • If a node is in more than one profile group, the slug that sorts first wins.
  • Other rconfig:: group names are ignored. Groups without the prefix only matter if Import Groups as Tags is on.

The Filters card on the Setup tab limits which nodes are imported. Leave every field empty to import all nodes the account can see.

Filter Matches
Vendors Nodes whose Vendor is any of the listed values, for example Cisco.
Machine Types Nodes whose Machine Type is any of the listed values, for example Cisco Catalyst 9300.
Custom Property Equals Nodes whose custom property has the given value, written Name=Value, for example Site=Dublin.
Orion Groups Nodes in any of the listed groups, by name, including groups nested inside them.
Exclude Polling Methods Leaves out nodes polled by any of the listed methods, for example ICMP for ping-only nodes.

Values in one field are combined with OR, and different fields with AND. For custom properties, values for the same property are OR, and different properties are AND. The card shows the result in plain words, for example Import devices from vendor Cisco AND with custom property Site=Dublin.

Vendor, machine type, custom property and polling method filters are sent to SolarWinds as SWQL parameters, so a filtered sync transfers only the nodes you asked for. rConfig checks the result again on its side. Matching is not case-sensitive.

Unmanaged nodes are controlled by Exclude Unmanaged Nodes in Connectivity, not by a filter.

Switch to the Extract Preview tab (amber download icon in the action bar).

Extract Preview hits SolarWinds exactly the way a real sync would, but stops the moment the nodes come back: no canonicalise, no reconcile, no writes.

Extract Preview tab with summary cards and result table (Zabbix example) Extract Preview tab with summary cards and result table. Shown with the Zabbix driver. The SolarWinds NPM screen is the same.

Check the hostname and IP columns, and open a row’s Details hover to see the payload. Confirm the groups list contains the expected rconfig::device_profile:: group, and that IPAddress holds the address rConfig should connect to.

For the full anatomy of this tab, see the Extract Preview Tab reference.

Click Preview Sync in the action bar (sky icon). Sync Preview runs the complete pipeline through decide and stops without writing. It never changes device links, even when a filter leaves devices out.

Switch to the Run Insights tab to inspect the result.

Run Insights tab populated after a Sync Preview (Zabbix example) Run Insights tab populated after a Sync Preview. Shown with the Zabbix driver. The SolarWinds NPM screen is the same.

For SolarWinds the most-watched stage metrics are:

  • extract.items_extracted: should match the Extract Preview count.
  • unmanaged_skipped and client_filtered_out: nodes left out because they are unmanaged or failed a filter.
  • profile_groups_found: how many rconfig::device_profile:: groups SolarWinds returned.
  • missing_policy_skip_reason: set when rConfig held the links because the extract looked incomplete, for example extract_drop.
  • canonicalize.invalid: a high count usually means nodes without a profile group.
  • reconcile.ambiguous: non-zero means more than one rConfig device matches the same SolarWinds node.

If Open Problems is greater than zero, switch to the Problem Devices tab and triage the rows.

For the full anatomy of these tabs, see the Run Insights Tab reference and Problem Devices Tab reference.

When the Sync Preview decisions look correct and Open Problems is at an acceptable level, click Full Sync in the action bar (indigo icon).

Full Sync re-runs the full pipeline and finishes by executing the apply stage:

  1. Creates new devices for each decision = create.
  2. Updates existing devices for each decision = update.
  3. Assigns the resolved Device Profile to each affected device.
  4. Adds Orion group names as tags when Import Groups as Tags is on.
  5. Updates integration_device_links (first_seen, last_seen).
  6. Schedules an initial configuration backup for newly created devices.

Run Insights tab after a Full Sync (Zabbix example) Run Insights tab after a Full Sync. Shown with the Zabbix driver. The SolarWinds NPM screen is the same.

Re-check Problem Devices after Apply: Apply does not auto-resolve ambiguous_match or conflict rows; those still need a human.

A device you added to rConfig by hand that matches a SolarWinds node by hostname and IP is not duplicated. It goes to Problem Devices as a medium match for you to confirm.

On a device imported from SolarWinds, the device page has an Open in SolarWinds button that goes to the node details page (/Orion/View.aspx?NetObject=N:<NodeID>) on your web console.

For any of the runs above, you can swap the action-bar button for the Open Debug Console button (shimmer icon). The Debug Console runs the same Artisan command synchronously and streams its native stdout/stderr into a modal:

Debug Console modal mid-run (Zabbix example) Debug Console modal mid-run. Shown with the Zabbix driver. The SolarWinds NPM screen is the same.

For the full anatomy of the dialog, see the Debug Console reference.

Once a manual Full Sync completes cleanly, schedule it. Navigate to Tasks and click New Task. Choose task type Integration V2 Job, pick the SolarWinds instance, choose Apply mode, and set the cron schedule.

A common production pattern:

  • Hourly Preview: drift detection only, no writes. Surfaces new Problem Devices fast.
  • Nightly Apply: commits real changes during the maintenance window.
Terminal window
# Sync Preview (does not write)
php artisan rconfig:integration-v2-run --driver=solarwinds --mode=preview
# Full Sync with debug output
php artisan rconfig:integration-v2-run --driver=solarwinds --mode=apply --debug
# Queue an async run by explicit instance ID
php artisan rconfig:integration-v2-run 12 --mode=apply --queue

With more than one SolarWinds instance, pass the instance ID rather than --driver. See the V2 Overview for the full option list.

rConfig field SolarWinds field (Orion.Nodes)
External ID NodeID
Hostname Caption. When the caption is empty or an IP address, SysName, then DNS.
Primary IP IPAddress. When that is empty and the caption is an IP address, the caption.
Vendor Vendor. Shown in previews only; the device’s vendor comes from its Device Profile.
Model MachineType
Serial Not imported. Orion.Nodes has no serial number field.
Profile / Tags Orion group membership, as described in Step 2.

rConfig doesn’t store the node’s up or down status, so a status change in SolarWinds doesn’t mark the device as changed.

  • Every request is a SWQL query sent with POST to /SolarWinds/InformationService/v3/Json/Query on the SWIS port.
  • Nodes are read 500 at a time in NodeID order, each page starting after the last NodeID of the one before. Large installs never return one unbounded result.
  • Group membership is read for each page of nodes, so a sync makes a few requests per 500 nodes.
  • Any failed request stops the sync, and rConfig changes no device links for that run.
  • Strong match: by the SolarWinds NodeID already linked to this instance.
  • Medium match: hostname and primary IP both unique in rConfig; sent to Problem Devices for review.
  • Missing upstream: the default is disable_link_only. When a node disappears from SolarWinds, a Full Sync disables the link but leaves the device. A failed, partial or very short extract skips this step for that run.

If you delete a node in SolarWinds and add it again, it gets a new NodeID. rConfig then sees a new node and the old link goes missing. Expect a medium match in Problem Devices for that device.

What you see Most likely fix
rejected the username or password (HTTP 401) Wrong username or password. If it is a Windows (AD) account, try a local Orion account.
refused access (HTTP 403) The account is disabled or not allowed to log in. Check it under Manage Accounts.
Could not connect to ... or Timed out waiting for The SWIS port is blocked or wrong. Check 17774 (or 17778 on older installs) is open from rConfig to the SolarWinds server, not just the web console port.
TLS check failed SWIS is using its default self-signed certificate. Install a trusted certificate on the SolarWinds server, or turn off Verify TLS.
No SolarWinds Information Service at this URL (HTTP 404) The server URL or SWIS port points somewhere else, often the web console. Use the SolarWinds server address with the SWIS port.
this account can see no nodes The login works but the account’s limitations hide every node.
rejected the query (HTTP 400) Usually a custom property filter naming a property that doesn’t exist. Check the spelling in Custom Property Equals.
Orion group [name] was not found A group in the Orion Groups filter was renamed or deleted.
  • Fewer nodes than expected. Check the filters, Exclude Unmanaged Nodes, the account’s limitations, and unmanaged_skipped and client_filtered_out in the extract stage metrics on Run Insights.
  • Nodes land in Problem Devices with no profile. The node is not directly in an rconfig::device_profile:: group, or the slug doesn’t match an active Device Profile. Open Details on the Extract Preview row and check its groups list.
  • Reconciliation produces ambiguous matches. Two rConfig devices share the same hostname or primary IP. Resolve in Problem Devices by picking the correct target, or de-duplicate the device list.

SolarWinds, SolarWinds NPM and Orion are trademarks or registered trademarks of SolarWinds Worldwide, LLC and its affiliates. rConfig is not affiliated with, endorsed by or sponsored by SolarWinds.