Thursday, August 19, 2010

SharePoint 2007 issue with Alerts and Event Reciever triggerred on the same list Item

We ran into an interesting issue with SharePoint 2007 alerts recently. I dont know if it has been addressed in SP 2010.

Here is the issue:

- We have a list that has an Event Reciever. The Event Reciever is fired after an Item is Added or Updated, and it updates a number of columns based on the selection the user makes on a particular column (a drop down list). The updates are made based on references to a look up list.

For example, let's assume there is a column called Country ( a drop down list) on the list. There is another column called Public Debt on the list. The default value of the Public Debt column is 0. The user selects United States and submits the entry. On submit, the event reciever is fired and it updates the column called Public Debt with a value stored in another Lookup list.

Now, assume a user has set up an alert for All types of changes ( inserts, updates and deletes). The Alert Email displays the default value of the Columns that are supposed to be set by the Event Reciever. Hence, when a new Item is created the Alert Email displays 0 for the Public Debt column instead of the value set by the Event Reciever. However, the values are displayed correctly in the List Item. That means the Alert Email is created BEFORE the event reciever has run, which is inexplicable.

Now the interesting part is as follows: if the user updates the same list item once again ( even if it is a dummy update, in other words, a column other than Public Debt and Country ), the Alert Email displays the correct vaue.

This causes confusion amongst users, who see values different in emails from those in the List Items.

The onlyy solution I can see to this problem is to use the Event Reciever to send Alert Emails and tell users that the 'Alert Me' functionality has been disabled for that List.

No comments: