Section 3.2: Identification and Reconciliation Engine (IRE) Core
Key Takeaways
- The IRE is the foundational API (identifyAndReconcile) that evaluates nested JSON payloads to create, update, or identify CIs based on pre-defined Rules.
- Identification Rules (cmdb_identifier) contain ordered Identifier Entries (cmdb_identifier_entry) that search attributes or look up sys_object_source keys.
- Reconciliations Rules (cmdb_reconciliation_rule) specify which Discovery Sources can update specific classes or attributes, blocking unauthorized source overwrites.
- Data Source Precedence (cmdb_datasource_precedence) resolves conflicts when multiple sources report the same attribute, using an ordered priority index (lower number = higher priority).
Identification and Reconciliation Engine (IRE) Core
1. Introduction to the IRE Engine
The Identification and Reconciliation Engine (IRE) is the foundational metadata engine and API responsible for protecting the integrity of the ServiceNow Configuration Management Database (CMDB). In a multi-source ecosystem, the IRE acts as the central gatekeeper. The core engine is accessed programmatically using the identifyAndReconcile API (or its modern equivalent identifyAndReconcileEnh). This API accepts a nested JSON payload containing CIs, attributes, and relationships. It evaluates this payload against identification, reconciliation, and data source precedence rules, determining whether to create a new CI, update an existing CI, or discard the input attributes.
2. Identification Rules and Identifier Entries
The first step of the IRE workflow is Identification. The engine must determine if the incoming payload matches a CI that already exists in the database. This process is governed by Identification Rules (cmdb_identifier). Each rule is linked to a specific CMDB class (e.g., Computer or Database Instance) and contains one or more ordered Identifier Entries (cmdb_identifier_entry).
When the IRE receives a payload for a class, it evaluates the identifier entries sequentially based on their defined priority:
- Source Native Key Match: The IRE checks the
sys_object_sourcetable for an existing record matching the source name and the incomingsource_native_key. If a match is found, the identification succeeds immediately, and subsequent rules are skipped. - Identifier Entry 1 (e.g., Serial Number): If no shortcut match exists, the IRE executes the highest-priority identifier entry (e.g., searching for a matching serial number in the
cmdb_ci_hardwaretable). - Identifier Entry 2 (e.g., IP Address and MAC Address): If the first entry fails to find a match, the IRE moves to the next entry in the list.
- New CI Creation: If all identifier entries fail to find a match, the IRE concludes that the CI does not exist and creates a new record.
If any identifier entry matches multiple existing CIs, the IRE throws a "Multi-Match" error, suspends the update, and generates a De-duplication task to prevent data corruption.
3. Independent vs. Dependent Class Architecture
For the ServiceNow CIS-DF exam, you must understand the distinction between independent and dependent classes:
- Independent Classes: These represent CIs that can be uniquely identified in isolation. For example, a Linux Server (
cmdb_ci_linux_server) or an IP Router (cmdb_ci_ip_router) can be identified using their own attributes, such as serial number, name, or BIOS UUID. - Dependent Classes: These represent CIs that cannot be identified without the context of a parent CI. For example, a Network Adapter (
cmdb_ci_network_adapter), a Database Instance (cmdb_ci_db_inst), or a Software Installation (cmdb_sam_sw_install) cannot be uniquely identified by their name or version alone; they must be identified in relation to the hardware server that hosts them.
For dependent classes, the identification rule is marked as "Dependent". The IRE resolves these dependencies using Metadata Rules:
- Hosting Rules (
cmdb_metadata_hosting): Define what class hosts the dependent CI (e.g., a Computer hosts an Operating System). - Containment Rules (
cmdb_metadata_containment): Define what class physically or logically contains the dependent CI (e.g., a Chassis contains a card).
During ingestion, the JSON payload must include the relationship between the dependent CI and its parent independent CI. The IRE traces this relationship path to perform identification. If the parent CI cannot be found or is not included in the payload, the identification of the dependent CI fails.
4. Reconciliation Rules and Attribute Authority
Once a CI is identified, the IRE moves to the Reconciliation phase. Reconciliation Rules (cmdb_reconciliation_rule) specify which discovery sources are authorized to update a specific class or specific attributes within that class.
Reconciliation rules define:
- The target CMDB class.
- The authorized discovery source (e.g.,
ServiceNow,SG-SCCM,Manual Entry). - The specific attributes that the source has authority to write. If no attributes are specified, the source has authority over the entire class.
Without reconciliation rules, any source can write to any attribute, which can lead to low-integrity sources overwriting high-integrity data. For example, a script parsing a manual spreadsheet could overwrite the status of a server that is actively monitored by ServiceNow Discovery. By configuring a reconciliation rule, you restrict write permissions to authorized sources.
5. Data Source Precedence and Conflict Resolution
When multiple discovery sources have reconciliation rules allowing them to update the same class or attributes, conflicts are resolved using Data Source Precedence Rules (cmdb_datasource_precedence).
A data source precedence rule assigns an integer priority value to each source:
- Lower numbers represent higher priority (e.g., a priority of
100is higher than200). - If Source A (priority 100) has populated the
os_versionattribute on a CI, and Source B (priority 200) attempts to updateos_versionwith a different value, the IRE blocks the update. - The IRE silently discards the lower-priority source's value for that specific attribute while continuing to process and update other attributes in the payload that do not have conflicting precedence rules.
- If no precedence rules are defined, the last-writing source wins, and the attribute is overwritten.
6. The Complete IRE Lifecycle Workflow
When a payload is submitted, the IRE executes the following logic:
- Receive Payload: The nested JSON is parsed and validated.
- Identification Lookup: The IRE checks
sys_object_source. - Identifier Entries Evaluation: If no key match, identifier entries are checked.
- CI State Determination: The CI is determined to be an insert or an update.
- Apply Reconciliation Rules: The source's write authority for each attribute is checked.
- Apply Precedence Rules: The source's priority is evaluated against existing attribute metadata.
- Database Write: The database is updated, and the lookup ledger
sys_object_sourceis updated.
What is the result when a lower-priority discovery source attempts to update an attribute that has already been populated by a higher-priority source under active reconciliation rules?
Which statement best describes the difference between an independent class identification rule and a dependent class identification rule in the IRE?
How does the IRE resolve conflicts when multiple reconciliation rules from different discovery sources apply to the same class?