SolarWinds NCM Import Tool
SolarWinds NCM Import Tool: Automated Device Migration to rConfig V8
Section titled “SolarWinds NCM Import Tool: Automated Device Migration to rConfig V8”The SolarWinds NCM Import Tool enables seamless migration of network devices from SolarWinds Network Configuration Manager to rConfig V8. This command-line utility automates the process of connecting to SolarWinds SWIS API, executing SWQL queries to extract device inventory with organizational metadata (node groups, custom properties), applying filters, mapping machine types, and importing devices with proper templates and credentials—eliminating manual data entry and ensuring consistency across your device inventory.
SolarWinds NCM
Available in rConfig V8.1.1 This tool significantly reduces migration time by automating SolarWinds SWIS API integration, SWQL-based device extraction, machine type mapping, and bulk imports with custom property and node group mapping.
Why Migrate from SolarWinds NCM?
Section titled “Why Migrate from SolarWinds NCM?”While SolarWinds NCM provides comprehensive network configuration management, rConfig V8 offers a modern, cost-effective platform with:
Open-source foundation: No per-device licensing costs, reducing total cost of ownership significantly
Modern architecture: Cloud-ready platform with RESTful API and contemporary web interface
Flexible deployment: Self-hosted or cloud-based options with containerization support
Active development: Regular updates driven by community feedback and modern DevOps practices
Enhanced automation: Advanced templating engine with Jinja2 support for complex configuration changes
Custom integrations: Open API enables seamless integration with monitoring, ticketing, and automation platforms
Simplified licensing: Predictable pricing without complex node-based or feature-based licensing tiers
The SolarWinds NCM Import Tool makes this transition seamless with automated SWIS API-based device extraction, intelligent SWQL filtering, and comprehensive organizational structure mapping.
How It Works
Section titled “How It Works”The import process follows four steps:
- Setup SolarWinds connection: Configure SWIS API endpoint, authentication, and device filters
- Create device type mappings: Define how SolarWinds machine types translate to rConfig templates, vendors, and credentials
- Load devices from SolarWinds: Connect to SWIS API, execute SWQL queries, apply filters, and generate import-ready JSON
- Import devices to rConfig: Bulk import devices with validated configurations and immediate backup scheduling
File Locations
Section titled “File Locations”The import tool uses the following file locations:
- Connection file:
storage/app/rconfig/solarwinds_connection.json - Connection stub:
storage/app/rconfig/solarwinds_connection.stub.json - Mappings file:
storage/app/rconfig/solarwinds_mappings.json - Temporary files:
storage/app/rconfig/tempdir/ - Import JSON files:
storage/app/rconfig/tempdir/rconfig_import_YYYY-MM-DD_HH-mm-ss.json - Failure logs:
storage/app/rconfig/tempdir/solarwinds_import_failures_YYYY-MM-DD_HH-mm-ss.txt
These directories are created automatically if they don’t exist.
Prerequisites
Section titled “Prerequisites”Before importing devices, ensure you have:
- Access to SolarWinds NCM instance with SWIS API enabled
- SolarWinds credentials with API access permissions
- Network connectivity from rConfig server to SolarWinds SWIS endpoint (default port 17778)
- Administrator access to rConfig V8
- Device templates configured in rConfig matching your SolarWinds machine types
- At least one credential set created in rConfig (required for device authentication)
- SSH/command-line access to the rConfig server
Step 0: Setup SolarWinds Connection
Section titled “Step 0: Setup SolarWinds Connection”Command
Section titled “Command”php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connectionOptions
Section titled “Options”--setup- Configure SolarWinds SWIS API connection interactively--test- Test existing connection to SolarWinds--show- Display current connection configuration--edit-filters- Configure node filters (groups, machine types, statuses)--set-url=URL- Update SWIS URL only--clear- Remove connection configuration--info- Display command help and usage information
Initial Setup
Section titled “Initial Setup”php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --setupYou’ll be prompted to provide:
SolarWinds SWIS URL: Full URL to your SolarWinds SWIS API endpoint (e.g., https://solarwinds.company.com:17778)
Username: SolarWinds account username with API access
Password: Account password (optional storage - not recommended for production)
SSL Verification: Enable/disable SSL certificate verification (disable for self-signed certificates)
Password storage: Option to encrypt and store password in config file (not recommended for production)
Connection Configuration File
Section titled “Connection Configuration File”The setup creates storage/app/rconfig/solarwinds_connection.json:
{ "swis_url": "https://solarwinds.company.com:17778", "username": "api_user", "password": null, "password_encrypted": false, "verify_ssl": true, "timeout": 30, "created_at": "2025-01-25T14:30:00Z", "last_tested": "2025-01-25T14:35:00Z", "connection_status": "success", "solarwinds_version": "2023.4", "node_count": 1547, "filters": { "include_groups": [], "exclude_groups": [], "include_machine_types": [], "exclude_machine_types": [], "include_statuses": [1], "custom_property_filters": [] }}SWIS API Overview
Section titled “SWIS API Overview”SWIS (SolarWinds Information Service) is a RESTful API that provides access to SolarWinds data:
- Endpoint:
https://server:17778/SolarWinds/InformationService/v3/Json/Query - Authentication: HTTP Basic Authentication (username/password)
- Query Language: SWQL (SolarWinds Query Language) - SQL-like syntax
- Default Port: 17778 (HTTPS)
- Response Format: JSON
Test Connection
Section titled “Test Connection”Verify SolarWinds SWIS connectivity:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --testOutput on success:
Testing connection to: https://solarwinds.company.com:17778✓ Connection successful!SolarWinds version: 2023.4Total nodes: 1547The test executes a simple SWQL query:
SELECT TOP 1 ServerName, ServerVersion FROM Orion.WebsitesView Connection Details
Section titled “View Connection Details”php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --showOutput displays:
Current SolarWinds Connection Configuration:
SWIS URL: https://solarwinds.company.com:17778Username: api_userPassword: not stored (will prompt)Verify SSL: yesTimeout: 30s
Connection Status: successLast Tested: 2025-01-25T14:35:00ZSolarWinds Version: 2023.4Total Nodes: 1547
Active Filters:Include Groups: Core Routers, Distribution SwitchesExclude Machine Types: Unknown, UnmanagedInclude Statuses: UpConfigure Device Filters
Section titled “Configure Device Filters”SolarWinds organizes devices by node groups, machine types, and custom properties. Configure filters to selectively import devices:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --edit-filtersThe tool will:
- Connect to SWIS API: Authenticate using stored credentials
- Execute SWQL queries: Retrieve available node groups, machine types, and metadata
- Configure node group filters: Choose to include all, include specific, or exclude specific groups
- Configure machine type filters: Choose to include all, include specific, or exclude specific types
- Configure status filters: Select which node statuses to import (Up, Down, Warning, Unknown)
- Save configuration: Update connection file with filter settings
Example node group filter configuration:
Available Node Groups in SolarWinds: - Core Routers (145 nodes) - Distribution Switches (298 nodes) - Access Switches (652 nodes) - DMZ Firewalls (89 nodes) - Lab Equipment (63 nodes)
Filter by node groups? Import all groups Include specific groups Exclude specific groupsExample machine type filter configuration:
Available Machine Types: - Cisco IOS (458 nodes) - Juniper JUNOS (189 nodes) - Cisco NXOS (97 nodes) - Arista EOS (79 nodes) - Unknown (24 nodes)
Filter by machine types? Import all machine types Include specific types Exclude specific typesExample status filter configuration:
Which node statuses to include? ☑ Up ☐ Down ☐ Warning ☐ UnknownFilter estimation:
After configuring filters, the tool estimates the device count based on applied filters.
SolarWinds Organizational Structure
Section titled “SolarWinds Organizational Structure”SolarWinds organizes devices using:
Node Groups (Custom groupings) └── Nodes (Devices) ├── Machine Type (Device type/OS) ├── Status (Up/Down/Warning/Unknown) ├── Custom Properties (User-defined fields) └── Location (Physical location)Mapping to rConfig:
- Node Groups → Device groups or tags (configured in mappings)
- Machine Types → Templates (configured in mappings)
- Custom Properties → Tags (configured in mappings)
- Status → Filter criteria (Up/Down/Warning/Unknown)
BEST PRACTICE: Configure filters before loading devices to reduce processing time and focus on production devices only. Use status filter “Up” to exclude devices that are down or in maintenance mode.
Step 1: Create Device Type Mappings
Section titled “Step 1: Create Device Type Mappings”Command
Section titled “Command”php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappingsOptions
Section titled “Options”--list- Display all existing device type mappings--add- Create a new device type mapping interactively--edit=TYPE- Modify an existing mapping for specified machine type--delete=TYPE- Remove a device type mapping--info- Display command help and usage information
Create New Mapping
Section titled “Create New Mapping”php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --addYou’ll be prompted to provide:
SolarWinds machine type: The machine type from SolarWinds (e.g., Cisco IOS, Juniper JUNOS, Arista EOS)
rConfig device type: The internal device type name (e.g., cisco_ios)
Template ID: The device template ID to use for this machine type
Vendor ID: The vendor ID associated with this machine type
Category ID: The category ID for organizing devices
Credential ID: The pre-created credential set ID (devices will use this by default)
Default Group ID: Optional device group ID to assign devices to
Prompts: Device enable and main prompts (use {device_name} as placeholder)
Tags: Multi-select tags for device classification (use Space to select, Enter to confirm)
Custom property tag mapping: Map SolarWinds custom properties to additional tags (optional)
Node group mapping: Map SolarWinds node groups to rConfig device groups (optional)
Common SolarWinds Machine Types
Section titled “Common SolarWinds Machine Types”- Cisco IOS: Cisco IOS routers and switches
- Cisco NXOS: Cisco Nexus data center switches
- Cisco ASA: Cisco ASA firewalls
- Cisco IOS-XR: Cisco carrier-grade routers
- Juniper JUNOS: Juniper JunOS devices
- Arista EOS: Arista Networks switches
- HP ProCurve: HP ProCurve switches
- Palo Alto PAN-OS: Palo Alto firewalls
- Fortinet FortiOS: Fortinet FortiGate firewalls
- F5 BIG-IP: F5 BIG-IP load balancers
- Dell OS10: Dell networking switches
Custom Property Tag Mapping
Section titled “Custom Property Tag Mapping”Map SolarWinds custom properties to rConfig tags for automatic tagging:
Do you want to map SolarWinds custom properties to additional tags? (yes/no)> yes
You can map SolarWinds custom property names to specific tag IDs.Example: Map "Location" property to a location tag
Enter SolarWinds custom property name (e.g., "Location", "Role"):> Location
Enter tag ID to assign based on this property:> 10
Add another custom property mapping? (yes/no)> yes
Enter SolarWinds custom property name (e.g., "Location", "Role"):> Role
Enter tag ID to assign based on this property:> 15
Add another custom property mapping? (yes/no)> noThis automatically assigns tags to devices based on their SolarWinds custom property values during import.
Node Group Mapping
Section titled “Node Group Mapping”Map SolarWinds node groups to rConfig device groups:
Do you want to map SolarWinds node groups to rConfig device groups? (yes/no)> yes
You can map SolarWinds node group names to specific device group IDs.
Enter SolarWinds node group name (e.g., "Core Routers"):> Core Routers
Enter rConfig device group ID:> 1
Add another node group mapping? (yes/no)> yes
Enter SolarWinds node group name (e.g., "Core Routers"):> Distribution Switches
Enter rConfig device group ID:> 2
Add another node group mapping? (yes/no)> noView Existing Mappings
Section titled “View Existing Mappings”php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --listOutput displays all configured mappings:
=== CISCO IOS ===rConfig Type: cisco_iosTemplate ID: 1Vendor ID: 1Category ID: 2Credential ID: 5Default Group ID: 1Prompts: - device_enable_prompt: {device_name}> - device_main_prompt: {device_name}#Tags: 5, 8Custom Property Tag Mapping: - Location: Tag ID 10 - Role: Tag ID 15Node Group Mapping: - Core Routers: Group ID 1 - Distribution Switches: Group ID 2Edit or Delete Mappings
Section titled “Edit or Delete Mappings”# Edit existing mappingphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --edit="Cisco IOS"
# Delete mappingphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --delete="Cisco IOS"Mapping File Structure
Section titled “Mapping File Structure”The mappings are stored in storage/app/rconfig/solarwinds_mappings.json:
{ "Cisco IOS": { "template_id": 1, "vendor_id": 1, "category_id": 2, "credential_id": 5, "default_group_id": 1, "prompts": { "device_enable_prompt": "{device_name}>", "device_main_prompt": "{device_name}#" }, "tags": [5, 8], "device_type": "cisco_ios", "custom_property_tag_mapping": { "Location": 10, "Role": 15 }, "node_group_mapping": { "Core Routers": 1, "Distribution Switches": 2 } }}CAUTION: Accurate mappings are critical for successful imports. Verify template, vendor, category, and credential IDs exist in rConfig before creating mappings. Credential sets must be created in rConfig before running mappings setup.
Step 2: Load Devices from SolarWinds
Section titled “Step 2: Load Devices from SolarWinds”Command
Section titled “Command”php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-load-devicesOptions
Section titled “Options”--batch-size=N- Number of nodes to fetch per SWQL query (default: 100)--max-nodes=N- Maximum number of nodes to import (for testing)--info- Display command help and usage information
What Happens During Loading
Section titled “What Happens During Loading”- Prerequisite checks: Validates connection and mappings exist
- Connection test: Verifies SolarWinds SWIS API connectivity
- Filter display: Shows active filters for confirmation
- SWQL query execution: Fetches nodes from SolarWinds using SWQL queries
- Node group extraction: Retrieves node group memberships for each device
- Custom property extraction: Fetches custom properties for each device
- Filter application: Applies group, machine type, and status filters
- Device processing: For each node:
- Extracts name, IP, model, machine type, groups, properties
- Looks up device type mapping
- Applies credential from mapping
- Maps custom properties to additional tags
- Maps node groups to device groups
- Validates data completeness
- JSON generation: Creates timestamped import file
- Failure logging: Records nodes that failed processing
SWQL Queries Used
Section titled “SWQL Queries Used”The tool executes these SWQL queries:
Main node query:
SELECT NodeID, Caption, IPAddress, IPAddressType, MachineType, Vendor, Location, Status, SysNameFROM Orion.NodesWHERE Status IN (1) AND MachineType NOT IN ('Unknown', 'Unmanaged')ORDER BY NodeIDNode group membership:
SELECT c.NameFROM Orion.ContainerMembers cmINNER JOIN Orion.Container c ON cm.ContainerID = c.ContainerIDWHERE cm.MemberPrimaryID LIKE 'N:{NodeID}'Custom properties:
SELECT * FROM Orion.NodesCustomPropertiesWHERE NodeID = {NodeID}Authentication During Load
Section titled “Authentication During Load”If password was not stored during setup, you’ll be prompted:
Password for api_user: ********The password is used for HTTP Basic Authentication to the SWIS API.
Active Filters Display
Section titled “Active Filters Display”Before processing, active filters are displayed:
Active filters: Include Groups: Core Routers, Distribution Switches Exclude Machine Types: Unknown, Unmanaged Include Statuses: Up
Proceed with node loading? (yes/no)Processing Example
Section titled “Processing Example”Loading SolarWinds connection info...✓ Found connection to: https://solarwinds.company.com:17778
Connecting to SolarWinds...✓ Connected successfully
Active filters: Include Groups: Core Routers, Distribution Switches Exclude Machine Types: Unknown, Unmanaged Include Statuses: Up
Proceed with node loading? (yes/no)> yes
Fetching nodes from SolarWinds...Retrieved 856 nodes from SolarWinds
Processing nodes ████████████████████ 100%
Node loading completed successfully!Generated rConfig compatible data: rconfig_import_2025-01-25_14-45-30.jsonValid devices processed: 823
33 nodes failed processing. See solarwinds_import_failures_2025-01-25_14-45-30.txtOutput Files
Section titled “Output Files”Success file: storage/app/rconfig/tempdir/rconfig_import_2025-01-25_14-45-30.json
Failures file: storage/app/rconfig/tempdir/solarwinds_import_failures_2025-01-25_14-45-30.txt
Credential Assignment Logic
Section titled “Credential Assignment Logic”All devices in a mapping use the same credential set specified in the mapping:
- device_cred_id: Set from mapping’s
credential_idfield - No per-device credential extraction
- Credential must be pre-created in rConfig before mapping setup
Benefits:
- Simplifies credential management
- Forces credential consolidation (best practice)
- More secure than storing credentials in JSON
- User controls credential assignment via mappings
Advanced scenarios:
If different devices of the same type need different credentials:
- Create multiple mappings with appropriate filters
- Manually override credentials post-import
Example JSON Output
Section titled “Example JSON Output”[ { "device_name": "core-rtr-01", "device_ip": "10.1.1.1", "device_model": "Cisco IOS", "template_id": 1, "vendor_id": 1, "device_category_id": 2, "device_cred_id": 5, "prompts": { "device_enable_prompt": "core-rtr-01>", "device_main_prompt": "core-rtr-01#" }, "tags": [5, 8, 10, 15], "solarwinds_machine_type": "Cisco IOS", "solarwinds_node_groups": ["Core Routers"], "solarwinds_custom_properties": { "Location": "DC-East", "Role": "Core" }, "solarwinds_location": "DC-East", "solarwinds_vendor": "Cisco", "group_id": 1, "connection_type": "ssh", "port": 22 }, { "device_name": "dist-sw-01", "device_ip": "10.2.1.10", "device_model": "Cisco NXOS", "template_id": 2, "vendor_id": 1, "device_category_id": 2, "device_cred_id": 5, "prompts": { "device_enable_prompt": "dist-sw-01>", "device_main_prompt": "dist-sw-01#" }, "tags": [5, 8, 10, 20], "solarwinds_machine_type": "Cisco NXOS", "solarwinds_node_groups": ["Distribution Switches"], "solarwinds_custom_properties": { "Location": "DC-East", "Role": "Distribution" }, "solarwinds_location": "DC-East", "solarwinds_vendor": "Cisco", "group_id": 2, "connection_type": "ssh", "port": 22 }]Batch Size and Pagination
Section titled “Batch Size and Pagination”For large SolarWinds deployments (1000+ nodes):
# Increase batch size for faster loading (not currently implemented in pagination logic)php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-load-devices --batch-size=200
# Test with limited nodes firstphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-load-devices --max-nodes=50Device Summary
Section titled “Device Summary”After processing, view a summary breakdown:
Would you like to view a summary? (yes/no)> yes
823 devices processed successfully
Machine type breakdown:- Cisco IOS: 458 devices- Juniper JUNOS: 189 devices- Cisco NXOS: 97 devices- Arista EOS: 79 devices
Node group breakdown:- Core Routers: 145 devices- Distribution Switches: 298 devices- Access Switches: 380 devices
Location breakdown:- DC-East: 412 devices- DC-West: 411 devicesNOTE: The
{device_name}placeholder in prompts is automatically replaced with the actual device hostname during the loading process.
Step 3: Import Devices to rConfig
Section titled “Step 3: Import Devices to rConfig”Command
Section titled “Command”php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices /path/to/rconfig_import.jsonOptions
Section titled “Options”--group=ID- Assign all imported devices to specified device group (default: 1)--dry-run- Preview import without modifying database--info- Display command help and usage information
Interactive Import Options
Section titled “Interactive Import Options”When run without a file path, the command offers:
What would you like to do? Show information about this command Import devices from a JSON file Import from the latest available JSON file Select from all available import files ExitLatest file mode: Automatically finds and uses the most recent JSON file
Select file mode: Displays all available import files with:
- Filename
- Modification date
- File size
- Device count (parsed from file)
Import Process Flow
Section titled “Import Process Flow”- JSON validation: Verifies file structure and required fields
- Device validation: Checks each device for:
- Required fields present
- Valid IP address format
- Template exists in database
- Vendor exists in database
- Category exists in database
- Credential set exists in database
- Prompts structure is valid
- No duplicate devices (by name or IP)
- Validation report: Shows failed devices with specific errors
- User confirmation: Prompts to continue with valid devices only
- Transaction-based import: All valid devices imported in single transaction
- Device creation: Creates device records with mapped configurations
- Relationship linking: Associates:
- Tags (many-to-many, includes custom property tags)
- Vendor (many-to-many, single vendor)
- Category (many-to-many, single category)
- Template (many-to-many, single template)
- Duplicate handling: Automatically skips devices that already exist
- Summary report: Displays import statistics
Validation Rules
Section titled “Validation Rules”Required fields:
- device_name
- device_ip (must be valid IP format)
- device_model
- template_id (must exist in database)
- vendor_id (must exist in database)
- device_category_id (must exist in database)
- device_cred_id (credential set must exist if > 0)
- prompts.device_enable_prompt
- prompts.device_main_prompt
Duplicate detection:
- No existing device with same device_name
- No existing device with same device_ip
Dry Run Mode
Section titled “Dry Run Mode”Test the import without making changes:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices \ --dry-run \ storage/app/rconfig/tempdir/rconfig_import_2025-01-25_14-45-30.jsonOutput preview:
Running in dry-run mode - no database changes will be made
Found 823 devices in the import file
Validating devices ████████████████████ 100%
8 devices failed validation:Device: old-switch-01 - Template ID 99 not foundDevice: test-device-02 - Invalid IP address: 999.999.999.999
Continue with 815 valid devices? (yes/no)> yes
Dry run completed. 815 devices would be imported.Production Import
Section titled “Production Import”Execute the actual import:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices \ --group=2 \ storage/app/rconfig/tempdir/rconfig_import_2025-01-25_14-45-30.jsonOr use the interactive menu to select the latest file:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices# Select: "Import from the latest available JSON file"Import results:
Found 823 devices in the import file
Validating devices ████████████████████ 100%
Importing devices ████████████████████ 100%
Import completed successfully!Imported: 815 devicesSkipped: 8 devices (already exist)NOTE: All imports use database transactions. If any error occurs during import, all changes are rolled back automatically.
Complete Workflow Example
Section titled “Complete Workflow Example”# Step 0: Setup SolarWinds connectionphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --setup
# Enter SWIS details:# - SWIS URL: https://solarwinds.company.com:17778# - Username: api_user# - Password: ********# - Verify SSL: yes
# Test the connectionphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --test
# Configure device filtersphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --edit-filters
# Select filters:# - Include groups: Core Routers, Distribution Switches# - Exclude machine types: Unknown, Unmanaged# - Include statuses: Up
# View connection infophp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --show
# Step 1: Create device type mappingsphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --add
# Add mappings for SolarWinds types: Cisco IOS, Juniper JUNOS, Cisco NXOS, etc.# Include custom property tag mappings (Location, Role)# Include node group mappings (Core Routers → Group 1)
# Verify mappingsphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --list
# Step 2: Load devices from SolarWindsphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-load-devices
# The command will:# - Connect to SolarWinds SWIS API# - Execute SWQL queries# - Apply configured filters# - Fetch node groups and custom properties# - Process devices in batches# - Generate timestamped JSON file
# Review summary# Would you like to view a summary? yes
# Review failures log if anycat storage/app/rconfig/tempdir/solarwinds_import_failures_2025-01-25_14-45-30.txt
# Step 3: Preview import (dry run)php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices \ --dry-run \ storage/app/rconfig/tempdir/rconfig_import_2025-01-25_14-45-30.json
# Step 4: Execute production importphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices \ --group=1 \ storage/app/rconfig/tempdir/rconfig_import_2025-01-25_14-45-30.json
# Or use interactive mode to select latest filephp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices# Select: "Import from the latest available JSON file"Troubleshooting
Section titled “Troubleshooting”SolarWinds SWIS connection failed
Section titled “SolarWinds SWIS connection failed”Symptoms:
- Error: “Connection failed: HTTP 401”
- Error: “Connection failed: Could not resolve host”
Resolution:
Verify SWIS API accessibility:
# Test network connectivityping solarwinds.company.com
# Test HTTPS connectivity to SWIS portcurl -k https://solarwinds.company.com:17778
# Verify credentialsphp /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --testCheck connection configuration:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --showUpdate SWIS URL if needed:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --set-url=https://correct.url.com:17778SSL certificate verification errors
Section titled “SSL certificate verification errors”Symptoms:
- Error: “SSL certificate problem: self signed certificate”
- Connection fails with SSL errors
Resolution:
Disable SSL verification (not recommended for production):
Edit connection file or re-run setup:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --setup# When prompted for "Verify SSL certificates?": select "no"Or install SolarWinds SSL certificate on the rConfig server:
# Export certificate from SolarWinds# Copy to rConfig serversudo cp solarwinds.crt /usr/local/share/ca-certificates/sudo update-ca-certificatesAuthentication failures
Section titled “Authentication failures”Symptoms:
- Error: “HTTP 401: Unauthorized”
- Error: “Invalid credentials”
Resolution:
Verify credentials in SolarWinds:
- Log in to SolarWinds Orion web interface
- Navigate to Settings > All Settings > User Accounts
- Verify API user exists and has appropriate permissions
- Ensure account has “API Access” permission enabled
Update connection configuration:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --setupNo connection configuration found
Section titled “No connection configuration found”Symptoms:
- Error: “SolarWinds connection not configured!”
- Tool prompts to run setup
Resolution:
Setup connection first:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --setupNo device type mappings configured
Section titled “No device type mappings configured”Symptoms:
- Error: “No device type mappings configured!”
- Error: “Device type mappings file not found!”
Resolution:
Create mappings:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --addVerify mappings exist:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --listMachine type mapping not found
Section titled “Machine type mapping not found”Symptoms:
- Nodes logged to failures file with “Unknown machine type ‘xyz’. No mapping found.”
Resolution:
Identify missing machine types from failures log:
cat storage/app/rconfig/tempdir/solarwinds_import_failures_2025-01-25_14-45-30.txtCreate missing mappings:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --addInvalid template/vendor/category/credential ID
Section titled “Invalid template/vendor/category/credential ID”Symptoms:
- Import fails with “Template ID X does not exist”
- Validation shows “Credential set ID X not found”
Resolution:
Verify IDs exist in rConfig:
- Navigate to Settings > Templates (or Vendors/Categories/Credentials)
- Note the correct ID numbers
- Update mapping with correct IDs:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --edit="Cisco IOS"No credential sets exist
Section titled “No credential sets exist”Symptoms:
- Error: “No device credentials found in the system”
- Import halts during mapping creation
Resolution:
Create credential sets in rConfig before creating mappings:
- Navigate to Settings > Credentials
- Create credential sets for your device types
- Note the credential set IDs
- Re-run mapping creation
SWQL query errors
Section titled “SWQL query errors”Symptoms:
- Error: “SWQL query failed”
- Error: “Invalid SWQL syntax”
- Empty result sets
Resolution:
Test SWQL queries manually in SolarWinds:
- Log in to SolarWinds Orion web interface
- Navigate to Settings > SWIS or use SWQL Studio
- Test the queries manually
- Verify table names and column names match your SolarWinds version
Common SWQL issues:
- Table names changed between SolarWinds versions
- Custom properties table may have different structure
- Container/group structure varies by configuration
Filters not working as expected
Section titled “Filters not working as expected”Symptoms:
- Nodes from excluded groups are imported
- Node count doesn’t match filter expectations
Resolution:
Verify filter configuration:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --showRe-configure filters:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --edit-filtersNote: Filters are applied during node loading, not during import. Re-run the load command after changing filters.
Custom property mapping not working
Section titled “Custom property mapping not working”Symptoms:
- Devices don’t have expected tags from custom property mapping
- Only base tags from mapping are applied
Resolution:
Verify custom property tag mapping configuration:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --list# Check "Custom Property Tag Mapping" sectionEnsure:
- Custom property names match exactly (case-sensitive)
- Tag IDs exist in rConfig (Settings > Tags)
- Custom properties are populated in SolarWinds for the nodes
Update mapping if needed:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --edit="Cisco IOS"Node group mapping not working
Section titled “Node group mapping not working”Symptoms:
- Devices not assigned to expected device groups
- All devices assigned to default group
Resolution:
Verify node group mapping configuration:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --list# Check "Node Group Mapping" sectionEnsure:
- Node group names match exactly (case-sensitive)
- Device group IDs exist in rConfig (Settings > Device Groups)
- Nodes are members of the groups in SolarWinds
Update mapping if needed:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-device-mappings --edit="Cisco IOS"Empty or no nodes returned from SolarWinds
Section titled “Empty or no nodes returned from SolarWinds”Symptoms:
- Message: “No nodes retrieved from SolarWinds”
- Warning: “Retrieved 0 nodes from SolarWinds”
Resolution:
Check filters are not too restrictive:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --showVerify SolarWinds has nodes:
- Log in to SolarWinds Orion web interface
- Navigate to Summary > Node Management
- Confirm nodes exist and are monitored
Temporarily disable all filters:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-connection --edit-filters# Select "Import all" for all filter categoriesDuplicate devices during import
Section titled “Duplicate devices during import”Symptoms:
- Validation shows “Device with same name or IP already exists”
- Devices automatically skipped during import
Resolution:
Duplicates are automatically skipped. To handle duplicates:
Check existing devices:
- Navigate to Devices in rConfig
- Search for the device name or IP
- Delete or update the existing device if needed
Re-import after cleanup:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices \ storage/app/rconfig/tempdir/rconfig_import_2025-01-25_14-45-30.jsonTransaction rollback on import
Section titled “Transaction rollback on import”Symptoms:
- Import fails with “Import failed: [error message]”
- Zero devices imported despite validation passing
Resolution:
Check application logs:
tail -f storage/logs/laravel.logRe-run with dry-run to identify the issue:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-import-devices \ --dry-run \ storage/app/rconfig/tempdir/rconfig_import_2025-01-25_14-45-30.jsonCommon causes:
- Database connection issues
- Foreign key constraint violations
- Insufficient database permissions
- Disk space issues
SWIS API rate limiting or timeout
Section titled “SWIS API rate limiting or timeout”Symptoms:
- Error: “Connection timeout”
- Slow node loading with frequent pauses
- Partial node lists
Resolution:
Adjust timeout in connection file:
# Change: "timeout": 30 to "timeout": 60 or higherReduce batch size if queries are timing out:
php /var/www/html/rconfig8/current/artisan rconfig:solarwinds-load-devices --batch-size=50Best Practices
Section titled “Best Practices”Setup connection first: Configure and test SolarWinds SWIS connection before proceeding with mappings
Use SSL verification: Enable SSL verification for production deployments; only disable for self-signed certificates in controlled environments
Configure filters strategically: Use filters to import only production devices and reduce processing time
Create credential sets in rConfig first: Ensure all necessary credential sets exist before creating mappings
Map custom properties to tags: Leverage SolarWinds custom properties by mapping to rConfig tags for better organization
Map node groups to device groups: Preserve SolarWinds organizational structure by mapping node groups to rConfig device groups
Use default group assignment: Assign devices to groups via mappings for immediate organization
Test with limited nodes first: Use --max-nodes=50 to validate workflow before full import
Use dry-run mode: Always use --dry-run first to preview changes and catch errors
Review failures logs: Check failures file to identify and fix issues before re-running
Backup rConfig database: Before importing large batches, backup your rConfig database
Verify mappings: Double-check that template, vendor, category, and credential IDs are correct
Keep SolarWinds running: Run both systems in parallel initially to ensure successful migration
Document custom mappings: Keep notes on custom property and node group mappings for future reference
Regular connection testing: Periodically test SolarWinds connection, especially after SolarWinds upgrades
Batch large imports: For 1000+ nodes, consider importing in batches by node group or machine type
Monitor SWQL query performance: Adjust batch size based on SolarWinds server performance and network conditions
Leverage SWQL filtering: Use SWQL WHERE clauses in filters for complex filtering requirements
Post-Import Tasks
Section titled “Post-Import Tasks”After successful import:
-
Verify device inventory: Navigate to Devices and confirm all devices imported correctly
-
Review credentials: Check that devices have appropriate credential assignments
-
Test connectivity: Use device debug command to verify connection to sample devices from each machine type
-
Organize devices: Verify device groups match SolarWinds node group structure
-
Verify tags: Confirm custom property tags were applied correctly
-
Verify custom property mapping: Check that devices have tags based on SolarWinds custom properties
-
Configure schedules: Set up automated backup schedules for device groups
-
Enable compliance: Apply compliance policies to imported devices
-
Test backups: Execute manual backup on sample devices to verify templates work correctly
-
Review relationships: Verify vendor, category, and template associations are correct
-
Archive SolarWinds data: Export SolarWinds reports and node data for historical reference
-
Update documentation: Document the migration for team members
-
Plan decommissioning: Create timeline for SolarWinds NCM decommissioning after successful migration
-
Monitor backup jobs: Ensure automated backups are executing successfully for all imported devices
Related Documentation
Section titled “Related Documentation”- Device Management - Understanding device configuration in rConfig
- Device Templates - Configuring device templates
- Connection Profiles - Setting up connection credentials
- Scheduled Tasks - Automating configuration backups
- Device Groups - Organizing devices for management
- Device Tags - Using tags for filtering and organization