ERP migration

Migrate from Base ERP to Odoo ERP

Field-level mapping, validation, and rollback between Base ERP and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.

Base ERP logo

Base ERP

Source

Odoo ERP

Destination

Odoo ERP logo

Compatibility

80%

8 of 10

objects map 1:1 between Base ERP and Odoo ERP.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Base ERP to Odoo ERP is a migration from a marketplace-centric inventory tool to a full modular ERP platform. Base ERP organizes around Warehouses, Offers (Products), and Marketplace Connectors via BaseLinker, with limited native accounting or HR. Odoo provides a 40-plus application suite covering Sales, Inventory, Accounting, Manufacturing, and HR, but requires the full schema to be built before data lands. We begin with a pre-migration audit of the Inventory Control beta module and a similarity analysis across product SKUs to surface duplicates accumulated over years of multi-channel selling. We sequence the migration Products first, then Warehouses, then Stock Levels, then Orders so that foreign-key constraints resolve cleanly in Odoo. Pricing rules per channel or quantity tier from Base ERP map to Odoo Pricelists. Marketplace connector configurations export as a written reconnection map; the actual API credentials require manual re-entry in Odoo. Workflows, automations, and the BaseLinker bridge logic do not migrate as code; we deliver an inventory of every active sync rule for the customer's Odoo partner to rebuild.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Base ERP logo

Base ERP

What's pushing teams away

  • Per-order fee can become expensive at scale — at $0.19/order, a seller doing 50,000 orders/month pays ~$9,500/month, pushing them toward Enterprise negotiation or a different platform.
  • Reviewer feedback on Capterra/Gartner notes limited advanced inventory features (e.g., purchase orders, detailed sales statistics) compared to dedicated WMS or full ERP platforms.
  • Onboarding complexity — users report the feature breadth can feel overwhelming for first-time users, requiring meaningful setup time across modules.
  • Limited fit for businesses needing deep ERP financials (multi-entity GL, manufacturing BOM, fixed assets) — base.com is order/inventory-centric, not a financial ERP.
  • Freemium tier caps data retention at 6 months — sellers needing longer historical data must upgrade to Business or Enterprise.

Choosing

Odoo ERP logo

Odoo ERP

What's pulling them in

  • Modular pay-as-you-grow model with 80+ apps under one database — teams start with CRM and add Accounting, Inventory, or Manufacturing without switching platforms.
  • Free Community edition lets businesses validate Odoo fit before committing to Enterprise licensing costs that scale with user count.
  • Lowest per-user pricing among mid-market ERPs, with a published free tier for one app and Standard plans starting around $24.90 per user per month.
  • Native integration between modules — a confirmed Sales Order automatically updates inventory, invoicing, and accounting without manual re-entry.
  • Strong Odoo Gold Partner ecosystem provides local implementation support, reducing risk for companies without in-house developers.

Object mapping

How Base ERP objects map to Odoo ERP

Each row shows how a Base ERP 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.

Base ERP

Warehouse

maps to

Odoo ERP

stock.warehouse

1:1
Fully supported

Base ERP Warehouses map directly to Odoo Warehouse records. Each Base ERP warehouse name becomes the Odoo warehouse name and code (short code derived from first three letters). We also map the warehouse's address fields to Odoo's partner address on the warehouse record. Multiple warehouses in Base ERP each create separate stock.warehouse records with their own location hierarchies under stock.location (view type) down to stock.location (partner locations type).

Base ERP

Product / Offer

maps to

Odoo ERP

product.template + product.product

1:1
Fully supported

Base ERP Offers (products) map to Odoo product.template for the shared product record and product.product for individual variants. The Base ERP SKU (hs_sku equivalent or listing ID) becomes the Odoo product.default_code. We handle variant logic: if Base ERP stores variant attributes (size, color) as separate columns, we create product.attribute and product.attribute.value records in Odoo and generate variant combinations. The product description, images, and dimensions migrate as extra fields on product.template. Large catalogs over 5,000 SKUs are chunked into batches of 500 to stay within Odoo import batch limits.

Base ERP

Stock Level

maps to

Odoo ERP

stock.quant

1:1
Fully supported

Base ERP stock quantities per warehouse per product map to Odoo stock.quant records. The quant captures product_id, location_id (the specific warehouse sub-location), quantity, and lot_id if applicable. We capture a point-in-time snapshot at migration start to avoid inconsistencies from live inventory syncs during the transfer window. lot_id and lot_number fields are populated if Base ERP tracks serial or lot numbers; otherwise, quant records use the warehouse root location with lot tracking disabled.

