# Tipologie di Connessione

A seconda delle condizioni di gestore e gestita, una connessione viene creata con una di 3 tipologie: **USER**, **AUTO** e **SYS**.

### Connessioni USER

Una connessione di tipo USER è una connessione effettuata fra 2 item indipendenti all'interno di TS Digital. La connessione viene creata disattiva con status `UNVERIFIED`.

Per connessioni di questo tipo, l'azienda gestita riceve una notifica, visibile ad amministratori ed owner, la quale informa dell'avvenuta richiesta e propone la possibilità di accettarla o rifiutarla. Se la richiesta di connessione viene accettata, la connessione diventa immediatamente attiva e il suo status passa a `VALIDATED`. Se, in caso contrario, viene rifiutata, la connessione rimane inattiva e il suo stato passa a `REJECTED`. Una connessione rifiutata non può più essere attivata, ma rimarrà visibile fino all'arrivo di una nuova richiesta di connessione per lo stesso servizio.

Una volta che la connessione è in stato `VALIDATED` è possibile procedere con la sua certificazione tramite il caricamento di un Atto d'Affidamento. La certificazione non è necessaria per l'utilizzo della connessione, ma potrebbe essere necessaria per l'utilizzo di alcune funzionalità del servizio connesso (es: firma Teamsystem per il servizio di fatturazione).

### Connessioni AUTO

Una connessione di tipo AUTO è una connessione nella quale l'item gestito non ha alcun utente owner (questi item sono noti anche come ***aziende orfane***). L'item non deve inoltre aver mai avuto nessun altro gestore per lo specifico servizio connesso, o deve già esistere un AdA certificato sotto lo stesso appId per la coppia gestore/gestita.

La connessione viene creata già attiva ed in stato `VALIDATED`, è immediatamente utilizzabile ed è possibile procedere con la sua certificazione.

### Connessioni SYS

Una connessione SYS è un caso particolare della connessione AUTO; si verifica nel caso in cui l'item gestito è un'azienda orfana che ha già avuto in passato un gestore (differente dall'attuale) per lo stesso servizio.

La connessione viene creata disattiva con status `UNVERIFIED`. Per attivare la connessione è necessario caricare un AdA ed attendere che venga certificato. Post certificazione la connessione viene attivata, il suo stato passa a `VALIDATED` e il suo certificationStatus passa a `CERTIFIED`.

### Flussi di stato

#### Flusso di validazione

<div drawio-diagram="122"><img src="https://digital-docs.ts-paas.com/uploads/images/drawio/2020-08/0g8TyyTho4beJx3k-Drawing-Daniele-Rosolen-1597412891.png" alt=""/></div>

Il flusso di validazione influenza lo `status` di una connessione segue un flusso che ha due possibli stati finali: `VALIDATED` e `REQUEST_REJECTED`.

Le connessioni di tipologia `USER` vengono create con lo status `PENDING_REQUEST`. L'accettazione della notifica di richiesta connessione da parte della gestita porta lo status a `VALIDATED`, il suo rifiuto a `REQUEST_REJECTED`. Contestualmente al passaggio allo stato `VALIDATED`, la connessione viene anche attivata.

Le connessioni di tipo `AUTO` vengono create già attive, ma possono iniziare in uno di due stati a seconda del servizio a cui fanno riferimento:

- Le connessioni per `SDI` partono dallo stato `UNVERIFIED` e, per poter diventare `VALIDATED` devono necessariamente effettuare l'upload di un Atto D'Affidamento e seguire il relativo flusso di accettazione/rifiuto
- Le connessioni per ogni altro servizio partono direttamente dallo stato `VALIDATED`. Hanno comunque la possibilità di caricare un AdA e rientreranno nelle logiche del flusso di certificazione.

Le connessioni di tipo `SYS` partono dallo stato di `UNVERIFIED` ma, al contrario delle `AUTO`, nascono non attive. L'attivazione della connessione avviene alla fine del processo di convalida dell'AdA, il quale è quindi necessario per poterla utilizzare.

#### Flusso di Certificazione

<div drawio-diagram="123"><img src="https://digital-docs.ts-paas.com/uploads/images/drawio/2020-08/lub11FyoGZVk1lqj-Drawing-Daniele-Rosolen-1597413067.png" alt=""/></div>

Il flusso di certificazione influenza il `certificationStatus` della connessione, ed è interamente pilotato da eventi relativi all'AdA della connessione.

La condizione iniziale del `certificationStatus` dipende dalla tipologia di connessione considerata e dall'esistenza o meno di un AdA per una connessione esistente sotto lo stesso appId per la coppia gestore/gestita:

- Se la connessione è di tipo `SYS` partirà sempre dallo status `NULL`
- Se, per la coppia gestore/gestita, esiste già un AdA che si trovi almeno in `AWAITING_APPROVAL`, la nuova connessione viene creata allo stesso stato. Da quel momento in poi, modifiche a quell'AdA avranno effetto su tutte le connessioni ad esso collegate
- In ogni altro caso, lo stato di certificazione parte da `NULL`

Se una connessione ha stato di certificazione `NULL` ma il suo stato di validazione non è ancora `VALIDATED`, lo stato di certificazione rimarrà `NULL` fino al termine della convalida dell'AdA, quando passerà regolarmente allo stato di `CERTIFIED`.

Il flusso di certificazione è infinitamente ripetibile: in qualunque momento, se l'AdA dovesse venir invalidato (manualmente da backoffice, o come conseguenza di una rettifica di codice fiscale), lo stato di certificazione verrà riportato ad `AWAITING_APPROVAL`.