Question
We have observed many profiles whose DTSS sync is not happening properly. Considering the HCP entity '10q5Z0Pr', the HCP has a relation tagged to it whose:
Relation URI -SrSZea8
Relation Type -has address
This relation is contributed by the source 'DT: IMS OneKey' (Data Tenant). However, in Data Tenant this relation is inactive. Which means, the inactivation has not yet reached the Client Tenant. We tried the re-syncing API to refresh the data from Data Tenant to Client Tenant, which did not make any positive impact.
Answer
- DT relation 'EB1u9mA' is subscribed to CT relation 'SrSZea8'
- DT relation 'EB1u9mA' has endObject entity as 'dL2DQU4'
- CT relation 'SrSZea8' has endObject entity as 'NErg8EG'
- That means DT entity 'dL2DQU4' must be subscribed to CT entity 'NErg8EG'. (subscription rule: "IMPORT_IF_ENTITIES_SUBSCRIBED")
- But the DT entity 'dL2DQU4' is not considered to be subscribed to CT entity 'NErg8EG'.
- Because CT entity 'NErg8EG' is missing the crosswalk.
- DTSS considers a crosswalk as the golden record crosswalk if the crosswalk's value is equal to the DT entity's URI, which is "entities/dL2DQU4" in this case.
- But the CT entity 'NErg8EG' crosswalk value is "662df7e2dccf33aff848686bfb2af464"
- So DTSS could not find the subscribed endObject entity in CT for the DT relation. And relation sync does not happen.
====================================================================
There are two connection options that you can chose in replacing IMPORT_IF_ENTITIES_SUBSCRIBED.
Remember that "connections" describes the connections to be imported to the CT along with current entity.
Your Current Setting is IMPORT_IF_ENTITIES_SUBSCRIBED- this is when CT is subscribed on DT relation's and you must both the startEntity and endEntity entities. This is the most restrictive rule.
Alternatives Settings:
Setting 1 (slightly less restrictive)
IMPORT_IF_START_ENTITY_SUBSCRIBED- this is when CT is subscribed on at least DT relation's startEntity entity.
"Managed" is a bidirectional relationship, so from the user's point of view there is no difference between startObject and endObject, but DTSS always checks who is startObject, who is endObject and decides to import relation or not according to current strategy.
Example:
Case 1: HCO1(startObject) -> Managed -> (endObject)HCO3
Case 2: HCO3(startObject) -> Managed -> (endObject)HCO1
The only difference between these cases - how relation was created - from HCO1 to HCO3 or from HCO3 to HCO1. We import HCO1, HCO3 won't be imported as reference entity, so we may need to import it using "connections".
Case 1 will work because HCO1 exists in CT and startObject in relation, but case 2 will not work because startObject is HCO3 and not exist in CT.
If you configure IMPORT_IF_START_ENTITY_SUBSCRIBED for relation types(HasAddress
). Then only location entity will be created if it is not present in CT.
For example:
- DT has HCP entity hcp1 and loc1. CT does not have any entity.
- In DT we created a relation rel1 for hcp1 and loc1. This will fire a relationCreated event.
- In subscription relationCreated event active. So, DTSS will process the relationCreated event and try to import the rel1 to CT.
- While importing rel1 relation, DTSS checks the importRelationsConfig(IMPORT_IF_START_ENTITY_SUBSCRIBED) and import the rel1 and loc1 to CT .
IMPORT_IF_END_ENTITY_SUBSCRIBED - This is when only if CT is subscribed on at least DT relation's endEntity entity.
Setting 2: Least restrictive
The "ALL" strategy will create a relation in any case - no matter start or end objects exist or not. This means that it will import the relation and import start/end entities if entities are not present in CT.
For example:
- DT has HCP entity hcp1 and hcp2. CT does not have any entity.
- In DT we created a relation rel1 for hcp1 and hcp2. This will fire a relationCreated event.
- In subscription relationCreated event active. So, DTSS will process the relationCreated event and try to import the rel1 to CT.
- While importing rel1 relation, DTSS checks the importRelationsConfig and import the rel1, hcp1, and hcp2 to CT .
====================================================================
Use Case:
Consider HCP1, REL1 and LOC1 is present in DT and NOT present in CT. Does an update for REL1 in DT will cause HCP1, REL1 and LOC1 to flow to CT? Note the point that HCP1, REL1 and LOC1 is currently not present in CT.
HCP1, REL1, and LOC1 will flow to the CT if we apply the ALL strategy. When we have IMPORT_IF_START_ENTITY_SUBSCRIBED -- DTSS checks if the start entity (HCP1) is subscribed or not.
- If HCP1 is subscribed then REL1 will sync to CT along with LOC1 (if not present).
- Else(HCP1 is not subscribed) there will be no sync at all.
Comments
Please sign in to leave a comment.