Monday, May 23, 2011

SharePoint Alerts: The default 9 "Send Alerts for These Changes " Task List Alerts

Hello folks.

Once upon a time, I was trying to create SharePoint Task list Alerts programmatically for each user that had been granted permissions to the specific site. The requirement was that these users would be assigned tasks and they needed to receive notifications summarising all the tasks that they had been assigned, on a daily basis.
Thanks to our old man Mr SharePoint, who has Alerts that can help us achieve this need. The major work for me to achieve this was setting up the "Send Alerts for These Changes" filter, which required building a CAML query. I finally came right but then I thought about documenting the CAML queries for each one of these filters,, with the correct syntax, which by default out-of-the-box are 9, and am sure would save someone sometime.

So here is a list of the default 9 "Send Alerts for These Changes " Task List Alerts.

1. Anything changes
alert.Filter = "";
2. A task is assigned to me
alert.Filter = "<Query><And><Eq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="AssignedTo/New"/></Eq><Neq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="AssignedTo/Old"/></Neq></And></Query>";
3. A task becomes complete
alert.Filter = "<Query><And><Eq><Value type="string">completed</Value><FieldRef Name="Status/New"/></Eq><Neq><Value type="string">completed</Value><FieldRef Name="Status/Old"/></Neq></And></Query>";
4. A high priority task changes
alert.Filter = "<Query><Or><Eq><Value type="string">" + PriotityChoiceString + "</Value><FieldRef Name="Priority/New"/></Eq><Eq><Value type="string">" + PriotityChoiceString + "</Value><FieldRef Name="Priority/Old"/></Eq></Or></Query>";
5. Someone else changes a task assigned to me
alert.Filter = "<Query><And><Or><Eq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="AssignedTo/New"/></Eq><Eq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="AssignedTo/Old"/></Eq></Or><Neq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="Editor/New"/></Neq></And></Query>";
6. Someone else changes a task

alert.Filter = "<Query><Neq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="Editor/New"/></Neq></Query>";
7. Someone else changes a task created by me

alert.Filter = "<Query><And><Or><Eq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="Author/New"/></Eq><Eq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="Author/Old"/></Eq></Or><Neq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="Editor/New"/></Neq></And></Query>";
8. Someone else changes a task last modified by me

alert.Filter = "<Query><And><Eq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="Editor/Old"/></Eq><Neq><Value type="string">" + user.LoginName + "</Value><FieldRef Name="Editor/New"/></Neq></And></Query>";
9. Someone changes an item that appears in the following view
alert.Filter = "<Query><Eq><FieldRef Name="AssignedTo"/><Value type="string">" + user.LoginName + "</Value></Eq></Query>";

Enjoy!

No comments: