2) Update qualification rules so that each record can qualify once or once every 24hours.
That doesn't fit the business requirements, because there's no restriction that the values will only change once every 24 hours. The goal is to have scores adjusted a maximum of one time for every CRM sync cycle.
Exactly!
So this would help you all understand the issue better: https://youtu.be/Id1xfYvIiJE?t=1907
We modelled this off Edward's architecture. When you see the "Gating ReRoll" Campaign, you will see he also has multiple triggers, but I can't figure out how this would not also result in a CRM sync firing off multiple parallel campaigns when mutliple data values are changed from a single sync.
The consequence is that each campaign starts at a slightly different timestamp, so the first campaign might reach a score flow step and add +20, but then the second campaign starts, and sets the score back to zero, so these parallel campaigns are affecting the score field at the same time, but out of order.
I had an idea. I could puish this back to Salesforce to handle the triggers and abstract it into a single boolean instead. So basically, have salesforce calculate if one or more of those fields are changed, update a checkbox to true to tell marketo to rerun the demographic score recalculation. Then update the trigger in Marketo to be a change to that boolean and = true. Then at the end of the recalc, reset the check to false.
Another idea:
Have a DateTime formula field in SFDC. This field will not itself cause a sync. But when the sync runs and any other non-formula fields change, the formula field will be brought over and in turn trigger a Data Value Changes in Marketo.
And that DVC then becomes a proxy for the (imaginary) SFDC Sync Complete trigger that we don't have.
When that DVC triggers, concatenate your interesting {{lead.tokens}} into a single Textarea field, let's call it Synced Scorables. Make sure to choose a suitable delimiter between tokens. Something exotic like "" (the symbol-for-newline character) will likely do, although a real control character would be better it's probably not worth the work.
Then when a Data Value Changes triggers for Synced Scorables, you know that at least one of the tokens contained in the concatenated field has changed. The trigger itself will only fire once per sync cycle.
I think both our methods are similar mate. They both abstract the trigger logic into a single field, and use that field to spawn the re-roll to occur once 🙂
I'm a big SF dude, so using the SF process step to check for any changes and flag a boolean seems like the easiest and cleanest way for me.
Thanks and I'll report back if this works. I've also sent @Edward_Unthank_ a tweet to see if he came across this issue in his logic before or not.
Right, they both collapse the change detection into a single field, but one is built more on the SFDC side and the other on the Marketo side. If you weren't into building things out in SFDC yourself, it'd be easier to get the SFDC admin to add the field and you wouldn't have to explain anything else. 🙂
Yeah definitely, I makes it easy when you are the lead admin for both platforms 🙂
FYI: We tested and it all works now (yay!)