Import von Kundendaten in Odoo 9 in 4 Schritten

Wer Odoo bereits von Tag 1 an in seinem Unternehmen einsetzt, der wird dieses Problem nicht haben. Alle anderen werden bei der Einführung von Odoo nicht umhin kommen, bestehende Kundenstammdaten in Odoo zu importieren. Dankenswerterweise bietet Odoo just für diesen Zweck einen Import Wizard für CSV-Dateien an. Dieser erledigt seine Aufgabe gut – wenn man seine Tücken kennt und zu meistern weiß. Tut man das nicht, dann bereitet er doch einige Kopfschmerzen. Mit dieser 4-Schritt Anleitung erläutern wir, wie man auch ohne Aspirin seine Bestandsdaten in Odoo bekommt.

Die manuelle Datenübertragung ist für alle Datenbestände mit mehr als ein paar Duzend Datensätzen keine Option – der Zeitaufwand und die Gefahr von Übertragungsfehlern ist zu hoch. Odoo bietet den Datenimport mit drei Dateiformaten an: CSV, XML und YAML. CSV ist ein einfaches, kompaktes Dateiformat, das intuitiv verständlich ist. Für XML spricht, dass es das flexiblere Format ist. Es ermöglicht zum Beispiel die Löschung von Datensätzen in Odoo Datenbeständen. YAML wird für den Odoo Datenimport nur selten verwendet und gute Dokumentationen sind schwer zu finden.

Aktivierung des Import Wizards in den Odoo Settings

In den meisten Fällen ist CSV trotz seiner eingeschränkten Möglichkeiten das Format der Wahl. Daher erklären wir den Import anhand dieses Formats. Ein weiterer praktischer Grund für die Popularität des CSV-Imports ist der bequeme Import-Assistent, den Odoo standardmässig für CSV-Dateien mitbringt. Für diesen Artikel gehen wir davon aus, dass dieser im Settings-Menü unter General Settings > Import/Export aktiviert ist.

Schritt 1: Erstellung des Importplans

Der Schlüssel zu einem erfolgreichen Datenimport in Odoo ist – wie so vieles – eine gute Vorbereitung. Man muss wissen, was man tut und was man erreichen will. Für ersteres sorgen wir mit dieser Anleitung. Das konkrete Ziel müssen Sie festlegen. Grund: Der Wunsch, Daten in Odoo zu importieren, ist nicht ausreichend konkret. Die Zielbestimmung muss sein, den Umfang der zu importierenden Daten festzulegen und ein Matching zwischen den Elemente in der bestehenden Kundendaten und den Feldern in Odoos Kundendatenbank res.partner herzustellen.

Die in Odoo verfügbaren Felder und deren Bezeichnung finden Sie sehr einfach mit Hilfe des Entwicklermodus heraus. Mit aktiviertem Entwicklermodus muss man nur den Mauszeiger auf ein Feld bewegen und schon wird der Feldnamen angezeigt. Ihre Aufgabe ist es nun, sich zu überlegen, wie Sie Ihre bestehenden Kundendatenstruktur in die Datenstruktur von Odoo mappen wollen.

Die Kundendatenbank res.partner einer jungfräulichen Odoo Standardinstallation verfügt bereits über alle Felder, die man von einem Kontaktverwaltungstool erwartet – und viele mehr. Korrespondenzsprache, Newsletter Opt-Out, Umsatzsteuer-ID, Zahlungsbedingungen, Kreditlimit und weitere sind standardmässig angelegt und bestehende Daten können direkt dorthin importiert werden. Geht der Umfang Ihrer Kundenstammdaten nicht über die in Odoo verfügbaren Felder hinaus, dann ist das Matching schnell gemacht.

