enableNestedPartialOverride option
Learn about the enableNestedPartialOverride option for updating an entity.
enableNestedPartialOverride
option changes the current default behavior when you update nested attributes in an entity with the Entities. Instead of deleting existing nested values, this option appends new nested values for a partial override. Tenant: set this in the physical configuration to apply globally across your tenant.
You may have difficulties with updates for nested attributes because you are unable to do partial overrides for specific nested attributes values from any particular source system. For example, if Source System A has previously loaded 10 phone numbers and as part of the single update request, this source system wants to update one of the 10 phone numbers and add a new one. Currently, there is no way for you to do this without a full reload of 10 phone numbers plus one new phone number for Source System A. If you use the partial override bypassing two phone numbers, one to update and another to add, then, as per the current behavior, the existing 10 phones numbers are wiped out, and two new phones numbers are added to the profile.
Nested attribute: set this in the business configuration for more control over specific attributes.
If you don't define this option at the attribute level, the API uses the tenant level configuration as a backup, providing flexibility in managing nested attribute. For more information, see topic Attributes configuration
The enableNestedPartialOverride option works only when you set the partialOverride option in the Entities. For more information, see topic Partial overrides.
It only aplies to the first level of sub-attributes.
Set this option to true or false, as shown:
{
"tenantId": "YourTenantId",
...
"enableNestedPartialOverride": true
}
Use Cases
This is an example of a Nested attribute phone:
Name | Phone Type | Phone Country | Phone Number |
John Smith | Business | USA | 347-534-8234 |
John Smith | Home | USA | 244-344-5931 |
John Smith | Personal | USA | 513-879-4208 |
Append
The following is an example of adding a row to the nested attribute phone. There, you must set up enableNestedPartialOverride
in the physical configuration or attribute configuration in L3
POST /entities?options=partialOverride
BODY
Name | Phone Type | Phone Country | Phone Number |
John Smith | Travel | USA | 347-534-8234 |
The result should be:
Name | Phone Type | Phone Country | Phone Number |
John Smith | Business | USA | 347-534-8234 |
John Smith | Home | USA | 244-344-5931 |
John Smith | Personal | USA | 513-879-4208 |
John Smith | Travel | USA | 347-534-8234 |
Update
Case 1
Update an existing row in your nested attribute.
First, you need to set up enableNestedPartialOverride
in the physical configuration or attribute configuration in L3, and then you need to setup keyAttributeURIs
in the business configuration:
"keyAttributeURIs": [
"configuration/entityTypes/Person/attributes/Phone/attributes/Name",
"configuration/entityTypes/Person/attributes/Phone/attributes/PhoneType"
]
POST /entities?options=partialOverride with nested URI
BODY
Name | Phone Type | Phone Country | Phone Number |
John Smith | Business | Germany | 555-555-5555 |
In this case, an exact row with two fields for Name and Phone Type are located and updated, as shown in this example:
Name | Phone Type | Phone Country | Phone Number |
John Smith | Business | Germany | 555-555-5555 |
John Smith | Home | USA | 244-344-5931 |
John Smith | Personal | USA | 513-879-4208 |
Case 2
You can create a hidden attribute to use it as a primary key and manage its values.
ID | Name | Phone Type | Phone Country | Phone Number |
1 | John Smith | Business | USA | 347-534-8234 |
2 | John Smith | Home | USA | 244-344-5931 |
3 | John Smith | Personal | USA | 513-879-4208 |
This is an example for keyAttributeURIs
:
"keyAttributeURIs": [
"configuration/entityTypes/Person/attributes/Phone/attributes/ID"
]
POST /entities?options=partialOverride with nested URI
BODY
ID | Name | Phone Type | Phone Country | Phone Number |
2 | John A Smith | Home Mobile | USA | 777-777-7777 |
In this case, there is an exact row by ID for which an update can be made, as shown in the following:
ID | Name | Phone Type | Phone Country | Phone Number |
1 | John Smith | Business | USA | 347-534-8234 |
2 | John A Smith | Home Mobile | USA | 777-777-7777 |
3 | John Smith | Personal | USA | 513-879-4208 |
Full Row Update
POST /entities?options=partialOverride&preserveURIs
BODY
BODY
is with a URI such as "entities/0001L5U/attributes/Person/1n5QlE/Phone/9Bkdgy"
, which points to the first row.
Name | Phone Type | Phone Country | Phone Number |
John A Smith | Business Mobile | Germany | 999-999-9999 |
These results replace all values in the selected row by URI.
Name | Phone Type | Phone Country | Phone Number |
John A Smith | Business Mobile | Germany | 999-999-9999 |
John Smith | Home | USA | 244-344-5931 |
John Smith | Personal | USA | 513-879-4208 |
Parameter | Default | Description |
---|---|---|
enableNestedPartialOverride | False (null) | If set to true , turn ON the append logic for a partial override of nested values. |
partialOverride
option in the Rest API request.Common Behavior
When the parameter enableNestedPartialOverride
is true
and you execute a partial override, then input nested attribute values are added to existing values (old values are not removed). As a result, nested attributes will have all values which they previously had before the update plus values which were passed as inputs.
Examples
Existing Entity
An entity with some nested attribute, for example, entity type HCP
with the nested attribute License
.
{
"uri": "entities/00005KL",
"type": "configuration/entityTypes/HCP",
"attributes": {
"License": [
{
"label": "111, state CA",
"value": {
"Category": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Category",
"ov": true,
"value": "Category 1",
"uri": "entities/00005KL/attributes/License/0/Category/1"
}
],
"Number": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Number",
"ov": true,
"value": "111",
"uri": "entities/00005KL/attributes/License/0/Number/3"
}
],
"State": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/State",
"ov": true,
"value": "CA",
"uri": "entities/00005KL/attributes/License/0/State/2"
}
],
"Status": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Status",
"ov": true,
"value": "A",
"uri": "entities/00005KL/attributes/License/0/Status/4"
}
]
},
"ov": true,
"uri": "entities/00005KL/attributes/License/0"
}
]
},
"crosswalks": [
{
"uri": "entities/00005KL/crosswalks/10",
"type": "configuration/sources/ABCD",
"value": "111",
"reltioLoadDate": "2019-09-24T23:19:22.559Z",
"createDate": "2019-09-24T23:19:22.559Z",
"updateDate": "2019-09-24T23:19:22.559Z",
"attributes": [
"entities/00005KL/attributes/License/0",
"entities/00005KL/attributes/License/0/Category/1",
"entities/00005KL/attributes/License/0/State/2",
"entities/00005KL/attributes/License/0/Number/3",
"entities/00005KL/attributes/License/0/Status/4"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {},
"label": ", ()",
"secondaryLabel": ""
}
The following update is posted:
Overwrite with the partialOverride
option
POST {tenantUrl}/entities?options=partialOverride
[
{
"type": "configuration/entityTypes/HCP",
"attributes": {
"License": [
{
"value": {
"Category": [
{
"value": "Category 2"
}
],
"State": [
{
"value": "CA"
}
],
"Number": [
{
"value": "111"
}
],
"Status": [
{
"value": "A"
}
]
}
}
]
},
"crosswalks": [
{
"type": "ABCD",
"value": "111"
}
]
}
]
The resulting entity has two values (old and new) for a License
attribute.
Result
{
"uri": "entities/00005KL",
"type": "configuration/entityTypes/HCP",
"attributes": {
"License": [
{
"label": "111, state CA",
"value": {
"Category": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Category",
"ov": true,
"value": "Category 1",
"uri": "entities/00005KL/attributes/License/0/Category/1"
}
],
"Number": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Number",
"ov": true,
"value": "111",
"uri": "entities/00005KL/attributes/License/0/Number/3"
}
],
"State": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/State",
"ov": true,
"value": "CA",
"uri": "entities/00005KL/attributes/License/0/State/2"
}
],
"Status": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Status",
"ov": true,
"value": "A",
"uri": "entities/00005KL/attributes/License/0/Status/4"
}
]
},
"ov": true,
"uri": "entities/00005KL/attributes/License/0"
},
{
"label": "222, state CA",
"value": {
"Category": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Category",
"ov": true,
"value": "Category 2",
"uri": "entities/00005KL/attributes/License/5/Category/6"
}
],
"Number": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Number",
"ov": true,
"value": "222",
"uri": "entities/00005KL/attributes/License/5/Number/8"
}
],
"State": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/State",
"ov": true,
"value": "CA",
"uri": "entities/00005KL/attributes/License/5/State/7"
}
],
"Status": [
{
"type": "configuration/entityTypes/HCP/attributes/License/attributes/Status",
"ov": true,
"value": "A",
"uri": "entities/00005KL/attributes/License/5/Status/9"
}
]
},
"ov": true,
"uri": "entities/00005KL/attributes/License/5"
}
]
},
"crosswalks": [
{
"uri": "entities/00005KL/crosswalks/10",
"type": "configuration/sources/ABCD",
"value": "111",
"reltioLoadDate": "2019-09-24T23:19:22.559Z",
"createDate": "2019-09-24T23:19:22.559Z",
"updateDate": "2019-09-24T23:19:22.559Z",
"attributes": [
"entities/00005KL/attributes/License/0",
"entities/00005KL/attributes/License/0/Category/1",
"entities/00005KL/attributes/License/0/State/2",
"entities/00005KL/attributes/License/0/Number/3",
"entities/00005KL/attributes/License/0/Status/4",
"entities/00005KL/attributes/License/5",
"entities/00005KL/attributes/License/5/Category/6",
"entities/00005KL/attributes/License/5/State/7",
"entities/00005KL/attributes/License/5/Number/8",
"entities/00005KL/attributes/License/5/Status/9"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {},
"label": ", ()",
"secondaryLabel": ""
}
preserveURIs
You can use enableNestedPartialOverride
=true
logic with the preserveURIs
option.
In the request (with the partialOverride
option), if you include the preserveURIs
option and set the uri of the nested attribute and its sub-attribute, then a partial override is performed of this nested attribute by its uri.
Example
Individual
entity with two AlternateName
nested attributes values.
Existing Entity
[
{
"type": "configuration/entityTypes/Individual",
"attributes": {
"AlternateName": [
{
"value": {
"Type": [
{
"value": "2"
}
],
"FirstName": [
{
"value": "A"
}
],
"LastName": [
{
"value": "B2"
}
]
}
},
{
"label": "A B1",
"value": {
"Type": [
{
"value": "1"
}
],
"FirstName": [
{
"value": "A"
}
],
"LastName": [
{
"value": "B1"
}
]
}
}
],
"Name": [
{
"value": "initial entity"
}
]
},
"crosswalks": [
{
"type": "configuration/sources/AHA",
"value": "0001"
}
]
}
]
Result
{
"uri": "entities/17QrMmoZ",
"type": "configuration/entityTypes/Individual",
"createdBy": "test.user",
"createdTime": 1574947677054,
"updatedBy": "test.user",
"updatedTime": 1574947677054,
"attributes": {
"AlternateName": [
{
"label": "A B1",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/Type",
"ov": true,
"value": "1",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/Type/2FVDRnKEZ"
}
],
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B1",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ"
},
{
"label": "A B2",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/Type",
"ov": true,
"value": "2",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/Type/2FVDRn3BX"
}
],
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B2",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH"
}
],
"Name": [
{
"type": "configuration/entityTypes/Individual/attributes/Name",
"ov": true,
"value": "initial entity",
"uri": "entities/17QrMmoZ/attributes/Name/2FVDRnX1L"
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/17QrMmoZ/crosswalks/2FVDRnbHb",
"type": "configuration/sources/AHA",
"value": "0001",
"reltioLoadDate": "2019-11-28T13:27:57.054Z",
"sourcePublishDate": "1970-01-01T00:00:00.000Z",
"createDate": "2019-11-28T13:27:57.054Z",
"updateDate": "2019-11-28T13:27:57.054Z",
"attributes": [
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/Type/2FVDRnKEZ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/Type/2FVDRn3BX",
"entities/17QrMmoZ/attributes/Name/2FVDRnX1L"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {},
"label": "",
"secondaryLabel": ""
}
- change only some specific sub-attributes of the nested attribute, for example, the value of the
LastName
sub-attribute, - do not change another attribute but send it at the request, for example, the value of the
FirstName
sub-attribute, - do not change anther attribute in any way, and you do not send it at the request, for example, the value of the
Type
sub-attribute,
Overwrite with the partialOverride
and preserveURIs
options
POST {tenantUrl}/entities?options=partialOverride,preserveURIs
[
{
"type": "configuration/entityTypes/Individual",
"attributes": {
"AlternateName": [
{
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH",
"value": {
"FirstName": [
{
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn"
}
],
"LastName": [
{
"value": "B2 - updated",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3"
}
]
}
}
]
},
"crosswalks": [
{
"type": "configuration/sources/AHA",
"value": "0001"
}
]
}
]
- the value of the sub-attribute
LastName
is overwritten and an update occurs at thesingleAttributeUpdateDates
section for the proper crosswalk. - the value of sub-attribute
FirstName
is NOT changed, but an update occurs at thesingleAttributeUpdateDates
section for the proper crosswalk (similar to the behavior whenenableNestedPartialOverride
=false
). - the value of the sub-attribute
Type
is NOT changed in any way.
Result
GET {tenantUrl}/entities/17QrMmoZ
{
"uri": "entities/17QrMmoZ",
"type": "configuration/entityTypes/Individual",
"createdBy": "test.user",
"createdTime": 1574947677054,
"updatedBy": "test.user",
"updatedTime": 1574948139756,
"attributes": {
"AlternateName": [
{
"label": "A B2 - updated",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/Type",
"ov": true,
"value": "2",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/Type/2FVDRn3BX"
}
],
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B2 - updated",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH"
},
{
"label": "A B1",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/Type",
"ov": true,
"value": "1",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/Type/2FVDRnKEZ"
}
],
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B1",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ"
}
],
"Name": [
{
"type": "configuration/entityTypes/Individual/attributes/Name",
"ov": true,
"value": "initial entity",
"uri": "entities/17QrMmoZ/attributes/Name/2FVDRnX1L"
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/17QrMmoZ/crosswalks/2FVDRnbHb",
"type": "configuration/sources/AHA",
"value": "0001",
"reltioLoadDate": "2019-11-28T13:35:39.756Z",
"sourcePublishDate": "1970-01-01T00:00:00.000Z",
"createDate": "2019-11-28T13:27:57.054Z",
"updateDate": "2019-11-28T13:27:57.054Z",
"attributes": [
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/Type/2FVDRnKEZ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/Type/2FVDRn3BX",
"entities/17QrMmoZ/attributes/Name/2FVDRnX1L"
],
"singleAttributeUpdateDates": {
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn": "2019-11-28T13:35:39.756Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH": "2019-11-28T13:35:39.756Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3": "2019-11-28T13:35:39.756Z"
}
}
],
"analyticsAttributes": {},
"label": "",
"secondaryLabel": ""
}
At the update request, if you do not set uris of sub-attributes, as shown in the following example:
Overwrite With the partialOverride
and preserveURIs
Options
POST {tenantUrl}/entities?options=partialOverride,preserveURIs
[
{
"type": "configuration/entityTypes/Individual",
"attributes": {
"AlternateName": [
{
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH",
"value": {
"FirstName": [
{
"value": "A"
}
],
"LastName": [
{
"value": "B2 - updated v2"
}
]
}
}
]
},
"crosswalks": [
{
"type": "configuration/sources/AHA",
"value": "0001"
}
]
}
]
Then, you will need to append the sub-attribute values and not override.
Result
GET {tenantUrl}/entities/17QrMmoZ
{
"uri": "entities/17QrMmoZ",
"type": "configuration/entityTypes/Individual",
"createdBy": "test.user",
"createdTime": 1574947677054,
"updatedBy": "test.user",
"updatedTime": 1574948300299,
"attributes": {
"AlternateName": [
{
"label": "A B2 - updated v2",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/Type",
"ov": true,
"value": "2",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/Type/2FVDRn3BX"
}
],
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B2 - updated v2",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/1W26XBdAQ"
},
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B2 - updated",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH"
},
{
"label": "A B1",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/Type",
"ov": true,
"value": "1",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/Type/2FVDRnKEZ"
}
],
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B1",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ"
}
],
"Name": [
{
"type": "configuration/entityTypes/Individual/attributes/Name",
"ov": true,
"value": "initial entity",
"uri": "entities/17QrMmoZ/attributes/Name/2FVDRnX1L"
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/17QrMmoZ/crosswalks/2FVDRnbHb",
"type": "configuration/sources/AHA",
"value": "0001",
"reltioLoadDate": "2019-11-28T13:38:20.299Z",
"sourcePublishDate": "1970-01-01T00:00:00.000Z",
"createDate": "2019-11-28T13:27:57.054Z",
"updateDate": "2019-11-28T13:27:57.054Z",
"attributes": [
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/1W26XBdAQ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/Type/2FVDRnKEZ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/Type/2FVDRn3BX",
"entities/17QrMmoZ/attributes/Name/2FVDRnX1L"
],
"singleAttributeUpdateDates": {
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn": "2019-11-28T13:38:20.299Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/1W26XBdAQ": "2019-11-28T13:38:20.299Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH": "2019-11-28T13:38:20.299Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3": "2019-11-28T13:35:39.756Z"
}
}
],
"analyticsAttributes": {},
"label": "",
"secondaryLabel": ""
}
At the update request, if you do not set uris of nested values, as shown in the following example:
Overwrite with the partialOverride
and preserveURIs
options
POST {tenantUrl}/entities?options=partialOverride,preserveURIs
[
{
"type": "configuration/entityTypes/Individual",
"attributes": {
"AlternateName": [
{
"value": {
"FirstName": [
{
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp"
}
],
"LastName": [
{
"value": "B1 - updated",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5"
}
]
}
}
]
},
"crosswalks": [
{
"type": "configuration/sources/AHA",
"value": "0001"
}
]
}
]
Then, you will see three nested values, because the uri of sub-attributes without the uri of nested values are ignored, as shown in the following example:
Result
GET {tenantUrl}/entities/17QrMmoZ
{
"uri": "entities/17QrMmoZ",
"type": "configuration/entityTypes/Individual",
"createdBy": "test.user",
"createdTime": 1574947677054,
"updatedBy": "test.user",
"updatedTime": 1574948561752,
"attributes": {
"AlternateName": [
{
"label": "A B1 - updated",
"value": {
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy/FirstName/1W26XC70E"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B1 - updated",
"uri": "entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy/LastName/1W26XCBGU"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy"
},
{
"label": "A B2 - updated v2",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/Type",
"ov": true,
"value": "2",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/Type/2FVDRn3BX"
}
],
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B2 - updated v2",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/1W26XBdAQ"
},
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B2 - updated",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH"
},
{
"label": "A B1",
"value": {
"Type": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/Type",
"ov": true,
"value": "1",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/Type/2FVDRnKEZ"
}
],
"FirstName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/FirstName",
"ov": true,
"value": "A",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp"
}
],
"LastName": [
{
"type": "configuration/entityTypes/Individual/attributes/AlternateName/attributes/LastName",
"ov": true,
"value": "B1",
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5"
}
]
},
"ov": true,
"uri": "entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ"
}
],
"Name": [
{
"type": "configuration/entityTypes/Individual/attributes/Name",
"ov": true,
"value": "initial entity",
"uri": "entities/17QrMmoZ/attributes/Name/2FVDRnX1L"
}
]
},
"isFavorite": false,
"crosswalks": [
{
"uri": "entities/17QrMmoZ/crosswalks/2FVDRnbHb",
"type": "configuration/sources/AHA",
"value": "0001",
"reltioLoadDate": "2019-11-28T13:42:41.752Z",
"sourcePublishDate": "1970-01-01T00:00:00.000Z",
"createDate": "2019-11-28T13:27:57.054Z",
"updateDate": "2019-11-28T13:27:57.054Z",
"attributes": [
"entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy/FirstName/1W26XC70E",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/FirstName/2FVDRnOUp",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/Type/2FVDRnKEZ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/Type/2FVDRn3BX",
"entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy/LastName/1W26XCBGU",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/1W26XBdAQ",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRnFyJ/LastName/2FVDRnSl5",
"entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy",
"entities/17QrMmoZ/attributes/Name/2FVDRnX1L"
],
"singleAttributeUpdateDates": {
"entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy/FirstName/1W26XC70E": "2019-11-28T13:42:41.752Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH": "2019-11-28T13:38:20.299Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/2FVDRnBi3": "2019-11-28T13:35:39.756Z",
"entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy/LastName/1W26XCBGU": "2019-11-28T13:42:41.752Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/FirstName/2FVDRn7Rn": "2019-11-28T13:38:20.299Z",
"entities/17QrMmoZ/attributes/AlternateName/2FVDRmyvH/LastName/1W26XBdAQ": "2019-11-28T13:38:20.299Z",
"entities/17QrMmoZ/attributes/AlternateName/1W26XC2jy": "2019-11-28T13:42:41.752Z"
}
}
],
"analyticsAttributes": {},
"label": "",
"secondaryLabel": ""
}
Reference Entity
refRelation
attributes are affected by the append logic of enableNestedPartialOverride
from requests in the /entities
endpoint.The current behavior can be shown via the following case:
- When two entities are created that are related by relation (
HCP
,Location
,HasAddress
).HCP
has the reference attributeAddress
with nested sub-attributePhone
, which is an attribute of the relation typeHasAddress
.Create ObjectsPOST {{api_uri}}/{{tenant}}/entities [ { "attributes": { "FirstName": [ { "value": "test.user" } ], "Address": [ { "value": { "AddressType": [ { "value": "M" } ], "Primary": [ { "value": "true" } ], "Phone": [ { "value": { "Type": [ { "value": "Main" } ], "Active": [ { "value": "true" } ] } } ] }, "refEntity": { "crosswalks": [ { "type": "configuration/sources/AMA", "value": "u1" } ] }, "refRelation": { "crosswalks": [ { "type": "configuration/sources/AMA", "value": "u2" } ] } } ] }, "type": "configuration/entityTypes/HCP", "roles": [], "crosswalks": [ { "type": "configuration/sources/AMA", "value": "u3" } ] } ]
Result
{ "uri": "entities/dvOkSh8", "type": "configuration/entityTypes/HCP", "createdBy": "test.user", "createdTime": 1574832002028, "updatedBy": "test.user", "updatedTime": 1574832002028, "attributes": { "FirstName": [ { "type": "configuration/entityTypes/HCP/attributes/FirstName", "ov": true, "value": "test.user", "uri": "entities/dvOkSh8/attributes/FirstName/1M6BOZKVu" } ], "Address": [ { "label": "", "relationshipLabel": "M,", "value": { "AddressType": [ { "type": "configuration/relationTypes/HasAddress/attributes/AddressType", "ov": true, "value": "M", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/AddressType/1M6BOZbYw" } ], "Primary": [ { "type": "configuration/relationTypes/HasAddress/attributes/Primary", "ov": true, "value": "true", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Primary/1M6BOZfpC" } ], "Phone": [ { "label": "Main", "value": { "Type": [ { "type": "configuration/relationTypes/HasAddress/attributes/Phone/attributes/Type", "ov": true, "value": "Main", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S/Type/1M6BOZoLi" } ], "Active": [ { "type": "configuration/relationTypes/HasAddress/attributes/Phone/attributes/Active", "ov": true, "value": "true", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S/Active/1M6BOZsby" } ] }, "ov": true, "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S" } ] }, "ov": true, "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm", "refEntity": { "type": "configuration/entityTypes/Location", "crosswalks": [ { "uri": "entities/dvOkSh8/crosswalks/dvOkWxO.1M6BOZwsE", "type": "configuration/sources/AMA", "value": "u1", "createDate": "2019-11-27T05:20:02.028Z", "updateDate": "2019-11-27T05:20:02.028Z" } ], "objectURI": "entities/dvOkWxO" }, "refRelation": { "type": "configuration/relationTypes/HasAddress", "crosswalks": [ { "uri": "entities/dvOkSh8/crosswalks/XFAmSdm.1M6BOa18U", "type": "configuration/sources/AMA", "value": "u2", "createDate": "2019-11-27T05:20:02.028Z", "updateDate": "2019-11-27T05:20:02.028Z", "attributeURIs": [ "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S/Active/1M6BOZsby", "entities/dvOkSh8/attributes/Address/XFAmSdm/Primary/1M6BOZfpC", "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S", "entities/dvOkSh8/attributes/Address/XFAmSdm/AddressType/1M6BOZbYw", "entities/dvOkSh8/attributes/Address/XFAmSdm", "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S/Type/1M6BOZoLi" ] } ], "startRefPinned": false, "endRefPinned": false, "startRefIgnored": false, "endRefIgnored": false, "objectURI": "relations/XFAmSdm" }, "startObjectCrosswalks": [ { "type": "configuration/sources/AMA", "value": "u3" ], "singleAttributeUpdateDates": {} } ] } ] }, "isFavorite": false, "crosswalks": [ { "uri": "entities/dvOkSh8/crosswalks/1M6BOa5Ok", "type": "configuration/sources/AMA", "value": "u3", "reltioLoadDate": "2019-11-27T05:20:02.028Z", "sourcePublishDate": "1970-01-01T00:00:00.000Z", "createDate": "2019-11-27T05:20:02.028Z", "updateDate": "2019-11-27T05:20:02.028Z", "attributes": [ "entities/dvOkSh8/attributes/FirstName/1M6BOZKVu" ], "singleAttributeUpdateDates": {} } ], "analyticsAttributes": {}, "label": "test.user", "secondaryLabel": "" }
- Do a partial override of the entity with the changed nested-attribute
Phone
.Overwrite With the partialOverride Option
POST {{api_uri}}/{{tenant}}/entities?options=partialOverride [ { "attributes": { "Address": [ { "value": { "AddressType": [ { "value": "M" } ], "Primary": [ { "value": "true" } ], "Phone": [ { "value": { "Type": [ { "value": "Home" } ], "Active": [ { "value": "true" } ], "Number": [ { "value": "+799971744717" } ] } } ] }, "refEntity": { "crosswalks": [ { "type": "configuration/sources/AMA", "value": "u1" } ] }, "refRelation": { "crosswalks": [ { "type": "configuration/sources/AMA", "value": "u2" } ] } } ] }, "type": "configuration/entityTypes/HCP", "roles": [], "crosswalks": [ { "type": "configuration/sources/AMA", "value": "u3" } ] } ]
Result (two nested phones)
{ "uri": "entities/dvOkSh8", "type": "configuration/entityTypes/HCP", "createdBy": "test.user", "createdTime": 1574832002028, "updatedBy": "test.user", "updatedTime": 1574832294527, "attributes": { "FirstName": [ { "type": "configuration/entityTypes/HCP/attributes/FirstName", "ov": true, "value": "test.user", "uri": "entities/dvOkSh8/attributes/FirstName/1M6BOZKVu" } ], "Address": [ { "label": "", "relationshipLabel": "M,", "value": { "AddressType": [ { "type": "configuration/relationTypes/HasAddress/attributes/AddressType", "ov": true, "value": "M", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/AddressType/1M6BOZbYw" } ], "Primary": [ { "type": "configuration/relationTypes/HasAddress/attributes/Primary", "ov": true, "value": "true", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Primary/1M6BOZfpC" } ], "Phone": [ { "label": "+799971744717 Home", "value": { "Type": [ { "type": "configuration/relationTypes/HasAddress/attributes/Phone/attributes/Type", "ov": true, "value": "Home", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/2FDtTUXgl/Type/2FDtTUbx1" } ], "Number": [ { "type": "configuration/relationTypes/HasAddress/attributes/Phone/attributes/Number", "ov": true, "value": "+799971744717", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/2FDtTUXgl/Number/2FDtTUkTX" } ], "Active": [ { "type": "configuration/relationTypes/HasAddress/attributes/Phone/attributes/Active", "ov": true, "value": "true", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/2FDtTUXgl/Active/2FDtTUgDH" } ] }, "ov": true, "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/2FDtTUXgl" }, { "label": "Main", "value": { "Type": [ { "type": "configuration/relationTypes/HasAddress/attributes/Phone/attributes/Type", "ov": true, "value": "Main", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S/Type/1M6BOZoLi" } ], "Active": [ { "type": "configuration/relationTypes/HasAddress/attributes/Phone/attributes/Active", "ov": true, "value": "true", "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S/Active/1M6BOZsby" } ] }, "ov": true, "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S" } ] }, "ov": true, "uri": "entities/dvOkSh8/attributes/Address/XFAmSdm", "refEntity": { "type": "configuration/entityTypes/Location", "crosswalks": [ { "uri": "entities/dvOkSh8/crosswalks/dvOkWxO.1M6BOZwsE", "type": "configuration/sources/AMA", "value": "u1", "createDate": "2019-11-27T05:20:02.028Z", "updateDate": "2019-11-27T05:20:02.028Z" } ], "objectURI": "entities/dvOkWxO" }, "refRelation": { "type": "configuration/relationTypes/HasAddress", "crosswalks": [ { "uri": "entities/dvOkSh8/crosswalks/XFAmSdm.1M6BOa18U", "type": "configuration/sources/AMA", "value": "u2", "createDate": "2019-11-27T05:20:02.028Z", "updateDate": "2019-11-27T05:20:02.028Z", "attributeURIs": [ "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S/Active/1M6BOZsby", "entities/dvOkSh8/attributes/Address/XFAmSdm/Primary/1M6BOZfpC", "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S", "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/2FDtTUXgl/Type/2FDtTUbx1", "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/2FDtTUXgl/Active/2FDtTUgDH", "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/2FDtTUXgl", "entities/dvOkSh8/attributes/Address/XFAmSdm/AddressType/1M6BOZbYw", "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/2FDtTUXgl/Number/2FDtTUkTX", "entities/dvOkSh8/attributes/Address/XFAmSdm", "entities/dvOkSh8/attributes/Address/XFAmSdm/Phone/1M6BOZk5S/Type/1M6BOZoLi" ] } ], "startRefPinned": false, "endRefPinned": false, "startRefIgnored": false, "endRefIgnored": false, "objectURI": "relations/XFAmSdm" }, "startObjectCrosswalks": [ { "type": "configuration/sources/AMA", "value": "u3" ], "singleAttributeUpdateDates": {} } ] } ] }, "isFavorite": false, "crosswalks": [ { "uri": "entities/dvOkSh8/crosswalks/1M6BOa5Ok", "type": "configuration/sources/AMA", "value": "u3", "reltioLoadDate": "2019-11-27T05:20:02.028Z", "sourcePublishDate": "1970-01-01T00:00:00.000Z", "createDate": "2019-11-27T05:20:02.028Z", "updateDate": "2019-11-27T05:20:02.028Z", "attributes": [ "entities/dvOkSh8/attributes/FirstName/1M6BOZKVu" ], "singleAttributeUpdateDates": {} } ], "analyticsAttributes": {}, "label": "test.user", "secondaryLabel": "" }
After this type of partial override, the new nested-attribute phone is appended to the existing phone.
Relationship
enableNestedPartialOverride
parameter in a relationship type.DCR
enableNestedPartialOverride
logic for the combination of the options partialOverride
and alwaysCreateDCR
=true
.Pin/Ignore
Pin/Ignore uses the same logic as for simple attributes.