In un SaaS B2B, un’impostazione può riguardare l’intera piattaforma, un’organizzazione o una singola persona. Se i diversi livelli hanno valori distinti e l’interfaccia non chiarisce quale viene applicato, possono verificarsi situazioni inattese: utenti che riscontrano comportamenti diversi, amministratori che non riescono a controllare una politica e team di supporto costretti a indagare configurazioni ambigue.
La configurazione ereditata risolve il problema quando le decisioni seguono una gerarchia reale. L’obiettivo non è aggiungere livelli in anticipo, ma stabilire chi deve decidere ogni impostazione, quali eccezioni hanno senso e come comunicare il valore effettivo. Un modello esplicito evita che la flessibilità si trasformi in un insieme di regole speciali difficile da gestire.
Quando conviene introdurre l’ereditarietà

L’ereditarietà è utile quando esiste una relazione stabile tra i livelli decisionali. Per esempio, il prodotto può offrire un valore predefinito; l’amministratore di un’organizzazione può adattarlo alle proprie politiche; ogni utente può personalizzarlo per il proprio lavoro, purché le scelte individuali non contraddicano un obbligo organizzativo.
Non serve creare una gerarchia per ogni impostazione. Se un valore riguarda il singolo utente e non dipende da una politica comune, può bastare una preferenza personale. Se invece deve essere uguale per tutti per ragioni di sicurezza, potrebbe essere opportuno consentirne la configurazione solo a una persona autorizzata dell’organizzazione. Aggiungere livelli non necessari aumenta il lavoro di progettazione, gestione dei permessi, test e supporto.
Prima di implementare il modello, individua la decisione associata a ciascun campo. Chiediti chi ne è responsabile, chi ha bisogno di un’eccezione e quali conseguenze comporta una modifica. Se non riesci a rispondere con chiarezza, mantieni semplice l’impostazione finché non emerge un caso che giustifichi l’ereditarietà.
Scegliere i livelli in base a chi prende le decisioni
Un modello comune distingue tre livelli:
- Valore predefinito del prodotto: offre un comportamento iniziale coerente, applicabile alle organizzazioni che non hanno scelto un altro valore.
- Organizzazione: consente all’amministratore di adattare la configurazione a processi, politiche o esigenze condivise.
- Utente: permette la personalizzazione individuale, quando non è in conflitto con una decisione dell’organizzazione.
Questi livelli non sono obbligatori. Aggiungine uno solo se esiste un soggetto che deve prendere quella decisione e dispone dei permessi adeguati. Nelle organizzazioni più grandi possono esserci ruoli amministrativi diversi, ma non è detto che debbano diventare nuovi livelli di configurazione: spesso basta definire chi può modificare le impostazioni dell’organizzazione.
È inoltre utile distinguere le preferenze dalle politiche. Una preferenza ammette di solito una scelta individuale, come un’opzione di visualizzazione. Una politica esprime una regola che l’organizzazione intende imporre. Confondere le due cose può permettere a una preferenza personale di prevalere su una decisione che doveva essere obbligatoria.
Definire esplicitamente precedenza ed eccezioni
Una regola facile da spiegare è che prevalga il valore applicabile più specifico: prima l’utente, poi l’organizzazione e infine il valore predefinito del prodotto. Questa regola, però, funziona solo se l’impostazione può essere sovrascritta a tutti questi livelli. I vincoli di sicurezza o conformità possono richiedere una logica diversa: l’organizzazione stabilisce un valore obbligatorio che l’utente non può modificare.
Per questo, definisci la precedenza per tipo di impostazione, anziché presentarla come una regola universale. Per ogni campo, documenta il valore di base, i livelli che possono modificarlo, chi è autorizzato a sovrascriverlo e se una politica può bloccare le modifiche. L’interfaccia e la logica del server devono applicare la stessa regola: nascondere un controllo sullo schermo non sostituisce la verifica dei permessi sul server.
È importante distinguere tra “nessun valore specifico” e “valore uguale a quello predefinito”. Nel primo caso, l’impostazione eredita il valore e può cambiare quando cambia il livello superiore. Nel secondo, esiste una scelta esplicita che deve essere conservata. Se il sistema tratta i due casi come equivalenti, non può spiegare correttamente l’origine del valore né preservare l’intenzione dell’utente.
Mostrare il valore effettivo e la sua origine
Chi amministra ha bisogno di conoscere sia il valore attivo sia chi lo determina. Mostrare solo il risultato finale nasconde se il valore è stato ereditato o scelto esplicitamente. Un’etichetta come “Ereditato dal prodotto” o “Impostato dall’organizzazione” rende visibile l’origine e chiarisce che cosa accadrà quando si modifica l’impostazione.
Offri azioni coerenti con il livello di autorizzazione: modificare il valore, ripristinarlo per tornare all’ereditarietà oppure consultare il motivo per cui non è modificabile. Se l’organizzazione ha imposto una politica, spiega che l’impostazione è bloccata e indica quale livello o ruolo può modificarla. Evita messaggi che facciano pensare che un’opzione sia disponibile quando l’utente non ha l’autorizzazione per applicarla.
Quando l’utente ripristina un’impostazione, descrivi con precisione l’effetto: il valore non sarà più un’eccezione e seguirà la configurazione del livello superiore. Se l’ereditarietà può produrre cambiamenti in futuro, specificalo. In questo modo, “ripristina” non viene interpretato come un modo per fissare per sempre il valore visualizzato in quel momento.
Gestire le modifiche senza cancellare le eccezioni
La modifica del valore predefinito del prodotto dovrebbe riguardare chi lo eredita, non chi ha scelto un’eccezione esplicita. Lo stesso principio vale quando un’organizzazione aggiorna la propria configurazione: gli utenti che la ereditano devono seguire il nuovo valore; quelli con una scelta personale dovrebbero cambiare solo se l’eccezione è consentita e l’azione è stata definita chiaramente.
Prima di distribuire una modifica, individua quali dati rappresentano valori ereditati e quali decisioni esplicite. Non dedurre l’intenzione solo perché il valore memorizzato coincide con quello predefinito attuale. Conserva lo stato di ereditarietà affinché il sistema possa ricalcolare il valore effettivo dopo un aggiornamento.
Se il prodotto deve modificare il comportamento predefinito, comunica quali gruppi saranno interessati e che cosa accadrà alle eccezioni. Quando è opportuno, consenti di esaminare la modifica prima di applicarla a un’organizzazione. Per le operazioni amministrative importanti, registra chi ha modificato l’impostazione e quando, in linea con le esigenze di supporto e audit del prodotto.
Verificare combinazioni, permessi e casi limite
I test devono coprire più del caso abituale. Verifica ogni combinazione di livelli: tutti ereditano, l’organizzazione sceglie un’opzione, l’utente crea un’eccezione e una politica organizzativa impedisce tale eccezione. Controlla anche che cosa accade quando un valore viene eliminato o ripristinato e quando cambia il valore predefinito del livello superiore.
- Permessi: verifica che ogni ruolo possa visualizzare e modificare solo ciò che gli compete.
- Coerenza: controlla che interfaccia, API e processi interni restituiscano lo stesso valore effettivo.
- Aggiornamenti: assicurati che una modifica a un livello si rifletta su chi lo eredita senza sovrascrivere le scelte esplicite.
- Dati mancanti: definisci il risultato quando un valore non esiste o una configurazione precedente non contiene il campo.
- Chiarezza: verifica che l’applicazione possa mostrare l’origine del valore e il motivo di un blocco.
Un segnale di progettazione carente è l’impossibilità per il supporto di rispondere alla domanda “perché questa persona vede questo valore?” senza esaminare manualmente diverse tabelle. Un altro è che gli amministratori non sappiano se una modifica avrà effetto su utenti specifici. Se si verificano questi problemi, rivedi il modello e la visualizzazione dell’origine prima di aggiungere altre eccezioni.
Lista di controllo per una gerarchia facile da gestire

- Assegna una responsabilità e uno scopo a ogni impostazione.
- Definisci i livelli necessari ed elimina quelli senza un caso d’uso chiaro.
- Specifica per ogni campo la precedenza, i permessi, i blocchi e le regole per le eccezioni.
- Rappresenta separatamente il valore effettivo e lo stato di ereditarietà.
- Spiega l’origine del valore e le conseguenze del ripristino.
- Verifica le modifiche ai livelli superiori, i permessi e le configurazioni incomplete.
- Documenta quali eccezioni conserva il sistema e come vengono registrate le modifiche importanti.
Una buona configurazione ereditata non offre il maggior numero possibile di opzioni: rende chiaro chi decide, che cosa viene ereditato e quando un’eccezione è valida. Se ogni impostazione segue una regola comprensibile e verificabile, il prodotto può evolversi senza trasformare le preferenze in una fonte continua di conflitti.