Haben Sie aber eine Situation, dass Ihre Datenstruktur mit der von Odoo kompatibel ist, dann müssen Sie sich entscheiden, ob Sie die entsprechenden Daten einfach nicht importieren – die schnelle, aber unsaubere Variante – oder ob Sie res.partner um die zusätzlichen Felder ergänzen – die aufwändige, saubere Variante. Hier nur ein Beispiel zur Verdeutlichung: Bei einem unserer Kunden hatten wir die Situation, dass jedem Kunden zwei Referenznummern zugewiesen waren. Da der Verzicht auf eine von beiden Nummern keine Option war, wurde in res.partner ein weiteres Felder angelegt. Die Erweiterung von Odoo um Custom Fields beschreiben wir in einem anderen Artikel.

Zum Abschluss der Beschreibung von Schritt 1 noch ein paar klarstellende Worte zu res.partner. Streng genommen ist res.partner nicht die Kundendatenbank von Odoo. res.partner enthält die Daten sämtlicher Personen und Organisationen, mit denen die Firma in Kontakt steht. Dies sind neben Kunden auch Lieferanten und Mitarbeiter. Letzteres ist für den Import aber nicht von entscheidender Bedeutung und darum bietet es sich an, res.partner mit der Kundendatenbank gleichzusetzen. Zumindest für diesen Artikel.

Schritt 2: Bereinigung und Serialisierung der Bestandsdaten

Schritt 2 ist in den meisten Fällen der aufwändigste Schritt beim Datenimports. Drum herum kommt man aber nicht, denn nur wenn der Import-Assistent die Daten fehlerfrei interpretieren kann, macht Odoo den Import auch mit.

Für die Bereinigung der Bestandsdaten ist ein halb-automatisches Vorgehen mit Microsoft Excel oder einer anderem Tabellenkalkulationsprogramm in den meisten Fällen der effizienteste Weg. Mit diesen lassen sich die zu bereinigenden Daten leicht herausfiltern und manuell anpassen. Durch den intelligenten Einsatz von logischen Funktionen (z.B. if/wenn) läßt sich auch mit wenig Aufwand auch eine großen Datenmenge in Form “massieren”. Erst bei sehr großen Datensätzen lohnt der Einsatz von professioneller Software.

Erfahrungsgemäß benötigen Telefonnummern und Daten (z.B. Geburtsdatum) aufgrund der Validierung beim Import besondere Aufmerksamkeit. Schlägt die Validierung fehl, verweigert Odoo den Import. Bei Daten muss beachtet werden, dass Excel und andere Tabellenkalkulationsprogramme diese als Ganzzahl (englisch: integer) und nicht in einem Datenformat speichern. Im Einsatz beim Kunden wurden wir mit dem Problem konfrontiert, dass Odoo Telefonnummern nicht in das benötigte internationale Format übersetzen konnten. Die inkonsequente Nutzung von Schräg-/Gedankenstichen und Leerzeichen in den Telefonnummern ist dabei unbedeutend. Odoo ignorierte diese Zeichen bei Telefonnummern konsequent. Klar sollte auch sein, dass für jeden Datensatz alle Pflichtfelder befüllt sind.

Die Umlaute der deutschen Sprache ä, ö und ü in Groß- und Kleinschreibung sowie das ß benötigen keine Aufmerksamkeit. Die UTF-8 Zeichenkodierung der Importdatei unterstützt diese. Anders sieht es womöglich mit Sonderzeichen anderer europäischer Sprache aus. Diese müssen eventuell umgewandelt werden. Die von UTF-8 unterstützten Zeichen finden Sie in der UTF-Chartabelle.

Sind die Bestandsdaten nicht “flach” sondern hierarchisch, dann muss die Bereinigung durch die Serialisierung der Daten ergänzt werden. Bei N:1-Beziehungen (z.B. Unternehmen und deren Mitarbeiter) ist die ID des übergeordneten Elements im Feld parent_id der untergeordneten Elemente einzutragen. Bei N:N-Beziehungen (z.B. Tags) sind die Werte einfach nur per Komma separiert in das Feld category_id einzugeben. Zu bedenken ist aber, dass diese Tags zuvor selbst importiert werden müssen, falls diese nicht schon in der Odoo-Datenbank für Tags res_partner_category vorhanden sind.

