Zum Hauptinhalt springen

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.

warnung

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>";
tipp

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:

  • mailTemplate
  • cfgEnumerationValue
  • cfgStatusCategory
  • cfgStatusCode
  • cfgStatusLevel
  • cfgStatusTranslation

Installation

Vor der Installation aller Pakete für den Contract-Mandanten müssen die beiden Umgebungsvariablen

  • IS_CONTRACT_INSTALL_OR_UPDATE
  • SKIP_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.

warnung

Anschließend den Documentsserver-Dienst neu starten

2. Die Pakete für Invoice installieren

Nun können die Pakete für Invoice, also

  • library
  • oneunity-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.

warnung

Anschließend den Documentsserver-Dienst neu starten

4. Die Pakete für Contract installieren

Nun jeweils den XML-Import für die Pakte

  • library
  • oneunity-documents
  • ousp-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.