Zwei Systeme zusammen führen

Hallo zusammen,
gibt es eine Möglichkeit oder Anleitung wie ich aus zwei einzelne CRM Systeme eines machen kann ´, also diese beiden zusammen führen ?

Hallo,

Möglichkeit auf jeden Fall, an Anleitung bin ich noch dran - ist nur immer sehr individuell.

Im Prinzip muss man durch eine ganze Reihe Fragen, abhängig von den Antworten ergeben sich Migrationsstrategien.

  • Du hast zwei SuiteCRM die zusammengeführt werden müssen?
  • Bei zwei unterschiedlichen Systemen: Ist eins Closed Source? Gibt es eine API? Gibt es Zugriff auf die DB? Gibt es Berichte mit Export-Option?
  • Datenarchitektur unterscheidet sich zwischen den beiden Systemen?
  • Gibt es Dubletten in den Systemen?
  • Müssen im Zielsystem die gleichen Module befüllt / genutzt werden wie im Quellsystem?
  • Gibt es auf Datensatzebene Besonderheiten (Workflows die beim Import nicht ausgelöst werden sollen, Zeichensatz / Encoding, …)
  • Gibt es auf Feldebene Besonderheiten (unterschiedliche Zeichenlimitierungen, Datentyp-Konversionen, …)
  • Gibt es im Zielsystem Validierungsregeln die im Quellsystem nicht existieren?
  • Müssen Datensätze bereinigt / angereichert werden, während der Migration?
  • Werden sämtliche Relationen übernommen oder gibt es sogar einen Teil-Datenbestand der Relations-Ziele im Ziel-System?
  • Rechtliche Vorgaben zu den Daten / data governance Anforderungen / …
  • etc.

Je nach Antwort auf diese Fragen, wird das Vorgehen dann deutlich.

Ein manueller Prozess für kleinere Migrationen (ca. einige hunderte - tausende Datensätze) kann so aussehen:

  1. Datenkorrektur / Vorbereitung im Quellsystem
  2. Erstellung und Export von Berichten
  3. Datenkorrektur / Anreicherung / Transformation die im Quell-CRM nicht möglich war
  4. Abgleich mit / Anreicherung um IDs / Datensätzen vom Ziel-CRM
  5. Import in Ziel-CRM

Bei größeren Migrationen (ca. tausende bis millionen) arbeitet man eher über Migrationsdatenbanken.
Entweder mit speziellen ETL / ELT tool oder mit einer Software in der Mitte.
Die verbinden sich zu beiden Datenbanken und machen in der Mitte die Transformation der Daten.
Wenn die Transformation komplex ist (Validierungsregeln, Datenanreicherungen, …) wird meist eine Zwischendatenbank eingeführt.
Da gibt es dann einen “golden record” als Ziel-Struktur. Dieser kann dann für den Import verwendet werden.
Je nachdem wie viele Transformationen durchlaufen werden müssen, kann es mehrere “silver records” geben und die Rohdaten werden in einen “bronze record” geschrieben.
Nennt sich Medallion-Architektur.

Zu den Berichten brauchst du sicher JOINS / Verknüpfungen:

Zum Import ohne Dubletten habe ich einen kurzen Workshop aufgenommen:

Hallo Bastian,
Danke dir für die schnelle Antwort.
Ja es sind zwei SuiteCRM Systeme die ziemlich identisch sind, also fast die gleiche Struktur und Module.
Das sollte das vereinfachen.
Dubletten sollte es nicht geben.
Zu den Modulen, ja die sind gleich Beziehungsweise könnte die noch angepasst werden sie gleich sind.
Es sollten die Kundennummern in beiden Systeme angepasst werden die um XX erweitert werden so das man die wieder unterscheiden kann aus welchen System sie kommen.

Das klingt doch gut - dann hast du schon die wichtigsten Punkte genannt.

Sollte in der Tat einfacher sein als Migration aus einem geschlossenen System.

Du hast im Prinzip die Option für zwei verschiedene Ansätze:

1: Programmatisch inkl. IDs und Verknüpfungen

Hier müssten Skript(e) geschrieben werden, die Daten aus der Quell-DB auslesen, minimal transformieren (Kundennummer Präfix o. Ä.) und in die Ziel-DB laden.
PHP eignet sich gut, weil viel vom CRM im PHP vorgegeben ist als Beispiel.
Python benutze ich auch gern, wenn mehr Daten-Logik passieren soll.

Der Große Nachteil: ist prinzipiell ein Einmal-Code, der nach der Entwicklung weggeworfen wird. Daher wahrscheinlich eher:

2: Manuell via Import / Export

Du erstellst dir Exporte über Berichte, baust die Spalten (Namen) so auf, dass sie der Import bereits erkennt und gehst darüber vor.
Bei der Reihenfolge achtest du immer auf die Parent Records:
Bsp Account / Contact:
Erst muss der Account importiert sein.
Wenn der existiert, kann der Contact importiert werden, mit einer Beziehung zum Account.

Falls du mehr als ca. hunderte / tausende Datensätze hast, dann kannst du die Importe aufteilen auf mehrere Dateien.
Geht bei den Exporten auch, aber da ist es einfacher die Servereinstellungen passend zu konfigurieren, sodass der Export nicht in Timeouts läuft.
z. B. php.ini max_execution_time
Das ist eher ein Server / Hoster-Thema.

Die Kundennummern-Präfixe kannst du dann über LibreOffice Calc oder Excel machen. Pass hier gut auf, dass die Software nicht mitdenkt und ggf. Postleitzahlen mit führender 0 in eine Zahl umwandelt und die 0 raus löscht.

Weitere Ansätze sind via API - rentiert sich aber für eine Einmal-Aktion auch nicht, wenn es keine speziellen Anforderungen gibt.
Oder über sowas wie Metabase (der Open Source Download) und einer direkten DB Verbindung (bzw. einem Dump in einer zweiten DB) die Exporte zusammenstellen, falls du keine Kontrolle über den Quell-Server hast und in Timeouts o. Ä. rein läufst.