[SalesForce] Contact Data Decision Split for synchronized Salesforce DE leads to wrong path

I encountered a problem in Journey Builder, where decision splits that check for changes in Salesforce Service Cloud (filter expression is configured to retrieve Contact Data from synchronized data extension) don't lead to the path they should. The data is definitely synced correctly, as retrieving the changed data from the synchronized data extension via AMPscript in a mail sent by the journey leads to the correct result (retrieving the data using the salesforce-id of the object that is present in event/journey data).

This problem occurs every time a contact enters the journey more than once (which is legitimate as there can be more than one trigger object per contact (in my use case these objects represent offers for a customer)) and decision splits should act on changes in service cloud. However this shouldn't be a problem as the changed record can be uniquely identified by a salesforce id and even the journey is triggered by this very service cloud custom object (Salesforce Data Event).

Summary:

  • Salesforce Data event triggers the journey (update of custom object X)
  • The contact has a 1-to-many relationship to custom object X
  • Salesforce Contact-Id is used as subscriber key
  • Waiting steps in journey are long enough for synchronization to definitely happen
  • Data is synchronized correctly and can be retrieved via AMPscript
  • Contact Data decision split doesn't evaluate correctly

Best Answer

Debugging results (together with Salesforce):

I debugged this issue together with Dave Hacker, who is Sr. Technical Product Manager, Data Products at Salesforce Marketing Cloud. Concluding our investigations there is currently some (for most customers) unwanted behaviour in the Marketing Cloud contact model. If there are multiple paths to one attribute, the shortest path is selected. If multiple paths have the same (shortest) length, random selection is applied. Moreover, no matter the relationships established in Data Designer, paths are always established via the Contact/Subscriber alone (so the Service Cloud Id of custom object X is ignored although it would lead to the correct result).

Intended fix by Salesforce: (EDIT: as of 2019, 1-to-many relationships still don't work even with the path selection option)

Dave confirmed that his team is working on a solution that lets the user select the desired path for evaluation. However this won't be released before the end of 2017. Until then the team is additionally working on improveing the documentation of the bug (which is currently done in a Salesforce Success article) where Salesforce is also going to share a link to my solution:

Confirmed solution that currently seems to be the only option:

I proposed using a custom split activity that receives the Salesforce Id of custom object X as input from Journey Builder and then checks the field used for the split directly via the Service Cloud API (from the split's backend) and returns the correct branch-result to Journey Builder.

I created such an activity, that can be deployed to heroku after adapting it to your needs. The needed changes are documented in the README-file. You can find the complete code and documentation on my github-account: Salesforce Marketing Cloud - Service Cloud Custom Split Activity.

Related Topic