Accelerate the Value of Data

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.

This property is applicable when:
  • 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 is true.
  • The connectRelationsToDefaultCrosswalk property is not applicable when a relation CW-URI or URI-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"
    }
  }
]