The CreatorCon Call for Content is officially open! Get started here.

CMDB updates and reconciliation behavior

Tresselt
Tera Expert

Hello!

I have a scenario with two data sources:

  • Source A -> Reports on the operational status of a CI

  • Source B -> Reports additional details about the CI, but does not provide lifecycle/operational status information

Here’s what I’m seeing:

  • Source A last reported 1 year ago, with operational status = Operational.

  • I’ve set up a custom rule: if a CI hasn’t been discovered by Source A within 60 days, it should be set to Retired.

  • This part works fine.

However, when integration from Source B runs, the CI’s operational status unexpectedly changes back to Operational, even though Source B has no mapping to that field.

My suspicion: ServiceNow is pulling the last known value from cmdb_multisource_data, effectively reusing Source A’s old record when Source B updates the CI. This is problematic, since that record is very outdated.

I’m considering whether Data Refresh Rules might help here, but since Source B has no reconciliation rule for operational status, there’s no “lower priority” source compared to A.

10 REPLIES 10

Pratiksha
Mega Sage
Mega Sage

You can quickly fix this. Configure this. It will stop updates on CI if its retired,. It's called inclusion rule. CI Class manger -> Identification rule -> scroll down to bottom and configure this. 

Screenshot 2025-09-15 at 4.09.45 PM.png

Regards, 

Pratiksha

Thanks, I will look into it.

But is it really the case that a year old multisource record really overwrites the CMDB value. Sounds strange. I have verified that CMDB value is retired, trigger Source B which has no mapping or no value of operational status, and the CI changes back to operational.

This happens if any data refresh rule has been configured.  Check if  any customisation has been done. 

We have no data refresh rules as of now

Cindy Trieu
ServiceNow Employee
ServiceNow Employee

Hi Tresselt,

 

We only pull data from cmdb_multisource_data records if you change your reconciliation records and do a Recompute. Otherwise, we don't re-read from those old records nor do we reuse the values. They are just for your visibility if you do not use them to recompute.

 

Do you have a business rule on that class which updates the operational status if it has been updated? Or perhaps some part of the Source B process updates that for you. I am not sure without delving into it more. I do not know if setting up a reconciliation rule will fix your issue if you are not sending the new value through IRE. Reconciliation rule only prevents another source from overriding the value at a later time if it also goes through IRE. IRE cannot prevent other scripts/business rules/sources not using IRE from overwriting the value.