What This Table Is
The cmdb_ci_server table stores Configuration Items representing both physical and virtual servers in your CMDB. These are the compute resources that run your applications — from bare metal servers in data centers to AWS EC2 instances to VMware VMs. Each record represents a single server instance with its hardware specifications, operating system, and operational status.
This table is owned by the CMDB module and serves as the foundation for infrastructure visibility and service mapping. Discovery processes populate server records automatically, while manual processes handle edge cases and legacy systems. The table supports the entire ITIL configuration management process — from initial discovery through change management to incident response.
Server CIs extend cmdb_ci and inherit all base CI functionality including state management, change control, and relationship mapping. Specialized server types like cmdb_ci_linux_server and cmdb_ci_win_server extend this table to add OS-specific fields and behaviors.
Large enterprises typically see 10,000-100,000+ server records with high update frequency from discovery. Performance matters here — poorly written queries against cmdb_ci_server can impact platform performance. The table includes several indexed fields for common queries, but joining to related tables requires careful consideration of query execution plans.
When You'll Script Against This Table
You'll query cmdb_ci_server primarily in Business Rules during incident assignment (finding servers by location or team), Script Includes for service mapping and dependency analysis, and Scheduled Jobs for compliance reporting and health monitoring. Discovery scripts constantly update these records, making onChange Business Rules common for triggering downstream processes.
The itil role provides read access, while admin or cmdb_admin enables modifications. Discovery processes run with elevated privileges, but custom scripts must respect ACL boundaries. Some organizations implement record-level security based on server location or support group.
- Incident assignment based on server location or support team
- Service mapping dependency calculations and impact analysis
- Compliance reporting for patching, licensing, and security standards
- Capacity planning queries aggregating CPU, memory, and storage metrics
- Discovery correlation and duplicate detection during automated updates
- Change request validation ensuring servers are in appropriate states
- Asset lifecycle management tracking deployment and retirement dates
Table Gotchas
The install_status field uses numeric values (1=Installed, 6=Retired, 7=Stolen) but many developers incorrectly query with string values. Always use the numeric constants or sys_choice queries to get the right values.
- Virtual servers may have both
host_nameanddns_domainpopulated differently than physical servers — discovery sets these based on VM configuration vs network detection
The operational_status field can be misleading — a server showing '1' (Operational) may actually be powered off if discovery hasn't run recently. Always check last_discovered timestamp when making operational decisions.
- Queries joining to
cmdb_rel_cifor relationship data can be expensive — use GlideAggregate when counting relationships rather than iterating GlideRecord results - The
correlation_idfield is auto-generated and used by Discovery for duplicate detection — never manually modify this field as it breaks discovery correlation
When querying by IP address, remember that servers can have multiple IPs. Query the cmdb_ci_network_adapter table and join via cmdb_rel_ci relationships for comprehensive IP-based searches.
- Child tables like
cmdb_ci_linux_serverinherit ACLs but may have additional field-level security — test permissions thoroughly when accessing OS-specific fields
Enjoying this? Get one deep-dive per week.
Join 1,000+ ServiceNow pros — scripts, GlideRecord patterns, Flow Designer techniques, and career moves. Free.
Related Tables
Server CIs inherit from cmdb_ci and share its state management, relationship handling, and audit trail functionality. Understanding the parent table's field behaviors and ACL structure is essential before working with server-specific logic. Child tables include cmdb_ci_linux_server, cmdb_ci_win_server, and cmdb_ci_esx_server which add OS-specific fields and discovery patterns.
Most server queries involve cmdb_rel_ci for dependency mapping, sys_user_group for support team assignments, and cmn_location for data center and geographic information. The cmdb_ci_network_adapter relationship provides IP address details essential for network-based queries and incident correlation.
Incident management frequently joins incident records to server CIs via the cmdb_ci reference field, while change management uses change_request and task_ci relationships for impact analysis. Asset management connects through alm_asset for financial tracking and lifecycle management of the underlying hardware.