Stammdaten für Odoo vorbereiten: Kunden, Artikel, Lieferanten
Kurz gesagt
Bereinigen Sie Stammdaten je Objekt: Duplikate entfernen, Adressen und Nummern in eigene Felder, Datumswerte als JJJJ-MM-TT. Geben Sie jeder Zeile eine eindeutige externe ID und importieren Sie verknüpfte Daten zuerst, etwa Produktkategorien vor Artikeln. Prüfen Sie die Zuordnung mit der Schaltfläche Test; ein Import lässt sich nicht zurücksetzen (Odoo 20.0).
Das Wichtigste
- Odoo 20.0 nimmt Daten über Excel-Dateien (.xlsx) oder CSV-Dateien an; das gilt für alle Geschäftsobjekte, etwa Kontakte und Produkte.
- Ein Import ist dauerhaft und lässt sich nicht zurücksetzen; erstellte oder geänderte Datensätze finden Sie über die Filter created on und last modified.
- Die Spalte External ID (ID) gehört in jede Importdatei: eine eindeutige externe ID je Datensatz macht Wiederholungsimporte zu Updates und erlaubt Querverweise zwischen Objekten.
- Verknüpfte Datensätze zuerst importieren: Produktkategorien vor Artikeln, Unternehmen vor Ansprechpartnern; je Feld nur eine Referenzart (Name, Database ID oder External ID).
- Odoo schätzt Datumsformate aus den ersten zehn Zeilen der Datei; in CSV-Dateien ist ISO 8601 (JJJJ-MM-TT) zu verwenden, um vertauschte Tage und Monate auszuschließen.
- Duplikate lassen sich in der App Kontakte zusammenführen; die Dublettensuche Deduplicate the other Contacts findet Duplikate anhand gewählter Kriterien und führt automatisch oder nach manueller Prüfung zusammen. Die Dublettensuche der App Data Cleaning ist nur in der Enterprise-Edition enthalten.
Kunden, Lieferanten und Artikel landen über denselben Weg in Odoo: eine Datei pro Objekt, hochgeladen im Listenfenster der jeweiligen App. Ob der Import sauber durchläuft, entscheidet sich vorher — in der Aufbereitung der Datei. Diese Anleitung zeigt die Bereinigung anhand einer Checkliste, die Spalten der beiden Importvorlagen und den Ablauf bis zum Testimport in Odoo 20.0. Den nachfolgenden Wiederholungsimport mit externen IDs behandelt der Artikel Daten in Odoo importieren: CSV, Excel und externe IDs.
Was Sie vorab brauchen
- Zugriff auf eine Odoo-20.0-Datenbank mit der App Kontakte; Artikel pflegen Sie je nach Anwendung unter Verkauf, Einkauf oder Lager in der Produktliste.
- Ein Export aus Ihrem Altsystem, je Objekt eine Datei im Format .xlsx oder .csv; beide Formate nimmt Odoo laut Dokumentation an.
- Eine Tabellenkalkulation, die CSV mit wählbarem Trennzeichen speichert; die Dokumentation nennt LibreOffice und OpenOffice, weil sich dort Trennzeichen, Textbegrenzer und Kodierung einstellen lassen.
- Eine Entscheidung, aus welchen Altdaten die externe ID je Datensatz gebildet wird; was eine externe ID ausmacht, definiert der Artikel Externe ID (Odoo).
- Eine Liste der Produktkategorien und Stichwörter, die in Odoo bereits existieren; verknüpfte Datensätze müssen vor den Datensätzen liegen, die auf sie verweisen.
Checkliste: Stammdaten vor dem Import bereinigen
Die folgenden Punkte sind eine redaktionelle Checkliste; sie fasst Regeln zusammen, die die 20.0-Dokumentation für Importdateien nennt. Arbeiten Sie sie je Objekt ab, bevor Sie die Datei hochladen.
- Trennen Sie Datensatztypen: Je Unternehmen und je Ansprechperson ein eigener Datensatz; verknüpfen Sie die Personen über die Spalte Related Company/External ID mit dem Unternehmen, wie das SQL-Beispiel der Dokumentation es vorführt.
- Suchen Sie Duplikate in der Quelldatei anhand der Kriterien der Zusammenführungsfunktion: E-Mail, Name, Is Company, USt-IdNr. (VAT) und Parent Company. Wählen Sie mehrere Kriterien, schlägt Odoo laut Merge-Dokumentation nur Datensätze als Duplikate vor, die in allen gewählten Feldern übereinstimmen. Diese Dublettensuche (Deduplicate the other Contacts) gehört zur App Kontakte und ist laut Quellcode im Community-Modul base enthalten; nur die Dublettensuche der App Data Cleaning ist Enterprise-only.
- Verteilen Sie Adressen auf eigene Felder (Straße, PLZ, Stadt, Land). Führen Sie Telefonnummern mit Ländercode auf — das ist eine redaktionelle Empfehlung für die internationale Erreichbarkeit; die Kontaktedokumentation verlangt nur, die Telefonnummer einzutragen.
- Notieren Sie Datumswerte in CSV-Dateien als JJJJ-MM-TT (ISO 8601); in Excel-Dateien nutzen Sie Datumszellen, weil Odoo dort keine Formatierungsoptionen anbietet.
- Halten Sie Zahlen frei von Textanteilen: Währungssymbole und Tausendertrennzeichen erkennt Odoo selbst, ein unbekanntes Währungssymbol kann den Import laut Dokumentation abbrechen. Negative Werte trägt die Datei mit führendem Minuszeichen oder in Klammern ein (beides nennt die Dokumentation als unterstützte Formen); nur bei Klammern muss das Währungssymbol innerhalb der Klammern stehen, sonst erkennt Odoo den Wert nicht als negative Zahl.
- Legen Sie je Artikel eine Produktart fest: Güter, Dienstleistung oder Kombi. Dienstleistungen sind laut Produktdokumentation im Lager nicht verfolgbar; wer Chargen oder Seriennummern führen will, wählt Güter und die Bestandsverfolgung (siehe Chargen und Seriennummern in Odoo).
- Sortieren Sie verknüpfte Daten vor: Produktkategorien vor Artikeln, Unternehmen vor Ansprechpersonen — die Dokumentation fordert, verknüpfte Datensätze zuerst zu importieren. Stichwörter stehen in einer Spalte, durch Kommas ohne Leerzeichen getrennt.
- Vergeben Sie je Zeile eine externe ID, die über alle Objekte hinweg eindeutig ist, mit Präfix wie kunde_12 oder artikel_140; das ist eine Empfehlung aus der Dokumentation, um Kollisionen zwischen Objekten zu vermeiden.
Spalten der Importvorlage für Kontakte
Auf der Importseite der Kontakte lädt Odoo die Vorlage Import Template for Customers herunter; fertige Vorlagen lassen sich laut Dokumentation in einem Durchgang importieren, weil die Zuordnung vorkonfiguriert ist. Ergänzen oder entfernen Sie Spalten nach Bedarf — die Spalte External ID (ID) soll laut Dokumentation nicht entfernt werden. Die folgenden Spalten sind ein Vorschlag; entscheidend ist die Zuordnung auf das Odoo-Feld im Importdialog.
| Spalte (Vorschlag) | Odoo-Feld | Was Sie eintragen |
|---|---|---|
| id | External ID (ID) | eindeutige ID mit Präfix, etwa kunde_12 |
| name | Name | Firmenname oder Name der Person, Pflichtfeld |
| E-Mail-Adresse inklusive Domain | ||
| phone | Telefon | Nummer mit Ländercode (redaktionelle Empfehlung) |
| street, zip, city | Adresse | Straße, PLZ und Stadt in drei Spalten |
| country | Land | Name oder Code des Landes |
| vat | USt-IdNr. (Tax ID) | Steuer-Identifikationsnummer; bei nicht steuerpflichtigen Kontakten erlaubt die Dokumentation einen Schrägstrich |
| lang | Sprache | Sprache des Kontakts; Dokumente an ihn werden in dieser Sprache erzeugt |
| tags | Stichwörter (Tags) | mehrere Werte kommagetrennt ohne Leerzeichen, etwa Großkunde,Handel |
| parent | Related Company/External ID | externe ID des Unternehmens, nur bei Personen |
Weitere Adressen, etwa Rechnungs- und Lieferadressen, legt die Kontaktedokumentation als zugehörige Kontakte mit Adresstyp an (Contact, Invoice, Delivery, Other); beim Import entspricht das dem Dokumentationsmuster „Kunden und zugehörige Kontakte”, bei dem zusätzliche Zeilen ohne Kundenfelder folgen. Beim Feld Land trägt die Datei je nach Bedarf den Namen (Country), die interne Nummer (Country/Database ID) oder die externe ID (Country/External ID); nur eine dieser Referenzarten je Feld.
Spalten der Importvorlage für Produkte
Für Produkte gibt es dieselbe Vorlagenfunktion; die deutsche Übersetzung des Verkaufsmoduls nennt sie „Importvorlage für Produkte”. Auch hier bleibt die Spalte External ID (ID) stehen. Vorschlag für die Spalten:
| Spalte (Vorschlag) | Odoo-Feld | Was Sie eintragen |
|---|---|---|
| id | External ID (ID) | eindeutige ID mit Präfix, etwa artikel_140 |
| name | Name | Produktname |
| ref | Interne Referenz | Ihre Artikelnummer |
| type | Produktart | Güter, Dienstleistung oder Kombi |
| sale_ok, purchase_ok | Verkaufen / Kaufen | Kontrollkästchen: True oder False je Feld |
| list_price | Verkaufspreis | Preis ohne Währungstext; Dezimaltrennzeichen aus den Formatierungsoptionen der CSV-Datei |
| standard_price | Kosten | Einkaufskosten, gleiche Regeln wie beim Verkaufspreis |
| categ_id | Produktkategorie | Name oder externe ID einer zuvor importierten Kategorie |
| uom | Maßeinheiten (Unit of Measure) | Einheit wie Stück oder kg; je Produkt ist eine Maßeinheit hinterlegt |
| barcode | Barcode | EAN oder Strichcode des Artikels |
| invoice_policy | Abrechnungspolitik | Bestellte Mengen oder Gelieferte Mengen; das Feld erscheint nur mit installierter App Verkauf und verkäuflichen Artikeln |
| is_storable | Bestand verfolgen | True, wenn Odoo den Bestand des Artikels führt; laut Dokumentation nur bei Gütern sinnvoll, da Dienstleistungen nicht verfolgbar sind |
Beim Feld Bestand verfolgen bietet Odoo laut Produktdokumentation die Verfolgung per Seriennummer, per Los oder per Menge an. Bei mehreren Treffern gleichen Namens, etwa zwei Kategorien mit demselben Unternamen, hält die Validierung an oder ordnet die Datensätze laut Dokumentation der zuerst gefundenen Kategorie zu; lösen Sie das über die Spalte mit der Endung /ID oder über die externe ID des Ziels.
Schritt für Schritt: Import vorbereiten und ausführen
Schritt 1: Quelldaten je Objekt exportieren
Exportieren Sie aus dem Altsystem Kontakte und Artikel getrennt, jede Beziehung in der eigenen Datei. Ein fehlgeschlagener Test lässt sich so einer einzelnen Datei zuzuordnen.
Schritt 2: Dateien anhand der Checkliste bereinigen
Arbeiten Sie die Checkliste oben ab: Datensatztypen trennen, Duplikate markieren, Adressen und Nummern auf Felder verteilen, Datumswerte als JJJJ-MM-TT, Zahlen ohne Textanteile. Speichern Sie jede bereinigte Datei als eigene Version, damit Sie nach einem abgebrochenen Import an denselben Stand zurückkommen.
Schritt 3: Externe IDs vergeben
Tragen Sie in der Spalte External ID (ID) je Zeile eine eindeutige ID ein und füllen Sie die Spalte über alle Zeilen hinweg fort. Nutzen Sie Präfixe, die das Objekt nennen, etwa lieferant_08. Entfernen Sie die Spalte nicht; dieselbe externe ID für zwei Datensätze erzeugt laut Dokumentation einen Konflikt.
Schritt 4: Verknüpfte Objekte zuerst importieren
Importieren Sie die Dateien in Abhängigkeitsreihenfolge: zuerst Produktkategorien, dann Produkte; zuerst Unternehmen, dann Personen. Die Dokumentation verlangt, verknüpfte Datensätze zuerst zu importieren, und verweist die Verknüpfung über die Spalte Related Company/External ID auf die externe ID des ersten Imports.
Schritt 5: Importdialog öffnen
Öffnen Sie in Odoo die Liste des Zielobjekts, etwa die Kontakte, klicken Sie auf das Aktionensymbol und wählen Sie Import records. An dieser Stelle lädt auch die Vorlage Import Template for Customers.
Schritt 6: Datei hochladen und Zuordnung prüfen
Klicken Sie auf Upload Data File und wählen Sie Ihre Datei. Prüfen Sie in der Vorschau jede Spalte gegen das zugeordnete Odoo-Feld; Odoo schätzt den Feldtyp aus den ersten zehn Zeilen, eine Spalte nur mit Zahlen bietet deshalb zunächst nur Zahlenfelder an. Über die Option Show fields of relation fields (advanced) zeigt der Dialog die volle Feldliste.
Schritt 7: Formatierungsoptionen für CSV setzen
Bei CSV-Dateien stellen Sie unter Formatting options Trennzeichen, Textbegrenzer und Datumsformat ein; die erkannten Werte zeigt der Dialog. Bei Excel-Dateien erscheinen diese Optionen nicht, deshalb gelten dort die Zellformate aus Schritt 2.
Schritt 8: Testen und importieren
Klicken Sie auf Test und beheben Sie gemeldete Fehler in der Datei, nicht im Dialog. Zeigt der Test keine Fehler, klicken Sie auf Import. Ab diesem Punkt sind die Datensätze in der Datenbank. Optional bietet der Entwicklermodus unter Advanced die Optionen Track history during import und Allow matching with subfields; Erstere erzeugt beim Import Nachrichten und verlangsamt ihn laut Dokumentation.
So prüfen Sie das Ergebnis
Öffnen Sie die Liste des importierten Objekts und filtern Sie nach created on bzw. last modified; die Dokumentation nennt diese beiden Filter, um die von einem Import erzeugten oder geänderten Datensätze zu identifizieren. Vergleichen Sie die Trefferzahl mit der Zeilenzahl Ihrer Datei. Öffnen Sie stichprobenartig Datensätze mit Verknüpfungen und prüfen Sie, ob Kategorie, Unternehmen oder Land auf die erwarteten Ziele verweisen. Duplikate, die trotzdem entstanden sind, führen Sie in der App Kontakte über Aktionen ‣ Merge zusammen; das Zusammenführen ist laut Dokumentation unwiderruflich. Nach dem Zusammenführen bietet Kontakte die Dublettensuche Deduplicate the other Contacts an: Sie sucht weitere Duplikate nach den gewählten Kriterien und führt sie automatisch oder nach manueller Prüfung zusammen. Die eigenständige Dublettensuche der App Data Cleaning ist dagegen nach der Modulliste ihrer Dokumentation nur in der Enterprise-Edition enthalten.
Wenn etwas nicht klappt
| Symptom | Ursache | Behebung |
|---|---|---|
| Import bricht mit Zeitüberschreitung ab | Datei zu groß | Datei in kleinere Stapel teilen und je Stapel importieren |
| Neuer Import erzeugt Duplikate | Externe IDs fehlen oder wurden geändert | Spalte External ID (ID) behalten und Werte unverändert lassen; geänderte IDs lassen Odoo neue Datensätze anlegen |
| Tag und Monat vertauscht | Datumsformat aus den ersten zehn Zeilen falsch erkannt | Datumswerte als JJJJ-MM-TT schreiben oder in Excel Datumszellen verwenden |
| Import bricht bei einer Zahl ab | unbekanntes Währungssymbol | Symbol aus der Zelle entfernen oder Tausendertrennzeichen in den Formatierungsoptionen prüfen |
| Spalte lässt sich keinem Feld zuordnen | Spaltenbezeichnung passt zu keinem Feldnamen | Feld in der Dropdown-Liste suchen oder Spalte wie das Feld benennen; für Beziehungen Show fields of relation fields (advanced) aktivieren |
| Artikel landen in der falschen Kategorie | gleichnamige Kategorien | Spalte mit der Endung /ID oder die externe ID des Ziels verwenden |
| Stichwörter nicht wie erwartet gesetzt | Komma mit Leerzeichen als Trenner | Werte ohne Leerzeichen kommagetrennt eintragen |
Wann Sie Hilfe holen sollten
Holen Sie Hilfe, wenn mehrere Objekte über fremde Schlüssel verknüpft sind, etwa eine SQL-Datenbank mit Firmen- und Personentabellen; die Dokumentation zeigt das Muster über externe IDs, die Umsetzung im Altsystem macht ein Datenbankteam. Dasselbe gilt, wenn Eröffnungssalden und offene Posten denselben Import durchlaufen sollen — dazu behandelt der Artikel Datenübernahme aus dem Altsystem nach Odoo die Gesamtabfolge. Wer importieren darf, hängt von den Benutzerrechten Ihrer Datenbank ab; das klärt Ihre Odoo-Administration oder Ihr Odoo-Partner, bevor der erste Import in der Produktivdatenbank läuft.