Vorwort

In den letzten Wochen und Monaten habe ich wieder einmal sehr intensiv mit dem Importer/Exporter von Odoo gearbeitet. Ich muss zugeben, dass ich das viele Jahre vermieden habe: Ich fand das Handling unangenehm und fühlte mich mit der Liste an Feldern so erschlagen, dass ich nie so recht wusste, wo ich anfangen sollte. Wenn ich einen Export vorgenommen hatte, standen da plötzlich nur Datenbank IDs, aber keine lesbaren Werte. Getreu dem Motto, jetzt habe ich mich schon mal dazu durchgerungen, und prompt kommt nicht einmal etwas Brauchbares dabei raus. Natürlich habe ich dann das Ganze wieder ad acta gelegt, Wasser nimmt ja bekanntlich immer den Weg des geringsten Widerstandes.

Dieses Mal blieb mir jedoch nichts anderes übrig: Alles begann damit, dass ich für einen Kunden eine riesige Excel-Tabelle als Anfangsdatenbestand in Odoo hinein bekommen musste. Nachdem ich mir die Listen mit über 200 Spalten angeschaut hatte, die nahezu einen kompletten Datenbankexport darstellten und somit viele Sinneinheiten kombinierten (der Klassiker sozusagen), habe ich mir gedacht: Bevor ich das einem Kollegen erklärt  und es dann geprüft habe, wir Korrekturrunden gegangen sind, wieder alles geprüft haben, ist so oft die Sonne untergegangen, dass ich es vielleicht auch gleich über den Import von Odoo versuchen könnte. So schlimm kann es ja nicht werden, immerhin gibt es dieses Feature, solange ich das System kenne.

Hier sind meine Erfahrungen:

Im Allgemeinen

Ich muss offen sagen, es brauchte Zeit, mich etwas daran zu gewöhnen, doch ging es schneller als ich dachte. Mit ein paar Excel-Kenntnissen und der Import- bzw. Exportfunktion kann man so ziemlich alles anstellen, was vorstellbar ist. Es lässt sich einfach ALLES in Odoo importieren und exportieren. Auch wer auf der Suche nach Massenupdate Modulen ist, hat noch nie damit gearbeitet, denn zusammen mit Excel spielt man in einem absoluten „Winning Team“!

Odoo speichert eine Unmenge an Daten. Damit ist natürlich klar, dass die Feldlisten lang sind. Da keine Daten redundant gespeichert, sondern in diesem Fall verlinkt werden, hat das natürlich zur Folge, dass vieles auf Unterdatensätzen verteilt ist. Doch auf diese lässt sich in beiden Fällen (Import sowie Export) nahezu grenzenlos zugreifen – was die Feldlisten natürlich nicht kleiner macht.

Doch mit ein paar kleinen Tipps in der Handhabung (die wir im Laufe des Textes alle mitgeben wollen) lichtet sich das Dickicht recht schnell.

Import

Wer importieren möchte, findet (wenn die Rechte für eine Datenanlage existieren) oben neben dem Knopf „Create“ den Import. Egal in welchem Ansichtstyp man sich befindet, die Option ist rein an die eigenen Rechte geknüpft. Klickt man darauf, erscheint der Dateibrowser und man kann eine Excel oder CSV Datei auswählen.

Im 2. Schritt kommt das Mapping der Felder der Importdatei zu Odoo. Dabei versucht Odoo anhand des Namens bereits eine Zuordnung. Dabei werden die technischen Feldnamen, die englischsprachigen sowie die übersetzten Bezeichnungen als Vergleich genutzt.

Tipp

Sollte es sich um einen einmaligen Import handeln oder wenn Sie aufgrund der niedrigen Datenmenge und des geringen möglichen Fehlerpotentials der Spalteninhalte darauf schließen können, dass der Import mit wenigen Versuchen gelingen wird, sind die Bezeichnungen der Spaltenköpfe nicht sonderlich relevant, denn dann ist das Mapping, das vor jedem Versuch neu erstellt werden muss, nicht so aufwändig.

Handelt es sich jedoch um eine Excel-Tabelle, die umfangreich ist und man somit davon ausgehen muss, dass mehrere Versuche für einen erfolgreichen Import notwendig sind, oder der Import der Excel-Tabelle sogar regelmäßig ausgeführt wird, sollten die Originalbenennungen der Spalten durch die technischen Bezeichnungen des Odoo-Pendants ausgetauscht werden.

Dies gelingt recht einfach, indem man einen Export der gleichen Daten anhand eines oder zweier Datensätze ausführt und die Spaltennamen der resultierenden Datei in die eigene herüberkopiert. Wie man die richtigen Felder findet, dazu kommen wir später.