Base ERP

Pricing Rule

maps to

Odoo ERP

product.pricelist + product.pricelist.item

1:many
Fully supported

Base ERP pricing rules defined per marketplace channel, per quantity tier, or via rule sets map to Odoo product.pricelist records (one per channel or pricing strategy) with product.pricelist.item child records. Base ERP's flat key-value pricing export expands into Odoo's rule-based price computation: fixed_price, percent_price, or formula-based computation stored in the item's compute_price field. We preserve the original currency assumption (typically PLN for Allegro-heavy accounts or EUR for cross-border) and set the Odoo pricelist currency accordingly.

Base ERP

Order

maps to

Odoo ERP

sale.order + sale.order.line

1:1
Fully supported

Base ERP Orders map to Odoo sale.order records with line items on sale.order.line. We map customer name and address to the Odoo partner record (created from the order's customer details if no matching partner exists), order status to Odoo order state (sale_order_state), and payment method to a custom field on the order. Historical orders include fulfillment tracking information mapped to Odoo's stock.picking records and delivery address fields. We export open and completed orders; completed orders preserve their original creation date via date_order.

Base ERP

Customer

maps to

Odoo ERP

res.partner

1:1
Fully supported

Base ERP customer records (embedded in orders if not stored as standalone Company records) map to Odoo res.partner. We distinguish between customer-type partners (customer = True) and supplier-type partners (supplier = True). Base ERP's company name maps to partner name, email to partner email, phone to partner phone, and address fields to partner street, city, and country. Duplicate customers are merged by email match before import to avoid creating multiple res.partner records for the same buyer.

Base ERP

Marketplace Connector

maps to

Odoo ERP

Configuration map (external document)

1:1
Fully supported

Base ERP marketplace connector configurations (channel type, listing IDs, sync rules for eBay, Amazon, Allegro) are not directly migratable because API credentials and tokens cannot be extracted from BaseLinker. We export the connector mapping table (channel, listing_id, offer_id, sync_direction, and any active rules) as a structured document that the customer's Odoo administrator or Odoo partner uses to reconfigure each channel connector in Odoo. No credentials are transferred; manual re-entry is required per platform's OAuth or API key flow.

Base ERP

User / Owner

maps to

Odoo ERP

res.users

1:1
Fully supported

Base ERP user accounts (Admin, Operator, Warehouse Manager roles) map to Odoo res.users. We extract the user's name and email as the Odoo login. Role assignments from Base ERP are preserved as a custom field note (base_erp_role__c) on the res.users record if Odoo's standard groups do not map cleanly. Any Base ERP user without a corresponding Odoo user is placed in a reconciliation queue for the customer's admin to provision before record import resumes.

Base ERP

Custom Product Field

maps to

Odoo ERP

ir.model.fields (via product.template)

lossy
Fully supported

Base ERP custom product fields (e.g., custom dimensions, certifications, seasonal flags) stored as extra CSV columns map to Odoo product.template custom fields. We create ir.model.fields entries for each custom field with the appropriate Odoo field type (char, float, integer, boolean, selection, or text). These fields appear on the product template form view after the migration. Type casting is applied during the transform step: numeric strings become float or integer fields, boolean-like values ('yes'/'no', 'true'/'false') become boolean fields.

Base ERP

Invoice

maps to

Odoo ERP

Not migrated

1:1
Fully supported

Invoice generation is not a core Base ERP module; it is typically handled by an external accounting tool integrated via BaseLinker. We do not migrate invoice records as part of standard scope. Customers should export invoices directly from the connected accounting tool and import them into Odoo Accounting separately. The Odoo Accounting app maintains its own journal entries and move records that are not derived from Base ERP data.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Base ERP logo

Base ERP gotchas

High

Inventory Control module is in public beta

Medium

Duplicate SKUs accumulate in long-running accounts

High

Marketplace connector credentials are non-exportable

Medium

Order export excludes records from paused connectors

Odoo ERP logo

Odoo ERP gotchas

High

No rollback for CSV imports

High

External ID conflicts on re-import

Medium

Many2many field encoding in CSV imports

Medium

Large export timeouts require batching

Medium

Version schema drift between Odoo releases

Pair-specific challenges

  • Inventory Control beta module has an unstable schema

    Base ERP explicitly marks the Inventory Control section as in public beta. Its field names, data types, and behavior can change without notice, which means any records stored in this module carry migration risk. We flag all records in Inventory Control and recommend deferring their transfer until the module reaches general availability. Alternatively, we extract them under a versioned schema snapshot with a full field inventory so that if the module schema changes post-migration, the customer has a reference export to reconcile against Odoo's inventory.attempting to migrate beta module data without a snapshot risks silent data truncation.

  • Duplicate SKUs require pre-migration deduplication

    Base ERP accounts with years of multi-channel selling frequently contain duplicate product entries: variants with different spellings, abandoned test listings, and channel-specific offers that are technically the same SKU listed twice. The CSV export does not deduplicate these records. We run a pre-migration similarity analysis on product names, SKUs, and dimensions using fuzzy matching and surface the duplicate clusters for customer review. Uncleaned duplicates migrate into Odoo as separate product.template records, multiplying inventory confusion and causing Odoo's variant generation to create unexpected combinations. Deduplication must be completed before the product import phase.

  • Marketplace connector credentials cannot be extracted

    Channel credentials (API keys, OAuth tokens, seller account tokens) stored in BaseLinker connector profiles are not exportable via any standard or partner API endpoint. We export the connector configuration metadata (channel type, listing IDs, sync rules, and mapping tables) as a written reconnection guide for each marketplace. The customer's admin must manually re-enter credentials in the Odoo channel connector (Odoo's native eCommerce integrations, Odoo_eBay, Odoo_Amazon connectors, or a third-party connector app). Skipping this step means new orders from marketplace channels stop syncing after cutover.

  • Paused connectors silently exclude associated orders

    BaseLinker pauses marketplace connectors that exceed error thresholds or that are manually suspended. When a connector is paused, BaseLinker may exclude the associated orders from the standard export query without raising an error. We audit all connector statuses in the pre-migration inventory phase, temporarily re-activate paused connectors for the migration window, and verify the resulting order count against the customer's expected order total before closing out the migration. Any orders associated with permanently decommissioned connectors are flagged for manual recovery from the marketplace's own order export.

  • Odoo API rate limit constrains large catalog imports

    Odoo's standard external API enforces a rate limit of approximately 1 request per second. For catalogs over 5,000 SKUs, this makes direct record-by-record API insertion prohibitively slow. We use Odoo's batch import endpoint where available (csv import via /web/dataset/call_kw or the base_import module) and fall back to chunked XML-RPC batch calls with exponential backoff when hitting rate limit responses. For large stock.quant migrations, we stage records in Odoo staging tables and use direct SQL inserts with the ORM bypassed to maintain throughput above 500 records per minute for stock-level data.

