Quando un ordine, una richiesta o un caso attraversa più applicazioni, è comune che ogni team ne veda una situazione diversa. Il CRM può mostrarlo come «chiuso», lo strumento operativo come «in sospeso» e il servizio clienti come «in attesa». Non si tratta sempre di un errore tecnico: spesso è il risultato della mancata definizione di cosa rappresenti ciascuno stato, di quale sistema abbia l'autorità per modificarlo e di quali fatti lo giustifichino.
La progettazione degli stati di processo nelle integrazioni trasforma un percorso di business in un contratto comprensibile tra prodotto, operazioni e tecnologia. Il suo obiettivo non è imporre un catalogo identico a tutte le applicazioni. È fare in modo che uno stato condiviso abbia un significato univoco, un'evidenza osservabile e regole di transizione rispettate da tutti i sistemi connessi.
Capire se serve uno stato condiviso

Non tutti i sistemi devono usare gli stessi stati interni. Un'applicazione può richiedere passaggi tecnici che non apportano valore agli altri team: convalida del formato, coda di lavoro, sincronizzazione o calcolo. Il problema emerge quando uno stato viene usato per coordinare decisioni tra domini diversi o per comunicare una promessa al cliente.
È opportuno stabilire un modello condiviso se si verifica uno o più di questi segnali:
- Due team rispondono in modo diverso alla domanda «che cosa è successo a questa richiesta?».
- Un'applicazione abilita un'azione in base a uno stato che un'altra non riconosce ancora.
- Annullamenti, rifiuti o riprese vengono gestiti tramite canali manuali.
- I report aggregano etichette locali che sembrano equivalenti, ma includono casi diversi.
- I tentativi ripetuti di un'integrazione riportano un processo a una fase precedente o duplicano attività.
Se la necessità consiste solo nel mostrare informazioni locali, può essere sufficiente una tabella di traduzione. Ad esempio, diversi stati tecnici possono essere rappresentati come «in corso» in una vista di business. Tuttavia, se più sistemi decidono, fatturano, notificano o chiudono attività in base a quella fase, serve un contratto esplicito. Tradurre le etichette non sostituisce la definizione di responsabilità e transizioni.
Progettare il modello a partire dal percorso di business
Il miglior punto di partenza non è l'elenco degli stati di uno strumento esistente, ma il ciclo vissuto dall'entità di business. Disegnate il percorso completo di un ordine, un caso o una richiesta e chiedetevi quale impegno rappresenti ciascuna fase. In molti processi trasversali compaiono cinque momenti, anche se i loro nomi cambiano:
- Avvio: l'entità esiste ed è stata ricevuta o creata.
- Valutazione o impegno: le informazioni vengono convalidate e la richiesta viene accettata, rifiutata oppure richiede una correzione.
- Esecuzione: è in corso un'attività per rispettare l'impegno.
- Esito: l'esecuzione termina con successo, errore, rifiuto o annullamento.
- Chiusura: vengono completati gli effetti successivi, come comunicazione, riconciliazione o archiviazione.
Questi momenti non obbligano a creare cinque stati. Servono a individuare decisioni rilevanti. Uno stato merita di esistere quando modifica ciò che una persona o un sistema può fare, l'aspettativa che un'altra parte deve ricevere o il controllo operativo necessario. Se due stati producono esattamente le stesse decisioni, probabilmente aggiungono complessità senza valore.
Per ogni stato condiviso, documentate almeno:
- La sua definizione in linguaggio di business e la condizione osservabile che lo attesta.
- L'entità a cui si applica e, se necessario, il suo ambito: richiesta completa, riga, spedizione o attività.
- Il sistema proprietario che può confermarlo.
- Gli stati di origine consentiti e i trigger validi.
- Le azioni abilitate, vietate o richieste al suo ingresso.
- La politica di uscita: automatica, manuale, tramite evento esterno o in base al tempo.
Una definizione come «completato quando il team termina» è ambigua. È preferibile: «completato quando il sistema operativo registra che tutte le attività obbligatorie della richiesta sono terminate correttamente». In questo modo può essere verificata, sottoposta ad audit e automatizzata.
Non confondere stato, evento, motivo e azione
Gran parte dell'incoerenza deriva dall'uso di un'unica etichetta per concetti diversi. Separarli riduce le discussioni e consente di mantenere il contesto senza moltiplicare gli stati.
- Stato: condizione attuale persistente dell'entità, come «in esecuzione» o «annullata».
- Evento: fatto avvenuto in un momento preciso, come «pagamento autorizzato», «documentazione ricevuta» o «operazione avviata».
- Motivo: spiegazione codificata di una decisione o di un esito, come il motivo di un rifiuto o di un annullamento.
- Azione: istruzione volta a provocare un cambiamento, come «annullare richiesta», «ritentare invio» o «assegnare operatore».
Ad esempio, «cliente ha chiamato» non dovrebbe essere uno stato: è un evento di interazione. «Annullata per duplicato» combina uno stato finale e un motivo. Separare i due elementi permette di misurare gli annullamenti senza perdere la causa ed evita di creare un elenco interminabile di varianti.
Occorre inoltre distinguere tra stato di business e stato tecnico. «Messaggio in attesa di pubblicazione» può essere essenziale per l'osservabilità, ma non deve sostituire «richiesta accettata». Mantenete lo stato di business stabile rispetto ai dettagli di trasporto; esponete i dati tecnici quando aiutano a risolvere gli incidenti.
Assegnare l'autorità e controllare le transizioni
Uno stato condiviso richiede una fonte di verità per ogni decisione, anche se l'entità viene replicata in più luoghi. Il CRM può essere proprietario dell'ammissione di una richiesta; il sistema operativo della sua esecuzione; e un sistema finanziario della conferma di un incasso. Il rischio consiste nel permettere a più sistemi di scrivere lo stesso stato senza una regola di precedenza.
Create una matrice semplice con stato, sistema autorizzato, evidenza e consumatori. Definite quindi le transizioni consentite. Un diagramma è utile, ma le regole devono poter essere implementate. Ad esempio:
ricevuta -> convalidata -> in_esecuzione -> completata ricevuta|convalidata|in_esecuzione -> annullata convalidata -> rifiutata
Non tutte le transizioni devono essere reversibili. Gli stati terminali devono essere trattati come terminali, salvo una correzione governata. Se emerge un errore dopo aver contrassegnato una richiesta come «completata», non è opportuno tornare silenziosamente a «in esecuzione». Registrate un'azione correttiva, il motivo, il responsabile e, se il business lo richiede, un nuovo ciclo o un'entità derivata.
Gli stati intermedi sono necessari quando cambiano un'aspettativa o una regola operativa. «In attesa del cliente» può giustificare la sospensione di una scadenza e l'attivazione di una comunicazione; «in coda» potrebbe invece essere una condizione interna che non deve uscire dal sistema operativo. Definite inoltre limiti temporali: quanto tempo una richiesta può rimanere in ciascuna fase, chi esamina l'eccezione e quale avviso viene generato.
Annullare, ritentare e recuperare senza creare regressioni
Le integrazioni distribuite possono fallire, subire ritardi e consegnare lo stesso messaggio più di una volta. La progettazione dello stato deve tenerne conto. Pubblicare una modifica non significa che tutti i consumatori la elaborino una sola volta né in un ordine perfetto.
Per ogni modifica di stato, pubblicate un identificatore stabile dell'entità, un identificatore univoco dell'evento, il nuovo stato, la data di efficacia, l'origine e una versione o sequenza. Un consumatore deve poter ignorare in sicurezza un evento già applicato e rilevarne uno precedente. L'operazione di aggiornamento deve essere idempotente: elaborare due volte la stessa modifica non può creare due attività, due notifiche o due annullamenti.
Anche i tentativi tecnici ripetuti non dovrebbero modificare da soli lo stato di business. Se la consegna di un messaggio che annuncia «in esecuzione» non riesce, ritentatene l'invio e registrate l'incidente; non riportate la richiesta a «convalidata». In presenza di messaggi fuori ordine, stabilite una politica esplicita: rifiutare eventi con una versione inferiore, conservarli per una revisione oppure accettarli solo se la transizione rimane valida.
L'annullamento richiede una chiara decisione di business. Stabilite:
- Quali stati ammettono l'annullamento da parte del cliente, delle operazioni o in modo automatico.
- Quali effetti devono essere compensati: attività, prenotazioni, comunicazioni o movimenti successivi.
- Quando l'annullamento è immediato e quando resta «richiesto» finché un sistema non conferma di poter interrompere il lavoro.
- Quali motivi sono obbligatori e quali ruoli possono eseguire una correzione manuale.
Una modifica manuale deve lasciare traccia; non è un'eccezione invisibile. Conservate chi l'ha effettuata, quando, perché, quale fosse lo stato precedente e quali effetti siano stati notificati. Queste informazioni permettono di risolvere i reclami e migliorare regole difettose.
Esempio e controlli prima della distribuzione