Relationale Daten

Sollten in einer Auswahlliste entsprechende Werte fehlen und die Wertliste konfigurierbar sein, so gibt es seit Odoo 13 die Option, diese gleich mit anzulegen. Doch davon würde ich unbedingt abraten, denn jeder Import stellt in irgendeiner Form auch einen Qualitätsschritt dar.

Diese Option kann übrigens auch dazu verwendet werden, z.B. Adressen gemeinsam mit Aufträgen, also mit den dahinterliegenden Datensätzen anzulegen. Doch auch davon würde ich abraten: In diesem Fall sollten zwei oder mehrere separate Importe gestartet werden. Der erste Grund ist ebenfalls die Datenqualität, denn Odoo überprüft nicht zwingend, ob dieser oder ein ähnlicher Eintrag bereits existiert, sondern importiert einfach. Dazu kommt, dass das Mapping viel Zeit in Anspruch nimmt und die Datei recht komplex aufgebaut werden muss. So muss eine gewisse Reihenfolge beachtet werden, andernfalls kann das Ergebnis überraschend ausfallen (zu dem „komplexen Aufbau“ kommen wir später). Und da es keine „Undo“-Funktion gibt, ist es dann Zeit, den Admin anzurufen und ein Backup zu aktivieren. Sollte das letzte Backup dann mehrere Stunden zurückliegen und somit die Arbeit aller Benutzer zunichtemachen, möchte ich nicht im Stuhl des dafür Verantwortlichen sitzen.

Kleine Einheiten

Des Weiteren sollte man darauf achten, keine großen Listen zu importieren. Die Gründe sind in Andeutungen bereits fast alle benannt worden. Der wohl wichtigste Grund ist, dass man so einem komplexen Aufbau innerhalb der Importdatei aus dem Weg gehen will, denn der Odoo Importer muss dann nicht verstehen, welche Informationen zu welcher Ebene gehören.

Beispiel

Möchte ich also Kontakte und Firmen importieren, kann ich das natürlich in einem Vorgang machen. D.h. die ersten Spalten müssen alle dem Unternehmen zugeordnet werden können, dann muss es einen vertikalen, gedanklichen Schnitt geben und alle Spalten nach diesem Schnitt sollten dem Kontakt zugeordnet werden können. Würde man dies importieren, legt Odoo zuerst Adressen vom Typ Unternehmen an und importiert die dazugehörigen Kontakte.

Klingt ja an sich bequem und definitiv besser, als wenn den Import in zwei Schritten vorzunehmen. Denn bei zwei Schritten müsste man dem zweiten Teil ja irgendwie mitteilen, wie der erste zu erkennen ist und dabei mit Namen arbeiten oder sogar mit IDs. Und diese IDs erhält man ja erst, indem man den bereits importierten Teil wieder exportiert und dann eine Zuordnung innerhalb der zweiten Excel-Tabelle findet.

Natürlich ist das unbequemer. Warum also sollte dieses Vorgehen besser sein?

Fehlerminimierung

Meine Erfahrung hat gezeigt, dass es gerade in diesem Fall schnell zu falschen Feldzuordnungen kommt. Denn Unternehmen haben eine Straße, PLZ und Ort, der Kontakt aber auch. D.h. wenn ich mit der Hand mappen würde, wäre das Risiko also sehr hoch, dass ich mich hier verklicke und etwas Falsches auswähle. Gibt es Fehler, muss ich den Vorgang wiederholen und erhöhe dadurch das Risiko mit jedem Versuch. Arbeite ich mit den technischen Feldnamen, um mir das Mapping zu ersparen, muss ich tatsächlich über die Spaltenreihenfolge arbeiten (darüber sprechen wir später), und auch mir als geübten Importanwender kann ein deplatziertes Feld unterkommen.

Abgesehen davon finde ich beim Zerlegen der Daten und der Neuzuordnung oft inhaltliche Fehler und habe die Möglichkeit, diese an den Absender des Datenimports zu adressieren.

Upload

Bislang habe ich nie die Zeit gestoppt, daher kann ich nicht belegen, dass die beschriebene Prozedur tatsächlich effizienter ist. Doch kleinere Tabellen beschleunigen schlichtweg den Upload sowie die Berechnung des Mapping-Vorschlags von Odoo und verkürzen damit auch die Wartezeiten.

Fazit

Für den Import sollte man kleine „Importeinheiten“ bilden. Um Zuordnungen zwischen Datenmengen bilden zu können, arbeitet man mit einem Export der Bezugsmenge aus Odoo und nutzt die Funktion SVERWEIS in Excel.