Issue
Out of the box, IRE (Identification and Reconciliation Engine) is partially used by SCCM, in transform map "SCCM 2012 v2 Computer Identity".
It's used in the sys_id script, to check whether a CI exists. Since it doesn't do update directly, the Datasource Precedence rules are not used.
The onBefore script in below link should NOT be used for SCCM
Apply CI Identification and Reconciliation to Import Sets
Workarounds
Please note: We have developed new SCCM integration that uses IRE and RTE (Robust Transform Engine) (SG-SCCM).
Please try to setup new SCCM integration unless you have specific needs to use legacy SCCM.
If the aim is to make sure SCCM doesn't update CIs that were created/updated by Discovery, then the transform maps can be modified to check on the discovery_source field of the CIs:
if discovery_source value is 'ServiceNow', which means updated by Discovery, then SCCM will skip this record.
Attached "SCCM 2012 checking discovery_source.zip" is a demonstration of how this can be achieved.
The demonstration is based on SCCM 2012 v2.
Below is the list of modifications made:
***Transform Map: SCCM 2012 v2 Computer Identity
modified field mapping sys_id
***Transform Map: SCCM 2012 v2 Operating System
modified field mapping sys_id
***Transform Map: SCCM 2012 v2 Processor
modified field mapping sys_id
***Transform Map: SCCM 2012 v2 Disk
modified transform map script
***Transform Map: SCCM 2012 v2 Network
modified transform map script
For SCCM 2016, make similar modifications to the relevant files.