Migration approach

Six steps for a successful Base ERP to Odoo ERP data migration

  1. Discovery and connector audit

    We audit the Base ERP account across all active modules: warehouse count, product offer volume, order history date range, connector status (active, paused, suspended), and custom product field definitions. We specifically inventory the Inventory Control beta module and capture its current schema snapshot. We identify any paused connectors that require temporary re-activation for order export. The discovery output is a written migration scope document covering record counts per object, identified risks (beta module, paused connectors, duplicate SKU clusters), and a connector reconnection plan for each marketplace channel.

  2. Duplicate SKU analysis and product cleanup

    We run a similarity analysis across the Base ERP product catalog to surface duplicate and near-duplicate SKUs. The analysis flags products with matching or nearly matching names, identical SKUs under different spellings, and test listings that should be archived rather than migrated. We deliver a deduplication worksheet to the customer for review and approval before product export begins. Products approved for merge are consolidated into a single target product.template in Odoo; products approved for archive are excluded from the export. This step is critical because Odoo's product variant model amplifies duplicate SKUs into unwanted template combinations.

  3. Odoo schema provisioning and sandbox setup

    We provision the Odoo destination schema before any data transfer. This includes creating product.pricelist records per pricing strategy, stock.warehouse records per source warehouse, custom product.template fields from the Base ERP custom field inventory, and partner titles and countries as Odoo res.country records. Schema is deployed into an Odoo Sandbox or staging database for validation. The customer or an Odoo partner configures the Odoo Accounting app (chart of accounts, tax rates, journal configuration) as a parallel activity because this is account-specific and cannot be auto-migrated from Base ERP's minimal financial data.

  4. Product and warehouse migration

    We migrate in dependency order starting with Warehouses (required as location parents for stock), then Product Templates, then Product Variants, then Custom Fields. Large catalogs over 5,000 SKUs use batch CSV import via Odoo's base_import module with the import mapping configured to match Base ERP column headers to Odoo field names. We preserve the original product creation date in a custom field base_erp_create_date__c for audit. Each batch emits a row-count reconciliation report. Any product that fails validation (missing required fields, invalid reference to a non-existent attribute) is logged to a correction worksheet for customer review.

  5. Stock level and pricing migration

    We capture a point-in-time stock snapshot from Base ERP at migration start to lock consistent quantities before live sync continues on the source. Stock levels migrate as stock.quant records with product_id, location_id, and quantity fields resolved. Pricing rules from Base ERP expand into product.pricelist and product.pricelist.item records, with one pricelist per channel or pricing strategy identified during discovery. Currency is set on each pricelist from the original Base ERP pricing assumption (PLN for Allegro-heavy accounts, EUR for cross-border).

  6. Order and customer migration

    We extract customers from order records, deduplicate by email match, and import as res.partner records before orders. Each sale.order is created with its partner_id resolved to the matching res.partner, its order lines resolved to sale.order.line with product_id pointing to the migrated product.template or product.product. Completed orders preserve their original date_order and create_date for historical accuracy. Open orders are created in the draft state so the customer's sales team can confirm or modify them in Odoo before confirming.

  7. Cutover, connector reconnection, and handoff

    We freeze writes to Base ERP during the cutover window, run a final delta migration of any orders or stock changes entered since the initial snapshot, then mark Odoo as the system of record. We deliver the marketplace connector reconnection guide listing each channel, its migrated listing IDs, and the manual steps for re-entering credentials in Odoo or the Odoo channel app. We deliver the custom field map and any beta module records exported under schema snapshot. We do not rebuild BaseLinker sync rules as Odoo automation rules; that is a separate engagement scoped with an Odoo partner. We offer a one-week post-cutover hypercare window for reconciliation issues.

