Events API
All CRUD and Match events from Reltio APIs are sent to queues/topics as messages in JSON format.
The events from Reltio APIs are sent to queues/topics as messages in JSON format. Therefore, the messages that are published to streaming destinations are actually serialized representations of these events.
ovChanged
flag is always true
forENTITY_CHANGED
events sent for these related entities due to a reference attribute change. This is a type of optimization to avoid potential huge negative performance impact in delta calculation in the event some referenced entity with numerous related entities was changed.- The platform streaming functionality works with at least one message delivery semantic.
- If an attribute is connected to the Reference Data Management (RDM), any change in the RDM mapping leading to changes in the canonical codes or values, will not generate an Entity Changed event in MDM. This result is due to the raw value stored in the attribute, which remains unchanged.
Streaming Message Format
Messages getting published to the streaming destination are serialized representations of events of the following two types:
- CRUD Events
- Match Events
CRUD Events
Headers: tenantId
; eventType
; sourceObjectUri
.
ObjectTO
is serialized based on the JMSEventsFilteringFields
streaming property, and only object fields listed there are added to the final JSON.
RelationTO
is serialized based on the RelationEventsFilteringFields
streaming property, and only relation fields listed there are added to the final JSON.
The following types of CRUD events are supported:
ENTITY_CREATED
: This event indicates that the entity was created. This event does not contain any additional fields.ENTITY_REMOVED
: This event indicates that the entity was removed (byDELETE /entity/id
request).This event does not contain 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
andENTITY_REMOVED_GDPR
. This event does not contain any additional fields.ENTITY_LOST_MERGE
: This event indicates that the entity is a loser in a merge with another entity.This event does not contain any additional fields.ENTITY_CHANGED
: This event indicates that the entity was changed. This event does not contain any additional fields.Note: TheENTITY_CHANGED
event is not created when an entity's attributes are not changed.For example: There are 3 entities - entity A, entity B, and entity C. Entity A references entity B and entity B references entities A and C. Now, when you update entity A, these updates are propagated first to entity B and then to entity C. Since there are no attribute updates done for entities B and C, and only the object version is updated, the
ENTITY_CHANGED
events are not created for these entities.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
), theENTITY_CHANGED
event also appears in the result.Note: By default, theRELATIONSHIP_CREATED
event payload contains the attributes of the relationship, however if you don't require the attributes in the event payload then open a request to Support to change the configuration.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
) theENTITY_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
), theENTITY_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), theENTITY_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 does not contain any additional fields.INTERACTION_REMOVED
: This event indicates that the interaction was removed (byDELETE /entity/id
request).This event does not contain any additional fields.INTERACTION_CHANGED
: This event indicates that the interaction was changed. This event does not contain 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 master.ENTITIES_MATCHES_CHANGED
: This event is fired when 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 fired when merging relations (likeENTITIES_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.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.
Example: RELATIONSHIP_CREATED
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 containing split participant URIs:
The following types of CRUD events are not supported:
ACTIVITY_CREATED_UPDATED
ACTIVITY_REMOVED
ENTITY_LOSER_REMOVED
RELATION_WOULD_CHANGE
RELATION_WOULD_DELETE
ENTITIES_CATEGORY_TREE_STRUCTURE_CHANGED
Match Events
Headers: tenantId
; eventType
; sourceObjectUri
.
updateTime
appears only if "JMSIncludeMergeTime": true
(by default, it is false
) is specified in the field in the streaming configuration, as shown in this example:
Only type “ENTITIES_MERGED”
is supported. “uris”
contain uris of all merge participants. The "updatedTime"
contains the timestamp when the entities were merged.
ovChanged
flag is always true for ENTITY_CHANGED
events sent for these related entities due to a reference attribute change. This is a type of optimization to avoid potential huge negative performance impact in delta calculation in case some referenced entity with may related entities was changed.Internally, these event types are supported:
ENTITIES_MERGED
: the entity was merged by the platform with some other entities.ENTITIES_MERGED_MANUALLY
: the entity was merged by the user's_sameA
s request.ENTITIES_MERGED_ON_THE_FLY
: a phantom entity was merged with the entity.
ENTITIES_MERGED
in the typeFilter
property in the Tenant physical configuration "streamingConfig"-"messaging"->"destinations"
section. Therefore, even if you indicate ENTITIES_MERGED_MANUALLY
, or ENTITIES_MERGED_ON_THE_FLY
, the propagated event is ENTITIES_MERGED
.Uris
contains the URIs of all merge participants.
Custom Rule Events
These are the events that you can use in Custom Rules:
POTENTIAL_LINK_FOUND
: Indicates that the two profiles named in the event may be related to one another.AUTO_LINK_FOUND
: Indicates that two profiles named in the event are strongly related to one another.
For more details, see Understanding Custom Rules.
Support of Entity Type Filtering Using the typeFilter
Property
The typeFilter
attribute is a collection of event type names to stream, and events of different types are ignored. This attribute is not required, and the default value is null
.
Support of Entity Type Filtering Using the objectFilter
Property
The objectFilter
attribute is a filter expression for an event object. An event is not sent to a destination if its object does not match the filter. The expression structure is the same as for search filters. This attribute is not required, and the default value is null
.
objectFilter
property allows messages to be filtered by the entire object content (type
, attributes
, createdTime
, etc). However, for MERGE
events, it allows filtering by the following properties only of the Winner entity: type
, createdTime
, createdBy
, updatedTime
, or updatedBy
.This type of filter does not work properly for MATCHING events, even if the *Winner* Entity has FirstName
= 'Ann'
or FirstName
= 'Andy'
. Such an event does not appear in the queue.
Streaming Events That are Larger Than the Queue Size Limit
Whenever the compressed size of an event exceeds the specified queue size limits of 256 KB for AWS SQS and 10MB for Google PubSub, the event streaming processor sets the exceededQueueSizeLimit
flag to true and then sends the event.
If event size with compressed payload exceeds the specified limit, then, only the sourceObjectUri
is included in the payload. The client application then makes an additional request to Reltio to get the object content, by using the GET {{baseurl}}/api/{{tenant}}/entities/object_id
request.
Example
Examples of Events
Examples for CRUD and Match events are given below.
CRUD Event Examples
updatedTime
will be added to the ENTITIES_MERGED
event when a property (JMSIncludeMergeTime
) in a tenant configuration is enabled (set to true
). Also, the field needs to be included in the JMSEventsFilteringFields
list.
Consumer Implementation Examples
Amazon SQS
Google PubSub