DISQUS

DISQUS Hello! SharePoint Magazine is using DISQUS, a powerful comment system, to manage its comments. Learn more.

Community Page

SharePoint Magazine

SharePoint Magazine is an online magazine dedicated to the world of SharePoint and related Information Worker technologies.
Jump to original thread »
Author

“The Dog Ate My Task” - Use SharePoint Designer to Email Daily Task Reminders

Started by Arno Nel (SharePoint Magazine) · 11 months ago

Use SharePoint Designer to create a workflow solution that sends a daily email reminder to business users to complete their assigned tasks. ... Continue reading »

45 comments

  • Great article Paul. clean, consice, and enjoy your use of screenshots. well done.
  • Hello,

    While it is fully possible to use SPD for this purpose I hesitate to do so. Not just because I am a developer, but because I prefer the right tool for the right job. I don't use a hammer to get a wingnut in place, even if it would be possible.

    However, I really love your way of inspiring creativity. People seriously underestimate what is possible with SPD. I've previously used SPD to mimic a ticket handler functionality using simple intelligence to determine if an incoming email to support@example.com should be routed to helpdesk, how important it is, and to handle automatic escalation. I wouldn't put it into production, it was used primarily to demonstrate what you are doing here, that SPD can be very flexible if you need it to be.

    What I really miss is more focus on combining 'regular' development with SPD, specifically creating custom activities. Quite often semi-power users need to do more advanced tasks or end up creating the same, repeating set of tasks multiple times. Being creative may solve the problem of creating advanced tasks, but if ten people want to accomplish more or less they same they tend to end up creating ten different solutions, taking ten times as long and frustrating IT ten times as much. These power users should learn when it is not efficient to create new solutions and either create or have someone create a more versatile custom activity.

    Again, SPD out-of-the-box is not always the best or even a good solution, but combine it with some custom development and it can become truly amazing in a lot more cases.

    .b
  • I see an article in that comment :P

    Paul?
  • 'I'm curious, would Nintex Workflow be able to do this workflow? As far as I know Nintex is easier and more powerful than Sharepoint Designer in workflows (but less than Visual Studio off course).
  • (Very late response :)

    I think that K2, Nintext and maybe some other 3rd party tools would be more than adequate to do this. However, many people are not going to get access to a product like that and that's why I wrote about this subject.
  • Excelent workaround. Thanks!
    But I have a problem, my list has several content types. Is it possible tu attach this workflow to all content types with sharepoint designer??
  • (Very late response, sorry!)

    You can't attach a sharepoint designer workflow to a content type, at least not in any normal sense of it. If it's possible at all, it would require coding.
  • Can't you just check the content type field of the item to determine what the content type is, and then either process or not?
  • This is a great way to show the capability of the SharePoint Designer platform. My concern is of a related note to another commenter. By creating a chain of several workflows which are executing, you will quickly choke the WorkflowTasks (not in this workflow, but perhaps in other scenarios inspired by this) and WorkflowHistory lists and will cause them to hit the 2000 item limit sooner than with a VS.NET workflow. I hesitate to spam these lists whenever possible, as it may make auditing of naughty actions much harder to find in the haystack.
  • Whats the 2000 item limit., I know of suggested "limits" related to performance and list sizes but is there anything that won't function after item 2000? (Such as history entries?)

    Thanks
  • It won't outright stop, but 2000 items is a strong recommendation in terms of max items in a list.

    Some people say the practicle limit is even smaller.
  • good post!
  • Maybe I didn't get the whole idea, I am still learning sharepoint. But it seems to me the "ReminderEmailSent" field is not necessary?
    If the "ReminderEmailCounter" equal 0, that means no email has been sent. There is no need another field to flag this.
    Also, what is the purpose of knowing whether email has been sent or not? Can we pause 24 hours when the workflow start and then check that task status,if it is not "complete", just send out the emails and set the counter.

    Will it work?

    Thanks.
  • You're right, I think. I added that mainly as a colum of info to show. I like my systems to actively tell me stuff rather than try and infer it indirectly.
  • can't post comments?
  • Nicely laid out article - Yes you can do this but its a lot of work and has some problems that other posters have commented on.

    There are some 3rd party tools that do this a little easier (shameless plug, first one is my own!)

    http://www.pentalogic.net/sharepoint-reminder.aspx
    http://www.bamboosolutions.com/
    http://www.sharepointboost.com/alertreminderboo...
  • Is it not dangerous to use a column for the 'email reminder sent'? The user who has to complete the task can edit this field (and influence the workflow)?! Or am I missing something?
  • I think you're right, it is dangerous. One way to solve that is to "hide" the field in the content type that gets generated by SPD. Once it's hidden, it can't be edited but it can still shown in a list view.
  • This is not a good technique because workflow recursion is actually a well-known bug in SPD. So this article leverages a bug, not a feature.

    This means that when MSFT releases a fix for this bug and you install it, this workflow will no longer work.
  • Where is it documented that it's a bug?

    MSFT already released many months of patches, SP1 and the infrastructure update so it seems like it's very low priority, if it is actually a bug they plan to fix.
  • Sorry Gly, but there's a difference between recursion and intentional repetition. There are conditions specified for each iteration of the loop in Paul's solution, therefore the behavior described is not recursive.
  • I used your example and it works great. One problem though, an Item has been changed email gets sent out after the counter gets updated. Is there anyway to get SP to not send the item has been changed email for the counter column.
  • Thanks much pagalvin, very instructive! Now I don't want to go diverging off the topic of your post, but could this be adapted for use on a issues list, where an email is sent periodically when it's status isn't completed? The rub I see in adapting this is that you have to check the "Automatically start this workflow whenever this item is changed", and hence any dicsussion on an issue starts the workflow email again. But for Tasks, it was very helpful, you taught me a lot!!
  • Great Article Paul. I want to send an email alert every monday. How can i do that. Which step in the workflow tells it that the email alert has to be sent after every 24 hours. Am i missing something
  • Nice work pagalvin...
  • This is a great article.

    However, I was just doing some developing and I was testing a workflow and did not want to wait 24 hours so I set it to 5 minutes. It never sent me the email and it only looped 4 or 5 times before finally deciding to be Complete instead of In Progress. The workflow should remain In Progress right? I didn't know if this was a glich or something. Maybe not enough time has been given for the service to run correctly.
  • I'm getting the same behavior. First test looped 4 times, second test 2 times, third test only interated once. No error message. Every stepped is logged properly. It seems to stop for no reason.
  • Same here. I've tried 5 minute to 4 hour intervals. I've even tried using "pause until date" instead of "pause for duration". I would get between 1 and 8 reminders before it stopped and marked the workflow as completed.
  • Has anyone found a solution to the variability in the iteration? I am also finding that my workflow is actually updating a value in the Current Item, but it never restarts. As a result, I may get 1 iteration in my test or 10. There doesn't seem to be any consistency.
  • having the same problem. it doenst metter if it's 24 hours or one. it works once/twice then i get "completed" and it doenst work anymore....
  • having the exact same problem. I have updates WSS to sp1, and the .net to the latest service pack as well, and nothing seems to solve it. It appears that after a reboot of the actual server, things seem to work for a little longer, but then - after a random number of iterations - the flowchart gets marked completed. There has to be a reason for this. Can anybody help?
  • hi paul,
    i tried adding Log message to workflow history list option but whenever I am viewing the workflow history of a specific record, the old message is still the one displayed.
    any thougths on this?

    thanks!
  • hi paul,
    i tried using the Log message to workflow history but whenever I am vieewing it, the old message still appears..

    any thoughts on how to fix this?

    thanks!
  • Great example, I have followed this example step by step, but for some reason in the "send initial email" step, nothing after the Pausing statement gets processed, I get the email, and the "FirstEmailReminderSent" is set to YES, in the description the pausing is set to the right time, but the EmailReminderCount is still set to 0. I tried a different workflow example and i have the same problem nothing gets processed after the pausing statement. ANY help would be much appreciated. Thanks
  • I really hope this capability is built into the next version of sharepoint this request happens all the time. I have written console apps and ran them as scheduled tasks to perform operations that you think would just be built in.

    I have tried various techniques like this including using one list to loop through another, but they seem problematic. I’m glad that some people were successful following your well detailed instructions. But I was not one of them. I only get one instance of the workflow to run. i.e. changing the emailremindercount does not fire off a new instance of the workflow.
  • Is there anyway to work around timezone issues.

    For example I have users in Hong Kong, London and New York.

    If I create a task so that it has a due date of 25th December in Hong Kong when users open it in London or New York the due date appears as the 24th not the 25th.

    Any help would be greatly appreciated. Is there anyway of assigning an all day flag to a task due date in the same way as the calendar does for example.
  • Sorry by my poor english

    Great article, we have a problem with alerts and this article is a solution, and have a question.
    One question : is posible to use a group of sharepoint or shareponit's group for to be a destinatary of mail?

    One question : it is possible that I can use your articles translated into Spanish in a site sharepoint?

    Thanks Pagalvin for your article
  • i just can't get it to work.
    everything works fine. the "poked" filed updates itself but the update doesnt trigger the workflow to start again.
    I set it to everytime an item changes, menual change triggers it but not the "scripted one" from the workflow.
    I'm clueless....
  • Actually, I accomplished this slightly differently and without looping or creating placeholder columns. I used your article as a good conceptual guide. Hope this helps.. It is working well for me. My actual workflow is more detailed and tailored to my environment, but here is the gist..

    All done in Sharepoint Designer. You should consider adding Log messages to the instructions below. By the way, when testing, dont set the counter to 5 minutes.. it wont always work. Plan the testing over a few days.. make it realistic and be patient! I read there are some bugs when setting the time triggers too low..

    Create some Workflow steps. Each step is separated with commented ### marks:

    Make certain the workflow starts when a new item is created or modified.

    ### Check if task is set to Completed when created/updated ####

    If Status equals Completed
    Stop Workflow

    ### Create a "date" variable named strReminderDate for a 2 day warning that task will be due ####

    If Status does not equal completed
    Add -2 days to Due Date and output to strReminderDate
    Then pause until strReminderDate

    Else If Status equals Completed
    Stop Workflow

    ### Email 2 Day Warning to Assignee unless uncompleted task was created within 2 days of Today and Pause until Due Date ###

    If Status does not equal Completed and Due Date is greater than Today
    Email Assigned To:
    Pause until Due Date

    Else If Status equals Completed
    Stop Workflow

    ### Email Assignee and pause for 3 days to be escalated if task not complete ###

    If Status does not equal Complete
    Email Assigned To:
    Pause for 3 days

    Else If Status equals Completed
    Stop Workflow

    ### Escalate uncompleted task to Manager ###

    If Status does not equal Completed
    Email Manager
    Stop Workflow

    Else If Status equals Completed
    Stop Workflow

    ##############
  • Dan;

    The problem with your method (and the reason that Paul's requires a "poke" column) is the Pause until strReminderDate or Due Date action. This pauses the workflow and causes it to stop "listening" to list updates so that if the due date is changed the workflow will not detect the change and update.

    If you're going to use an SPD workflow for this application then you need to use a method like Paul's to loop the workflow with a frequency (daily, weekly, whatever) that is acceptable to your end user.
  • Is there a way to trigger a workflow based on a field(date)?
    List has two columns: Due Date (manually entered by user) and "One week Reminder" (calculated date based on "Due Date")

    i.e User create the doc Today(2-6-2009) and enter "Bill Due Date"=3-8-2009 so "One Week Reminder" will be 3-1-2009

    How can workflow send out email on 3-1-2009?

    Once the user gets the email, he/she will update the "Bill Due Date" to some future date and again one week before that date, workflow should sent out remonder.

    Thanks
  • Good article,great thought. No matter how many limitations is has, I wold say it solved put Sharepoint Reminder in new high.
    Right new I am using Sharepoint Alert Reminder Boost (http://www.sharepointboost.com/alertreminderboo...) which serves me well. I think the difference between your solution and the third party tools is that for some tech savvy your solution is great, brings some sort of accomplishment while third party tool is more reliable and easy to use.

    Nevertheless, your blog gives me fresh knowledge. Thanks!
  • Hi

    Does anyone know if there is a way of scheduling tasks in a Sharepoint list automatically?
  • For the e-mail to field I put in "Task: Assigned To" and it works just fine. This is very helpful if you are making your own ticketing/tracking system which I'm currently working on for the company I'm with.
  • What a well-though-out article, Paul! Thank you for taking the time to post your excellent instructions and helpful screen shots!

Add New Comment

Returning? Login