Unify and manage your data

Show Page Sections

Automatic Unmerge Task

Learn about the Automatic Unmerge task

Real-time profiles' automatic unmerge happens exclusively when their source attributes are updated. If your profiles haven't been updated recently, they might need to be unmerged based on your current automatic match rules. Otherwise, they'll remain merged, unless you take action. Run the batchUnmergeEntities task when you want to ensure entities that no longer match are automatically unmerged. This line of action is important, if you made any of these changes after you loaded your data:
  • Added, deleted, or edited match rules
  • Edited survivorship rules for any attributes included in match rules
Note: You can run the task to test whether the entities are subject to unmerge and reports the number of such entities, even if Automatic Unmerge is disabled at the entity type level. You can run the task with readOnly=true mode on the tenant, and the task tests which entities should be unmerged. The mode readOnly=false works as earlier only on the entity type where Automatic unmerge is enabled. For more information, see topic Enable automatic unmerge on the tenant configuration.

Request

Tenant admin role is required:

POST {ApplicationURL}/api/{tenantId}/batchUnmergeEntities
Parameter Required Default Value Description
uriList No

List of candidate entity URIs for unmerging.

Example of a request body with a URI list:{ "uriList": "entities/00005KL","entities/00009ab" }
entityType No The type of entity on which the task will run. If you don't specify it, the task will run all entity types, effectively the whole tenant.
readOnly No trueIf true, only tests candidate entities for unmerge. It doesn't commit changes.
updatedSince No 0

Only entities with updatedTime ≥ updatedSince will be unmerged.

updatedTillNo0

Only entities with updatedTime < updatedTill will be unmerged.

distributedNofalseIf set to true, the task runs in distributed mode (refer to Distributed Mode).
taskPartsCountNo2If you set distributed=true, you can specify the number of parts in which you want to execute this task.
Note: This parameter is used only in distributed mode distributed=true, otherwise it is ignored.
entitiesLimitNo The number of entities to be processed by the task.

You can retrieve detailed information by getting the task by its ID.

ExampleGET {ApplicationURL}/{tenantId}/tasks/a746cd02-d1a3-4ad3-8f67-39aec3948b3d{ "id": "708d6b17-9220-45da-8efb-d7a02de327e3", "groupId": "320d40bc-0168-4380-b36b-5894c766a7b8", "createdTime": 1705498357434, "createdBy": "john.smith@yourcompanynamehere.com", "updatedTime": 1705498357434, "updatedBy": "john.smith@yourcompanynamehere.com", "type": "com.reltio.businesslogic.tasks.matching.BulkUnmergeEntitiesTask", "status": "COMPLETED", "name": "Unmerge Entities", "createdOnHost": "dataload-75f86f7fc8-bfwfd", "executedOnHost": "dataload-75f86f7fc8-bfwfd", "parallelExecution": false, "nodesGroup": "default", "startTime": 1705498357675, "endTime": 1705498358465, "platformId": "98552082-615a-433d-9f49-a86647ec4d50-cid110", "initialOperationId": "d5872d13-75e7-4c1e-be73-98c566ac7876", "unthrottled": false, "internalThrottling": false, "throttled": false, "throttlingDuration": "0s", "parameters": { "tenantId": "auto20240117osHpo", "entityType": "", "entitiesLimit": "-1", "uriList": "", "readOnly": "true", "waitForExternalMatchQueue": "false", "parentTaskIds": "" }, "currentState": { "lastExecutionHostIps": "10.30.32.127", "lastZeroThroughputEmailTimestamp": 1705498357808, "lastCalculatingProcessedObjectsTime": 1705498357808, "lastExecutionEC2Instances": "i-0b78115ac499b5856", "lastZeroThroughputEmailReadyToSend": false, "numberOfReadObjectsChanged": 1705498358139, "lastExecutionHostInstances": "dataload-75f86f7fc8-bfwfd", "numberOfFailedToPublishEvents": 0, "last5MinThroughput": 0.0, "numberOfProcessedObjectsChanged": 1705498358146, "executionTimestamps": "1705498357676", "lastHourThroughput": 0.0, "infoAboutLastHourProcessedObjects": "0,1705498357808", "numberOfProcessedObjects": 30, "lastKey": "K_0§$FIN$®1§$FIN$©0:2:2", "switchesRestoringsTotalNumber": 1, "numberOfReadObjects": 30, "status": "Completed", "statistics": { "totalObserved": 30, "totalDetected": 30, "totalErrors": 0, "entityTypeStatistics": { "HCP": { "totalObserved": 20, "totalDetected": 20, "totalErrors": 0, "examples": [ "01Fg4MX", "01FiTXZ", "01FjVTR", "02PSr0g", "01FgPfp", "01Fgkz7", "01Fh6IP", "01FhRbh", "01Fhmuz", "01Fi8EH" ] }, "HCO": { "totalObserved": 10, "totalDetected": 10, "totalErrors": 0, "examples": [ "01FkKcX", "01FkT93", "02PTTN0", "02PTbtW", "02PTkQ2", "02PU9za", "02PTKqU", "02PTswY", "02PU1T4", "02PUIW6" ] } } } }, "throughput": 0.0, "duration": "0s" }

