SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a document library which has a field for Expiry date. This field is not mandatory and is used for our Legal team to identify if the contract is close to expiring.

The Legal team would like to get an email reminder 30 days prior to the expiry date and then also 7 days prior to expiry date if no action has been taken.

What is the best way for me to implement a solution?

I have been thinking of a workflow, but the expiry date may be a year or two in the future? Another thought has been to add an entry to a calendar and then send the email out from here.

I'd like to hear peoples views on their approach.

share|improve this question
up vote 2 down vote accepted

Workflows seem like the right way to do it. This should work no matter how far the expiry date is.

One question is whether the expiry date can be modified later after the workflow has started. If it is the case, you'll need to have two branches in parallel in your workflow: one that will wait for the expiry date, and the other that will force the workflow to stop and restart if the item is changed.

Update: some more detailed explanations can be found here:

share|improve this answer
Can you explain how to create the branches in parallel? I have the problem that when the workflow is updated it remains paused and I can't get the alert to go out at the right time. – Bob Jan 10 '12 at 22:09
I found the reference and added it to the reply. – Christophe Jan 10 '12 at 22:50
Above link is not working. Please add the steps or code here. Thanks – Rishi Jagati May 12 at 8:39

In my view, The best way to do with a daily timer job.

Over the period if you have many documents(say 1000+), the corresponding queued workflows may cause a performance hit.

share|improve this answer
Hi I require an email to be sent when a date column =today. Could you explain how to do this wit a timer job pls? – Raj Chahal Nov 18 '13 at 10:12
If you had Nintex Workflow, a scheduled Site Workflow would work as the daily job for you. – Alexey Krasheninnikov Apr 15 '15 at 7:37

This answer on StackOverflow details a few different ways to do this - workflow, scheduled jobs, open source and commercial add-ons.

Its talking about a calendar list and "Start Dates" but its no different to Doc Lib and expiry dates.

StackOverflow - Dated reminders in SharePoint calendars

share|improve this answer
+1 for finding information already here – Eric Alexander Dec 14 '11 at 15:11

You can always set Information Management Policy for your documents.

Take a look at : Policy Features in SharePoint Server

Microsoft SharePoint Server 2007/2010 includes four information management policy features to help you manage your content: expiration, auditing, document labels, and document bar codes.

Expiration policy is thing you need:

After the document expires, you can determine the actions that the policy control takes. For example, the policy can delete the document, or define a workflow task to have SharePoint Server 2007/2010 route the document for permission to destroy it. In addition, the expiration policy feature provides the capability for you to build and use a custom plug-in action to be performed on the item after it reaches its expiration date.

Some links with more details:

IMHO you should avoid any solution that requires development of long running workflows (they are unstable and not flexible) and if you go with custom solution for this task develop daily timer job like @AmitKumawat suggested.

share|improve this answer

Greg you can try using the Pause until date activity (Workflow) See this :

If not i just use Powershell. Let me know if that helps. Patrick

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.