Immaginate una richiesta che nasce in un modulo, viene gestita in un CRM, viene eseguita in un'applicazione operativa e viene consultata dal servizio clienti. Il modulo può creare lo stato «ricevuta», il CRM confermare «convalidata» o «rifiutata», e le operazioni dichiarare «in esecuzione» e «completata». Il servizio clienti utilizza lo stato condiviso, ma non lo modifica. Se il cliente chiede di annullare durante l'esecuzione, il servizio clienti crea un'azione di annullamento; il sistema operativo conferma poi «annullata» oppure comunica che non è più possibile interromperla. In questo modo si evita di confondere una richiesta con un esito.
Prima dell'implementazione, verificate questa checklist:
- Ogni stato corrisponde a una decisione reale di business o operativa?
- Esiste una condizione osservabile e un unico sistema autorizzato a confermarla?
- Cause, eventi e azioni sono separati dallo stato persistente?
- Sono state definite transizioni non valide, stati terminali e correzioni eccezionali?
- I consumatori gestiscono duplicati, ritardi e messaggi fuori ordine?
- Esistono avvisi per permanenze anomale e riconciliazione tra fonte e repliche?
- Le modifiche del contratto includono versione, responsabili e un piano di compatibilità?
Il modello deve evolvere insieme al processo, ma non attraverso modifiche informali delle etichette. Riesaminate periodicamente gli stati con più attese, interventi manuali, discrepanze o richieste al supporto. Questi segnali indicano che una definizione è insufficiente, che manca un evento o che uno stato tecnico viene usato per rappresentare una decisione di business. Un contratto piccolo, esplicito e governato è più utile di un catalogo esaustivo che nessun sistema interpreta allo stesso modo.
