Use PDIs? Take our 5-minute survey to help shape the PDI roadmap.

CMDB Duplicate CIs Created from Integration Using Different Transform Map Coalesce Fields

pavan_yadav
Tera Contributor

Hi Community,

We are investigating an issue where an integration is creating duplicate CIs in the CMDB for the same server.

We have a computer integration with the following design:

Transform Map 1 – Computer Insert/Update

  • Source: Computer staging table

  • Target: cmdb_ci_computer

  • Coalesce field: Name(example)

  • Other fields include:

    • Name

    • Serial Number

    • External/Source Computer ID

  • create_new_record_on_empty_coalesce_fields is true.

  • The transform uses CMDBTransformUtil / IdentificationEngineScriptableApi.createOrUpdateCI().

  • Based on the operating system and server-related attributes, the CI can be classified into a child class such as cmdb_ci_win_server.

Transform Map 2 – Custom Computer Fields

  • Source: Custom computer staging table

  • Target: cmdb_ci_computer

  • Coalesce field: External/Source ID

  • The transform has an OnBefore script that ignores the record when the action is insert, so this transform is intended to update existing CIs only.

The issue is that multiple CIs can eventually exist with the same server name.

For example, assume the source system sends:

Computer ID: 10001
Name: SERVER001
Serial Number: SERIAL-A

and another source record represents the same server as:

Computer ID: 10002
Name: SERVER001
Serial Number: SERIAL-B

We have observed cases where multiple CMDB CIs end up with the same name, while their external/source IDs and serial numbers can change over time.

We are trying to understand the exact processing behavior.

Questions

  1. If Transform Map 1 has Name as the coalesce field, and a CI already exists with the exact same Name, should the Transform Map always identify that record and perform an update rather than create another CI?

  2. If Transform Map 2 uses External/Source ID as the coalesce field, and a CI already exists with that ID, should it always identify and update that CI?

  3. Can having two Transform Maps targeting the same cmdb_ci_computer table but using different coalesce fields result in the two transforms identifying different CIs for the same source computer?

  4. If a CI is initially created with one Name and later another transform updates its Name to a value that already exists on another CI, can this result in duplicate CIs with the same Name? Or does CMDB/IRE prevent this?

  5. How does CMDBTransformUtil / IdentificationEngineScriptableApi.createOrUpdateCI() interact with the Transform Map's coalesce field? Specifically, when IRE is invoked, does the Transform Map coalesce determine the initial target record, or does IRE perform its own identification independently?

  6. When the target class is dynamically changed from cmdb_ci_computer to a child class such as cmdb_ci_win_server, can the class mapping affect identification and cause an existing cmdb_ci_computer/child-class CI not to be matched?

  7. If the same source computer is processed with different external IDs over time, can IRE identify the existing CI based on attributes such as Name/Serial Number while the Transform Map subsequently updates the external ID? Could this cause the external ID to move back and forth between different CIs?

  8. What would be the recommended configuration for this type of integration if the external/source Computer ID is the stable unique identifier? Should both Transform Maps use the same coalesce/identification strategy?

We would especially appreciate an explanation of the actual processing sequence between Transform Map coalesce, CMDBTransformUtil, IRE identification, and CI class mapping, and what scenarios could allow a duplicate CI to be inserted even though a CI with the same Name already exists.

Thanks in advance.
Pavan

0 REPLIES 0