Von Shopsoftware zu Odoo wechseln: Bestand und Kunden
Kurz gesagt
Beim Umzug von einem Shopsystem nach Odoo gilt eine feste Reihenfolge: zuerst Attribute und Kategorien, dann Produkte, dann Kunden, zuletzt die am Stichtag offenen Bestellungen; offen ist eine Bestellung, wenn sie bestätigt ist und Auslieferung oder Rechnung noch aussteht. Eine Bestellung mit noch ausstehender Lieferung wird zum Auftrag: die Bestätigung legt für lieferpflichtige Positionen den Lieferauftrag an (App Lager) und reserviert mit der Reservierungsmethode Bei Bestätigung Bestand; Dienstleistungen und Abonnements erzeugen keinen Lieferauftrag. Eine im Altsystem bereits ausgelieferte Bestellung wird deshalb nur als Rechnung in der Buchhaltung angelegt, nicht als Auftrag; so entstehen weder eine offene Lieferpflicht noch eine Reservierung noch eine zweite Lieferung. Damit ein zweiter Lauf vorhandene Datensätze ändert statt neue anzulegen, braucht jeder Datensatz eine gleichbleibende Externe ID (External ID) oder Datenbank-ID (Database ID). Angebote und abgebrochene Warenkörbe bleiben im Altsystem; abgeschlossene Bestellungen werden nicht nachgetragen.
Das Wichtigste
- Betroffen sind die Apps Website mit E-Commerce, Verkauf, Lager und Kontakte in Odoo 20.0.
- Produktdateien mit Varianten brauchen Attribute und Kategorien schon in der Datenbank.
- Über die Spalten Externe ID (External ID) und Datenbank-ID (Database ID) ändert ein zweiter Import vorhandene Datensätze statt neue anzulegen.
- Für die Auslieferung braucht es die App Lager; nach der Bestätigung des Auftrags legt Odoo den Lieferauftrag für lieferpflichtige Positionen an, und Dienstleistungen und Abonnements erzeugen keinen Lieferauftrag.
- Offen ist eine Bestellung am Stichtag, wenn sie bestätigt ist und Auslieferung oder Rechnung noch aussteht; Odoo bündelt solche Aufträge in den Filtern Zu erfüllen (To Fulfill) und Abzurechnen (To Invoice). Eine im Altsystem bereits ausgelieferte Bestellung legen Sie nur als Rechnung an: ein bestätigter Auftrag würde einen Lieferauftrag anlegen und mit der Reservierungsmethode Bei Bestätigung Bestand reservieren.
- Der Website-Import ist nur mit Enterprise-Abonnement verfügbar.
Ein Shopsystem speichert Artikel, Kundschaft und Bestellungen in eigenen Tabellen; Odoo verteilt dieselben Angaben auf Produkte, Kontakte und Aufträge. Ein Verweis findet sein Ziel nur, wenn es beim Import schon existiert.
Was Sie vorab brauchen
- Eine Liste aller Objekte des alten Shops: Artikel, Varianten, Eigenschaften, Shop-Kategorien, Preise, Kunden und offene Bestellungen.
- Einen Stichtag, zu dem Preise, Bestände und offene Bestellungen gelten.
- Eine Testdatenbank mit Administratorrechten. Ein Import ist dauerhaft und lässt sich nicht zurücksetzen (Dokumentation 20.0).
- Je Objekt eine Datei in Excel (.xlsx) oder CSV (.csv); importieren lässt sich laut Dokumentation auf jedem Geschäftsobjekt, auch Kontakte, Produkte und Aufträge.
- Je Datensatz eine gleichbleibende Kennung in der Spalte Externe ID (External ID) oder Datenbank-ID (Database ID). Diese Spalten entscheiden, ob ein zweiter Lauf den vorhandenen Datensatz ändert oder einen neuen anlegt. In einer Datei mit mehreren Positionen je Auftrag trägt nur die erste Zeile die Auftragsfelder, die folgenden Zeilen lassen sie leer (Dokumentation 20.0).
- Die Reihenfolge der Dateien: Verweise in einer Datei zeigen auf Datensätze, die schon in Odoo liegen. Wie Sie die Dateien vorher bereinigen, steht in Stammdaten für Odoo vorbereiten.
Die Reihenfolge der Übernahme
Die Tabelle ordnet die Dateien so, dass jede Voraussetzung vor dem Import erfüllt ist; die Zuordnung ist redaktionell.
| Nr. | Objekt | Quelle im alten Shop | Muss vorher in Odoo liegen | Prüfung |
|---|---|---|---|---|
| 1 | Attribute und Werte | Eigenschaftsliste | keine | Verkauf ‣ Konfiguration ‣ Attribute |
| 2 | Shop-Kategorien | Kategoriebaum | keine | Website ‣ E-Commerce ‣ Kategorien |
| 3 | Produkte | Artikelstamm | Attribute, Kategorien | Interne Referenz = alte Artikelnummer |
| 4 | Kunden | Kundenliste | keine | Firmen vor Personen, keine Dubletten |
| 5 | Preise, Preislisten | Preisgruppen | Produkte, Kunden | Produktseite zeigt den alten Preis |
| 6 | Offene Bestellungen | offene Aufträge | Kunden, Produkte, Lager nur bei offener Lieferung | noch auszuliefern: Auftrag mit Lieferauftrag; bereits ausgeliefert: nur Rechnung, kein Lieferauftrag |
| 7 | Bestand | Bestandsliste | Produkte, Lager | Shop zeigt die verfügbare Menge |
Schritt für Schritt: Katalog, Kunden und offene Bestellungen
Schritt 1: Attribute und Werte importieren
Öffnen Sie Verkauf ‣ Konfiguration ‣ Attribute und wählen Sie im Aktionsmenü Importieren (Import). Die Dokumentation nennt die Spalten Attribute, Display Type, Variant Creation Mode und Values / Value; mehrere Werte eines Attributs stehen in getrennten Zeilen. Der Erstellungsmodus legt fest, ob Varianten sofort, bei Bedarf oder nie entstehen, und lässt sich nicht mehr ändern, sobald das Attribut an mindestens einem Produkt hängt. Ein Attributname, den Odoo nicht findet, wird mit Standardwerten angelegt; gleiche Namen in zwei Zeilen führen zu Fehlern.
Schritt 2: Shop-Kategorien anlegen
Legen Sie unter Website ‣ E-Commerce ‣ Kategorien mit Neu je Shop-Kategorie einen Datensatz an: Name (Pflichtfeld), Oberkategorie, Website und, für reine Aktionsseiten, Nicht im Shop. Produkte ordnen Sie im Reiter Produkte oder am Produkt im Bereich Shop zu; ein Produkt kann in mehreren Shop-Kategorien liegen. Die Shop-Kategorien sind nicht dasselbe wie die Produktkategorien aus Verkauf und Lager, und Kategorien ohne Produkte erscheinen nicht auf der Shop-Seite.
Schritt 3: Produkte importieren
Öffnen Sie Verkauf ‣ Produkte ‣ Produkte, dann Aktionen (Actions) ‣ Importieren (Import); denselben Import bietet Website ‣ E-Commerce ‣ Produkte. Die Seite enthält die Vorlage für Produkte (Template for Products); unnötige Spalten dürfen Sie löschen, die Beschriftungen nicht ändern. Tragen Sie die Artikelnummer des alten Shops in die Spalte Interne Referenz (Internal Reference); die Produktimport-Seite empfiehlt, diese Spalte zu behalten. Für einen Wiederholungsimport vergeben Sie zusätzlich je Produktzeile eine gleichbleibende Externe ID (External ID): Nach der allgemeinen Import-Seite ändert Odoo einen vorhandenen Datensatz nur dann statt ihn neu anzulegen, wenn die Datei die Spalte Externe ID oder Datenbank-ID enthält und die Kennung unverändert bleibt. Für Varianten brauchen Sie je Variante eine Zeile mit Name, Produktattribute / Attribut und Produktattribute / Werte. Große Dateien liest Odoo standardmäßig in Stapeln von 2.000 Zeilen, und alle Varianten einer Produktvorlage müssen im selben Stapel liegen; setzen Sie die Stapelgröße größer als die Zahl Ihrer Produkte.
Schritt 4: Kunden importieren
Öffnen Sie Website ‣ E-Commerce ‣ Kunden und wählen Sie im Aktionsmenü Importieren (Import); die Seite enthält die Vorlage für Kontakte (Template for Contacts). Importieren Sie Firmen vor Personen und verbinden Sie beide über die Kennung aus dem Altsystem (Muster company_1, person_1) in der Spalte Zugehöriges Unternehmen/Externe ID (Related Company/External ID); diese Spalte füllt am Kontakt das Feld Zugehöriges Unternehmen (Related Company). Prüfen Sie die Liste vorher auf Dubletten; nach dem Import markieren Sie verdächtige Kontakte und wählen Aktionen ‣ Zusammenführen (Merge). Weitere Dubletten findet Odoo über die Felder E-Mail, Name, Ist ein Unternehmen, USt-IdNr. und Muttergesellschaft. Der Import legt Kontakte an, keinen Portalzugang: Den erteilen Sie danach je Kunde im Aktionsmenü, und in den Shop-Einstellungen im Abschnitt Allgemein legen Sie unter Kundenkonto fest, ob eine Einladung nötig ist oder sich jeder selbst registrieren darf.
Schritt 5: Preise und Preislisten prüfen
Listenpreise je Artikel importieren Sie mit den Produktdaten; Preisgruppen, Staffeln und Kundenkonditionen gehören in Preislisten. Schalten Sie in den Shop-Einstellungen im Bereich E-Commerce die Funktion Preislisten ein, die dann auch im Verkauf gilt. Eine Preisliste ohne zugewiesene Website verwendet der Shop nicht, außer sie ist als auswählbar markiert; bei mehreren entscheidet die Reihenfolge, und eine Preisliste lässt sich einem Kunden zuweisen. Ob der Shop Preise inklusive oder exklusive Steuern anzeigt, steuern Sie je Website mit Produktpreise anzeigen (Display Product Prices); vergleichen Sie danach die Produktseite mit dem alten Shop. Wie Preislisten aufgebaut werden, zeigt Preislisten in Odoo.
Schritt 6: Offene Bestellungen anlegen
Welche Bestellungen in den Umzug kommen, ist eine redaktionelle Entscheidung; die Dokumentation beschreibt dazu nur die Filter. Als offen führen wir jede bestätigte Bestellung, bei der am Stichtag Auslieferung oder Rechnung noch aussteht. Odoo bündelt bestätigte Aufträge in den Dashboard-Filtern Zu erfüllen (To Fulfill) und Abzurechnen (To Invoice); Abzurechnen umfasst abrechnungsbereite Aufträge, die nicht zwingend schon erfüllt sind. Bereits bezahlte, noch auszuliefernde und bereits ausgelieferte, noch abzurechnende Bestellungen bleiben deshalb im Umzug; abgeschlossene lassen Sie im Altsystem; wie Sie Altdaten archivieren, beschreibt Datenübernahme aus dem Altsystem. Die beiden Fälle trennen sich hier. Eine Bestellung, deren Ware noch aussteht, wird zum Auftrag: Legen Sie den Auftrag mit den offenen Positionen an, tragen Sie die alte Bestellnummer in das Feld Kundenreferenz (Customer Reference) ein und bestätigen Sie ihn. Odoo legt dabei für lieferpflichtige Positionen den Lieferauftrag an (App Lager); für Dienstleistungen und Abonnements entsteht keiner. Damit Ware reserviert wird, stellen Sie bei der Vorgangsart Lieferaufträge die Reservierungsmethode auf Bei Bestätigung; die Reservierung entsteht dann schon mit der Bestätigung, und bei Zahlung per Überweisung bleibt der Auftrag bis zum Zahlungseingang unbestätigt. Buchen Sie den Lieferauftrag erst ab, wenn die Ware versandt ist.
Eine Bestellung, die im Altsystem bereits ausgeliefert ist, wird kein Auftrag: Ein bestätigter Auftrag erzeugt einen Lieferauftrag, und mit der Reservierungsmethode Bei Bestätigung reserviert dieser sofort Bestand, wenn genug davon verfügbar ist; ein bloßes Nichtabbuchen nimmt weder den Lieferauftrag noch die Reservierung zurück, und die Methode Manuell (Manually) verhindert nur die automatische Reservierung, nicht den Lieferauftrag. Legen Sie für solche Bestellungen allein die Rechnung an: Sie öffnen das Journal Kundenrechnungen (Customer Invoices) und wählen dort Neu, mit Kunde, Positionen und der alten Bestellnummer im Feld Kundenreferenz (Customer Reference). Wo dieses Journal liegt, hängt an der Edition: Die App Buchhaltung (Accounting) mit dem Dashboard führt der Editionsvergleich nur im Enterprise-Abonnement, die App Rechnungsstellung (Invoicing) in beiden Editionen; in beiden erreichen Sie das Journal über das Dashboard, im Community-Zweig ist es der erste Menüpunkt der App Rechnungsstellung (Invoicing). Die Seite Invoicing processes nennt das Anlegen einer Rechnung ohne Auftrag den empfohlenen Weg, wenn Verkaufsprozess und Lieferung nicht in Odoo abgebildet werden sollen. So entsteht keine Lieferpflicht, keine Reservierung und keine zweite Lieferung, und der Anfangsbestand bleibt unberührt.
Rechnungen erstellen Sie je Auftrag über Rechnung erstellen (Create Invoice) oder automatisch über die Option Automatisierte Rechnungsstellung (Automatic Invoice) in den Shop-Einstellungen, deren Hilfetext „Rechnung automatisch bei Zahlung.“ lautet. Für einen Auftrag, dessen Ware noch aussteht, entscheidet die Abrechnungspolitik (Invoicing Policy) in Verkauf ‣ Konfiguration ‣ Einstellungen, auf welcher Grundlage abgerechnet wird: Bestellte Mengen (Ordered quantities) erlaubt die Rechnung nach der Bestätigung des Auftrags, Gelieferte Mengen (Delivered quantities) verlangt zuerst eine bestätigte Lieferung und lässt sich nicht mit der Option Automatisierte Rechnungsstellung verbinden. Die allgemeine Einstellung gilt laut Dokumentation nur für neu angelegte Produkte; bei bereits importierten Produkten steht die Abrechnungspolitik im Reiter Allgemeine Informationen des Produkts. Für eine Rechnung, die Sie direkt in der Buchhaltung beziehungsweise in der Rechnungsstellung anlegen, gilt diese Politik nicht; sie steuert die Rechnungsstellung aus dem Auftrag. Der Weg bis zum Angebot steht in Angebot in Odoo erstellen.
Schritt 7: Bestand buchen und Veröffentlichung prüfen
Damit die Produktseite eine Menge zeigt, muss der Produkttyp Ware oder Kombination sein, und in den Shop-Einstellungen schalten Sie Verfügbare Menge anzeigen (Show Available Quantity) ein; die Anzeige rechnet den verfügbaren Bestand abzüglich reservierter Ware. Die Option Verkauf fortsetzen (Continue Selling) bei Nicht vorrätig entscheidet, ob Kunden trotz fehlenden Bestands bestellen dürfen. Beide Vorgaben gelten laut Dokumentation für neu angelegte Produkte; für bereits importierte Produkte ändern sie nichts, dort setzen Sie Verkaufen, wenn nicht vorrätig (Sell when Out-of-Stock) und Verfügbare Menge anzeigen (Show Available Qty) im Reiter E-Commerce des Produkts. Prüfen Sie danach in der Produktliste die Spalte Ist veröffentlicht; in der Listenansicht schalten Sie sie über das Dropdown-Menü ein, markieren die Produkte, setzen das Häkchen und klicken auf Aktualisieren. Bei mehreren Websites gilt ein Produkt für eine oder für alle, einzelne Websites lassen sich nicht auswählen. Zum Buchen des Anfangsbestands siehe Inventur in Odoo durchführen.
So prüfen Sie das Ergebnis
- Zählen Sie je Objekt die Zeilen der Datei ohne Kopfzeile gegen die Datensätze in Odoo und vergleichen Sie Summen.
- Lesen Sie die Produktdatei ein zweites Mal mit unveränderten Externen IDs ein: Odoo ändert dann die vorhandenen Datensätze, statt sie neu anzulegen.
- Öffnen Sie Stichproben: ein Produkt mit Attributen und Shop-Kategorien, einen Kunden mit Firmenzuordnung.
- Spielen Sie einen Kauf im neuen Shop durch: Warenkorb, Kasse, Bestätigung, Lieferung, Rechnung.
- Prüfen Sie getrennt nach dem offenen Schritt: Bei noch ausstehender Lieferung kontrollieren Sie, dass der Lieferauftrag die noch lieferpflichtigen Positionen umfasst und erst nach dem Versand abgebucht ist; für eine im Altsystem bereits ausgelieferte Bestellung darf in Odoo kein Lieferauftrag entstehen und keine Reservierung davon abgehen, sondern nur eine Rechnung ohne Auftrag. In beiden Fällen darf keine Rechnung doppelt entstehen.
- Vergleichen Sie die verfügbare Menge der übernommenen Produkte mit dem gebuchten Anfangsbestand: eine Reservierung aus einem Auftrag senkt die verfügbare Menge, ohne dass Ware das Lager verlassen hat.
- Kontrollieren Sie je Produkt, ob es sich ohne Bestand verkaufen lässt: Verkaufen, wenn nicht vorrätig (Sell when Out-of-Stock) im Reiter E-Commerce entscheidet das für dieses Produkt; die Vorgaben in den Shop-Einstellungen ändern bereits angelegte Produkte nicht.
Wenn etwas nicht klappt
| Symptom | Ursache | Abhilfe |
|---|---|---|
| Artikel liegen in der falschen Shop-Kategorie | Der Verweis in der Datei ist nicht eindeutig | Ziel über die Spalte Feld/Externe ID statt über den Namen angeben |
| Der zweite Lauf legt alles doppelt an | Externe ID oder Datenbank-ID fehlt oder wurde geändert | Externe ID unverändert lassen; für den Abgleich mit Updatable fields only exportieren |
| Varianten fehlen nach dem Import | Varianten einer Produktvorlage liegen in verschiedenen Stapeln | Stapelgröße größer als die Zahl der Produkte setzen |
| Der Shop zeigt 0 Stück | Kein Bestand gebucht, Produkttyp keine Ware oder Anzeige aus | Bestand buchen, Produkttyp prüfen, Verfügbare Menge anzeigen einschalten; bei bereits angelegten Produkten die Option je Produkt im Reiter E-Commerce |
| Eine im Altsystem ausgelieferte Bestellung ist noch nicht abgerechnet und fehlt in der Übernahme | Sie wurde beim Schritt Offene Bestellungen übersehen | Bestellung in die Liste der offenen Bestellungen nachtragen; die Rechnung legen Sie ohne Auftrag direkt in der Buchhaltung beziehungsweise Rechnungsstellung an |
| Der Kunde kann sich nicht anmelden | Portalzugriff wurde nicht gewährt | Aktionen ‣ Portalzugriff gewähren am Kontakt |
| Zu einer im Altsystem ausgelieferten Bestellung entsteht ein Lieferauftrag und reserviert Bestand | Für die Bestellung wurde trotzdem ein Auftrag angelegt und bestätigt | Für solche Bestellungen nur die Rechnung anlegen, keinen Auftrag |
| Die Rechnung zu einem bestätigten Auftrag lässt sich nicht anlegen | Abrechnungspolitik Gelieferte Mengen, aber keine in Odoo bestätigte Lieferung | Am Produkt die Abrechnungspolitik Bestellte Mengen setzen, wenn vor der Lieferung abgerechnet werden soll |
| Zu einer bestätigten Bestellung mit noch ausstehender Lieferung fehlt der Lieferauftrag | App Lager fehlt oder die Position ist eine Dienstleistung oder ein Abonnement | Lager installieren; Dienstleistungen und Abonnements ohne Lieferauftrag abwickeln |
| Der Import bricht mit Zeitüberschreitung ab | Datei zu groß für einen Durchgang | Datei in kleinere Stapel teilen |
Wann Sie Hilfe holen sollten
Holen Sie Unterstützung, wenn mehrere Websites, Sprachen oder Währungen betroffen sind oder offene Bestellungen Teilzahlungen tragen. Fragen zur Weiterverwendung importierter Kundendaten und zur Aufbewahrung von Altdaten klären Sie mit Ihrer Datenschutz- und Steuerberatung. Für die Zeit nach dem Stichtag siehe Stichtag und Parallelbetrieb beim Wechsel auf Odoo.