CRUD events
Learn how to configure Create, Read, Update, and Delete (CRUD) events in Reltio.
By default, all Create, Read, Update, and Delete (CRUD) events from Reltio APIs are sent to queues or topics as messages in JSON format.
The example CRUD Events display the CRUD
events.
CRUD Events
Headers: tenantId; eventType; sourceObjectUri.
{
"type": <string>,
"object": <fields of target entity/relationship configured by JMSEventsFilteringFields/RelationEventsFilteringFields>,
"ovChanged": <true|false> //only for ENTITY_CHANGED and RELATIONSHIP_CHANGED, optional - might not present
when "analyzeOvChanges" streaming property is set to false
}
objectVersion
header to order the events of the same object instead of using fields that have timestamps, such as createdTime
, updatedTime
or any fields that originate from the crosswalk. The messages contain the header only if it’s included in the JMSEventsFilteringFields
property based on the message streaming configuration. The header value is an incremental number, which is updated after every change in the business object. So, the message with the highest objectVersion
header value will contain the latest object state.entity
/relationship
and configuring by JMSEventsFilteringFields/RelationEventsFilteringFields
streaming property:If largeObjectsSupport
is true
and the compressed size of the event exceeds the limit then the event will be sent again without the object but with URI
of the object, event type
and exceededQueueSizeLimit
flag.
{
"type": <string>,
"ovChanged": <true|false>//only for ENTITY_CHANGED and RELATIONSHIP_CHANGED, optional - might not present
when "analyzeOvChanges" streaming property is set to false
"exceededQueueSizeLimit": true
}
You can configure the content of the object
field by JMSEventsFilteringFields
streaming property for events.
The following example explains the configuration of the content of object
field by JMSEventsFilteringFields
streaming property for entities’ events.
object
field for entity includes only fields that are specified in JMSEventsFilteringFields
when JMSEventsFilteringFields
is absent, object
includes all available fields. It can’t be empty.
"JMSEventsFilteringFields": [
"createdBy",
"createdTime",
"type",
"uri"
],
Then object
field is as follows:
Example: Object field
"object": {
"uri": "entities/1GXxZFUA",
"type": "configuration/entityTypes/HCP",
"createdBy": "auto20201019_Adminebaih",
"createdTime": 1603108780415
}
You can configure the content of an object
field by RelationEventsFilteringFields
streaming property for relations’ events.
The object
field for relation includes only fields that are specified in RelationEventsFilteringFields
. It works similarly as JMSEventsFilteringFields
.
Fields (defined)
JMSEventsFilteringFields
and RelationEventsFilteringFields
.)URI
Type
createdBy
createdTime
updatedBy
updatedTime
startDate
endDate
Attributes
Crosswalks
Tags
Ratings
consolidatedRating
JMSEventsFilteringFields
Entities
- roles
- ctSubscribedUris
- defaultProfilePic
- label
- secondaryLabel
- analyticsAttributes
- name
- potentialMatchTOs
- matchRules
- matchScore
- relevance
- timestamp
- members
- timestamp
- members
RelationEventsFilteringFields
- startRefPinned
- startRefIgnored
- endRefPinned
- endRefIgnored
- startObject
- endObject
The CRUD Events table describes the various types of CRUD events, which are supported:
CRUD Events | Description |
ENTITY_CREATED | This event indicates that the entity was created. This event doesn’t include any additional fields. |
ENTITY_REMOVED | This event indicates that the entity was removed (by DELETE /entity/id request). This event doesn’t include any additional fields. |
ENTITY_REMOVED_GDPR | This event indicates that the entity was removed (by GDPR request). After removing only two records for every entity, these are left: ENTITY_CREATED and ENTITY_REMOVED_GDPR . This event doesn’t include any additional fields. |
ENTITY_LOST_MERGE | This event indicates that the entity was merged to another entity. This event doesn’t include any additional fields. |
ENTITY_CHANGED | This event indicates that the entity was changed. This event doesn’t include any additional fields. |
RELATIONSHIP_CREATED | This event indicates that a relationship was created between this entity and any other entity. In the case of an added Reference Attribute (for example, Address ), the ENTITY_CHANGED event also appears in the result. |
RELATIONSHIP_REMOVED | This event indicates that a relationship between the entity and some other entity was removed. In the case of a Reference Attribute (for example, Address ) the ENTITY_CHANGED event also appears in the result. |
RELATIONSHIP_REMOVED_GDPR | This event indicates that a relationship between the entity and some other entity was removed (by GDPR request). In the case of a Reference Attribute (for example, Address ), the ENTITY_CHANGED event also appears in the result. |
RELATIONSHIP_CHANGED | This event indicates that a relationship between the entity and some other entity was changed. In the case of the Reference Attribute (for example, Address), the ENTITY_CHANGED event also appears in the result. |
GROUP_CREATED | Currently, not used |
GROUP_REMOVED | Currently, not used. |
GROUP_CHANGED | Currently, not used. |
INTERACTION_CREATED | This event indicates that the interaction was created. This event doesn’t include any additional fields. |
INTERACTION_REMOVED | This event indicates that the interaction was removed (by DELETE /entity/id request). This event doesn’t include any additional fields. |
INTERACTION_CHANGED | This event indicates that the interaction was changed. This event doesn’t include any additional fields. |
ENTITIES_SPLITTED | For the winner entity, this event indicates that some entities were unmerged from it. For an unmerged entity, it indicates that the entity was unmerged from its parent. |
ENTITIES_MATCHES_CHANGED | This event is fired when the list of Potential Matches for an entity was changed. |
RELATION_LOST_MERGE : | This event is generated when merging relationships for loser relations. |
RELATIONSHIP_MERGED : | This event is launched when merging relations (like ENTITIES_MERGED for entities). |
ENTITY_BUSINESS_PROCESS_CHANGED | For workflow functionality, there are commonly designated business process objects connected to an entity. For any change to the business process for an entity (even if the business process was created or deleted), the platform fires the event. |
Lookup code
and value in attributes are serialized to event JSON. {
"type":"ENTITY_CHANGED",
"uri":"entities/00009ab",
"deltas":{
"ovChanged":true,
"delta":[
{
"type":"ATTRIBUTE_ADDED",
"attributeType":"configuration/entityTypes/Location/attributes/Street",
"newValue":{
"value":"NewStreet",
"ov":true,
"id":"7",
"sources":[
"Reltio"
]
}
},
{
"type":"ATTRIBUTE_CHANGED",
"attributeType":"configuration/entityTypes/Location/attributes/City",
"newValue":{
"value":"ChangedCity",
"ov":true,
"id":"8",
"sources":[
"Reltio"
]
},
"oldValue":{
"value":"InitialCity",
"ov":true,
"id":"8",
"sources":[
"Reltio"
]
}
},
{
"type":"ATTRIBUTE_REMOVED",
"attributeType":"configuration/entityTypes/Location/attributes/Country",
"oldValue":{
"value":"RemovedCountry",
"ov":false,
"id":"9",
"sources":[
"Facebook"
]
}
}
]
}
}
Example: RELATIONSHIP_CREATED
{
"type": "RELATIONSHIP_CREATED",
"object": {
"uri": "relations/VnEqtJj",
"type": "configuration/relationTypes/HasAddress",
"createdBy": "auto20190828AdminawgMp",
"createdTime": 1566970796552,
"updatedBy": "auto20190828AdminawgMp",
"updatedTime": 1566970796552,
"startRefPinned": false,
"startRefIgnored": false,
"endRefPinned": false,
"endRefIgnored": false,
"attributes": {
"BusinessCode": [
{
"type": "configuration/relationTypes/HasAddress/attributes/BusinessCode",
"ov": true,
"value": "AAA",
"lookupCode": "A",
"lookupRawValue": "A",
"uri": "relations/VnEqtJj/attributes/BusinessCode/1dM9qjo8J"
}
],
"CareOf": [
{
"type": "configuration/relationTypes/HasAddress/attributes/CareOf",
"ov": true,
"value": "B",
"uri": "relations/VnEqtJj/attributes/CareOf/1dM9qjsOZ"
}
],
"AddressType": [
{
"type": "configuration/relationTypes/HasAddress/attributes/AddressType",
"ov": true,
"value": "India",
"lookupCode": "INDIA",
"lookupRawValue": "091",
"uri": "relations/VnEqtJj/attributes/AddressType/1dM9qjwep"
}
],
"SourceCD": [
{
"type": "configuration/relationTypes/HasAddress/attributes/SourceCD",
"ov": true,
"value": "081",
"lookupError": "1003: RDM canonical value mapping not found for value [081] and source [Reltio] in tenant [tst01messaging]",
"uri": "relations/VnEqtJj/attributes/SourceCD/1dM9qk0v5"
}
]
},
"crosswalks": [
{
"uri": "relations/VnEqtJj/crosswalks/1dM9qk5BL",
"type": "configuration/sources/Reltio",
"value": "VnEqtJj",
"reltioLoadDate": "2019-08-28T05:39:56.552Z",
"createDate": "2019-08-28T05:39:56.552Z",
"updateDate": "2019-08-28T05:39:56.552Z",
"attributes": [
"relations/VnEqtJj/attributes/BusinessCode/1dM9qjo8J",
"relations/VnEqtJj/attributes/AddressType/1dM9qjwep",
"relations/VnEqtJj/attributes/SourceCD/1dM9qk0v5",
"relations/VnEqtJj/attributes/CareOf/1dM9qjsOZ"
],
"singleAttributeUpdateDates": {}
}
]
}
}
event name
. These event types
don’t include any information other than the name of the event.CHANGE_REQUEST_CREATED
: This event is generated when a Data Change Request (DCR) is created.CHANGE_REQUEST_CHANGED
: This event is generated when a Data Change Request (DCR) is changed.CHANGE_REQUEST_REMOVED
: This event is generated when a Data Change Request (DCR) is deleted.
The ENTITIES_SPLITTED
event type has an extra field including split participant URI
s:
{
"type": <string>,
"object": <serialized ObjectTO (EntityTO/RelationTO)>,
"ovChanged": <true|false>,
"uris": <List<string>>
}
The following types of CRUD
events aren’t supported:
ACTIVITY_CREATED_UPDATED
ACTIVITY_REMOVED
ENTITY_LOSER_REMOVED
RELATION_WOULD_CHANGE
RELATION_WOULD_DELETE
ENTITIES_CATEGORY_TREE_STRUCTURE_CHANGED
ovChanged
flag is always true for ENTITY_CHANGED
events sent for these related entities. This is due to a change in reference attribute. This type of optimization is to avoid negative impact on performance when there’s a difference in calculation, in case some referenced entity along with many related entities were changed.SNAPSHOT
DELTA
SNAPSHOT_WITH_DELTA
SNAPSHOT
. The request JSON is as follows:{
"type": <string>,
"object": <serialized ObjectTO (e.g. EntityTO/RelationTO)>,
"ovChanged": <true|false> //only for ENTITY_CHANGED and RELATIONSHIP_CHANGED, optional - may not be present when "analyzeOvChanges" streaming property is set to false,
"exceededQueueSizeLimit": <true|false> // populated when TRUE
}
DELTA
is as follows:{
"type": <string>,
"uri": <source_object_uri>,
"exceededQueueSizeLimit": <true|false>, // populated when TRUE
"deltas": {
AttributesDeltaCollection
}
}
For more information, see About Delta Changes for Attributes.
Delta event examples
The following example shows the DELTA
payload for the ENTITY_CREATED
event:
{
"type": "ENTITY_CREATED",
"uri": "entities/loc2",
"deltas": {
"ovChanged": false,
"delta": [
{
"type": "ENTITY_CREATED",
"newValue": {
"uri": "entities/loc2",
"type": "configuration/entityTypes/Location",
"createdBy": "test",
"createdTime": 1662985373660,
"updatedBy": "test",
"updatedTime": 1662985373660,
"attributes": {
"AddressLine1": [
{
"type": "configuration/entityTypes/Location/attributes/AddressLine1",
"ov": true,
"value": "AL1",
"uri": "entities/loc2/attributes/AddressLine1/5"
}
]
},
"crosswalks": [
{
"uri": "entities/loc2/crosswalks/6",
"type": "configuration/sources/NPI",
"sourceTable": "source_table",
"value": "NPI_LOC2",
"reltioLoadDate": "2022-09-12T12:22:53.660Z",
"createDate": "2022-09-12T12:22:53.660Z",
"updateDate": "2022-09-12T12:22:53.660Z",
"attributes": [
"entities/loc2/attributes/AddressLine1/5"
],
"singleAttributeUpdateDates": {}
}
],
"analyticsAttributes": {},
"label": "AL1",
"secondaryLabel": ""
}
}
]
}
}
The following example shows the DELTA
payload for the RELATIONSHIP_CREATED
event. You can also see other attributes that are needed for a relationship event. These attributes help tie the event with its corresponding start object.
{
"type": "RELATIONSHIP_CREATED",
"uri": "relations/rel1",
"deltas": {
"ovChanged": false,
"relationType": "HasAddress",
"startObjectUri": "entities/hcp1",
"endObjectUri": "entities/loc1",
"delta": [
{
"type": "RELATIONSHIP_CREATED",
"newValue": {
"uri": "relations/rel1",
"type": "configuration/relationTypes/HasAddress",
"createdBy": "test",
"createdTime": 1662985373660,
"updatedBy": "test",
"updatedTime": 1662985373660,
"startRefPinned": false,
"startRefIgnored": false,
"endRefPinned": false,
"endRefIgnored": false,
"crosswalks": [
{
"uri": "relations/rel1/crosswalks/8",
"type": "configuration/sources/NPI",
"sourceTable": "source_table",
"value": "NPI_REL1",
"reltioLoadDate": "2022-09-12T12:22:53.660Z",
"createDate": "2022-09-12T12:22:53.660Z",
"updateDate": "2022-09-12T12:22:53.660Z",
"attributes": [
"relations/rel1/attributes/AddressType/7"
],
"singleAttributeUpdateDates": {}
}
],
"startObject": {
"objectURI": "entities/hcp1",
"crosswalks": []
},
"endObject": {
"objectURI": "entities/loc1",
"crosswalks": []
}
}
}
]
}
}
The following example shows the DELTA
payload for the ENTITY_CHANGED
event:
{
"type": "ENTITY_CHANGED",
"uri": "entities/hcp1",
"deltas": {
"ovChanged": true,
"delta": [
{
"type": "ATTRIBUTE_ADDED",
"attributeType": "configuration/entityTypes/HCP/attributes/Address",
"newValue": {
"ov": true,
"id": "rel1",
"crosswalks": [
{
"type": "configuration/sources/NPI",
"value": "NPI_REL1",
"sourceTable": "source_table"
}
]
}
}
]
}
}
The following example shows the DELTA
payload for the RELATIONSHIP_REMOVED
event:
{
"type": "RELATIONSHIP_REMOVED",
"uri": "relations/rel2",
"deltas": {
"ovChanged": false,
"relationType": "HasAddress",
"startObjectUri": "entities/hcp1",
"endObjectUri": "entities/loc2"
}
}