Identification rules

The CMDB identification process relies on identification rules. Each identification rule consists of one or more identification entries.

Identification rules apply to a CI class and comprises of one or more identifier entries, each with a different priority. Each identifier entry defines a unique attribute set with a specific priority and each related entry defines rules for identifying related items. Create strong identification rules that give the highest priority to the strongest identifier entries.

The identification process and identification rules use the CIs attributes for identification:
Unique attributes
Designated sets of criterion attribute values of a CI, that can be used to uniquely identify the CI. Unique attributes can be from the same table or from derived tables.
Required attributes
Designated attributes of a CI that cannot be empty.

Identification rule types

The steps for identifying dependent CIs can be different from the steps for identifying independent CIs. This difference is reflected in the differences between dependent identification rules and independent identification rules.
Independent identification rule
A rule that identifies a CI based on the CI's own attributes, independently of other CIs or relationship.
Dependent identification rule
A rule in which identifying a CI requires identifying a dependent CI first. A CI can have dependency on one or more CIs, and a dependent CI can have only a single parent CI with dependency. The relationship types between the CI and its dependent CIs are also included in the identification process. To assist in the identification process of dependent CIs, add Service rules metadata that define the dependency structure of CI types and the relationship types.

The payload used for identification of a dependent CI, can include a relationship with a qualifier chain. For such relationship, if there is a matching parent/child pair, the system compares the qualifier chain in the payload, with the qualifier chain of the CIs in the database. If there is a difference, the qualifier chain in the database is updated to match the qualifier chain in the payload for that relationship.

Identifier entries

You can configure an identifier entry to match a CI not only based on the CI's own attributes (field based identification) but also based on the CI's related list (lookup based identification) such as Serial Numbers or Network Adapters. The lookup based table that is used for identification, needs to have a reference field that points to cmdb_ci.

There are two types of identifier entries:
Regular identifier entry
Based on CI's attributes that uniquely identify the CI.
Lookup identifier entry
Uses a related table (lookup table) which can be any table that has a reference to the CI that is being identified. After you select a related table in the lookup identifier entry, the list in Referenced field is populated with fields from the related table that reference either the cmdb_ci table itself, or one of its descendants.

Guidelines for lookup tables

Follow these guidelines when specifying a lookup table in an identifier entry.
  1. Ensure that lookup tables reference the cmdb_ci table.
  2. It is preferable to enforce exact count match (check box Enforce exact count match (Lookup)) for a stronger identification rule. During lookup identification, this option enforces matching only on exact lookup records count match.
  3. Do not create conflicting identification rules especially for lookup based rule.
    Example: In a CI Identifier for the Hardware class you specify a lookup based rule for the Network Adapter class, and you also define a CI Identifier for the Network Adapter class. Duplicates might potentially be created in the Network Adapter table, because there are contradicting rules to identify a unique CI in that table:
    • One rule that looks only at criterion attributes (CI identifier rule)
    • Another rule that looks at criterion attributes and referenced sys_id (lookup rule).
Example: CI with related items that needs to be inserted - sysId is available.
var payload = {
    items: [{
        className:'cmdb_ci_linux_server',
       related: [{
              className:'cmdb_ci_spkg',
              values: {
                name:'package1',
                version:'version1'
                }
        }],
        values: {
            sys_id:'194876usytrr65378098'
        }
}]
};