Un workflow che verifica la prenotazione, registra gli ospiti e genera credenziali temporanee con scadenza coerente con il checkout.

Il problema
Prenotazione e accesso fisico vivevano in due sistemi distinti.
Da una parte il PMS gestiva la prenotazione e quindi conosceva:
- ospite;
- camera/alloggio;
- check-in;
- checkout;
- stato della prenotazione.
Dall’altra il sistema di accesso gestiva centralina e serrature automatiche.
Senza integrazione, qualcuno doveva prendere le informazioni della prenotazione, verificare che fossero corrette, registrare l’ospite nel sistema di accesso e generare manualmente una credenziale valida per il periodo del soggiorno.
Il problema quindi non era semplicemente:
“generare un codice”.
Era mantenere coerenti booking e accesso fisico senza passaggi manuali, riducendo errori e soprattutto impedendo che le credenziali avessero una vita indipendente dalla prenotazione.

La soluzione
Il PMS diventa quindi la source of truth per la durata dell’accesso.
Se il soggiorno termina il 18 ottobre alle 10:00, la credenziale prodotta per il sistema fisico viene costruita coerentemente con quella finestra temporale.
La sintesi della soluzione è:
collegare il ciclo di vita della prenotazione al ciclo di vita della credenziale di accesso.

Cosa ho costruito
Ho progettato il servizio di orchestrazione per verificare booking, registrare i dati necessari e richiedere le credenziali di accesso.
Come funziona
Booking > verification > guest registration > access API > temporary credentials > checkout expiry.

Scelte di engineering
1. API orchestration invece di duplicazione dei sistemi
Non abbiamo cercato di ricostruire booking o access control dentro una nuova applicazione. Abbiamo lasciato ai due sistemi il loro mestiere:
PMS
→ prenotazioni
Centralina con codici Apriporta
→ accessi fisici
e costruito il software come orchestration layer tra i due. Questa è probabilmente la scelta architetturale principale.
2. Booking come source of truth
Le credenziali non hanno regole temporali indipendenti.
check-in booking
↓
valid_from
checkout booking
↓
valid_until

Risultato
La credenziale non viene semplicemente generata: eredita il proprio ciclo di vita dalla prenotazione.