ERP migration
Field-level mapping, validation, and rollback between JTL-Wawi and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
JTL-Wawi
Source
Odoo ERP
Destination
Compatibility
10 of 11
objects map 1:1 between JTL-Wawi and Odoo ERP.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from JTL-Wawi to Odoo ERP is a cross-platform migration that requires transforming JTL's German-e-commerce data model into Odoo's modular European ERP structure. JTL-Wawi organizes data around Artikels (products with Variationskombinationen), Kunden (customers with address records), Aufträge (orders with workflow state), Rechnungen (invoices with VAT), and Lieferanten (suppliers with Zusatzkosten). Odoo separates Products, Contacts, Sale Orders, Invoices, and Purchase Orders into distinct apps within its suite. We export via JTL-Ameise CSV templates, extract directly from the JTL database for relational integrity, and import into Odoo through its XML-RPC API or CSV loader depending on record volume. We preserve the German VAT tax structure, map Lagerbestände per warehouse to Odoo's virtual and physical inventory locations, and deliver a connector audit document for any JTL-Shop or PrestaShop storefronts requiring re-connection in Odoo. JTL-Workflows, JTL-WMS pick-and-pack configurations, and custom SQL views do not migrate; we provide written inventories for admin rebuild.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a JTL-Wawi object lands in Odoo ERP, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
JTL-Wawi
Artikel (Products)
Odoo ERP
Product Template + Product Variant
1:1JTL Artikels (with Stammartikel as base and Variationskombinationen as variants) map to Odoo Product Templates with optional Product Attributes and Attribute Values. We extract Artikelmerkmale (item characteristics) and map them to Odoo product attributes. The JTLArtikel.nArtNr becomes the product's default_code; JTLArtikel.cArtNr maps to barcodes if present. Cross-references between base items and variants are preserved through Odoo's product variant resolution. Tier and edition constraints do not apply in Odoo Community or Enterprise for product variants.
JTL-Wawi
Kunde (Customer)
Odoo ERP
Contact (res.partner with customer rank)
1:1JTL Kunden map to Odoo Contacts (res.partner with customer_rank = 1). Address records (Rechnungsadresse, Lieferadresse) merge into Odoo's address fields (street, street2, zip, city, country) using address_type flags where multiple addresses exist per partner. Payment status and customer tier flags from JTL map to custom fields on the res.partner. We preserve JTL's customer-specific Rabattgruppen (discount groups) as a custom field for pricing rule reconstruction.
JTL-Wawi
Auftrag (Sales Order)
Odoo ERP
Sale Order (sale.order)
1:1JTL Aufträge map to Odoo Sale Orders. The Auftrag workflow state (erstellt, bezahlt, ausgeliefert, storniert) maps to Odoo states (draft, sent, sale, done, cancel) with a custom field jtl_workflow_state__c preserving the original German status for audit. JTL order modifications (Auftragsaenderungen) and partial shipments are preserved as order lines with backorder flags. Kunden reference resolves to res.partner lookup; Artikel references resolve to product.product lookup at migration time.
JTL-Wawi
Rechnung (Invoice)
Odoo ERP
Account Move (in invoice type)
1:1JTL Rechnungen map to Odoo Account Moves with type = out_invoice or out_refund. Tax calculations from JTL (MwSt codes for German 19%, 7%, and reduced rates) map to Odoo tax records via fiscal position configuration. We preserve the Rechnung number sequence as the Odoo move name for audit continuity. Line items map to account.move.line with tax mapping applied per line. Due date and payment terms from JTL become Odoo invoice payment terms.
JTL-Wawi
Lagerbestand (Warehouse Stock)
Odoo ERP
Inventory Quant (stock.quant)
1:1JTL Lagerbestände per Lager map to Odoo stock.quant records per warehouse location. Aktuelle Bestände (current stock levels) and pending reservations migrate as separate quant records (quantity and reserved_quantity). JTL's Lager (warehouse) entity maps to Odoo's stock.warehouse with its associated stock.location tree (view, internal, partner, inventory loss). Stock valuation amounts from JTL require a value mapping to Odoo's stock.valuation.layer records if FIFO or average cost is tracked.
JTL-Wawi
Lieferant (Supplier)
Odoo ERP
Vendor (res.partner with supplier rank)
1:1JTL Lieferanten map to Odoo Contacts with supplier_rank set to 1 (and optionally customer_rank if the vendor is also a customer). Lieferanten address and contact details migrate as res.partner address fields. Einkaufspreise (purchase prices) per Lieferant map to Odoo vendor Pricelist entries linked to the supplier partner. Rahmenbestellungen (blanket purchase orders) map to Odoo purchaseBlanketOrders if the purchase module is active.
JTL-Wawi
Zusatzkosten (Additional Costs on A/P Invoices)
Odoo ERP
Extra Costs on Purchase Order Line
lossyJTL Zusatzkosten (transport, customs, duties, and other named cost types per Lieferantenbestellung) require configuration in Odoo. We map each unique Zusatzkosten type to an Odoo product (with type = service) that can be added as an extra cost line on purchase orders or linked via Odoo's landed costs module if the Enterprise edition is deployed. Cost allocation methods (by quantity, by weight, by volume) are preserved in custom fields for admin configuration. This is a configuration step; direct import of historical Zusatzkosten onto existing purchase orders requires a manual mapping review.
JTL-Wawi
Versand (Shipping Export)
Odoo ERP
Delivery (stock.picking) + Carrier
1:1JTL shipping data (DPD, Hermes, iloxx tracking IDs and shipping method assignments) maps to Odoo stock.picking records with carrier_id resolved to the matching Odoo delivery carrier. Tracking URLs are preserved in the picking notes. We export the JTL shipping method assignment template (Versandvorlage) as a separate CSV for admin to configure Odoo delivery methods post-migration. Historical shipment records with completed pickings migrate as stock.move.line records with origin referencing the original Auftrag.
JTL-Wawi
JTL-Connector Links (Shopware, PrestaShop)
Odoo ERP
Odoo E-commerce Connector Apps
1:1JTL-Connector links between JTL-Wawi and Shopware, PrestaShop, or other storefronts do not have a direct Odoo equivalent because Odoo uses its own set of connector apps (Odoo Amazon, Odoo eBay, Odoo Shopify, Odoo WooCommerce Connector, or third-party modules). We deliver a connector audit document listing each active JTL-Connector with its current configuration, credentials scope, and synchronization scope (Articles only, Orders only, Full). The customer's admin or an Odoo partner re-establishes each storefront connection in Odoo after migration.
JTL-Wawi
JTL-Workflows (Automated Workflows)
Odoo ERP
Odoo Server Actions / Automated Actions
1:1JTL-Workflows define event-condition-action chains that are specific to JTL's internal engine and do not export to Odoo. We deliver a written workflow audit report listing every active JTL-Workflow with its trigger event (e.g., order created, payment received, shipment confirmed), conditions, and actions. The customer's admin or an Odoo partner maps each to Odoo Server Actions, Automated Actions (ir.actions.server and ir.cron), or Odoo Workflow Builder (available in Odoo Studio or Enterprise) post-migration.
JTL-Wawi
JTL-WMS (Warehouse Management)
Odoo ERP
Odoo Inventory App (warehouse configuration)
1:1JTL-WMS extends JTL-Wawi with pick-and-pack workflows, Arbeitsstationen (workstations), and Packtisch-Konfiguration (packing table settings). These are not exposed via JTL's REST API or JTL-Ameise. We document the WMS configuration during scoping (warehouse layout, picking strategy, packing station assignments) as a written handoff for the customer's admin to reconfigure in Odoo's inventory app using routes, warehouse types, and operation types.
| JTL-Wawi | Odoo ERP | Compatibility | |
|---|---|---|---|
| Artikel (Products) | Product Template + Product Variant1:1 | Fully supported | |
| Kunde (Customer) | Contact (res.partner with customer rank)1:1 | Fully supported | |
| Auftrag (Sales Order) | Sale Order (sale.order)1:1 | Fully supported | |
| Rechnung (Invoice) | Account Move (in invoice type)1:1 | Fully supported | |
| Lagerbestand (Warehouse Stock) | Inventory Quant (stock.quant)1:1 | Fully supported | |
| Lieferant (Supplier) | Vendor (res.partner with supplier rank)1:1 | Fully supported | |
| Zusatzkosten (Additional Costs on A/P Invoices) | Extra Costs on Purchase Order Linelossy | Mapping required | |
| Versand (Shipping Export) | Delivery (stock.picking) + Carrier1:1 | Fully supported | |
| JTL-Connector Links (Shopware, PrestaShop) | Odoo E-commerce Connector Apps1:1 | Fully supported | |
| JTL-Workflows (Automated Workflows) | Odoo Server Actions / Automated Actions1:1 | Mapping required | |
| JTL-WMS (Warehouse Management) | Odoo Inventory App (warehouse configuration)1:1 | Mapping required |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
JTL-Wawi gotchas
SCX API per-endpoint rate limits return HTTP 429
UNC paths required for all file-based imports and exports
JTL Cloud hosting discontinued forces third-party RDP reliance
Incomplete English documentation with untranslated content
Odoo ERP gotchas
No rollback for CSV imports
External ID conflicts on re-import
Many2many field encoding in CSV imports
Large export timeouts require batching
Version schema drift between Odoo releases
Pair-specific challenges
Migration approach
Discovery and hosting assessment
We audit the JTL-Wawi installation: database version, hosting arrangement (on-premises, RDP provider, or self-hosted), active JTL-Connector links, JTL-Workflow count and complexity, supplier Zusatzkosten definitions, and warehouse structure. We also identify which Odoo apps the customer will deploy (Sales, Purchase, Inventory, Accounting, e-commerce) and whether they choose Community or Enterprise. The discovery output is a written migration scope with object inventory, JTL-Connector audit list, and Odoo module selection recommendation.
JTL database extraction via JTL-Ameise and direct SQL
We extract data from JTL-Wawi using a hybrid approach. Standard business objects (Artikels, Kunden, Aufträge, Rechnungen, Lagerbestände) export via JTL-Ameise CSV templates. Complex relational structures (Variationskombinationen, Stammartikel cross-references, Auftragsaenderungen) extract directly from the JTL SQL database using read-only queries to preserve relationships that CSV denormalizes. We configure UNC paths for all file exports and verify path accessibility from the extraction workstation. SCX API endpoints, if used, are throttled per JTL's rate limits with exponential backoff.
Odoo schema provisioning and German tax configuration
We provision the destination Odoo database: install required apps (sale, purchase, inventory, account), create product attributes and attribute values from JTL Variationskombinationen, configure warehouse locations per JTL Lager, and set up German fiscal positions and tax codes. We create a tax mapping spreadsheet from the JTL export that the customer reviews with their tax advisor before we proceed with invoice import. This step deploys into an Odoo test database first.
Sandbox migration and reconciliation
We run a full migration into an Odoo test database (Odoo supports database cloning for sandbox). The customer's team reconciles record counts, spot-checks 25-50 records per object against the JTL source, and validates that Variationskombinationen resolved correctly, tax codes applied to invoices, and stock levels match the JTL Lagerbestände snapshot. We correct any mapping errors in the extraction and transform scripts before production migration begins.
Production migration in dependency order
We run production migration in sequence: product templates and variants (since all other objects reference them), warehouses and locations, supplier partners (for purchase order lookups), customer partners, sale orders, purchase orders, invoices, and stock quants last. Each phase emits a row-count reconciliation report. For invoices, we apply the tax mapping and fiscal position configuration before final validation. JTL-Workflows, WMS configurations, and connector credentials are not migrated; they appear in the audit handoff document delivered alongside the migration.
Cutover, validation, and connector handoff
We freeze JTL-Wawi writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the JTL-Connector audit document, the JTL-Workflow inventory, and the WMS configuration notes as written handoffs. We support a one-week hypercare window where we resolve reconciliation issues. We do not reinstall JTL-Connector storefronts or rebuild JTL-Workflows in Odoo as part of the migration scope; those are separate configuration tasks for the customer's admin or an Odoo partner.
Platform deep dives
JTL-Wawi
Source
Strengths
Weaknesses
Odoo ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across JTL-Wawi and Odoo ERP.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
JTL-Wawi: Per-endpoint rate limits enforced; HTTP 429 returned on exceed (specific limits not publicly documented).
Data volume sensitivity
JTL-Wawi doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during JTL-Wawi to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your JTL-Wawi to Odoo ERP migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave JTL-Wawi
Other ways to arrive at Odoo ERP
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.