Provide a throttle mechanic for programs with the same contact
As there is currently no feature to send to CDO records outside of program builder and CDO record processing the most used workaround is to run an update rule on a record to make it last modified and send the contact to a campaign.
This is fine for most cases but imagine an event invitation that is managed in crm. A sales rep adds a contact to 2 events at the same time they get synced to eloqua at the same time and go through the program at the same time.
This results in the customer getting a mail 2x for the same event.
There are better solutions (see my cdo campaign idea) but there is one that could help in the short term and still be useful later if a CDO campaign is ever introduced.
My suggestion would be to introduce a new step in program canvas(mainly cdo) called 'contact throttle' where you can push records into and if a contact has already gone through in the last x time then the step will 'hold' the contact/record for x time (both times to be configured on the step).
This allows you to still run an update rule (after the throttle) and send the contact to a campaign to send the event invite. If you set the throttle to 2 hours or so you are guaranteed that the first mail is already sent and there is no interference.
I also see a benefit here as we would not send 2 invites at the exact same time (which would happen if you send via cdo program builder) it would benefit the customer to experience to have separate ones.