Good News.
I spoke with someone from MS regarding this issue and he sent the below follow-up email to me today.
"I have been able to set up some local tests on my machine to narrow down the problem and have had a talk about this with the product group as well. The issue happens if the Delay is inside a replicator, there are many delays running in parallel, or if DelayFor is the last activity in a workflow, using just a delay activity in a workflow works fine.
The product group is aware of these issues and is looking into all these scenarios. As of right now I [do] not have any time lines for a fix or an update, it could take a while to have a public fix available. I am the owner of this bug [and] will keep monitoring this issue and watch for updates..."
If you can tweak your setup so that it doesn't fall in to the above scenarios, it may work, otherwise, I ended up using a regular Delay Activity which has the following settings: TimeoutDuration which is in the format of DD:HH:MM:CC (The CC is seconds b/c the SS caused a smiley ). So, the following would be 50 days, 40 hours, 30 minutes and 00 seconds: 50.40:30:00.
Instead of using the DelayUntil, try using a regular delay. I took the DATETIME of today and subtracted it from DATETIME of 'your date' and converted it into Days,Hours,Minutes, & Seconds.
Example:
Code:
DateTime dtReminder1 = Convert.ToDateTime(workflowProperties.Item["Reminder 1 Date"]); // gets datetime from a field named 'Reminder 1 Date'
TimeSpan tsDiff = dtReminder1.Subtract(dtToday); // subtract today from 'Reminder 1 Date'
Double dblDays = tsDiff.Days; // get days
Double dbltemp = tsDiff.Hours; // store total hours into temp variable
Double dblHours = dbltemp % 24; // extract days (24 hours/day) from tsDiff, so you are left with just the hours
Double dbltemp2 = tsDiff.Minutes; // store total minutes into temp2 variable
Double dblMinutes = dbtemp2 % 60 // extract minutes (60 mins/hour) from tsDiff, so you are left with just the minutes
You are left with the following:
dblDays = # days, dlbHours = # hours, dlbMinutes = # of minutes.
Instead of using the DelayFor, try using the regular delay. This is allready set to use Hours Minutes and SEconds, so instead of using three settings (days, hours, minutes), convert into one string 00.00:00:00.
Hope this helps!
Jonathan K. Herschel