The connectRelationsToDefaultCrosswalk Property
Learn about the the connectRelationsToDefaultCrosswalk property for the Relations API .
The operation explains the behavior of the connectRelationsToDefaultCrosswalk
property while creating relationships.
When a new relation is created by using the POST/relations
API with URIs for start and end objects (for example in UI) or using /entities
with a reference attribute, inconsistencies may appear because the relation may be created with empty crosswalks inside the startObject
and endObject
sections. If the connectRelationsToDefaultCrosswalk
property, which is available in the physical configuration, is enabled and you create a relation, the startObject
and endObject
sections are filled with the default crosswalks automatically.
A crosswalk with the source, which is equal to the value of the default crosswalk in the physical configuration (default value is Reltio
), and value=<entity_id>
is considered as the default crosswalk.
- A URI-URI relation is created
- Relation is created while posting an entity with a reference attribute
Important Points
- The default value of the
connectRelationsToDefaultCrosswalk
property istrue
. - The
connectRelationsToDefaultCrosswalk
property is not applicable when a relationCW-URI
orURI-CW
is created. - Any relations created before the
connectRelationsToDefaultCrosswalk
property is enabled are not automatically updated. They must be recreated or updated (activeness
parameter is not considered) to get default crosswalks. - If the
connectRelationsToDefaultCrosswalk
property is disabled, the content of the relation crosswalks is not removed. - If an entity that is a start or end object of a relation is updated after enabling the
connectRelationsToDefaultCrosswalk
property, the relation's start and end object crosswalks do not change.
Example - (Behavior of the Hub): Start (non-Default CW) + Relation (Default CW / URI-URI)+ End (non-Default CW)
Precondition
Create Start Object with the Non-Default Crosswalk
POST /entities
[
{
"type": "configuration/entityTypes/Account",
"attributes": {
"HierarchyLevel": [
{
"value": "Account002"
}
]
},
"crosswalks": [
{
"type": "configuration/sources/JDE",
"value": "Account002"
}
]
}
]
The result:
{
"uri": "entities/dDO1gYH",
"type": "configuration/entityTypes/Customer",
"createdBy": "reltiouser",
"createdTime": 1594216127472,
"updatedBy": "reltioUser",
"updatedTime": 1594216127472,
"attributes": {
"Source": [
{
"type": "configuration/entityTypes/Customer/attributes/Source",
"ov": false,
"value": "Customer002",
"uri": "entities/dDO1gYH/attributes/Source/1avhZLJO9"
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/dDO1gYH/crosswalks/1avhZLNeP",
"type": "configuration/sources/JDE",
"value": "Customer002",
"reltioLoadDate": "2020-07-08T13:48:47.472Z",
"createDate": "2020-07-08T13:48:47.472Z",
"updateDate": "2020-07-08T13:48:47.472Z",
"attributes": [
"entities/dDO1gYH/attributes/Source/1avhZLJO9"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {},
"label": "| | | Customer002",
"secondaryLabel": ""
}
Create End Object with the Non-Default Crosswalk
POST /entities
[
{
"type": "configuration/entityTypes/Customer",
"attributes": {
"Source": [
{
"value": "Customer002"
}
]
},
"crosswalks": [
{
"type": "configuration/sources/JDE",
"value": "Customer002"
}
]
}
]
The result:
{
"uri": "entities/dDO1koX",
"type": "configuration/entityTypes/Account",
"createdBy": "reltioUser",
"createdTime": 1594216127472,
"updatedBy": "reltioUser",
"updatedTime": 1594216127472,
"attributes": {
"HierarchyLevel": [
{
"type": "configuration/entityTypes/Account/attributes/HierarchyLevel",
"ov": true,
"value": "Account002",
"uri": "entities/dDO1koX/attributes/HierarchyLevel/1avhZLRuf"
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/dDO1koX/crosswalks/1avhZLWAv",
"type": "configuration/sources/JDE",
"value": "Account002",
"reltioLoadDate": "2020-07-08T13:48:47.472Z",
"createDate": "2020-07-08T13:48:47.472Z",
"updateDate": "2020-07-08T13:48:47.472Z",
"attributes": [
"entities/dDO1koX/attributes/HierarchyLevel/1avhZLRuf"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {},
"label": "| | Account002 |",
"secondaryLabel": ""
}
Default Behavior
The Hub sends the IGNORE
request for the reference attribute instead of DELETE
.
Create a relation with the default crosswalk by using the object URI in the startObject
and endObject
sections as follows:
POST /relations
[
{
"type": "configuration/relationTypes/AccountToCustomer",
"startObject": {
"objectURI": "entities/dDO1koX"
},
"endObject": {
"objectURI": "entities/dDO1gYH"
}
}
]
The result:
{
"uri": "relations/VjNaLeN",
"type": "configuration/relationTypes/AccountToCustomer",
"createdBy": "reltioUser",
"createdTime": 1594219291706,
"updatedBy": "reltioUser",
"updatedTime": 1594219291706,
"startRefPinned": false,
"startRefIgnored": false,
"endRefPinned": false,
"endRefIgnored": false,
"attributes": {},
"crosswalks": [
{
"uri": "relations/VjNaLeN/crosswalks/1H8V87Ybb",
"type": "configuration/sources/Reltio",
"value": "VjNaLeN",
"reltioLoadDate": "2020-07-08T14:41:31.706Z",
"createDate": "2020-07-08T14:41:31.706Z",
"updateDate": "2020-07-08T14:41:31.706Z",
"attributes": [],
"singleAttributeUpdateDates": {}
}
],
"startObject": {
"type": "configuration/entityTypes/Account",
"objectURI": "entities/dDO1koX",
"label": "| | Account002 |",
"directionalLabel": "Parent",
"crosswalks": []
},
"endObject": {
"type": "configuration/entityTypes/Customer",
"objectURI": "entities/dDO1gYH",
"label": "| | |",
"directionalLabel": "Child",
"crosswalks": []
}
}
The modified object is shown below.
GET /entities/dDO1gYH/?options=sendHidden,addRefAttrUriToCrosswalk
{
"uri": "entities/dDO1gYH",
"type": "configuration/entityTypes/Customer",
"createdBy": "reltioUser",
"createdTime": 1594216127472,
"updatedBy": "reltioUser",
"updatedTime": 1594219538050,
"attributes": {
"Source": [
{
"type": "configuration/entityTypes/Customer/attributes/Source",
"ov": false,
"value": "Customer002",
"uri": "entities/dDO1gYH/attributes/Source/1avhZLJO9"
}
],
"HierarchyParent": [
{
"label": "| | Account002 |",
"relationshipLabel": "Account002",
"value": {
"HierarchyLevel": [
{
"type": "configuration/entityTypes/Account/attributes/HierarchyLevel",
"ov": true,
"value": "Account002",
"uri": "entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN/HierarchyLevel/1avhZLRuf"
}
]
},
"ov": true,
"uri": "entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN",
"refEntity": {
"type": "configuration/entityTypes/Account",
"crosswalks": [
{
"uri": "entities/dDO1gYH/crosswalks/dDO1koX.1avhZLWAv",
"type": "configuration/sources/JDE",
"value": "Account002",
"createDate": "2020-07-08T13:48:47.472Z",
"updateDate": "2020-07-08T13:48:47.472Z",
"attributeURIs": [
"entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN/HierarchyLevel/1avhZLRuf",
"entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN"
]
}
],
"objectURI": "entities/dDO1koX"
},
"refRelation": {
"type": "configuration/relationTypes/AccountToCustomer",
"crosswalks": [
{
"uri": "entities/dDO1gYH/crosswalks/VjNaLeN.1H8V87Ybb",
"type": "configuration/sources/Reltio",
"value": "VjNaLeN",
"createDate": "2020-07-08T14:41:31.706Z",
"updateDate": "2020-07-08T14:41:31.706Z"
}
],
"startRefPinned": false,
"endRefPinned": false,
"startRefIgnored": false,
"endRefIgnored": false,
"objectURI": "relations/VjNaLeN"
}
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/dDO1gYH/crosswalks/1avhZLNeP",
"type": "configuration/sources/JDE",
"value": "Customer002",
"reltioLoadDate": "2020-07-08T13:48:47.472Z",
"createDate": "2020-07-08T13:48:47.472Z",
"updateDate": "2020-07-08T13:48:47.472Z",
"attributes": [
"entities/dDO1gYH/attributes/Source/1avhZLJO9",
"entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {},
"label": "| | |",
"secondaryLabel": ""
}
The response below with addRefAttrUriToCrosswalk
option shows that the reference attribute (when crosswalks for start and end objects of the relation are empty) is assigned to the main crosswalk of the entity and it is the non-default crosswalk (in this case JDE).
GET /entities/dDO1gYH/?options=sendHidden,addRefAttrUriToCrosswalk
{
"uri": "entities/dDO1gYH",
"type": "configuration/entityTypes/Customer",
...
"attributes": {
...
"HierarchyParent": [
{
"uri": "entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN",
...
}
]
},
"crosswalks": [
{
"type": "configuration/sources/JDE",
"value": "Customer002",
...
"attributes": [
...
"entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN"
]
}
]
}
In this case (Reference attribute is linked to the non-Reltio crosswalk), the Hub sends the IGNORE_ATTRIBUTE
request.
[
{
"type": "IGNORE_ATTRIBUTE",
"uri": "entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN",
"newValue": {
"value": true
}
}
]
Changed Behavior
The connectRelationsToDefaultCrosswalk
property if set to true
, changes the result of the creation of relations.
To set the connectRelationsToDefaultCrosswalk
property to true
, contact Reltio Customer Support.
Create a relation with the default crosswalk by using the object URI in the startObject
and endObject
sections as follows:
POST /relations
[
{
"type": "configuration/relationTypes/AccountToCustomer",
"startObject": {
"objectURI": "entities/dDO1koX"
},
"endObject": {
"objectURI": "entities/dDO1gYH"
}
}
]
The result (with new behavior):
{
"uri": "relations/YhBFKzV",
"type": "configuration/relationTypes/AccountToCustomer",
"createdBy": "reltioUser",
"createdTime": 1594220685086,
"updatedBy": "reltioUser",
"updatedTime": 1594220685086,
"startRefPinned": false,
"startRefIgnored": false,
"endRefPinned": false,
"endRefIgnored": false,
"attributes": {},
"crosswalks": [
{
"uri": "relations/YhBFKzV/crosswalks/1avi6wVeH",
"type": "configuration/sources/Reltio",
"value": "YhBFKzV",
"reltioLoadDate": "2020-07-08T15:04:45.086Z",
"createDate": "2020-07-08T15:04:45.086Z",
"updateDate": "2020-07-08T15:04:45.086Z",
"attributes": [],
"singleAttributeUpdateDates": {}
}
],
"startObject": {
"type": "configuration/entityTypes/Account",
"objectURI": "entities/dDO1koX",
"label": "| | Account002 |",
"directionalLabel": "Parent",
"crosswalks": [
{
"uri": "entities/dDO1koX/crosswalks/1avi6wZuX",
"type": "configuration/sources/Reltio",
"value": "dDO1koX",
"reltioLoadDate": "2020-07-08T15:04:45.086Z",
"createDate": "2020-07-08T15:04:45.086Z",
"updateDate": "2020-07-08T15:04:45.086Z",
"attributes": [],
"singleAttributeUpdateDates": {}
}
]
},
"endObject": {
"type": "configuration/entityTypes/Customer",
"objectURI": "entities/dDO1gYH",
"label": "| | |",
"directionalLabel": "Child",
"crosswalks": [
{
"uri": "entities/dDO1gYH/crosswalks/1avi6weAn",
"type": "configuration/sources/Reltio",
"value": "dDO1gYH",
"reltioLoadDate": "2020-07-08T15:04:45.086Z",
"createDate": "2020-07-08T15:04:45.086Z",
"updateDate": "2020-07-08T15:04:45.086Z",
"attributes": [],
"singleAttributeUpdateDates": {}
}
]
}
}
In this case, the startObject
and endObject
are filled not only with the objectURI
but also with the crosswalk
section. And the crosswalk
sections in both start and end objects, are filled with the default crosswalk (in this case, it is Reltio).
The modified object is shown below.
GET /entities/dDO1gYH/?options=sendHidden,addRefAttrUriToCrosswalk
{
"uri": "entities/dDO1gYH",
"type": "configuration/entityTypes/Customer",
"createdBy": "reltioUser",
"createdTime": 1594216127472,
"updatedBy": "reltioUser",
"updatedTime": 1594220685086,
"attributes": {
"Source": [
{
"type": "configuration/entityTypes/Customer/attributes/Source",
"ov": false,
"value": "Customer002",
"uri": "entities/dDO1gYH/attributes/Source/1avhZLJO9"
}
],
"HierarchyParent": [
{
"label": "| | Account002 |",
"relationshipLabel": "Account002",
"value": {
"HierarchyLevel": [
{
"type": "configuration/entityTypes/Account/attributes/HierarchyLevel",
"ov": true,
"value": "Account002",
"uri": "entities/dDO1gYH/attributes/HierarchyParent/YhBFKzV/HierarchyLevel/1avhZLRuf"
}
]
},
"ov": true,
"uri": "entities/dDO1gYH/attributes/HierarchyParent/YhBFKzV",
"refEntity": {
"type": "configuration/entityTypes/Account",
"crosswalks": [
{
"uri": "entities/dDO1gYH/crosswalks/dDO1koX.1avhZLWAv",
"type": "configuration/sources/JDE",
"value": "Account002",
"createDate": "2020-07-08T13:48:47.472Z",
"updateDate": "2020-07-08T13:48:47.472Z",
"attributeURIs": [
"entities/dDO1gYH/attributes/HierarchyParent/YhBFKzV",
"entities/dDO1gYH/attributes/HierarchyParent/YhBFKzV/HierarchyLevel/1avhZLRuf"
]
},
{
"uri": "entities/dDO1gYH/crosswalks/dDO1koX.1avi6wZuX",
"type": "configuration/sources/Reltio",
"value": "dDO1koX",
"createDate": "2020-07-08T15:04:45.086Z",
"updateDate": "2020-07-08T15:04:45.086Z"
}
],
"objectURI": "entities/dDO1koX"
},
"refRelation": {
"type": "configuration/relationTypes/AccountToCustomer",
"crosswalks": [
{
"uri": "entities/dDO1gYH/crosswalks/YhBFKzV.1avi6wVeH",
"type": "configuration/sources/Reltio",
"value": "YhBFKzV",
"createDate": "2020-07-08T15:04:45.086Z",
"updateDate": "2020-07-08T15:04:45.086Z"
}
],
"startRefPinned": false,
"endRefPinned": false,
"startRefIgnored": false,
"endRefIgnored": false,
"objectURI": "relations/YhBFKzV"
},
"startObjectCrosswalks": [
{
"type": "configuration/sources/Reltio",
"value": "dDO1koX"
}
],
"endObjectCrosswalks": [
{
"type": "configuration/sources/Reltio",
"value": "dDO1gYH",
],
"singleAttributeUpdateDates": {}
}
]
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/dDO1gYH/crosswalks/1avhZLNeP",
"type": "configuration/sources/JDE",
"value": "Customer002",
"reltioLoadDate": "2020-07-08T13:48:47.472Z",
"createDate": "2020-07-08T13:48:47.472Z",
"updateDate": "2020-07-08T13:48:47.472Z",
"attributes": [
"entities/dDO1gYH/attributes/Source/1avhZLJO9"
],
"singleAttributeUpdateDates": {}
},
{
"uri": "entities/dDO1gYH/crosswalks/1avi6weAn",
"type": "configuration/sources/Reltio",
"value": "dDO1gYH",
"reltioLoadDate": "2020-07-08T15:04:45.086Z",
"createDate": "2020-07-08T15:04:45.086Z",
"updateDate": "2020-07-08T15:04:45.086Z",
"attributes": [
"entities/dDO1gYH/attributes/HierarchyParent/YhBFKzV"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {},
"label": "| | |",
"secondaryLabel": ""
}
The response below with the addRefAttrUriToCrosswalk
option shows that the reference attribute (when the relation has both start and end object crosswalks) is assigned to the default (Reltio) crosswalk of the entity and the value of the crosswalk is the entity ID dDO1gYH
.
GET /entities/dDO1gYH/?options=sendHidden,addRefAttrUriToCrosswalk
{
"uri": "entities/dDO1gYH",
"type": "configuration/entityTypes/Customer",
...
"attributes": {
...
"HierarchyParent": [
{
"uri": "entities/dDO1gYH/attributes/HierarchyParent/VjNaLeN",
...
}
]
},
"crosswalks": [
{
"type": "configuration/sources/Reltio",
"value": "dDO1gYH",
...
"attributes": [
"entities/dDO1gYH/attributes/HierarchyParent/YhBFKzV"
]
}
]
}
In this case (Reference attribute is linked to the non-Reltio crosswalk), the Hub sends the DELETE_ATTRIBUTE
request.
[
{
"type": "DELETE_ATTRIBUTE",
"uri": "entities/dDO1gYH/attributes/HierarchyParent/YhBFKzV",
"crosswalk": {
"type": "configuration/sources/Reltio",
"value": "dDO1gYH"
}
}
]