Unify and manage your data

Design Considerations

Learn more about the design considerations for handling errors and large entity payloads.

In this topic, know more about how errors are handled, how to retrieve the latest data from the Reltio platform, and the locking mechanism for events.

Error handling

When a recipe job fails due to an application or data error, it's marked as failed. The error details are passed to the SFDC | FUNC | Error Handler recipe, which logs a message to the centralized RIH logging tool by default and sends an email notification. To ensure this works effectively, we recommend you change or extend this logic to align with your error handling or alerting requirements.

The related recipe jobs table contains the required metadata for search. Here's a sample table:

Retrieving the latest entity payload from Reltio platform

Events processed and delivered to the SNS topic or SQS queue aren't always delivered in order. Sometimes, older messages arrive after newer ones. To make sure you're working with the latest data from the Reltio platform, set SFDC_GetNewPayloadFromReltio to true.

Dealing with large entities or objects

If an entity payload is bigger than the maximum size supported by streaming queues, the Reltio platform sends the attribute exceededQueueSizeLimit: true without including the entity payload. In such cases, the RIH SFDC recipes must retrieve a fresh copy of the entity payload from the Reltio platform.

To support large entities and objects, we recommend you update your tenant's physical configuration with:

"streamingConfig": {
"streamingEnabled": true,
"streamingAPIEnabled": true,
"analyzeOvChanges": false,
"emptyStartEndRelationCrosswalks": false,
"largeObjectsSupport": true,

Locking mechanisms for events with Salesforce crosswalks

When processing events from Reltio to Salesforce in parallel, a locking mechanism prevents duplicate entries when entities lack a Salesforce crosswalk. This occurs when you have an LCA that causes more than one event to be generated at the same time or are faced with a significant load in the system that delays the process.

How the locking mechanism works:

  1. Recipe checks for the Salesforce crosswalk.

    1. If present, processes the job as an update to the Salesforce object.

    2. If not present, verifies the Workato Lookup Table SFDC_LockedEntities. If the entity URI isn't present in the lookup table, inserts the following data to the lookup table

      1. Entity URI

      2. Start time, which is the current time

      3. End time, which is Start time +8 seconds

    3. After data is inserted into the lookup table, the job is processed as a new Salesforce object created.
    4. After the callback to Reltio, the entry is deleted from the lookup table.
  2. If the Salesforce crosswalk isn't present for the entity, find the entity in the lookup table.

    1. If the entity is present in the lookup table and the end time is still valid, pause the recipe for 8 or less seconds and set the isWait to true.

  3. When the isWait=true, then do the following:

    1. Retrieve the entity payload from Reltio.

    2. Obtain the Salesforce Crosswalk.

      1. If Salesforce Crosswalk is present, process the job as an update to the Salesforce object.

      2. If Salesforce Crosswalk is't present, throw an exception error.