Dallo scenario che descrivi, a me sembra che tu abbia necessità di gestire nel database delle tabelle di configurazione.
Ad es. io nostri programmi girano in varie nazioni e nelle tabelle le 'diversità' tra queste vengono gestite con un campo ID che identifica appunto la nazione, quindi uso tabelle con vai parametri come query, filtri e campi che possono variare anche in funzione dei permessi dell'utente. Se è un 'supervisore mondiale' può consultare diverse nazioni insieme, se è un 'responsabile nazionale' ha una grande libertà di movimento (all'interno della nazione), se è un 'sottoposto' può consultare solo le aree a lui permesse, e così via.
Quelli della sede centrale (italiana), hanno accesso a determinate funzionalità che un'altra nazione può non avere, o averlo con certi limiti operativi.
In sostanza, tutto il codice è 'guidato' dall'identificato della nazione, per cui una volta impostato tale identificativo all'avvio tutto è automatico.
A questo aggiungi tutti i mpermessi-utente, anche questi cambiano in base all'ID della nazione, oltre che hai permessi di operatività veri e propri in base al 'grado' dell'utente.
Onestamente, gestire tutto ciò SOLO a livello di software mi pare molto limitante.
Tieni presente che i nostri database aziendali sono solamente in Italia (le altre nazioni vi accedono da remoto), quindi la cosa è ancora più articolata e complicata.