Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I'm attempting to create an alert via code such that it triggers only when a document is published. I have used the following with no success.

SPAlert

alert = currUser.Alerts.Add();
alert.Filter ="<Query><Eq><FieldRef Name=\"vti_level\"/><Value type=\"integer\">1</Value></Eq></Query>"; 
alert.Title = "Test Alert '" + selectedFileName + "'" ; 
alert.AlertType = SPAlertType.Item; 
alert.EventType = SPEventType.All; 
alert.Item = selectedFileListItem;
alert.AlertFrequency = SPAlertFrequency.Immediate; 
alert.AlwaysNotify = true;  
alert.Update(true);
share|improve this question
    
Betty, you're not going to be able to setup an alert to fire when a document is specifically published. You could setup an alert to fire on modify, which should pick-up the publishing action, but it will pick-up any action that modifies the document. –  Rob D'Oria Jul 25 '11 at 14:29
    
You wouldn't want the scope of the alert to be a specific item, you'd want to target a list...so alert.List (or alert.ListId) instead of alert.Item. –  Rob D'Oria Jul 25 '11 at 14:57

2 Answers 2

Betty, try something like this (...it works for me):

            SPAlert alert = site.RootWeb.CurrentUser.Alerts.Add();
            alert.Filter = "<Query><Eq><FieldRef Name=\"_Level\" /><Value Type=\"Integer\">1</Value></Eq></Query>";
            alert.Title = "Test Publishing Alert";
            alert.AlertType = SPAlertType.List;
            alert.EventType = SPEventType.Modify;
            alert.List = site.RootWeb.Lists.TryGetList("Site Pages");
            alert.AlertFrequency = SPAlertFrequency.Immediate;
            alert.AlwaysNotify = true;
            alert.Update();

Note that I'm using _Level instead of vti_level, alert.List instead of alert.Item, and SPEventType.Modify instead of SPEventType.All. You also have Value type="integer" in your query, s/b Value Type="Integer" ...integer is probably OK, but type definitely won't work.

share|improve this answer
    
Rob, thank you for your help. Would your code fire for ANY file that is published in this list? I specifically need it to fire for each specific file. –  Betty Aug 5 '11 at 17:11
    
Yes...it would work for any file. Just as a FYI, you should mark my answer as correct in lieu of creating your own answer and marking it correct...I don't get any credit for answering your question when you do that. –  Rob D'Oria Aug 5 '11 at 17:50
up vote 0 down vote accepted

Thanks to Rob I was able to solve this problem. The following worked for me.

            SPAlert alert = sourceWebObj.CurrentUser.Alerts.Add(); 
            alert.Filter = "<Query><Eq><FieldRef Name=\"_Level\" /><Value Type=\"Integer\">1</Value></Eq></Query>";
            alert.Title = selectedFileName + " - Publish Alert";                 
            alert.AlertType = SPAlertType.Item;      
            alert.EventType = SPEventType.Modify;                
            alert.Item = selectedFileListItem;
            alert.AlertFrequency = SPAlertFrequency.Immediate; 
            alert.AlwaysNotify = true; 
            alert.Update();
share|improve this answer
    
I tried exact code it doent seem to work, will this work only for Item or List as well . –  Kusek Aug 19 '11 at 13:57

Your Answer

 
discard

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.