CMDB Population Guide
A CMDB is only valuable if it's accurate. This guide covers the three ways to get data in: migration (historical data), discovery (automated), and manual (the exception, not the rule).
Never start with manual data entry at scale. A 5,000-row spreadsheet import creates 5,000 records that will be wrong within 90 days with no automated correction mechanism.
Phase 1 — Define Your CI Scope
Before importing anything, define which CI classes you need:
Priority 1 (Day 1):
✓ Servers (physical + virtual)
✓ Network devices (routers, switches, firewalls)
✓ Databases
✓ Business applications (top 20)
Priority 2 (Month 2):
✓ Storage devices
✓ Cloud resources (AWS EC2, RDS, S3)
✓ Middleware (web servers, app servers)
Priority 3 (Month 3+):
✓ Endpoints (laptops, desktops)
✓ Printers and peripherals
✓ Mobile devicesPhase 2 — Discovery Setup
ServiceNow Discovery
Navigator → Discovery → Discovery Schedules → New
Name: Production Network Discovery
Type: IP Range
IP Ranges: 10.0.0.0/8 (adjust to your network)
Credentials: Windows (WMI) + Linux (SSH) + SNMP
Schedule: Weekly (Sunday 02:00)
MID Server: [your MID server name]Discovery probes to enable:
Windows - Software(installed software inventory)Linux - Hardware(hardware specs)SNMP - Network(network device topology)VMware - vCenter(virtual machine inventory)
Phase 3 — Data Migration
For existing CMDB data in spreadsheets or legacy tools:
Export and clean source data
Export to CSV. Clean in Excel or Python:
- Remove duplicate records (same hostname, different row)
- Standardise naming conventions (
srv-prod-01notProduction Server 1) - Map your CI classes to the target platform's schema
Transform to import format
import pandas as pd
df = pd.read_csv('existing_assets.csv')
# Standardise hostname format
df['name'] = df['hostname'].str.lower().str.strip()
# Map OS to platform CI class
os_map = {
'Windows Server 2019': 'Windows Server',
'RHEL 8': 'Linux Server',
'Ubuntu 22.04': 'Linux Server',
}
df['ci_class'] = df['os_version'].map(os_map)
df.to_csv('import_ready.csv', index=False)Import via platform API
# ServiceNow Import Set API
curl -X POST \
"https://[instance].service-now.com/api/now/import/u_cmdb_import_set" \
-H "Authorization: Bearer [token]" \
-H "Content-Type: application/json" \
-d @import_ready.jsonReconcile and validate
After import, run the platform's reconciliation rules to merge duplicate CIs and establish relationships. In ServiceNow: CMDB → CI Lifecycle Management → Reconciliation.
CMDB architecture and implementation consulting → (opens in a new tab)