none
Sharepoint Calendar reminder to email RRS feed

  • Question

  • I have Sharepoint 2010 on a Window server R2 Standard Service Pack 1. 

    I have a user that wants to setup an event in the calendar. Done, easy. Once that was complete we realized there is no reminder??? Something that every calendar should have. Am I missing something? I also have sharepoint designer.

    Is there a way I can setup a reminder atleast 2 days before the event? or 1 day? I have done a little research and have seen users create workflows. I am afraid to create one because of the "loop" bug affecting Service Pack 1. (which I have). Is there an app for that? lol. As expensive as sharepoint is, you think there would be a reminder alert.

    Tuesday, March 5, 2013 8:19 PM

Answers

  • Hi,

    I understand that you want an alert 1 or 2 days before the event. You can realize that by the following 3 methods.

        1.Using SharePoint workflow only:

             a.Open SharePoint Designer, and create a list workflow associating with your calendar.

             b.Click “Local Variables” in the “Variables” Ribbon. Add a variable such as “Alert time” with the type of “Date/Time”.

             c.Add an action “Add time to date” from “Core Actions”.

             d.Modify the above sentence to “Add -2 days to Current Item: End Time (Output to Variable: Alert time)”, you can modify the volume as your requirement.

             e.Add an action “Pause until date”. Click the “date” and choose “Workflow Variables and Parameters-->Variable: Alert time”.

             f.Add an action “Send an Email”, you can modify the users who will receive the alert.

        2.Using the Retention Policy combine with 2 workflows:

             a.Create a new column for your list in: Calendar-->List Settings-->Columns-->Create Column-->Give it a name such as “Alert time” and choose “Data and Time” type--> Click OK

             b.Create 2 workflows in SharePoint Designer associating with your calendar: assuming WF1 and WF2.

             c.WF1 is used for calculating the alert time and fill the value to “Alert time” column. You can repeat step a/b/c/d in method 1. Then use “Set field in current item” action to set column “Alert time” to Variable: Alert time.  Attention: you need to modify WF1 to run automatically when item created.

             d.WF2 is used sending emails. A “Send an Email” action is enough in this step.

             e.Create a retention policy in: Calendar-->List Settings-->Information Management Policy Settings-->Click Event-->Enable Retention-->Add a retention stage...-->In Time Period section, choose “Alert time”-->In Action section, choose “Start a workflow”-->Choose WF2-->Click OK-->Save the policy.

    The policy will trigger the workflow as due date.

        3.You can create a workflow to check the status of current item, compare the current date with the End Date, and add an Email action. Then you need to create a timer job to trigger that.

    If I have any misunderstandings, please feel free to let me know.

    Thanks,

    Kenon Yin

    Wednesday, March 6, 2013 10:46 AM
  • I use a powershell script scheduled through our company's scheduling server (you could use standard windows scheduling).

    Ours are pretty standard - the user doesn't really set the reminder time, I just have the powershell run once per day, reading the list, selecting the proper items, and sending the emails. You could make it more user controlled by adding fields to control the 'number of days before event', and maybe a checkbox for 'reminder'. who to cc, things like that.

    Our powershell scripts don't run on the SharePoint server, so we use standard calls to the SharePoint web services.

    Reading calendars through webservices is a bit tricky, because you have to be aware of recurring tasks. But a query similar to this, sent to GetListItems, will work:

    $query = $xmlDoc.CreateElement("Query")
    
    $selection = "<Where><DateRangesOverlap><FieldRef Name='EventDate' /><FieldRef Name='EndDate' /><FieldRef Name='RecurrenceID' /><Value Type='DateTime'><Year /></Value></DateRangesOverlap></Where><OrderBy><FieldRef Name='EventDate' Ascending='TRUE' /></OrderBy>"           
    $query.set_InnerXml($selection)
                 
    $viewFields = $xmlDoc.CreateElement("ViewFields")
    $vF = "<FieldRef Name='ID' /><FieldRef Name='AssignedTo' /><FieldRef Name='CC' /><FieldRef Name='EventDate' /><FieldRef Name='Title' /><FieldRef Name='fRecurrence' /><FieldRef Name='EventType' />"
    $vF += "<FieldRef Name='Category' /><FieldRef Name='Location' />"
    $viewFields.set_InnerXml($vF) 
               
    $queryOptions = $xmlDoc.CreateElement("QueryOptions")
    $queryOptions.set_InnerXml("<ExpandRecurrence>TRUE</ExpandRecurrence><CalendarDate><Today /></CalendarDate>")
    
    


    Robin

    Wednesday, March 6, 2013 8:03 PM

