How the CMDB Identification and Reconciliation Engine processes a CI payloadIssue <!-- /*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: ; } } Learn how the CMDB Identification and Reconciliation Engine (IRE) processes a configuration item (CI) payload through each stage—from data source ingestion and payload validation through identification, reconciliation, and database commit. Release<!-- /*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: ; } } All supported releases Resolution<!-- /*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: ; } } IRE processing workflow The following diagram shows how the IRE processes a CI payload through each stage. The numbered sections that follow describe each step in detail. 1. Data sources Data is collected from various sources such as SCCM, Discovery, Service Mapping, Import Sets, and third-party integrations such as Qualys. The data source builds a JSON payload and sends it to the IRE through the createOrUpdateCI() API. 2. Payload validation The IRE validates the incoming payload to confirm it is well-formatted and that all required attributes are present. If validation errors are found, processing stops and errors are logged to the system logs (see section 3.2). 3. CI identification based on payload 3.1 Payload with no errors If the payload passes validation, the system searches for matching CMDB identifier rules in the cmdb_identifier table. The system evaluates independent rules for the CI class being submitted, followed by parent class identification rules based on configuration. Currently, most devices fall under the "Hardware Rule" on cmdb_ci_hardware. After the matching identification rule is found, the engine evaluates the identifier entries within that rule on a priority basis until a match is found. 3.2 Payload with errors If the payload fails validation, the IRE stops processing and writes errors to the system logs. You can obtain detailed CMDB IRE logs by enabling the relevant logging properties. 4. Process the CI matches 4.1 No matches found If no matches are found, the IRE reserves the payload for insertion of a new CI. 4.2 Exactly one CI found If exactly one match is found, the IRE reserves that CI for update. The system then checks for any lookup, related, or reference rules defined for that CI type or its parent CI type (for both insert and update operations). The system also evaluates the reconciliation rules and data precedence rules for the CI and its attributes, then updates the CI accordingly. 4.3 Multiple CI matches found If the IRE finds more than one matching CI but less than the skip_duplicates threshold, it generates a de-duplication task and attempts to process the duplicate CIs. How duplicates are processed depends on the release version: Through the Madrid release: The system marks duplicate CIs by setting the discovery_source field to Duplicate.Beginning with the New York release: The system populates the duplicate_of field on each duplicate CI with the sys_id of the primary CI. 4.3.1 Skip duplicates The IRE does not process duplicate CIs if either of the following conditions is true: The glide.identification_engine.skip_duplicates property is set to false.The number of duplicates found exceeds the maximum threshold defined by the glide.identification_engine.skip_duplicates.threshold property (default value: 5). 4.3.2 Process duplicates If the glide.identification_engine.skip_duplicates property is set to true and the number of duplicates is less than the threshold defined by glide.identification_engine.skip_duplicates.threshold, the IRE processes the duplicates: Through the Madrid release: The system sets discovery_source to "Duplicate" on duplicate CIs.Beginning with the New York release: The system populates the duplicate_of field with the primary CI. 5. Look up related and dependent CIs Based on the configuration and the payload, the IRE checks for lookup, related, and relationship data that needs to be inserted or updated. 6. Apply reconciliation If the CI is being updated, the IRE applies the reconciliation rules and data precedence rules to determine which attributes to update. Reconciliation is not applied for new CI insertions because no existing attribute values need to be evaluated. 7. Commit data to the database The IRE commits the CI data to the database and generates a sys_id for each new or updated CI. 8. Return results to the API caller The IRE returns the processed data and any error results to the API caller. Related Links<!-- /*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: ; } } How to run CI identification on demand using a payload How to check the data/payload being sent to IRE and check the issues with the payload IRE error messages Duplicate CMDB CI records Debug the IRE using background scripts CMDB identifier rules Detecting duplicate CIs Duplicate CI remediation