Mi è capitato, in questi ultimi giorni, di realizzare un prodotto che si interfacciasse con SharePoint tramite gli web service. Puntualizzando che Microsoft ha fatto veramente un buon lavoro, mi trovo a dover aggiornare lo stato di un documento, lasciando la possibilità all'utente, di deciderne il ciclo di vita. 
 Non mi dilungo nella spiegazione degli stati dei documenti e dei potenti workflow messi a disposizione da SharePoint, ma vi segnalo un interessante argomento.
 Dopo alcune ricerche cerco di aggiornare lo stato così: (0 è approved; 2 è pending; 1 è rejected)
 Lists listService = new Lists(); 
listService.Credentials = System.Net.CredentialCache.DefaultCredentials;  
XmlDocument doc = new XmlDocument(); 
System.Xml.XmlElement updates = doc.CreateElement("Batch"); 
try 
{ 
        updates.InnerXml = string.Format(@"<Method id='1'  Cmd='Update'>" + 
        "<Field Name='SPR No'>63626</Field>" + 
        "<Field Name='Severity'>Critical Failure</Field>" + 
        "<Field Name='_ModerationStatus'>1</Field>" + "</Method>"); 
         XmlNode node = listService.UpdateListItems ("139289E8-7DE2-4EBF-99DE-BC57B6AE0129", updates); 
} 
catch(Exception ex) 
{ 
        string strError = ex.Message; 
} 
 ma nulla da fare si aggiorna tutto meno lo stato...
 navigando qua e la nelle sperdute terre del web trovo questo post molto interessante:
 Synchronizing with Windows SharePoint Services, Part 1
 ma soprattutto la seconda parte:
 Synchronizing with Windows SharePoint Services, Part 2
dove è ben evidenziato che esiste nei cmd 4 possibilità:
| Method | 
Description | 
| New | 
Create a new item with the specified field values. | 
| Update | 
Update the specified field values for an item. | 
| Moderate | 
Change the moderation status for an item (used in the same manner as Update). The ModerationStatus field can only be changed by a Cmd=Moderate call. | 
| Delete | 
 Delete the item with the following field values  | 
dalla documentazione Microsoft Windows SharePoint Services Software Development Kit appaiono sole le prime 3 New Update Delete.
Cambiando "<Method id='1'  Cmd='Moderate'>" ho risolto magicamente il problema.
spero di essere stato di aiuto...