ERP migration
Field-level mapping, validation, and rollback between Brightpearl and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
Brightpearl
Source
Dolibarr ERP
Destination
Compatibility
8 of 12
objects map 1:1 between Brightpearl and Dolibarr ERP.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Brightpearl to Dolibarr is a structural migration from a Sage-backed retail OS to an open-source modular ERP and CRM. Brightpearl organises data around Contacts (unified customers and vendors), Products with four-level Locations (Aisle / Bay / Shelf / Bin) grouped under Zones, and a full set of Order documents backed by a real-time accounting engine. Dolibarr uses a modular architecture where you enable only the features you need — Third Parties (contacts), Products/Services, Stock, Invoicing, Orders, and the Accountancy module. We resolve the location hierarchy, price list structures, and Chart of Accounts mapping before migration, and we flag Brightpearl's Automation rules as items requiring manual rebuild in Dolibarr's Workflow module post-migration. Brightpearl's undocumented API rate limits and its 36-hour order download recovery window are the two highest-risk operational constraints we manage during cutover sequencing.
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 Brightpearl 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.
Brightpearl
Contact (Customers and Suppliers)
Dolibarr ERP
Third Party (Societe)
1:1Brightpearl stores both customers and vendors as Contact records differentiated by a contact role flag. We split these into Dolibarr Societe records with the Tiers client (customer) and Tiers fournisseur (supplier) flags set accordingly. Each Societe gets the contact's primary address, email, phone, and any PCF_* custom fields mapped to Dolibarr ExtraFields on the Societe object. Contacts without company affiliation become Dolibarr Contact records linked to the parent Societe via llx_element_contact. The Brightpearl contact's owner assignment maps to a Dolibarr User reference if the recipient environment has the User module enabled.
Brightpearl
Product (Items and Services)
Dolibarr ERP
Product (Product/Services)
1:1Brightpearl Products map directly to Dolibarr Products. We preserve SKU as ref, product name as label, product type as fk_product_type (0 for goods, 1 for services), and the sales price as price. PCF_* custom fields migrate to Dolibarr ExtraFields on the Product object. Multiple Brightpearl price lists per product require a price list mapping strategy: if the customer uses two to three price lists, we create corresponding Dolibarr Customer Specific Prices on each Societe; for complex multi-list structures, we document the full mapping for manual configuration post-migration.
Brightpearl
Warehouse Location (Aisle/Bay/Shelf/Bin)
Dolibarr ERP
Warehouse (Stock/Entrepot)
lossyBrightpearl's four-level location hierarchy (Aisle / Bay / Shelf / Bin) under Zones has no direct Dolibarr equivalent. Dolibarr's Entrepot object represents a single warehouse without nested location sub-levels. We flatten the hierarchy into a Dolibarr Warehouse label that encodes the full path (e.g., 'Zone-A / Aisle-03 / Bay-B / Shelf-02 / Bin-07') as the Entrepot description. Stock quantities transfer as on-hand totals per product per location into Dolibarr's stock product批次 (stock product lines). Customers requiring granular pick-location management document this as a post-migration configuration of a third-party Dolibarr warehouse add-on.
Brightpearl
Zone
Dolibarr ERP
Warehouse (Entrepot)
1:manyBrightpearl Zones group multiple locations. Where Brightpearl has Zones, we create multiple Dolibarr Entrepot records (one per physical location) and annotate the zone affiliation in the Entrepot description field. If the customer uses only one physical warehouse with zone-based internal areas, we create a single Entrepot and document the zone-to-area mapping for the customer's warehouse management workflow configuration.
Brightpearl
Sales Order
Dolibarr ERP
Customer Order (CommandeClient)
1:1Brightpearl Sales Orders map to Dolibarr CommandeClient. We preserve order number, order date, customer reference (linked to the mapped Societe), line items with quantities and prices, discount values, and order status. Brightpearl's order-level owner assignment maps to Dolibarr's fk_user_author on the order header. Orders in pending or draft status migrate as draft Dolibarr orders; orders in confirmed or shipped status migrate as validated orders.
Brightpearl
Purchase Order
Dolibarr ERP
Supplier Order (CommandeFournisseur)
1:1Brightpearl Purchase Orders map to Dolibarr CommandeFournisseur. We preserve PO number, vendor reference (mapped to the corresponding Dolibarr Societe with Tiers fournisseur set), expected delivery date, line items with quantities and costs, and received quantities. If Brightpearl tracks partial receipts, we create multiple Dolibarr product reception lines to match.
Brightpearl
Invoice
Dolibarr ERP
Invoice (Facture)
1:1Brightpearl invoices map to Dolibarr Facture. We preserve invoice number, invoice date, due date, customer reference, line items with prices and VAT, discount values, and payment status. Brightpearl's embedded accounting data (debit account, credit account) maps to the corresponding Dolibarr accounting account entries in the Accountancy module. Paid invoices migrate as validated Factures with payment lines; unpaid invoices migrate as open Factures.
Brightpearl
Credit Note
Dolibarr ERP
Credit Note (Facture - Type 'AC')
1:1Brightpearl credit notes map to Dolibarr Facture with type set to AC (avoir/correction). We preserve the original invoice reference in the Facture's linked invoice field, the credit note date, line items with corrected prices or quantities, and any refund amount. The accounting entries reverse the original invoice postings using the configured reversal accounts.
Brightpearl
Price List
Dolibarr ERP
Customer Specific Prices (PrixSpeciaux)
1:manyBrightpearl supports multiple price lists per product. In Dolibarr, customer-specific pricing is managed via PrixSpeciaux attached to a Societe. We map each Brightpearl price list to a Dolibarr price level group or individual Societe pricing. For Brightpearl price lists not tied to a specific customer, we create Dolibarr Customer Categories with the corresponding price rules. Price list logic (volume breaks, quantity thresholds) is documented for manual Dolibarr configuration if the customer uses complex pricing tiers.
Brightpearl
Chart of Accounts
Dolibarr ERP
Chart of Accounts (Plan de compte)
lossyBrightpearl's Chart of Accounts with account codes maps to Dolibarr's Plan de compte. We export the full account code list from Brightpearl and create corresponding Dolibarr accounting account records with the same account code, label, and account type (court-terme, long-terme, charge, produit). Account type mapping aligns Brightpearl's account classification with Dolibarr's account class (actif, passif, charge, produit). If Dolibarr's Accountancy module uses a standard French PCG structure, we map Brightpearl accounts to the nearest PCG equivalent and flag any non-standard Brightpearl accounts for the customer's accountant to validate.
Brightpearl
Inventory Summary
Dolibarr ERP
Stock (Stock/Product)
1:1Brightpearl inventory summary (total cost value per SKU) and inventory detail (per-warehouse, per-location stock levels) map to Dolibarr Stock records. We create a Stock Entrepot for each Brightpearl warehouse or zone, then populate product stock quantities using Dolibarr's Stock Movement records. The cost value from Brightpearl (realtime_stock_valuation) maps to Dolibarr's PMP (Prix Moyen Pondere) if the customer uses average cost valuation, or to a custom ExtraField if they use standard cost.
Brightpearl
Owner (Staff Member)
Dolibarr ERP
User (Utilisateur)
1:1Brightpearl assigns a staff member as Owner of Contact and auto-assigns orders to the contact owner. We extract the Brightpearl user roster and match by email against the Dolibarr User table. Any Brightpearl Owner without a matching Dolibarr User is held in a reconciliation queue for the customer's admin to provision before record import. Dolibarr's User module must be enabled to support owner assignments; if disabled, owner references are stored as a text ExtraField.
| Brightpearl | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Contact (Customers and Suppliers) | Third Party (Societe)1:1 | Fully supported | |
| Product (Items and Services) | Product (Product/Services)1:1 | Fully supported | |
| Warehouse Location (Aisle/Bay/Shelf/Bin) | Warehouse (Stock/Entrepot)lossy | Fully supported | |
| Zone | Warehouse (Entrepot)1:many | Fully supported | |
| Sales Order | Customer Order (CommandeClient)1:1 | Fully supported | |
| Purchase Order | Supplier Order (CommandeFournisseur)1:1 | Fully supported | |
| Invoice | Invoice (Facture)1:1 | Fully supported | |
| Credit Note | Credit Note (Facture - Type 'AC')1:1 | Fully supported | |
| Price List | Customer Specific Prices (PrixSpeciaux)1:many | Fully supported | |
| Chart of Accounts | Chart of Accounts (Plan de compte)lossy | Fully supported | |
| Inventory Summary | Stock (Stock/Product)1:1 | Fully supported | |
| Owner (Staff Member) | User (Utilisateur)1:1 | Fully 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.
Brightpearl gotchas
Brightpearl API rate limits are undocumented
Pending order download has a 36-hour recovery window
Country names must match exact localisation strings
Automation rules can execute in locked accounting periods
Placeholder contacts require valid formatted data
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 data audit
We audit the source Brightpearl environment across all active objects: Contact count and role distribution, Product count with price list complexity, warehouse and location hierarchy depth, order volumes by status, invoice and credit note counts, Chart of Accounts size, and active Automation rules. We perform a dry-run API extraction to measure rate limit behaviour and identify undocumented schema dependencies. We also assess the destination Dolibarr environment: which modules are enabled (Third Parties, Products, Stock, Invoicing, Orders, Accountancy), which Dolibarr edition is installed (community or paid), and whether the server environment (PHP version, MySQL version) meets requirements for the import pipeline.
Schema design and ExtraFields creation
We design the Dolibarr destination schema before any data import. This includes creating ExtraFields for every Brightpearl PCF_* custom field discovered during discovery, mapping Brightpearl account codes to Dolibarr accounting plan entries, defining the multi-warehouse structure (one Entrepot per Brightpearl location, with zone encoding in the label), and creating Customer Categories for Brightpearl price list mapping. We also configure Dolibarr's stock valuation method (FIFO, PMP, or standard cost) to match the customer's Brightpearl inventory accounting approach. Schema changes are validated in a pre-production Dolibarr instance before production deployment.
Owner and user reconciliation
We extract every distinct Brightpearl Owner referenced on Contact, Order, and Invoice records and match by email against the Dolibarr User table. Owners without a matching Dolibarr User go to a reconciliation queue. The customer's Dolibarr admin provisions any missing users (with appropriate Dolibarr rights profiles) before record import resumes. If the Dolibarr User module is not enabled, we agree on an alternative owner-field strategy (ExtraField or note) during this step.
Staged migration in dependency order
We run production migration in record-dependency order: Third Parties (Societe records, with customer and supplier flags set), Products (with ExtraFields and price lists), Warehouses (Entrepot records with zone-encoding), Stock levels (Stock Movement records populating on-hand quantities), Customer Orders, Supplier Orders, Invoices, and Credit Notes. Accounting Chart of Accounts entries are verified before any financial document import. Each phase emits a row-count reconciliation report showing records in, errors, skipped, and duplicates before the next phase begins.
Cutover and delta export
We freeze Brightpearl writes during cutover. A final delta export captures any orders, invoices, or contacts created or modified during the migration window. We close the Brightpearl export connection and run the delta import into Dolibarr, reconciling record counts against the pre-cutover baseline. We flag any orders that fall outside Brightpearl's 36-hour order recovery window for manual re-entry. Dolibarr is enabled as the system of record once the delta reconciliation passes.
Validation, handoff, and Automation inventory delivery
We deliver a migration completion report with record counts per object, a list of any records skipped or requiring manual review, and a reconciliation summary. We deliver the written Automation rules inventory documenting every active Brightpearl Automation rule with its trigger, conditions, actions, and a recommended Dolibarr configuration approach. We support a one-week hypercare window to resolve any reconciliation issues raised by the customer's team. We do not rebuild Brightpearl Automation rules as Dolibarr workflows inside the migration scope; that is a separate configuration engagement.
Platform deep dives
Brightpearl
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between Brightpearl and Dolibarr ERP.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Brightpearl and Dolibarr ERP.
Object compatibility
All 8 core objects map 1:1 between Brightpearl and Dolibarr ERP.
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
Brightpearl: Not publicly documented.
Data volume sensitivity
Brightpearl 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 Brightpearl to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your Brightpearl 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 Brightpearl
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.