All replies

  • Yes there is a way. You can create a workflow that sends notifications based on your own criterias.
    Wednesday, March 6, 2013 6:41 AM
  • Hi,

    I understand that you want an alert 1 or 2 days before the event. You can realize that by the following 3 methods.

        1.Using SharePoint workflow only:

             a.Open SharePoint Designer, and create a list workflow associating with your calendar.

             b.Click “Local Variables” in the “Variables” Ribbon. Add a variable such as “Alert time” with the type of “Date/Time”.

             c.Add an action “Add time to date” from “Core Actions”.

             d.Modify the above sentence to “Add -2 days to Current Item: End Time (Output to Variable: Alert time)”, you can modify the volume as your requirement.

             e.Add an action “Pause until date”. Click the “date” and choose “Workflow Variables and Parameters-->Variable: Alert time”.

             f.Add an action “Send an Email”, you can modify the users who will receive the alert.

        2.Using the Retention Policy combine with 2 workflows:

             a.Create a new column for your list in: Calendar-->List Settings-->Columns-->Create Column-->Give it a name such as “Alert time” and choose “Data and Time” type--> Click OK

             b.Create 2 workflows in SharePoint Designer associating with your calendar: assuming WF1 and WF2.

             c.WF1 is used for calculating the alert time and fill the value to “Alert time” column. You can repeat step a/b/c/d in method 1. Then use “Set field in current item” action to set column “Alert time” to Variable: Alert time.  Attention: you need to modify WF1 to run automatically when item created.

             d.WF2 is used sending emails. A “Send an Email” action is enough in this step.

             e.Create a retention policy in: Calendar-->List Settings-->Information Management Policy Settings-->Click Event-->Enable Retention-->Add a retention stage...-->In Time Period section, choose “Alert time”-->In Action section, choose “Start a workflow”-->Choose WF2-->Click OK-->Save the policy.

    The policy will trigger the workflow as due date.

        3.You can create a workflow to check the status of current item, compare the current date with the End Date, and add an Email action. Then you need to create a timer job to trigger that.

    If I have any misunderstandings, please feel free to let me know.

    Thanks,

    Kenon Yin

    Wednesday, March 6, 2013 10:46 AM
  • I use a powershell script scheduled through our company's scheduling server (you could use standard windows scheduling).

    Ours are pretty standard - the user doesn't really set the reminder time, I just have the powershell run once per day, reading the list, selecting the proper items, and sending the emails. You could make it more user controlled by adding fields to control the 'number of days before event', and maybe a checkbox for 'reminder'. who to cc, things like that.

    Our powershell scripts don't run on the SharePoint server, so we use standard calls to the SharePoint web services.

    Reading calendars through webservices is a bit tricky, because you have to be aware of recurring tasks. But a query similar to this, sent to GetListItems, will work:

    $query = $xmlDoc.CreateElement("Query")
    
    $selection = "<Where><DateRangesOverlap><FieldRef Name='EventDate' /><FieldRef Name='EndDate' /><FieldRef Name='RecurrenceID' /><Value Type='DateTime'><Year /></Value></DateRangesOverlap></Where><OrderBy><FieldRef Name='EventDate' Ascending='TRUE' /></OrderBy>"           
    $query.set_InnerXml($selection)
                 
    $viewFields = $xmlDoc.CreateElement("ViewFields")
    $vF = "<FieldRef Name='ID' /><FieldRef Name='AssignedTo' /><FieldRef Name='CC' /><FieldRef Name='EventDate' /><FieldRef Name='Title' /><FieldRef Name='fRecurrence' /><FieldRef Name='EventType' />"
    $vF += "<FieldRef Name='Category' /><FieldRef Name='Location' />"
    $viewFields.set_InnerXml($vF) 
               
    $queryOptions = $xmlDoc.CreateElement("QueryOptions")
    $queryOptions.set_InnerXml("<ExpandRecurrence>TRUE</ExpandRecurrence><CalendarDate><Today /></CalendarDate>")
    
    


    Robin

    Wednesday, March 6, 2013 8:03 PM
  • Hey Robin

    i like your idea i am working on very urgent project on sharepoint and need to set a reminder for recurring events on my calendari havent found something useful. any help would be greatly appreciate and more. contact me at buju03 thru hot mail.

    thanks

    Monday, July 15, 2013 3:35 PM
  • Hey Kenon,

    i really like your approach there, but i am working on a project that has recurring events. how can i approach that? this is a very urgent project any help would be greatly appreciated and more. can contact at buju03 thru hot mail for more details. awaiting your email.

    thanks,

    Monday, July 15, 2013 3:38 PM
  • Does this way still work for Sharepoint 2016, and can it be applied also for lists or list items?

    I need to set up different reminders for every list item.

    thank you,

    Ani

    Wednesday, May 30, 2018 8:51 AM
  • Hi Kenon, Would it be possible to trouble you with screenshot by screenshot step. As i cant even find "Local Variable"

    Friday, July 20, 2018 1:35 AM