OTRS sicher zu OTOBO migrieren
Planen Sie Datenübernahme, Testlauf, Erweiterungsprüfung und Go-live gemeinsam mit einem OTOBO-Spezialisten.
Willkommen und vielen Dank, dass Sie sich für OTOBO entschieden haben!
OTRS, ((OTRS)) Community Edition und OTOBO sind in ihrer Anwendung sehr umfassend und flexibel. OTOBO ist ein OTRS Nachfolger und Teil der open source ticket system Landschaft — daher
erfordert jede
Migration zu OTOBO eine gründliche Vorbereitung und möglicherweise auch etwas Nacharbeit.
Bitte nehmen Sie sich Zeit für die Migration und folgen Sie diesen Anweisungen Schritt für Schritt.
Mit der OTOBO Migrations-Schnittstelle ist es möglich, die folgenden Migrationsstrategien zu verwenden:
Die allgemeine Migrationsstrategie.
Dies ist der reguläre Weg, eine Migration durchzuführen. Viele verschiedene Kombinationen werden unterstützt:
Serverwechsel: Migrieren und gleichzeitig zu einem neuen Anwendungsserver wechseln.
Separate Anwendungs- und Webserver: Sie haben die Wahl, ob Sie Anwendungs- und Datenbankserver auf demselben Host oder auf jeweils einem dedizierten Host betreiben wollen. Diese Wahl ist unabhängig von der vorherigen Einrichtung in OTRS / ((OTRS)) Community Edition.
Verschiedene Datenbanken: Von einer beliebigen unterstützten Datenbank zu einer anderen unterstützten Datenbank migrieren.
Verschiedene Betriebssysteme: Von jedem unterstützten Betriebssystem zu einem anderen unterstützten Betriebssystem wechseln.
Docker: Zu einer Docker-basierten Installation von OTOBO 10 migrieren.
Eine Variante der allgemeinen Strategie, bei der die Datenbankmigration optimiert wird.
Verwenden Sie die ETL-ähnliche Migration, wenn die Quelldatenbank nicht durch erhöhte Last belastet werden darf oder wenn der Zugriff auf die Quelldatenbank ein Engpass ist. In der allgemeinen Strategie werden die Daten Zeile für Zeile zuerst aus der otrs-Datenbank gelesen und dann in die OTOBO-Datenbank eingefügt. In dieser Variante werden die kompletten otrs-Datenbanktabellen zuerst exportiert, dann transformiert und dann in die otobo-Datenbank importiert.
Dies ist ein Sonderfall, der von der allgemeinen Migrationsstrategie nicht unterstützt wird. Das bedeutet, dass eine Variante der optimierten Strategie verwendet werden muss.
Grundvoraussetzung für eine Migration ist, dass Sie bereits eine ((OTRS)) Community Edition oder OTRS 6.0.* laufen haben und sowohl Konfiguration als auch Daten auf OTOBO übertragen möchten.
Sie benötigen eine laufende OTOBO Installation, um von dort aus die Migration zu starten!
Diese OTOBO Installation muss alle OPM-Pakete enthalten, die in Ihrem ((OTRS)) Community Edition installiert sind und die Sie auch in OTOBO verwenden möchten.
Wenn Sie planen, auf einen anderen Server zu migrieren, muss der OTOBO-Webserver auf den Speicherort zugreifen können, wo Ihre ((OTRS)) Community Edition oder OTRS 6.0._ installiert ist. In den meisten Fällen handelt es sich um das Verzeichnis _/opt/otrs* auf dem Server, auf dem ((OTRS)) Community Edition läuft. Der Lesezugriff kann über SSH oder über Dateisystem-Mounts erfolgen.
Die ((otrs)) Community Edition-Datenbank muss vom Server, auf dem OTOBO läuft, zugänglich sein. Readonly-Zugriff muss für externe Hosts gewährt werden. Wenn der Zugriff nicht möglich ist oder wenn die Geschwindigkeit der Migration optimiert werden soll, dann ist ein Dump der Datenbank ausreichend.
Bitte beginnen Sie mit der Installation eines neuen OTOBO-Systems. Ihre alte OTRS / ((OTRS)) Community Edition-Installation wird auf dieses neue System migriert.
Nach Abschluss der Installation melden Sie sich bitte als root@localhost an. Navigieren Sie zum
OTOBO
Admin-Bereich Admin -> Pakete und installieren Sie alle erforderlichen OTOBO OPM-Pakete.
Die folgenden OPM-Pakete und ((OTRS)) Community Edition “Feature Addons” müssen NICHT und sollten NICHT installiert werden, da diese Funktionen bereits im OTOBO-Standard enthalten sind:
Die folgenden OTOBO-Pakete wurden in OTOBO 10+ integriert. Das bedeutet, dass sie nicht im Zielsystem installiert werden sollten, wenn das Zielsystem OTOBO 10+ ist. - ImportExport
Nachdem Sie OTOBO installiert haben, melden Sie sich bitte erneut im OTOBO Admin-Bereich
an Admin -> Systemkonfiguration und deaktivieren die Konfigurationsoption SecureMode.
Dies ist notwendig, wenn der OTOBO Daemon tatsächlich läuft. Das Stoppen des Daemons ist unterschiedlich zwischen Docker-basierten und nicht Docker-basierten Installationen.
Im Nicht-Docker-Fall führen Sie die folgenden Befehle als Benutzer otobo aus:
# falls Sie als root angemeldet sind
root> su - otobo
otobo> /opt/otobo/bin/Cron.sh stop
otobo> /opt/otobo/bin/otobo.Daemon.pl stop --forceWenn OTOBO in Docker läuft, müssen Sie lediglich den Dienst daemon stoppen:
docker_admin> cd /opt/otobo-docker
docker_admin> docker-compose stop daemon
docker_admin> docker-compose ps # otobo_daemon_1 sollte mit dem Code 0 beendet habenOft soll OTOBO auf einem neuen Server laufen, wo /opt/otrs anfangs nicht verfügbar ist. In diesen
Fällen
kann das
Verzeichnis /opt/otrs auf dem ((OTRS)) Community Edition-Server in das Dateisystem des OTOBO-Servers eingebunden
werden. Wenn ein reguläres
Netzwerk-Mount nicht möglich ist, könnte sshfs eine Option sein.
Dieser Schritt ist nur notwendig, wenn Sie ((OTRS)) Community Edition von einem anderen Server migrieren möchten und /opt/otrs vom Remote-Server nicht auf dem OTOBO-Server eingebunden wurde.
Die Werkzeuge sshpass und rsync werden benötigt, damit migration.pl Dateien per ssh kopieren kann. Um sshpass zu
installieren, melden Sie sich bitte als Benutzer root auf dem Server an und führen Sie einen der folgenden Befehle
aus:
sudo apt install sshpasssudo yum install sshpasssudo dnf install sshpasssudo zypper install sshpassDas Gleiche muss für rsync geschehen, wenn es noch nicht verfügbar ist.
Nun sind wir bereit für die Migration. Zunächst müssen wir sicherstellen, dass keine Tickets mehr bearbeitet werden und sich keine Benutzer bei ((OTRS)) Community Edition anmelden:
Bitte loggen Sie sich in den ((OTRS)) Community Edition Admin-Bereich Admin -> Systemwartung ein und fügen Sie einen
neuen
Systemwartungsslot für einige Stunden hinzu. Löschen Sie danach alle Agenten- und
Benutzersitzungen (Admin -> Sitzungen) und loggen Sie sich aus.
Stellen Sie bitte sicher, dass keine Dienste oder Cron-Jobs laufen.
su - otrs/opt/otrs/bin/Cron.sh stop/opt/otrs/bin/otrs.Daemon.pl stop --forceDie zwischengespeicherten Daten und die Betriebsdaten müssen nicht migriert werden. Die E-Mail-Queue sollte zu diesem Zeitpunkt bereits leer sein.
su - otrs/opt/otrs/bin/otrs.Console.pl Maint::Cache::Delete/opt/otrs/bin/otrs.Console.pl Maint::Session::DeleteAll/opt/otrs/bin/otrs.Console.pl Maint::Loader::CacheCleanup/opt/otrs/bin/otrs.Console.pl Maint::WebUploadCache::Cleanup/opt/otrs/bin/otrs.Console.pl Maint::Email::MailQueue --delete-allEs gibt einige Besonderheiten zu beachten, wenn Ihre OTOBO-Installation unter Docker läuft.
Das relevanteste: Prozesse, die in einem Docker-Container laufen, können generell keine Verzeichnisse außerhalb des Containers zugreifen. Es gibt
jedoch eine Ausnahme: Verzeichnisse, die als Volumes in den Container eingebunden sind, können zugegriffen werden.
Beachten Sie auch, dass die MariaDB-Datenbank, die in otobo_db_1 (otobo-db-1 in neueren docker compose Versionen) läuft, nicht direkt von außerhalb des
Container-Netzwerks zugänglich ist.
In diesem Abschnitt gehen wir davon aus, dass das OTRS-Home-Verzeichnis /opt/otrs auf dem Docker-Host verfügbar ist.
Es gibt mindestens zwei praktikable Möglichkeiten:
a. Kopieren Sie /opt/otrs in das bestehende Volume otobo_opt_otobo
b. Binden Sie /opt/otrs als zusätzliches Volume ein
Konzentrieren wir uns hier auf Option a..
Zunächst müssen wir herausfinden, wo das Volume otobo_opt_otobo auf dem Docker-Host verfügbar ist.
otobo_opt_otobo_mp=$(docker volume inspect --format '{{ .Mountpoint }}' otobo_opt_otobo)echo $otobo_opt_otobo_mpFür sicheres Kopieren verwenden wir rsync. Je nach Ihrer Docker-Konfiguration muss der Befehl rsync möglicherweise
mit sudo ausgeführt werden.
rsync --recursive --safe-links --owner --group --chown 1000:1000 --perms --chmod "a-wx,Fu+r,Du+rx" /opt/otrs/ $otobo_opt_otobo_mp/var/tmp/copied_otrsls -la $otobo_opt_otobo_mp/var/tmp/copied_otrs # nur zur Überprüfungsudo rsync --recursive --safe-links --owner --group --chown 1000:1000 --perms --chmod "a-wx,Fu+r,Du+rx" /opt/otrs/ $otobo_opt_otobo_mp/var/tmp/copied_otrssudo ls -la $otobo_opt_otobo_mp/var/tmp/copied_otrs # nur zur ÜberprüfungDieses kopierte Verzeichnis wird innerhalb des Containers als /opt/otobo/var/tmp/copied_otrs verfügbar sein.
Bitte verwenden Sie das Webmigrations-Tool unter http://localhost/otobo/migration.pl. Beachten Sie, dass Sie möglicherweise “localhost” durch Ihren OTOBO-Hostnamen ersetzen und möglicherweise Ihren nicht standardmäßigen Port hinzufügen müssen. Die Anwendung leitet Sie dann durch den Migrationsprozess.
Benutzerspezifische Einstellungen in Kernel/Config.pm werden von der alten OTRS-Installation auf die neue OTOBO-Installation übertragen. Wenn Sie benutzerspezifische Einstellungen haben, sollten Sie einen Blick auf die migrierte Datei /opt/otobo/Kernel/Config.pm werfen. Möglicherweise möchten Sie benutzerdefinierte Pfade oder LDAP-Einstellungen anpassen. Im besten Fall stellen Sie fest, dass einige benutzerdefinierte Einstellungen nicht mehr benötigt werden.
Wenn die Migration abgeschlossen ist, nehmen Sie sich bitte Zeit und testen Sie das gesamte System. Sobald Sie entschieden haben, dass die Migration erfolgreich war und Sie OTOBO von jetzt an verwenden möchten, starten Sie den OTOBO-Daemon:
su - otobo/opt/otobo/bin/Cron.sh start/opt/otobo/bin/otobo.Daemon.pl startIm Docker-Fall:
cd ~/otobo-dockerdocker-compose start daemonDeinstallieren Sie sshpass, wenn Sie es nicht mehr benötigen.
Löschen Sie die Datenbanken und Datenbanknutzer, die speziell für die Migration erstellt wurden, falls vorhanden.
Viel Spaß mit OTOBO!
Während unserer Migrationstests hatte der für die Migration verwendete Browser manchmal Probleme. Nach dem Neustart des Browsers wurde dieses Problem normalerweise gelöst. Bei Safari war es manchmal notwendig, die alte OTRS-Sitzung manuell zu löschen.
Das kann passieren, wenn die Einstellung ScriptAlias einen nicht standardmäßigen Wert hat. Die Migration ersetzt einfach otrs durch otobo. Das kann dazu führen, dass die CSS- und JavaScript-Dateien in OTOBO nicht mehr abgerufen werden können. Wenn dies der Fall ist, überprüfen Sie bitte die Einstellungen in Kernel/Config.pm und ändern Sie diese zurück auf vernünftige Werte.
Auf Systemen, die in der Vergangenheit Probleme bei einem Upgrade hatten, kann der Migrationsprozess aufgrund von MySQL-Fehlern in den Tabellen ticket und ticket_history stoppen. In der Regel handelt es sich dabei um NULL-Werte in der Quelltabelle, die in der Zieltabelle nicht mehr zulässig sind. Diese Konflikte müssen manuell gelöst werden, bevor Sie die Migration fortsetzen können.
Ab OTOBO 10.0.12 gibt es eine Prüfung in migration.pl, die auf NULL-Werte vor der Datenübertragung prüft. Beachten Sie, dass die Lösung immer noch manuell durchgeführt werden muss.
In diesen Fällen wird die nicht sehr hilfreiche Nachricht “Das System konnte die Datenübertragung nicht abschließen.”
von migration.pl angezeigt. Das Apache-Logfile und das OTOBO-Logfile zeigen eine aussagekräftigere Nachricht: ”
Fehlermeldung: ERROR: permission denied to set parameter “session_replication_role”, SQL: ‘set session_replication_role
to replica;’” Um dem Datenbanknutzer otobo die benötigten Superuser-Privilegien zu gewähren, führen Sie folgenden
Befehl als PostgreSQL-Admin aus: ALTER USER otobo WITH SUPERUSER;. Versuchen Sie dann
erneut, http://localhost/otobo/migration.pl auszuführen. Nach der Migration, kehren Sie zum normalen Zustand zurück,
indem Sie ALTER USER otobo WITH NOSUPERUSER ausführen.
Es ist noch nicht klar, ob die erweiterten Privilegien in jedem Setup gewährt werden müssen.
Die Systemkonfiguration wird migriert, nachdem die Datenbanktabellen
migriert wurden. In diesem Kontext bedeutet
Migration, dass die Standardeinstellungen von OTOBO mit der Systemkonfiguration des Quell-OTRS-Systems
zusammengeführt
werden. In diesem Schritt können Inkonsistenzen auftreten. Ein Beispiel aus der Praxis ist die
Einstellung Ticket::Frontend::AgentTicketQuickClose###State. Diese Einstellung ist neu in OTOBO 10 und
der
Standardwert ist der Status closed successful. Aber diese Einstellung ist ungültig, wenn der
Status closed successful im Quellsystem gelöscht oder umbenannt wurde. Diese Inkonsistenz wird als Fehler im
Migrationschritt Migrate configuration settings erkannt. Die
zusammengeführte Systemkonfiguration wird tatsächlich
in der Datenbank gespeichert, aber zusätzliche Gültigkeitsprüfungen werden während der Bereitstellung durchgeführt.
Das Problem muss manuell mittels OTOBO-Konsolenbefehlen behoben werden.
Listet die Inkonsistenzen mit dem Befehl bin/otobo.Console.pl Admin::Config::ListInvalid auf.
Beheben Sie die ungültigen Werte interaktiv mit bin/otobo.Console.pl Admin::Config::FixInvalid.
Deployen Sie die gesammelten Änderungen von migration.pl, einschließlich des deaktivierten SecureMode,
mit bin/otobo.Console.pl Maint::Config::Rebuild.
Nach diesen manuellen Schritten sollten Sie in der Lage sein, migration.pl erneut auszuführen. Die Migration wird mit dem Schritt fortgesetzt, in dem der Fehler auftrat.
Mit OTOBO 10 tritt eine neue Standard-Passwortrichtlinie für Agenten-
und Kundenbenutzer in
Kraft, wenn die lokale
Authentifizierung verwendet wird. Die Passwortrichtlinienregeln können in der
Systemkonfiguration (PreferencesGroups###Password und CustomerPersonalPreference###Password) geändert werden.
| Passwortrichtlinienregel | Standard |
|-------------------------------------------|--------------------|
| PasswordMinSize | 8 |
| PasswordMin2Lower2UpperCharacters | Ja |
| PasswordNeedDigit | Ja |
| PasswordHistory | 10 |
| PasswordTTL | 30 Tage |
| PasswordWarnBeforeExpiry | 5 Tage |
| PasswordChangeAfterFirstLogin | Ja |
In einer nicht Docker-basierten Installation von OTOBO gibt es mindestens einen Cron-Job, der die Gesundheit des Daemons überprüft. Unter Docker existiert dieser Cron-Job nicht mehr. Darüber hinaus läuft kein Cron-Daemon in einem der Docker-Container. Dies bedeutet, dass Sie nach einer individuellen Lösung für OTRS-Systeme mit benutzerspezifischen Cron-Jobs suchen müssen (z. B. Backup der Datenbank).
Für die Migration zu Oracle muss die ETL-ähnliche Strategie angewendet werden. Dies liegt daran, dass Oracle keinen einfachen Weg bietet, die Überprüfung von Fremdschlüsseln vorübergehend auszuschalten.
Auf dem OTOBO-Host muss ein Oracle-Client sowie das Perl-Modul DBD::Oracle installiert sein.
Es gibt viele Möglichkeiten, ein Schema zu klonen. In den Beispielbefehlen verwenden wir expdp und impdp, die Data
Pump unter der Haube nutzen.
Stoppen Sie den Webserver für otobo, damit die DB-Verbindung für otobo geschlossen wird.
DROP USER otobo CASCADEmkdir /tmp/otrs_dump_dirCREATE DIRECTORY OTRS_DUMP_DIR AS '/tmp/otrs_dump_dir';
GRANT READ, WRITE ON DIRECTORY OTRS_DUMP_DIR TO sys;expdp \"sys/Oradoc_db1@//127.0.0.1/orclpdb1.localdomain as sysdba\" schemas=otrs directory=OTRS_DUMP_DIR dumpfile=otrs.dmp logfile=expdpotrs.logimpdp \"sys/Oradoc_db1@//127.0.0.1/orclpdb1.localdomain as sysdba\" directory=OTRS_DUMP_DIR dumpfile=otrs.dmp logfile=impdpotobo.log remap_schema=otrs:otoboselect owner, table_name from all_tables where table_name like 'ARTICLE_DATA_OT%_CHAT'; ALTER USER otobo IDENTIFIED BY XXXXXX;cd /opt/otobo
scripts/backup.pl --backup-type migratefromotrs # es ist in Ordnung, dass der Befehl nur von der otobo Datenbank weiß, nur die letzte Zeile ist relevant
sqlplus otobo/otobo@//127.0.0.1/orclpdb1.localdomain < /home/bernhard/devel/OTOBO/otobo/2021-03-31_13-36-55/orclpdb1.localdomain_post.sql >sqlplus.out 2>&1
Zur Kontrolle mit `select owner, table_name from all_tables where table_name like 'ARTICLE_DATA_OT%_CHAT';Starten Sie den Webserver für OTOBO erneut
Fahren Sie mit Schritt 5 fort, das heißt, führen Sie migration.pl aus.
In der allgemeinen Migrationsstrategie werden alle Daten in den Datenbanktabellen Zeile für Zeile von der OTRS-Datenbank in die OTOBO-Datenbank kopiert. Das Exportieren der Daten aus der OTRS-Datenbank und das Importieren in die OTOBO-Datenbank kann Zeit sparen und ist in einigen Fällen stabiler.
Zuallererst benötigen wir einen Dump der benötigten OTRS-Datenbanktabellen. Dann müssen wir einige Transformationen durchführen:
Konvertierung des Zeichensatzes zu utf8mb4
Umbenennung einiger Tabellen
Kürzung einiger Tabellenspalten
Nach der Transformation können wir die Tabellen im OTOBO-Schema mit den transformierten Daten aus OTRS überschreiben. Effektiv benötigen wir nicht eine einzige Dump-Datei, sondern mehrere SQL-Skripte.
Wenn mysqldump installiert ist und eine Verbindung zur OTRS-Datenbank möglich ist, können Sie den Datenbankdump direkt
auf dem Docker-Host erstellen. Dieser Fall wird durch das Skript bin/backup.pl unterstützt.
cd /opt/otoboscripts/backup.pl -t migratefromotrs --db-name otrs --db-host=127.0.0.1 --db-user otrs --db-password "secret_otrs_password"Das Skript bin/backup.pl erzeugt vier SQL-Skripte in einem Dump-Verzeichnis, z.B. in 2021-04-13_12-13-04. Um die
SQL-Skripte auszuführen, müssen wir den Befehl mysql ausführen.
cd <dump_dir>mysql -u root -p<root_secret> otobo < otrs_pre.sqlmysql -u root -p<root_secret> otobo < otrs_schema_for_otobo.sqlmysql -u root -p<root_secret> otobo < otrs_data.sqlmysql -u root -p<root_secret> otobo < otrs_post.sqlFühren Sie den Befehl mysql innerhalb des Docker-Containers db aus, um die Datenbank-Dump-Dateien zu importieren.
Beachten Sie, dass das Passwort für den Datenbank-Root nun das Passwort ist, das in der Datei .env auf dem Docker-Host
festgelegt wurde.
cd /opt/otobo-dockerdocker-compose exec -T db mysql -u root -p<root_secret> otobo < /opt/otobo/<dump_dir>/otrs_pre.sqldocker-compose exec -T db mysql -u root -p<root_secret> otobo < /opt/otobo/<dump_dir>/otrs_schema_for_otobo.sqldocker-compose exec -T db mysql -u root -p<root_secret> otobo < /opt/otobo/<dump_dir>/otrs_data.sqldocker-compose exec -T db mysql -u root -p<root_secret> otobo < /opt/otobo/<dump_dir>/otrs_post.sqlFür eine schnelle Überprüfung, ob der Import funktioniert hat, können Sie die folgenden Befehle ausführen.
mysql -u root -p<root_secret> -e 'SHOW DATABASES'mysql -u root -p<root_secret> otobo -e 'SHOW TABLES'mysql -u root -p<root_secret> otobo -e 'SHOW CREATE TABLE ticket'oder bei Ausführung unter Docker
docker-compose exec -T db mysql -u root -p<root_secret> -e 'SHOW DATABASES'docker-compose exec -T db mysql -u root -p<root_secret> otobo -e 'SHOW TABLES'docker-compose exec -T db mysql -u root -p<root_secret> otobo -e 'SHOW CREATE TABLE ticket'Die Datenbank ist nun migriert. Dies bedeutet, dass wir im nächsten Schritt die Datenbankmigration überspringen können. Achten Sie auf das entsprechende Kontrollkästchen.
OTRS sicher zu OTOBO migrieren
Planen Sie Datenübernahme, Testlauf, Erweiterungsprüfung und Go-live gemeinsam mit einem OTOBO-Spezialisten.
Ja. Diese Anleitung beschreibt Anforderungen und Schritte, damit Sie Daten sicher nach OTOBO übernehmen können.
Installieren Sie eine lauffähige OTOBO-Instanz, sichern Sie das OTRS-System und prüfen Sie die Migrationsanforderungen auf dieser Seite.
OTOBO 11 führt das Open-Source-Ticketsystem mit aktuellen Funktionen, Sicherheitsupdates und einem aktiven OTRS-Fork weiter.
Dieser Schritt ist nur notwendig, wenn Sie ((OTRS)) Community Edition von einem anderen Server migrieren möchten und _/opt/otrs_ vom Remote-Server nicht auf dem OTOBO-Server eingebunden wurde. Die Werkzeuge `sshpass` und `rsync` werden benötigt, damit _migration.pl_ Dateien per ssh kopieren kann…
Auf Systemen, die in der Vergangenheit Probleme bei einem Upgrade hatten, kann der Migrationsprozess aufgrund von MySQL-Fehlern in den Tabellen _ticket_ und _ticket_history_ stoppen. In der Regel handelt es sich dabei um NULL-Werte in der Quelltabelle, die in der Zieltabelle nicht mehr zulässig…