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.
Comments
Please sign in to leave a comment.