Reconciliation Rule to prevent update unless field empty

jdiegeliv
Mega Expert

Hello, I would like to prevent Discovery from updating a field if the field has already been populated.  There are multiple sources and I really don't care who populated the field if there is already a value. 

I created a Reconciliation Rule with Discovery as the Source, priority 1, with the field selected in the attributes, and a filter condition where the field is empty.  

Will that do the trick or is that going to create a scenario where no other source can not update it?  Do I need to add all the other possible sources to the rule even though the only factor I'm concerned about is if the field is populated.

 

Thank you.

1 ACCEPTED SOLUTION

 

you have to setup reconciliation rules .

rule 1

discovery source:- SG-SCCM

priority :-1

attributes- description // you can select multiple

 

rule 2 

discovery source:- SG-Intune

priority :-2

attributes- description //can select multiple

 

Create Data  refresh rule 

discovery source :- SG-SCCM

days:- 5000

 

After creation,

first run the SG-SCCM data source.

and then SG-INTUNE

 

you will notice SG-intune will not update the attributes example here for 5000 days- "description"

why 5000?

logic behind reconciliation is that whenever data passes through IRE, an entry for each CIs attribute is created in cmdb_datasource_last_update table.

So whenever the IRE runs ,reconciliation checks data source and last updated time of the attribute and according to that second data source priority updates/not update it as per data refresh rules.

Example:-

description was updated by SG-SCCM today , so from 5000 days from today (if its still stale till that time) SG-INTUNE will update this field.

and since your SG-SCCM will run on weekly/monthly basis  , the description field will always be up to date and second priority INTUNE data source will never have chance to update this.

SG-INTUNE will create CIs as it does.

Reconciliation is for updation.

 

If it works for you please mark answer as correct or let me know in case of issues.

 

Regards,
Anshu

View solution in original post

6 REPLIES 6

Anshu_Anand_
Kilo Sage
Kilo Sage

So if you create a priority that discovery will update it as number 1,then

you need to define other data sources as well which are passing via IRE and give them priority.

If your all cmdb sources passes via IRE engine then please mention all the rules.

If its getting updated via other sources/manually, then reconciliation wont work.

reconciliation works only if cmdb payload passes through IRE .

 

Now stopping someone to edit that field manually needs read-only access to that field.

At the end you have to identify each data sources which is updating it.

 

In my case there was a field coming via discovery and 3rd party database so i had to ignore that field in transform map for that field. so discovery was only updating it.

Later on i made all my data sources 4(altiris,sepm,discovery,solarwinds) via IRE engine.

I used IntegrationHUB ETL for cmdb.

 

Hope this is helpful.

Regards,
Anshu

Satheesh Kumar1
Tera Contributor

Hi Anshu,

Thanks for your response. But i have a scenario and lets take an example of "Description" field. i don't want the SG-Intune to update this field but SG-SCCM should update this field always as that has the correct value. In addition to this, SG-Intune can create new records but it should not update the "Description" field. Hence how can i create a rule to just exclude the data from one source (Intune) and it should continue to update the field from another source(SCCM)?

 

you have to setup reconciliation rules .

rule 1

discovery source:- SG-SCCM

priority :-1

attributes- description // you can select multiple

 

rule 2 

discovery source:- SG-Intune

priority :-2

attributes- description //can select multiple

 

Create Data  refresh rule 

discovery source :- SG-SCCM

days:- 5000

 

After creation,

first run the SG-SCCM data source.

and then SG-INTUNE

 

you will notice SG-intune will not update the attributes example here for 5000 days- "description"

why 5000?

logic behind reconciliation is that whenever data passes through IRE, an entry for each CIs attribute is created in cmdb_datasource_last_update table.

So whenever the IRE runs ,reconciliation checks data source and last updated time of the attribute and according to that second data source priority updates/not update it as per data refresh rules.

Example:-

description was updated by SG-SCCM today , so from 5000 days from today (if its still stale till that time) SG-INTUNE will update this field.

and since your SG-SCCM will run on weekly/monthly basis  , the description field will always be up to date and second priority INTUNE data source will never have chance to update this.

SG-INTUNE will create CIs as it does.

Reconciliation is for updation.

 

If it works for you please mark answer as correct or let me know in case of issues.

 

Regards,
Anshu

I used this approach for my field with the only tweak being a filter I put on the pri-2 rule where field was not empty.