ERP migration
Field-level mapping, validation, and rollback between EBMS and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
EBMS
Source
Dolibarr ERP
Destination
Compatibility
10 of 12
objects map 1:1 between EBMS and Dolibarr ERP.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from EBMS to Dolibarr means leaving a Windows desktop ERP with no public REST API for an open-source, web-hosted ERP with a modular plugin architecture and a documented REST API. EBMS holds data in a report-export model — there is no bulk API endpoint to call — so every migration begins with enumerating the custom fields in the EBMS database, extending report layouts to include them, and exporting structured CSVs. Dolibarr's import module accepts flat-file ingestion for ThirdParties, Products, Orders, Invoices, and contacts, but lookups between records require parent records to land first. We sequence the migration so that ThirdParties (from EBMS Customers and Vendors) arrive before Orders, and Products arrive before any Order Line Items. Dolibarr's extrafields system accommodates EBMS custom fields as named columns on each object. We do not migrate EBMS Report definitions, Workflow configurations, eCommerce portal code, or support subscription terms; these are configuration artifacts that require manual rebuild in Dolibarr or a Dolibarr-certified partner.
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 EBMS object lands in Dolibarr ERP, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
EBMS
Customer
Dolibarr ERP
ThirdParty (ThirdParties)
1:1EBMS Customers (stored as Documents within a Customers table) map to Dolibarr ThirdParty records. Standard fields — company name, billing address, shipping address, contact name, phone, email, payment terms — export via the Customer Address for Mail Merge report. Custom fields added via EBMS Customization Designer require SQL enumeration during data profiling and map to Dolibarr Extrafields columns on the ThirdParty object. We enable Dolibarr's ThirdParty module with the IsCustomer flag set on all migrated records. Vendor and Customer records in EBMS may share the same table with a type flag; we split them into separate ThirdParty imports with the appropriate IsCustomer or IsSupplier flag.
EBMS
Vendor
Dolibarr ERP
ThirdParty (ThirdParties)
1:1EBMS Vendors export via vendor reports and map to Dolibarr ThirdParty records with IsSupplier flag set. Purchasing terms (NET 30, NET 60, prepayment) map to the Dolibarr supplier payment term fields. Custom fields on vendor records require explicit mapping to Dolibarr Extrafields on the ThirdParty object with supplier type. If EBMS stores vendor contacts separately from vendor header records, we flatten them into a single ThirdParty with the primary contact data in the header and additional contacts loaded as Dolibarr contacts linked via the Contact object.
EBMS
Product / Inventory Item
Dolibarr ERP
Product (Products/Stock)
1:1EBMS Products defined in the inventory module — with pricing, stock levels, units of measure, and serial numbers — export via inventory reports and map to Dolibarr Product records. We map the EBMS product type (stockable, service, assembly) to Dolibarr's pcmof_prod_type field. Product photos migrate as files attached to the Dolibarr Product record. If EBMS uses multi-level product variants or Bill of Materials assemblies, we map to Dolibarr's Product with the BOM module enabled; otherwise flat product records import directly. Price levels (price tiers per customer type) in EBMS map to Dolibarr Customer Specific Prices or a price list configuration.
EBMS
Sales Order
Dolibarr ERP
Order (Orders)
1:1EBMS Sales Order headers and line items export via order reports. The EBMS order status (Open, Closed, Cancelled) maps to Dolibarr ORDER_CLASSIFIED_* status values. Line items resolve the product reference to Dolibarr Product IDs at migration time using a lookup table built from the product import phase. Unit price, quantity, discount percentage, and tax rate migrate directly. Payment terms on the order header pull from the linked Customer's terms. We preserve the original EBMS order number as a custom field on the Dolibarr Order for invoice reconciliation.
EBMS
Purchase Order
Dolibarr ERP
Supplier Order (CommandeFournisseur)
1:1EBMS Purchase Orders export via PO reports and map to Dolibarr Supplier Order records. Custom fields on PO headers or line items (added via EBMS Customization Designer) require explicit mapping to Dolibarr Extrafields on the supplier order and order line objects. The vendor reference on the EBMS PO resolves to the Dolibarr ThirdParty supplier ID via the vendor mapping phase. EBMS PO statuses (Open, Received, Closed) map to Dolibarr RECEIVED, DRAFT, and CANCELLED status values.
EBMS
Invoice / AR
Dolibarr ERP
Invoice (Factures)
1:1EBMS Invoices (open and historical) export via AR aging and invoice reports. We scope invoice exports by a defined date range to avoid mid-period splits between EBMS and Dolibarr. Invoice header fields (invoice number, date, due date, amount, balance) map to Dolibarr Facture fields. Invoice lines map to FactureLigne with product reference resolution via the product lookup table. Payment history — partial payments, credit memos — requires exporting payment records separately and applying them as Dolibarr payments linked to the invoice. Historical paid invoices migrate with status FACTURE_PAYED; open invoices retain FACTURE_OPEN.
EBMS
Customer Portal Account
Dolibarr ERP
ThirdParty + Contact
lossyEBMS B2B Customer Portal accounts store price levels, payment terms, and login credentials for customer-facing self-service. Dolibarr does not have a native B2B portal module in its core distribution — the Dolibarr member module serves NGOs and associations but not B2B eCommerce portals. We migrate portal account data as ThirdParty records with price level assignments stored as Dolibarr Customer Specific Prices on the Product object. If the customer uses portal-specific custom fields, we map them to Extrafields on ThirdParty and document the portal rebuild as a separate implementation task for a Dolibarr partner.
EBMS
eCommerce Product Catalog
Dolibarr ERP
Product (Products/Stock)
1:1EBMS eCommerce tiers synchronize product availability, pricing, photos, and descriptions from the inventory module to the customer-facing website. We export the product data via EBMS inventory reports, preserving all eCommerce-specific fields (long description, product images, category assignments) and load them into Dolibarr Product records. The eCommerce storefront itself does not migrate — Dolibarr has no native storefront module, and WooCommerce, Shopify, or Magento connectors exist as separate integrations. We deliver the product data in Dolibarr's import-ready format so the customer's web team can re-connect to their chosen storefront post-migration.
EBMS
Custom Fields (various entities)
Dolibarr ERP
Extrafields (various objects)
lossyEBMS Customization Designer fields added to Customer, Product, Order, Invoice, or Vendor documents require SQL-level enumeration during data profiling since not all custom fields appear in the standard report writer without first adding them to the report layout. We request read-only SQL access to the EBMS database to discover every custom field column, its data type, and the table it belongs on. Each discovered custom field maps to a Dolibarr Extrafields column on the equivalent Dolibarr object. We create the Extrafields schema in Dolibarr before the data import phase begins. Fields created by customization developers whose definitions cannot be edited in the EBMS UI require special handling — we map them by their database column name where a matching Dolibarr field can be created.
EBMS
Contact (Customer-level)
Dolibarr ERP
Contact
1:1EBMS stores contact-level information (first name, last name, email, phone, job title) on Customer records and occasionally as separate contact entries linked to customers. Dolibarr uses a dedicated Contact object linked to a ThirdParty via the socid foreign key. We export EBMS contact data from the customer report and load into Dolibarr Contact records with the ThirdParty lookup resolved from the customer mapping phase. Primary contact designation migrates as the contact with the IsPrimary flag set on the Dolibarr Contact.
EBMS
Sales Representative / Owner
Dolibarr ERP
User
1:1EBMS tracks which sales representative or user created or owns each order, quote, or customer record. We extract distinct owner values from EBMS reports and match them by name or email to existing Dolibarr User records. If the destination Dolibarr instance has no matching User, we flag the owner as unmapped and hold those records for the customer to provision the User before the migration resumes. User provisioning is a manual step that the customer's Dolibarr admin completes outside the migration workflow.
EBMS
Reports
Dolibarr ERP
None (configuration artifact)
1:1EBMS Report definitions are a configuration artifact of the EBMS report writer, not a data object. We export the data that EBMS reports reference — Customers, Products, Orders, Invoices — but the report layout definitions, grouping logic, calculated fields, and print templates do not migrate. Dolibarr's reporting module (on the ThirdParty, Product, and Stock modules) provides standard report generation for basic needs. The customer or a Dolibarr-certified consultant rebuilds custom reports in Dolibarr's report writer. We document every EBMS report used in the migration export as part of the data mapping inventory.
| EBMS | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Customer | ThirdParty (ThirdParties)1:1 | Fully supported | |
| Vendor | ThirdParty (ThirdParties)1:1 | Fully supported | |
| Product / Inventory Item | Product (Products/Stock)1:1 | Fully supported | |
| Sales Order | Order (Orders)1:1 | Fully supported | |
| Purchase Order | Supplier Order (CommandeFournisseur)1:1 | Fully supported | |
| Invoice / AR | Invoice (Factures)1:1 | Fully supported | |
| Customer Portal Account | ThirdParty + Contactlossy | Fully supported | |
| eCommerce Product Catalog | Product (Products/Stock)1:1 | Fully supported | |
| Custom Fields (various entities) | Extrafields (various objects)lossy | Fully supported | |
| Contact (Customer-level) | Contact1:1 | Fully supported | |
| Sales Representative / Owner | User1:1 | Fully supported | |
| Reports | None (configuration artifact)1:1 | Not supported |
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.
EBMS gotchas
No public API forces report-based extraction
Custom fields require exclusive database access
eCommerce tier sales-volume caps affect data scoping
Dolibarr ERP gotchas
Foreign key constraint errors on cross-distribution database restore
SQL injection vulnerabilities in version 9.0.1
Custom fields stored as JSON in extraoptions require field-by-field deserialization
Decimal precision and rounding configuration affects price fields
No native iOS/Android app forces reliance on browser
Pair-specific challenges
Migration approach
Discovery and report enumeration
We conduct a discovery call with the customer's EBMS administrator to enumerate every EBMS report used across Customers, Products, Sales Orders, Purchase Orders, Invoices, and Vendors. We request read-only SQL access to the EBMS database to enumerate custom field columns that may not yet appear in reports. We export record counts for each entity and flag any mid-period open invoices or orders that require a date-range boundary decision. We also confirm the eCommerce tier in use and the volume of online transactions to scope the product catalog and order migration separately. The discovery output is a written migration scope document with entity counts, report list, and custom field inventory.
Custom field profiling and report extension
Using the SQL enumeration from discovery, we build a complete custom field manifest — field name, source table, data type, and the EBMS entity it belongs to. We cross-reference this manifest against the standard EBMS report writer reports and identify any custom fields not yet in a report layout. We coordinate with the customer to extend the relevant EBMS reports to include all unmapped custom fields. This step typically requires an EBMS administrator with report writer access and takes 3-7 business days depending on the number of custom fields and the complexity of the report layouts.
Dolibarr environment provisioning and schema setup
We provision the destination Dolibarr instance — either self-hosted on a customer-provided server or via DoliCloud — and install the modules required for the migration scope (ThirdParties, Products, Orders, Invoices, Stock, HR if applicable). We create the Dolibarr Extrafields schema to match every enumerated EBMS custom field, using the manifest from the profiling phase. We configure IsCustomer and IsSupplier flags on ThirdParty types, product types (stockable, service, assembly) on Products, and payment term defaults on the Dolibarr setup. We verify PHP version compatibility and run a clean import test with a subset of records before the full migration begins.
Staged export from EBMS and data validation
We run EBMS report exports in dependency order: ThirdParties (Customers and Vendors separately), then Products, then Sales Orders, then Purchase Orders, then Invoices with payment history, then Customer Portal accounts and contact data. Each export produces a CSV file that we validate for column completeness, encoding issues, and referential integrity (foreign keys that point to unmapped records). We flag any records with broken foreign keys — for example, an Order referencing a Product that was not exported — and return them to the customer for correction before proceeding. This validation step prevents silent data loss during the Dolibarr import phase.
Dolibarr import in dependency order
We import data into Dolibarr in strict dependency order: ThirdParties first (because Orders and Invoices look up to customers and vendors), then Products (because Order lines look up to products), then Orders, then Purchase Orders, then Invoices, then Contacts, then custom field data via Extrafields. We use Dolibarr's native Import module for flat-file CSV ingestion and the REST API for record updates where batch processing improves throughput. Parent-record lookups are resolved using pre-built ID mapping tables from earlier phases. After each import phase, we emit a row-count reconciliation report comparing the EBMS export count against the Dolibarr inserted count and investigate any variance before proceeding to the next phase.
Cutover, delta sync, and inventory handoff
We freeze EBMS writes during a defined cutover window, run a final delta export of any records created or modified after the initial export, and load those records into Dolibarr. We deliver a data mapping inventory document listing every EBMS report used, every Dolibarr field populated, and every custom field that required explicit mapping, along with any gaps identified during profiling that could not be resolved from the EBMS report writer. We do not migrate EBMS Report definitions, Workflow configurations, eCommerce portal code, or support subscription terms. We provide a written list of these artifacts with recommended Dolibarr equivalents for the customer's admin or a Dolibarr-certified partner to rebuild. We support a 5-business-day post-cutover reconciliation window to address any record discrepancies identified during user acceptance testing.
Platform deep dives
EBMS
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 2 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 EBMS and Dolibarr ERP.
Object compatibility
2 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
EBMS: Not publicly documented.
Data volume sensitivity
EBMS 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 EBMS to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your EBMS to Dolibarr 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 EBMS
Other ways to arrive at Dolibarr 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.