Creating a List Reminder Flow
I have many requirements over the years to send email reminders based on date fields in SharePoint lists. One way of accomplishing this task when using a SharePoint Designer workflow was to use a series of "wait until" actions. This technique is not well suited for Flow - a Flow will not "run" for more than 30 days. Any Flow that is still running after 30 days will be cancelled. In many cases that I have encountered, the reminder will need to be sent more than 30 days after an item has been created or modified.
If you have been creating SharePoint Designer workflows and are now using Flow, you'll find that Flow often requires you to think differently about how you approach issues - this is no exception. On way of attacking this issue in Flow is by running a Flow on a schedule which looks for items in your list that meet the conditions for sending a reminder email. When it finds them, send the appropriate email.
Here is my scenario - you have a SharePoint list where your company keeps track of service contracts on equipment used in the business. At 30 days before the contract expiration, you want to send an email to the POC in your company reminding them that the contract is expiring. One week before expiration, you want to send a second more urgent email to the POC.
My SharePoint list contains the following columns:
- Title
- POC (Person or Group column)
- Expiration (Date Only)
Now for the Flow...
My Flow starts with a Recurrence trigger that runs once a day. The Flow starts and stops once a day and is not subject to the 30 day limitation on Flow durations.
Next, I retrieve items from my Contracts list but I don't want to retrieve all the items - just the ones that meet my criteria. Technically, I could retrieve all items in the list and use a condition to see if an email should be sent. One big reason not to do this is that if you have a large list, Get Items may not return all of your list items.
To filter what I that I get back from Get Items, I used an OData filter. More information on OData filters can be found here.
My Odata filter looks like this:
Translated, it means that I only want items where the expiration date is 30 days from today. Also, please note the date formatting (the last paramter). The reason for the formating is so that the dates I am using are in the same format. Unless they are formatted in the same manner, my filter condition will never be true. The format I am using matches the SharePoint date format.
Once I retrive the items, I loop through them sending each a reminder email.
I finish out my Flow with another Get items action and another send email action. The primary difference between the two Get Items actionsis that I now only want items that expire 7 days out.
Here is a screen shot of my Flow - start to finish:
Thats it!
Comments
-
Creating a List Reminder Flow
Hey, I know this is a shot in the dark, as this is an older blog post, but this is exactly what I am looking to do with a flow, but I keep getting a fail when I test run it.
I am thinking it has to do with the Get Items portion. I am very new with this, so just tried copying your formula and adjusting where needed, but I am still having no luck.
Nick
-
Creating a List Reminder Flow
HI, Thank you for this blog post. I've completed all the steps, but I'm still getting an error. The SOW End Date column in my list is a date selection in the SharePoint list. I'm not sure why it keeps saying the expression is not vaild
-
Creating a List Reminder Flow
Thanks so much, Scott! You are right -- that was exactly the problem!
-
Creating a List Reminder Flow
@ScottShearer thanks for your guidance on this also. I've followed your instructions and I am getting the message "the expression 12-13-2019 is not valid...". Any idea why I'm getting that message. The formatting is the same as on my SharePoint list though I am working with a PowerApps form that works fine.
Thanks so much! -
Creating a List Reminder Flow
Thank you so much @ScottShearer for being so helpful and answering my question, I absolutely look forward to the blog but I was able to resolve one of the issues I had by using the filter query you suggested! Thank you again!
-
Creating a List Reminder Flow
@Anonymous
Here is a link to a post that does what I believe you are looking for.
I have a similar solution that is not quite as complicated which I will be posting soon as a blog.
Scott
-
Creating a List Reminder Flow@Anonymous
You ask a very good question - creating a Flow that sends a single email to an individual with all items that pertain the them is not as simple as it might seem.The steps are:1) Use Get Items and an OData filter to retrieve a filtered list of items2) Generate an array of unique email addresses to which emails will be sent3) Loop through the array and filter the list items so that only the items for an individual are left4) Inside the loop, create an HTML table and insert it in an email
The syntax required for some of the above is not intuitive. I did create a working Flow that meets your requirements. I decided to create a blog post rather than provide it here because of the level of detail required.
Scott -
Creating a List Reminder Flow
Thank you for your post, it's very helpful, hve you had any success with creating an email with a consolidated list of items from a SharePoint list based on the filter? For example, I need to send one email with all the items that are ocming due for an owner, I tried the create HTML table action but it did not give me the desired result so I was looking for a solution, thank you!
-
Creating a List Reminder Flow
Hi Scott,
Thanks for this post! I have a question: will this Flow always send a reminder?
Let's suppose that the Expiration Date column has been changed (extended) in the meantime, will it still send the reminder? Or will it stop the workflow?
I am looking for something similar. But I want the e-mail only to be sent if the value of the column hasn't been changed in the meantime?
Thanks again 🙂
*This post is locked for comments