Question:
The address associated with CARS is similar (with slight variation in address line 2) to existing location in Reltio. The address got cleansed and merged to existing location. This resulted into two issues.
-
After the cleansing the CARS address was exactly the same as that of existing address (location id 1OnWu3PB), this should have resulted in same surrogate key. So understanding is we should see an update event, but instead history shows that the new address was merged on the fly using the match rule.
-
The address that came from CARS went an updated the crosswalk at location level, but there was no change in the OV value. But this triggered all the associated entities like HCP to be published in the Q. e.g. b2X8M6J. Our understanding was that the associated HCP and HCO for which this address didn't come in shouldn't have been published in external Q. These are causing large events in the external Q. For this scenario when we did additional analysis, we see that although the address line 2 which came as SUITE 330 for CARS source after cleansing got standardized to STE 330 the associated HCP also shows an update even though this address was not at all associated with the HCP.
When we do a get on HCP we see that this value has been added as OV false, but under ref entity as expected we do not see any CARS crosswalk.
Verified the test tenant configuration and found that the surrogate crosswalks is defined in the tenant for source : IQVIA_MDM
"surrogateCrosswalks": [
{
"enforce": true,
"source": "configuration/sources/IQVIA_MDM",
"attributes": [
"configuration/entityTypes/Location/attributes/AddressLine1",
"configuration/entityTypes/Location/attributes/AddressLine2",
"configuration/entityTypes/Location/attributes/City",
"configuration/entityTypes/Location/attributes/StateProvince",
"configuration/entityTypes/Location/attributes/Country",
"configuration/entityTypes/Location/attributes/Zip/attributes/Zip5"
]
},
- The immutable sources are :
"immutableForSources": [
"configuration/sources/VA",
"configuration/sources/MMIT",
"configuration/sources/IMSPLAN",
"configuration/sources/ACO",
"configuration/sources/PACT",
"configuration/sources/IQVIA_MDM",
"configuration/sources/DDD",
"configuration/sources/VeevaCRM",
"configuration/sources/LAAD",
"configuration/sources/DRG",
"configuration/sources/OK",
"configuration/sources/HCOS",
"configuration/sources/IMSHCRS",
"configuration/sources/XPO"
],
- However, the attached file referring source is :
configuration/sources/CARS
which is not defined in the tenant as surrogatecrosswalks or immutableforsources.
ANSWER:
Only updates by the |same crosswalk (in case of surrogate crosswalk - same source is enough) is applicable for immutability.
As per doc portal,
If a new source data; that is, another crosswalk type or value, which does not exist in the referenced entity loads, then it’s added and the referenced entity updates as expected (with disabled immutable reference attributes).
So, here is the |new source type CARS loaded (it doesn’t exist in Location entity before) which is disabling immutability for this particular update.
The possible reason that Location was matched by the |match rule rather than by the surrogate crosswalk is the |inconsistency between fields in match rules and fields in the |surrogate crosswalk.
Match rule:
"rule": {
"exact": [
"configuration/entityTypes/Location/attributes/NewAddressLine1",
"configuration/entityTypes/Location/attributes/City",
"configuration/entityTypes/Location/attributes/StateProvince",
"configuration/entityTypes/Location/attributes/Zip/attributes/Zip5",
"configuration/entityTypes/Location/attributes/Country"
],
"exactOrAllNull": [
"configuration/entityTypes/Location/attributes/AddressLine2"
Surrogate crosswalk:
{
"enforce": true,
"source": "configuration/sources/CARS",
"attributes": [
"configuration/entityTypes/Location/attributes/AddressLine1",
"configuration/entityTypes/Location/attributes/AddressLine2",
"configuration/entityTypes/Location/attributes/City",
"configuration/entityTypes/Location/attributes/StateProvince",
"configuration/entityTypes/Location/attributes/Country",
"configuration/entityTypes/Location/attributes/Zip/attributes/Zip5"
]
},
Pay attention NewAddressLine1
versus AddressLine1
Summary:
- Make all surrogate crosswalks be aligned with match rules
- Don’t worry about events in the |queue for other entities because the |current case is edge case, described on Doc portal. It’s pretty rare. In most other cases when the Location is updated as a referenced attribute by the same crosswalk it would be immutable.
ADDITIONAL NOTES:
The tenant is configured as expected with surrogate key configuration and immutable property set to true. Following are the sequence of events that takes place in platform when an entity is loaded into Tenant with address as reference attribute.
- For the reference address if the end object (which is location), already exists in Reltio, platform checks if the Source already exists at the location.
- If the Location does not have the incoming source listed as crosswalk, platform would create a brand new location with surrogate key and then trigger a merge and immutable property is disabled. This would result in update of location and would trigger events for all the associated entities. This is done by design as platform needs to register this new crosswalk as an event.
- If the location has the incoming source listed as a crosswalk, and immutable is set to true, platform ignores the updates from the source. There would be no update to location and associated entity would not update either. The event that would exists at location in this case is Relationship create event between the incoming entity and the existing location. There wouldn't be any entity changed event for the associated entities.
CARS has been defined as surrogate.