Response

These are the response parameters:
ParameterDescription
totalObserved Overall statistics on total number of observed entities.
totalDetectedOverall statistics on total number of entities that should be automatically unmerged readOnly=true, or that were automatically unmerged readOnly=false.
entityTypeStatisticsThe number of processed and detected entities to be unmerged, with up to 1000 examples of entities URIs. Statistics are grouped per entity type.
Note: These statistics are displayed irrespective of the value specified for the readOnly parameter.

Filter entities in BulkUnmergeEntitiesTask

Reltio supports the filtering of entities to be unmerged before they are read, leading to reduced the number of read requests to the database during the task process and as a result improving the task performance.

This filter can be specified either by query or included in the object list.

Parameter Required Default Value Description
filter Nonull

The structure to describe the batch unmerge entities task filter specification

Contains:
  • objects: The specification of the list of the entities that have to be explicitly included to or excluded from the unmerge process.

  • query: The specification of the entities subset using the search queries.

Example 1:"filter" : { "objects": { "includeList": [ "entities/id_1", "id_3" ] }
Example 2:"filter" : { "objects": { "excludeList": [ "entities/id_5", "id_7" ] }, "query": [ { "filter": "equals(type, 'Individual') and equals(attributes.FirstName, 'John')", "options": "searchByOv", "activeness": "ALL" } ] }
Before using this filter take the following scenarios in consideration:
  • If you only define the query the task uses the ES URI iterator;

  • If you only define the include list parameter or the uriList parameter the task uses the default URI iterator;

  • If you only define the entityType parameter the task converts that parameter to the ES filter and uses the ES URI iterator;

  • If you only define the updatedSince/updatedTill parameters the task generated the ES filter based on these parameters and uses the ES URI iterator;

  • If you define the query and include list parameters the task is not created and an error message is presented;

  • If you define the query and uriList parameters the task is not created and an error message is presented;

  • If you define the query and entityType parameters the task converts the entityType parameter to ES filter and concatenates it to all query filters;

  • If you define the query and updatedSince/updatedTill parameters the task converts the updatedSince/updatedTill parameter to ES filter and concatenates it to all query filters;

  • If you define the include list and uriList parameters the task works with URIs from the include list;

  • If you define the include list and updatedSince/updatedTill parameters OR the uriList and updatedSince/updatedTill parameters the task uses the default URI iterator and filters the already read entities by updatedSince or updatedTill;

  • If you define the entityType and updatedSince/updatedTill parameters the task generates the ES filter based on these parameters and uses the ES URI iterator;

  • The exclude list parameter works separately. It also filters entities out before reading objects but does not use the ES filter.