Saturday, 18 October 2014

Creating a Reminder Workflow on a standard Task List in SharePoint 2013 / SharePoint Online

SharePoint Task lists are one of the great strengths of SharePoint Team Sites. Having a central list to keep track of and assign tasks to people is great for productivity.
But what about when people ignore the list their tasks within it?
In this blog I am going to create a fairly simple SharePoint Designer List Workflow that each day will check whether a task is Overdue AND not Complete, and send a reminder email to the person who is in the Assigned To field.
This will work for a standard Task list. I have created it in Office365 environment, but this will also work on your On-Prem SharePoint 2013 install.
So here goes…

Step 1: Create the list Workflow in SharePoint Designer

  

Step 2: Set up the Stages.

In this workflow, we require two stages: Running, and Finished.

So go ahead and create them using the "Stage" dropdown:

Step 3: Set the conditions

This example uses lots of conditions to check whether it should send the email so you’ll need to insert a 4 conditions within the Running stage.
1. If any value equals value
2. If any value equals value
3. Person is a Valid SharePoint User
4. If any value equals value




So your blank conditions will look like this:

Condition 1: Current Item:Due Date is less than Current date

Condition 2: Current Item:Due Date is greater than 01/01/2000 (this accounts for instances where Due Date is left blank)


Condition 3: Current Item: Assigned to is a valid SharePoint user

Condition 4: Current Item: Task Status not equals Completed


So all of the Conditions together should look like this:

Step 4: Set the Actions

So, what actions to perform if the above evaluates to True?
1. Find Interval Between dates
2. Find Substring in String
3. Extract Substring from start of string
4. Send an email
5. Log to History list



Once you have added these blank actions to your workflow, it will look like this:

Action 1: Find days between Current Item:Due Date and Today (output to Variable:DaysOverdue)

Action 2: Find <space> in Current Item:Assigned To (Output to Variable:fnameLength)
This action will get the number of letters in the first name. Assumes that the Assigned To Display name looks like "John Citizen".

Action 3: Copy Variable:fnameLength (the number of characters in the first name) from the Current Item: Assigned To (Output to Variable:DisplayFirstName).
Output to the DisplayFirstName variable should be "John".

Action 4: Send the email (details below)
Action 5: Log "Sent email reminder" to the workflow history list.

So the finished product of Actions will look like this:

Create the Email





Step 5: The Finished Product:

Stage: Running  If Current Item:Due Date is less than Today and Current Item:Due Date is greater than 01/01/2000 AM  and Current Item:Assigned To is a valid SharePoint user  and Current Item: Task Status not equals Completed  Find days between Current Item:Due Date and (Output to Variable: DaysOverdue )  then Find in Current Item:Assigned To (Output to Variable: fnameLength )  then Copy Variable: fnameLength characters from start of Current Item:Assigned To (Output to Variable: DisplayFirstName )  then Email Current Item:Assigned To  then Log Sent email reminder to: Current Item:Assigned To to the workflow history list  then Pause for I days, 0 hours, 0 minutes  Transition to stage  If Current Item: Task Status equals Completed  Go to Finished  Else Go to Running  Stage: Finished  Log Reminder Task completed by Current Item:Modified By to the workflow history list  Transition to stage  Go to End of Workflow

Step 7: Final Configurations


11 comments:

  1. hi, how is this checking those every day ?
    Thx

    ReplyDelete
  2. did you ever get an answer on how is this checking everyday?

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Works Great! Thanks!
    Is there any way to make this a global workflow so I can have it run with all my different task list on my site?

    http://a1clean.net

    ReplyDelete
  5. I tried to create global workflow but getting below error, Any idea ?

    Activity in progress

    Retrying last request. Next attempt scheduled after 3/21/2016 8:46 AM. Details of last request: HTTP BadRequest to https://mySPO365.sharepoint.com/training/PrateekDev/_api/web/lists(guid'651a252d-b5e1-4da8-987e-da643acdeecc')/Items?%24filter=GUID+eq+guid'00000000-0000-0000-0000-000000000000'&%24select=ID%2CTaskStatus Correlation Id: f6203c33-dd6e-cfb0-becb-8dbfdf6594ff Instance Id: 43210900-0487-4388-97fd-f9996ba78bfc

    The field or property 'TaskStatus' does not exist.

    ReplyDelete
  6. Hi,

    Thanks for sharing.
    Reminder mail is generating from default SharePoint server ID. Is there a way the mail can be generated from created users email ID.

    ReplyDelete
  7. Thanks, I used to have bad employees who never listened. Now I have Westworld robots run by SharePoint.

    ReplyDelete
  8. I’d need to test with you here. Which is not one thing I often do! I get pleasure from reading a publish that can make individuals think. Additionally, thanks for allowing me to remark! gsn casino

    ReplyDelete
  9. Hi,
    Thanks for sharing these instructions. However the assigned user receives every minute an email now. How can I adjust the statement with a counter and or timer?
    I also noticed the variable fields [%....%] in the email message are not filled.
    I hope you can help me out solving both questions.
    Kind regards,
    Jan
    Netherlands

    ReplyDelete
  10. OK I was able to fix most of the fields but one is still failing:
    Dear {"__metadata":{"type":"Collection(Edm.Int32)"},"results":[7]},
    defined as : Current Item:Assigned To

    ReplyDelete