Updating attribute values from multiple sources into CMDB
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-17-2017 11:16 PM
Hi All,
I have a requirement where in some attributes of a class like Serial Number & MAC has should have higher precedence for Source A whereas some other attributes like RAM or OS higher precdence from Source B and few other attributes from source C. As precedence works on class level and not attribute level and I need all the sources should be authorized to update the attributes but based on precedence so can anyone please help me with any work around to achieve this?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-18-2017 07:43 AM
This is interesting!
Lets take for example the MAC address, let's say you want SCCM to have precedence over SolarWinds.
I would go to the SCCM Data Source Transform Map and map it directly with a field map, so that it always updates.
Then I would go to the SolarWinds Data Source Transform Map and remove the field map, and create an onBefore Transform Script that would only update the field if it was empty, like this
//Attributes that should only be updated by this source if they are empty, things like MAC Address and Serial Number
if(target.serial_number.nil()){target.serial_number = source.u_serial;}
if(target.mac_address.nil()){target.mac_address = source.u_physical_address;}
As you see, if there are several attributes that the source does not have preference over, you can put them all in a single Transform Script.
This would help you make sure that if the MAC Address has a different discovery value from SCCM and SolarWinds, you would always see the SCCM value.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-18-2017 09:20 PM
Hi William Sun,
Thanks for the reply. But I was rather checking any OOB way is there through which we can set attribute level precedence for data coming from multiple sources.
Even the above workaround holds good when we have 2 sources but in a case where we have 3 or more sources I was wondering in that case how to do we handle
Say for Mac SCCM has highest precedence attribute level followed by Tivoli followed by Altiris.
So even if record has MAC value which got updated by Altiris when new Mac value comes in from Tivoli it should replace Altiris and when SCCM comes in it should replace Tivoli..Like this I will have various permutation and combination for different attributes for data coming in different sources.
Just wondering if any OOB way is there to achieve attribute level precedence for different sources for a class
Rgds
Nivedita

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-19-2017 09:34 AM
Well, if there is an out of the box "preferrence order" for the update sources per class, I don't know it.
If you wanted to develop it yourself, you might need to (a) create either an extra field for each of these attributes to track "what tool updated it last" and then script the priority into your Transform Script, or (b) create a m2m table where you track what source updated what record and field last, and based on the last entry that coalesces on all three, decide if the attribute should be updated or not based on your scripted rules.
My $0.02
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-06-2017 02:13 PM
Hello William, you stated that we should un-map the mapped fields on the 2nd data source and create the onBefore script to populate those fields only if they are not populated by the primary source correct? So if I un-map those fields from my transform map then the script will take care of the data population correct?