- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-20-2025 06:52 PM
One of our Transform Maps uses CMDBTransformUtil which is called from an onBefore script.
I made some changes and started to test the Load, so I made some manual changes to a CMDB Item and then reran the load.
I was expecting my manual changes to be reverted. However, the changes that I made remained changed. The only field that was updated was the last_discovered field.
I put in some debug, and how used JSON.pretify for the output from the method: getOutputPayload();
All of hte fields that I had changed were listed in the attribute called maskedAttributes
See documentation CMDBTransformUtil - Global and search for "masked".
So I understand that ServiceNow detected that these fields had been manually changed and therefore excluded them. Very clever. I guess this is the purpose of reconciliation.
However, how do I take control of the reconciliation using this API? How do I use this API call CMDBTransformUtil and set which fields I want to include or exclude? Is it possible?
After 45 minutes of googling, it looks like the answer is no.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-21-2025 02:30 AM
Hi @Doug5 ,
Currently, the CMDBTransformUtil
API itself does not provide direct methods to programmatically override or configure which fields to include/exclude during transform at runtime. Instead, control over reconciliation is handled through CMDB’s data governance settings, specifically:
Reconciliation Rules – Define which data source (like Discovery, Import Sets, etc.) wins for a given attribute.
Data Source Precedence – Set priorities at the data source level to determine which updates take effect.
Data Certification / Data Governance – Maintain and protect critical fields from automated updates.
So while CMDBTransformUtil
helps with transform scripting and payload handling, it relies on these CMDB-level configurations for actual reconciliation decisions.
If you really need to override this behavior (though usually not recommended), typical approaches are:
-
Adjusting reconciliation rules or data source priorities so your transform’s data source has higher precedence.
-
Adding custom transform scripts that explicitly update fields post-reconciliation (carefully, since this may bypass governance).
You can’t directly “tell” CMDBTransformUtil
which fields to mask/unmask at runtime. Instead, you manage it via reconciliation definitions and data source settings in CMDB
Please appreciate the efforts of community contributors by marking appropriate response as Mark my Answer Helpful or Accept Solution this may help other community users to follow correct solution in future.
Thank You
AJ - TechTrek with AJ
LinkedIn:- https://www.linkedin.com/in/ajay-kumar-66a91385/
YouTube:- https://www.youtube.com/@learnitomwithaj
ServiceNow Community MVP 2025
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-21-2025 02:30 AM
Hi @Doug5 ,
Currently, the CMDBTransformUtil
API itself does not provide direct methods to programmatically override or configure which fields to include/exclude during transform at runtime. Instead, control over reconciliation is handled through CMDB’s data governance settings, specifically:
Reconciliation Rules – Define which data source (like Discovery, Import Sets, etc.) wins for a given attribute.
Data Source Precedence – Set priorities at the data source level to determine which updates take effect.
Data Certification / Data Governance – Maintain and protect critical fields from automated updates.
So while CMDBTransformUtil
helps with transform scripting and payload handling, it relies on these CMDB-level configurations for actual reconciliation decisions.
If you really need to override this behavior (though usually not recommended), typical approaches are:
-
Adjusting reconciliation rules or data source priorities so your transform’s data source has higher precedence.
-
Adding custom transform scripts that explicitly update fields post-reconciliation (carefully, since this may bypass governance).
You can’t directly “tell” CMDBTransformUtil
which fields to mask/unmask at runtime. Instead, you manage it via reconciliation definitions and data source settings in CMDB
Please appreciate the efforts of community contributors by marking appropriate response as Mark my Answer Helpful or Accept Solution this may help other community users to follow correct solution in future.
Thank You
AJ - TechTrek with AJ
LinkedIn:- https://www.linkedin.com/in/ajay-kumar-66a91385/
YouTube:- https://www.youtube.com/@learnitomwithaj
ServiceNow Community MVP 2025
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-21-2025 02:21 PM
Thanks for your detailed reply. Your answer is not unexpected. Thank you. I have just been onboarded onto a new project - so it is interesting to see how previous people have talked the subject of loading CIs from external source via a REST API - which is probably the most common use case. In ServiceNow, I can think of about half a dozen different ways of doing it. This implementation uses A flow to load the Import Set from REST and CMDBTransformUtil to load the target. Never see that combination before. The Question I have at the moment - what is best practice? What does SN recommend? I don't want to re-write what has already been implemented. If it ain't broke, don't fix it. Still what do I recommend to the client going forward? I think some clarity from ServiceNow in the Documentation on the Subject might be useful.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-21-2025 02:33 PM
My understanding of best practice when integrating data into the CMDB outside of Horizontal Discovery is:
- If a Service Graph Connector exists for the Source data, implement it (SCCM, Intune, etc.)
- If a Service Graph Connector doesn't exist, use Integration Hub ETL to build the integration as it is built on top of the Robust Transform Engine (RTE) which uses the Identification and Reconciliation Engine (IRE)
- If Integration Hub ETL is not available to use, then the transform maps with the CMDBTransformUtil
In each of the above, as soon as you add a new source for CMDB Data ensure you IRE rules are configured to avoid data collisions.