Wednesday, May 28, 2014

SharePoint - Usare Information Management Policy per l'invio di Notifiche di Scadenza


Definiamo un campo di tipo Date Time per immagazzinare il giorno per l’invio dell’alert, ad es “AlertDate”

Definire da SharePoint Designer, un Workflow, in creazione/modifica, denominato “Set Alert Date” che aggiorna il campo AlertDate con la scadenza desiderata.
Ad es, si vuole essere avvisati 7 giorni prima della scadenza (EndDate)?
Impostiamo AlerDate = EndDate – 8 giorni (poi vediamo perché 8 e non 7)

Definire un secondo Workflow, senza nessuna spunta (no manuale, no automatico) così non verrà visto da nessuno, se non l’admin
Chiamiamolo “Send Alert For End Date”
Il Worflow invia una mail ai destinatari da avvisare.
Eventualmente, possiamo fare in modo, dopo l'invio, di impostare AlertDate = AlertDate+1 (se AlertDate < EndDate), così da inviare mail anche nei giorni successivi fino alla scadenza.

Ora, navigare sulla lista/library interessata dall’alert ed entrare in List Settings > Information Management Policy.
Definiamo una Policy per l’Expiration, utilizzando le impostazioni seguenti:



NOTE:
Come Item Properties non è possibile (almeno su MOSS2007) utilizzare un campo calcolato.
Il +1 è necessario (non accetta 0): da qui il fatto che nel workflow aumentiamo di 8 giorni.

Salviamo.

Che cosa succede?
SharePoint ha un job predefinito che gira ogni sera (ma schedulabile a piacere) e che esegue il controllo su tutte le liste su cui è definita una Policy di Expiration.
Se incontra un item che risponde a questa Policy, controlla il campo definito per il controllo ("AlertDate"), se Today = AlertDate+1, avvia il Workflow indicato che invia la notifica (ed eventualmente, aggiorna AlertDate = ALertDate+1, così da scattare nuovamente il giorno successivo).

Se la notifica invita l'utente a cambiare la EndDate dell'item, il Workflow "Set Alert Date", va ad aggiornare l’Alert Date con la nuova data (EndDate-8gg) e ricomincia il giro.

NOTA IMPORTANTE:
Se si modifica il Workflow “Send Alert For End Date”, occorre riconfigurare la Policy, andando a selezionare la nuova versione del Workflow.
Se si elimina il Workflow, occorre controllare che la Policy non vada a prendere il primo Workflow che ha in elenco, visto che abbiamo tolto quello corrente...

Non ci resta che attendere il giro del job di Expiration Policy o forzarne l'esecuzione da Central Administration.