SCCM Integration does not respect the data precedence or data refresh rules setup on CI class manager.
Kingston and above
- The article is applicable only when both Discovery and SCCM Integration is being actively used to update the CMDB.
- Customer has one or more data precedence / data refresh rules on the instance, which are applicable for the CMDB tables being populated.
SCCM Integration uses 'Transform Maps' to populate the CMDB tables.
Normally, transform map event scripts can be added to change the behavior of the transform. We can use an onBefore transform script to apply CI Identification and Reconciliation to Import Sets. However, this method isn't used in the SCCM Integration plugins. The sequence of scripts being evaluated during a transform is as follows:
- source script for (coalesce) field(s)
- onBefore script
- script for transform map
In earlier versions, in the 'SCCM 2012 v2 Computer Identity' data source, within the source script for sys_id, we 'used to' call the CMDB Identification Engine to find us a matching computer (or create one if one doesn't exist). Because of this, the record was already created before the onBefore script is evaluated.This breaks the desired behaviour.
To overcome this issue the designed behaviour was changed such that 'SCCM Integration' no longer uses IRE to Insert or Update the CIs. As per the current release(s), SCCM uses IRE only to check whether CI already exists or not. This check is made in the source script for sys_id.
- It is not recommended or supported to use IRE for populating the CMDB via SCCM, by using the onBefore script. Hence, it is not possible for SCCM Integration to honour the data precedence or data refresh rules.
- Steps mentioned in KB0721378 can be used to modify the transform map script to make sure SCCM doesn't update CIs that were created / updated by Discovery (discovery_source='ServiceNow')