How ACC Populates Operating System Fields in CMDB.Summary<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Overview : This article explains how Agent Client Collector (ACC) processes and populates operating system-related fields (os, os_version, os_domain) in Configuration Item (CI) records. Understanding this transformation helps troubleshoot discrepancies between what the agent collects and what appears in the CMDB. Quick Reference: Field Mapping Agent Payload FieldCMDB FieldTransformation Appliedoperating_systemosStandardized name (e.g., "Microsoft Windows Server 2025 Standard" → "Windows Server 2025")operating_system_versionos_versionTrailing .0 removed (e.g., "10.0.0" → "10.0")operating_system_domainos_domainDirect mapping (Active Directory domain) Processing Flow : ┌─────────────────────────────────────────────────────────────┐│ 1. EnhancedDiscoveryHandler (Child) ││ "I handle ACC-specific data" ││ └─ Calls parent for basic processing │└─────────────────────────────────────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────────┐│ 2. MainDiscoveryHandler (Parent) ││ "I map fields: operating_system → os" ││ └─ Sends to OS helper for formatting │└─────────────────────────────────────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────────┐│ 3. AgentOSHelper (Coordinator) ││ "I coordinate OS processing" ││ ├─ Format version: "8.7.0" → "8.7" ││ └─ Route to platform-specific helper │└─────────────────────────────────────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────────┐│ 4a. WindowsOSNameHelper 4b. LinuxOSNameHelper ││ "I clean Windows names" "I identify Linux" ││ Remove "Microsoft" Keyword matching ││ Remove symbols "ubuntu" → "Linux Ubuntu"│└─────────────────────────────────────────────────────────────┘│ 4c. MacOSNameHelper │ │ "I handle macOS versions" │ │ • Version-aware naming │ │ • macOS 11+: "macOS 14" │ │ • macOS 10.x: "Mac OS 10 (OS/X)" │ │ Example: "macOS 14.3.1" → "macOS 14" |└─────────────────────────────────────────────────────────────┘ OS Version Formatting Standard Behavior: Remove Trailing .0 Regex Applied: version.replace(/\.0+$/, '') InputOutputExplanation10.0.2610010.0.26100Preserved (no trailing .0)8.0.08All trailing .0 removed7.9.07.9Trailing .0 removed14.3.114.3.1 Preserved Key Point: Only trailing zeros are removed. Meaningful version digits like 10.0.26100 are preserved. Configuration Properties 1. Full Windows Version (Optional) Property: sn_agent.host_data_collection.full_os_versionDefault: falsePurpose: Capture complete Windows version including all build numbers Example: // When false (default):operating_system_version: "10.0.26100"Final os_version: "10.0.26100" // When true:operating_system_full_version: "10.0.26100.7171"Final os_version: "10.0.26100.7171" 2. NBT Domain for Windows (Optional) Property: glide.discovery.domain.name.nbtDefault: falsePurpose: Use NetBIOS domain instead of Active Directory domain Example: // When false (default): os_domain = "supportlabwin.local" (from operating_system_domain) // When true: os_domain = "SUPPORTLABWIN" (from nbt field) How os_domain is Populated Basic Flow // Field mapping in MainDiscoveryHandler fieldMap.operating_system_domain = "os_domain"; // Direct assignment valuesJson["os_domain"] = basicInventoryJson["operating_system_domain"]; // "supportlabwin.local" → os_domain: "supportlabwin.local" Windows: NBT Override (Optional) Property: glide.discovery.domain.name.nbt (default: false) // When enabled for Windows only if (nbtPrefProp && platform == "windows") { valuesJson["os_domain"] = basicInventoryJson["nbt"]; } // Example: // Default: os_domain = "supportlabwin.local" (AD domain) // NBT enabled: os_domain = "SUPPORTLABWIN" (NetBIOS) Quick Summary PlatformDefaultOptionalWindowsAD domainNetBIOS (via property)LinuxDNS domainN/AmacOSDNS domainN/A Key Point: Unlike OS name/version, os_domain is a simple field mapping with optional Windows NetBIOS override. Summary Agent Client Collector populates operating system information through a multi-stage process: Collection: Agent gathers OS data using platform-native methodsTransformation: MainDiscoveryHandler maps payload fields to CMDB fieldsFormatting: AgentOSHelper standardizes OS names and formats versionsIdentification: Identification Engine (IRE) creates or updates CI. Key Takeaways: OS version trailing .0 are automatically removed (e.g., 8.0.0 → 8)OS names are standardized per platform (Windows, Linux, macOS)macOS 11+ uses major version only for OS name (e.g., "macOS 14")