Why is the relations value in the start object entity incorrecly defined as an OV:false in the end object; while the start object entity has contains the correct OV value definition of true?

Question

 

When stepping through the history of an entity, it's crucial to note that an attribute, which is present in the current view, is not shown in the history steps. This discrepancy is significant as it affects the overall functionality of the system. Upon further investigation, I discovered that the PK_Person attribute returned by the API call is set to ov:false, which explains why the UI is not displaying it. This unexpected behavior raises the question: why is the API flipping this to false when nothing in that entity shows that it was ever false?

 

Answer

Two entities were created with PK_Person relationship..  However, the relationship in the Profile entity was defined incorrectly with an OV:false value.


Root cause
 
"Person" entity 0UHyR2z - Result of creation
 

"uri": "entities/0UHyR2z",
"type": "configuration/entityTypes/Person",
"createdBy": "SVC_Reltio_nonPrd",
"createdTime": 1718816304203,
"updatedBy": "SVC_Reltio_nonPrd",
"updatedTime": 1718816304203,
"attributes": {
"PK_Person": [
{
"type": "configuration/entityTypes/Person/attributes/PK_Person",
"ov": true, <<<<<==========
"value": "246558414",
"uri": "entities/0UHyR2z/attributes/PK_Person/2T4pW3ZV"
}
]

 
"Profile" entity 0UHyZZV Result of creation
 
The fact that the Profile entity contained a PK_Person with an OV=false at the time of the creation is why we no longer see the PK_Person as we move back through history.  
 

"uri": "entities/0UHyZZV",
"type": "configuration/entityTypes/Profile",
"createdBy": "SVC_Reltio_nonPrd",
"createdTime": 1718816304203,
"updatedBy": "SVC_Reltio_nonPrd",
"updatedTime": 1718816304203,
"attributes": {
"Person": [
{
"label": "- - CRM Contact - Is DS: false",
"relationshipLabel": "-",
"value": {
"PK_Person": [
{
"type": "configuration/entityTypes/Person/attributes/PK_Person",
"ov": false, <<<<<<<<=========
"value": "246558414",
"uri": "entities/0UHyZZV/attributes/Person/0Lp4dEb/PK_Person/2T4pW3ZV"
}
]
  • Let's look at the L3 configuration for the Person attribute. Pay particular attention to the referenceAttributeURIs definition.
{
"label": "Person",
"name": "Person",
"description": "Person of the profile.",
"type": "Reference",
"hidden": false,
"important": false,
"system": false,
"faceted": true,
"searchable": true,
"relationshipLabelPattern": "[{FirstName}][ {LastName}] [ - {ProfileID}][ - {ProfileType}] - {ProfileStatus}",
"attributeOrdering": {
"fieldURI": "configuration/entityTypes/Person/attributes/PK_Person",
"orderType": "ASC",
"orderingStrategy": "FieldBased"
},
"uri": "configuration/entityTypes/Profile/attributes/Person",
"referencedAttributeURIs": [
"configuration/entityTypes/Person/attributes/PK_LegacyProfile",
"configuration/entityTypes/Person/attributes/PK_Person", 
"configuration/entityTypes/Person/attributes/Phone",
"configuration/entityTypes/Person/attributes/Email",
"configuration/entityTypes/Person/attributes/Addresses",
"configuration/entityTypes/Person/attributes/IsDS",
"configuration/entityTypes/Person/attributes/ProfileTypeIdentifiers",
"configuration/entityTypes/Person/attributes/PriorityType",
"configuration/entityTypes/Person/attributes/FirstName",
"configuration/entityTypes/Person/attributes/LastName"
],
"immutable": false,
"referencedEntityTypeURI": "configuration/entityTypes/Person",
"relationshipTypeURI": "configuration/relationTypes/PersonToProfile",
"referenceAttributeDirection": "both",
"skipInDataAccess": false
},

  • You will notice that the following attributes are not defined.  Keep in mind that PersonStatus is used in the survivorship of the PK_Person in the OtherAttributeWinnerCrosswalk.

 

"configuration/entityTypes/Person/attributes/PersonStatus",
"configuration/entityTypes/Person/attributes/CreatedUTC"

 

{
"attribute": "configuration/entityTypes/Person/attributes/PK_Person",
"primaryAttributeUri": "configuration/entityTypes/Person/attributes/PersonStatus",
"fallbackStrategies": [
{
"attribute": "configuration/entityTypes/Person/attributes/PK_Person",
"primaryAttributeUri": "configuration/entityTypes/Person/attributes/CreatedUTC",
"fallbackStrategies": [
{
"attribute": "configuration/entityTypes/Person/attributes/PK_Person",
"survivorshipStrategy": "MinValue"
}
],
"fallbackUsingCriteria": "MORE_THAN_ONE",
"survivorshipStrategy": "OtherAttributeWinnerCrosswalk"
}
],
"fallbackUsingCriteria": "MORE_THAN_ONE",
"survivorshipStrategy": "OtherAttributeWinnerCrosswalk"
},

 
Please make the following change in  your L3.
 

{
"label": "Person",
"name": "Person",
"description": "Person of the profile.",
"type": "Reference",
"hidden": false,
"important": false,
"system": false,
"faceted": true,
"searchable": true,
"relationshipLabelPattern": "[{FirstName}][ {LastName}] [ - {ProfileID}][ - {ProfileType}] - {ProfileStatus}",
"attributeOrdering": {
"fieldURI": "configuration/entityTypes/Person/attributes/PK_Person",
"orderType": "ASC",
"orderingStrategy": "FieldBased"
},
"uri": "configuration/entityTypes/Profile/attributes/Person",
"referencedAttributeURIs": [
"configuration/entityTypes/Person/attributes/PK_LegacyProfile",
"configuration/entityTypes/Person/attributes/PK_Person", 
"configuration/entityTypes/Person/attributes/PersonStatus", <<<<=======
"configuration/entityTypes/Person/attributes/CreatedUTC" <<<<<=======
"configuration/entityTypes/Person/attributes/Phone",
"configuration/entityTypes/Person/attributes/Email",
"configuration/entityTypes/Person/attributes/Addresses",
"configuration/entityTypes/Person/attributes/IsDS",
"configuration/entityTypes/Person/attributes/ProfileTypeIdentifiers",
"configuration/entityTypes/Person/attributes/PriorityType",
"configuration/entityTypes/Person/attributes/FirstName",
"configuration/entityTypes/Person/attributes/LastName"
],
"immutable": false,
"referencedEntityTypeURI": "configuration/entityTypes/Person",
"relationshipTypeURI": "configuration/relationTypes/PersonToProfile",
"referenceAttributeDirection": "both",
"skipInDataAccess": false
},

While a reindex should be performed this L3 change, it will not resolve the historical record of the Profile entity. Wecan't change the stored history of existing entities as it is stored in secondary storage and cannot be overwritten. However, we will be able to fix the L3 configuration so that the OV calculation for PK_PERSON in the profile entity types will be applied correctly for new entities moving forward.
 

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.