Sind die Daten vorbereitet, dann muss die Tabelle als CSV-Datei abgespeichert und danach in eine UTF-8 kodierte Datei umgewandelt werden. Dies macht man am einfachsten mit einem Texteditor, der die Speicherung mit der UTF-8 Codierung unterstützt (z.B. der Windows-eigene Editor).

Schritt 3: Import mit dem Import Wizard

Ist die Importtabelle erstmal “zurechtmassiert”, dann ist der Import in Odoo eine einfache Sache. Dem Wizard sei dank. Bevor man aber weiterfährt, sollte man in den Einstellungen die Sprache auf Englisch umstellen. Das reduziert mögliches Konfliktpotential.

Im Wizard wählt man die Importdatei aus und aktiviert die File Format Options. Mit der Wahl von UTF-8 als Codierung und einem Semikolon als Separator sollte Odoo in der Lage sein, im unteren Teil des Bildschirms eine Vorschau zu erstellen. Sollte dies wieder Erwarten nicht funktionieren, dann kann die Wahl des Kommas als Separator (insbesondere bei Computer mit englischer Spracheinstellung) oder ein Anführungszeichen im Feld Quoting die Lösung bringen. Falls das Programm die Vorschau nicht automatisch aktualisiert, dann hilft ein Klick auf den Refresh-Button neben dem Dateinamen der Importtabelle.

Import von Kundendaten über den Import Wizard

Der eigentliche Sinn der Vorschau ist die komfortable Validierung des durch Odoo vorgeschlagenen Mappings der Spaltenüberschriften der Importtabelle mit den in Odoo verfügbaren Feldern. Wenn man sich bei der Verwendung der Spaltenüberschriften eng an die Namen der Zielfelder gehalten hat, dann bedarf das Mapping keiner weiteren Anpassung. Es lohnt sich aber auf jeden Fall, dieses nochmal zu prüfen.

Den Import startet man mit einem Klick auf den Button Import. Der benachbarte Knopf Validate startet eine Überprüfung der Importtabelle, ohne Daten in res.partner zu schreiben. Werden bei der Validierung keine Probleme gefunden, wird dies mit einer knappen Erfolgsmeldung quittiert.

Schritt 4: Validierung des Imports

Auch wenn es verlockend ist, die Arbeit nach einem erfolgreichen Import als erledigt anzusehen, so empfehlen wir trotzdem eine stichprobenartige Überprüfung der neuen Datensätze. Der Teufel steckt im Detail und auch wenn Odoo beim Import keine Fehler gemeldet hat, so ist Zielerreichung nicht mit automatischer Fehlerfreiheit gleichzusetzen.

Neben einer Überprüfung der Korrektheit der importierten Daten, so empfehlen wir zusätzlich noch eine händische Funktionsprüfung: Funktioniert z.B. die Checkbox Is a company? noch? Wird das Softphone per Click2Dial richtig angesprochen? Erst wenn all diese Prüfungen ohne Probleme abgeschlossen sind, kann man von einem erfolgreichen Import sprechen.

Importhilfe vom Profi

Stossen Sie beim Import Ihrer Bestandsdaten in Odoo trotz dieser Anleitung auf Widerstände oder haben Sie Fragen, dann rufen Sie uns an! Wir unterstützen Sie gerne beim Import von Kundendaten und anderen Daten in Odoo. Wir machen Ihnen auch gerne ein Angebot für die komplette Abwicklung einer Datenmigration. Egal, was es auch ist, für Fragen zu Odoo erreichen Sie uns unter +49 (0)6131 3270777.

geschrieben von

Christoph Dyllick-Brenzinger

Christoph ist Gründer und Chefentwickler von datamate. Er ist ein absoluter Linux-Fan und hat schon früh seine Leidenschaft für Technik und Programmierung entdeckt. Seine langjährige Erfahrung als Unternehmensberater spürt man regelmäßig, wenn er nach optimalen Lösungen für die Kunden sucht. Wenn er nicht gerade den Tennisplatz unsicher macht oder bei Overwatch sein Liga-Ranking verbessert, verbringt Christoph seine Freizeit mit seiner Frau und seinen drei Kindern.