I have a workflow that fires on creation, re-assigns the record, and then sends an email to the assignee. The email "to" field is dynamically-generated from "owner", so it should reflect the fact that record was re-assigned in a previous step.
If I put no wait conditions after the re-assign step, then the email gets sent to the original assignee, not the new one, even though the record is re-assigned properly after the workflow finishes. If I put a timeout of 1 minute, it sends it to the new assignee after the timeout.
How exactly does the re-assignment work? I thought all workflow steps are always synchronous, and you can trust that a previous step has completed fully before the next one is started, but this is clearly a counter-example. This thread seems to support the fact that some asynchronicity exists. community.dynamics.com/.../102152.aspx
How can I guarantee that the re-assignment has completed without putting in unnecessarily long timeouts? I can certainly live with 1 minute, but can I be certain that that's long enough to always avoid a race condition? Do workflow stages enforce synchronicity in any way, or are they only for logical grouping?