Platform deep dives

Context on both ends of the pair

Base ERP logo

Base ERP

Source

Strengths

  • Deep marketplace integrations across European and global sales channels
  • Inventory and order management designed specifically for multi-channel e-commerce
  • Centralized stock synchronization across warehouses and platforms
  • Two-tier ERP support via BaseLinker bridge to external ERP systems
  • Affordable pricing for small to mid-sized online sellers

Weaknesses

  • Limited ERP depth—core financials, manufacturing, and HR modules are absent or minimal
  • Beta features like Inventory Control introduce schema instability during migration windows
  • Offer synchronization requires manual setup for external Shopify or WooCommerce catalogs
  • Limited API documentation makes programmatic export scoping challenging without a partner account
  • Customer support responsiveness varies based on plan tier and ticket volume
Odoo ERP logo

Odoo ERP

Destination

Strengths

  • Modular architecture with 80+ apps sharing one database — add Sales, Accounting, Inventory, and Manufacturing incrementally.
  • Free Community edition for self-hosting with no per-user license cost, backed by an active open-source community.
  • Per-user pricing starting around $24.90/month on Standard, significantly lower than comparable ERPs like NetSuite or SAP.
  • Automatic workflow propagation across modules — a confirmed sales order updates inventory, triggers invoicing, and posts accounting entries without manual steps.
  • Odoo.sh provides a managed cloud hosting environment with CI/CD for custom module deployment and staging databases.

Weaknesses

  • Performance suffers under heavy customization — large implementations with many active modules require dedicated optimization.
  • No single-click migration between Odoo major versions; each release introduces ORM changes, deprecated API calls, and schema revisions requiring manual adaptation.
  • Per-user and per-module licensing costs can escalate unpredictably for growing teams adding multiple apps.
  • Steep learning curve with hundreds of configuration options across dozens of modules creates adoption friction and training requirements.
  • Support tiers on Enterprise have inconsistent response times, pushing some customers toward alternatives with more reliable SLAs.

Complexity grading

How hard is this migration?

Standard ERP migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Base ERP and Odoo ERP.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Base ERP: Not publicly documented.

  • Data volume sensitivity

    B

    Base ERP doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Base ERP to Odoo ERP migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Base ERP to Odoo ERP data migrations

Answers to the questions buyers ask most during Base ERP to Odoo ERP migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Base ERP to Odoo ERP migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between four and eight weeks for accounts with under 10,000 SKUs, a single warehouse, and clean order history. Migrations with multi-warehouse setups, per-channel pricing rule expansion into Odoo Pricelists, large historical order volumes (over 10,000 records), or the Inventory Control beta module extend to eight to fourteen weeks because of schema design time, deduplication review cycles, and the requirement to reconfigure marketplace connectors manually after data migration.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Base ERP.
Land in Odoo ERP, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day