Multi-Tenant-Installation
Bei der Installation von Contract auf einem System mit mehreren Mandanten, z.B. Invoice & Contract, teilen sich die Mandanten die Umgebungsvariablen, da diese auf dem Service-Level – d.h. für den Documents-Server – gesetzt werden. Es gibt daher einige Aspekte bezüglich Datenbankanbindung, Installation und Upgrade zu beachten.
Datenbank
Szenario 1: Eine ousp-Datenbank pro Mandant
Soll jeweils eine eigene ousp-Datenbank pro Mandant angebunden werden, können
die Umgebungsvariablen OUSP_DATABASE_USER und OUSP_DATABASE_PASSWORD nur
für alle Mandanten verwendet werden, wenn alle Datenbanken die gleichen
Zugangsdaten haben.
Stimmen die Zugangsdaten nicht überein, muss sichergestellt werden, dass
jeweils im Skript ou.spc.library.dbConnections pro Mandant der richtige
Nutzer und das richtige Passwort für die ousp-Datenbank gesetzt werden.
Jeder Mandant hat ein eigenes ou.spc.library.dbConnections-Skript.
Beispiel
Beim Ausführen des Skripts env.ps1 werden die für Invoice gültigen
Datenbanken-Zugangsdaten in die Umgebungsvariablen OUSP_DATABASE_USER und
OUSP_DATABASE_PASSWORD gesetzt.
Das Skript ou.spc.library.dbConnections für den Invoice-Mandanten kann also
weiterhin diese Umgebungsvariablen verwenden:
const dbUser = util.getEnvironment("OUSP_DATABASE_USER");
const dbPassword = util.getEnvironment("OUSP_DATABASE_PASSWORD");
Im Skript ou.spc.library.dbConnections für den Contract-Mandanten hingegen
müssen die Zugangsdaten für die ousp-Datenbank hartkodiert werden:
const dbUser = "<some_db_user>";
const dbPassword = "<some_db_password>";
Alternativ kann dies auch umgekehrt gehandhabt, oder gleich die Zugangsdaten für beide Mandanten hartkodiert werden.
Szenario 2: Eine ousp-Datenbank für beide Mandanten
In diesem Fall gibt es keine Probleme hinsichtlich der Zugangsdaten, allerdings teilen sich beide Mandanten diese Tabelle in der ousp-Datenbank:
mailTemplatecfgEnumerationValuecfgStatusCategorycfgStatusCodecfgStatusLevelcfgStatusTranslation
Installation
Vor der Installation aller Pakete für den Contract-Mandanten müssen die beiden Umgebungsvariablen
IS_CONTRACT_INSTALL_OR_UPDATESKIP_CREATE_OUC_SUPER_ADMIN
auf true, vor der Installation der Pakete für den Invoice-Mandanten auf
false gesetzt werden.
Beispiel-Ablauf (Invoice wird installiert und dann Contract)
1. Umgebungsvariablen für Invoice-Installation setzen
Bevor alle Pakete für den Invoice-Mandanten installiert werden, muss das Skript
env.ps1 zum Setzen der Umgebungsvariablen ausgeführt werden. (Siehe auch
Setup-Umgebungsvariablen)
Den Schritten des Skripts also folgen und bei den beiden Schritten
Should the oucsuperadmin fellow (Redakteur) creation be skipped? Hint: select yes if you want to install contract (yes/no)Is this a contract installation or update? (yes/no)
jeweils die Option "no" wählen.
Anschließend den Documentsserver-Dienst neu starten
2. Die Pakete für Invoice installieren
Nun können die Pakete für Invoice, also
libraryoneunity-documents- ...
ousp-invoice
nach der jeweiligen Anleitung installiert werden.
3. Umgebungsvariablen für Contract-Installation setzen
Bevor nun die Pakete für den Contract-Mandanten installiert werden, müssen die
beiden oben genannten Umgebungsvariablen auf true gesetzt werden.
Dafür wieder das Skript env.ps1 ausführen (die schon gesetzten Variablen
können dabei jeweils übersprungen werden) und bei den oben genannten Schritten
nun die Option "yes" wählen.
Anschließend den Documentsserver-Dienst neu starten
4. Die Pakete für Contract installieren
Nun jeweils den XML-Import für die Pakte
libraryoneunity-documentsousp-contract
für den Contract-Mandanten durchführen.
Upgrade
Die Pakete library und oneunity-documents müssen jeweils für jeden
Mandanten auf der gleichen Version gehalten werden.
Der Grund hierfür ist, dass jegliche Inhalte auf dem Dateisystem – z.B. Scriptlibs – von allen Mandanten geteilt werden, die Portalscripte allerdings jeweils mandantenspezifisch sind.
Ist also z.B. für den Invoice-Mandanten library in der Version 24.0.0 und für
den Contract-Mandanten in der Version 25.0.0 installiert, so teilen sich beide
Mandanten die Scriptlibs der Version 25.0.0, falls diese beim Upgrade
ausgetauscht wurden. Dies kann folglich zu Komplikationen mit den Skripten der
Version 24.0.0 des Invoice-Mandanten führen.