ERP migration
Field-level mapping, validation, and rollback between Dolibarr ERP and Microsoft Dynamics 365 Business Central. We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Business Central.
Dolibarr ERP
Source
Microsoft Dynamics 365 Business Central
Destination
Compatibility
11 of 13
objects map 1:1 between Dolibarr ERP and Microsoft Dynamics 365 Business Central.
Complexity
BStandard
Timeline
8-10 weeks
Try the reverse
Overview
Moving from Dolibarr ERP to Microsoft Dynamics 365 is a structural migration across fundamentally different platforms. Dolibarr stores contacts, companies, and suppliers in a single llx_societe table with a client/prospect/supplier type flag; Dynamics 365 separates these into Account records with distinct party roles, requiring deduplication and type-mapping before any import. Dolibarr has no documented REST API, so we query MySQL or PostgreSQL directly with read-only credentials, parse the extraoptions JSON column for custom fields, and load through Dynamics 365 bulk APIs or direct table import. We do not migrate Dolibarr workflows, commercial modules, or paid add-ons; we deliver a written inventory of these for the customer's admin to rebuild inside Dynamics 365. Financial migration requires special handling: open invoices post as receivables, closed invoices generate general journal entries, and bank reconciliation state is preserved as a written record alongside the migrated transactions.
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.
Source platform
Dolibarr ERP platform overview
Scorecard, SWOT, gotchas, and pricing for Dolibarr ERP.
Destination platform
Microsoft Dynamics 365 Business Central platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Business Central.
Data migration guide
The complete Dynamics 365 Business Central migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Dolibarr migration guide
Understand the data you're exporting from Dolibarr ERP before mapping it.
Destination checklist
Dynamics 365 Business Central migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Business Central.
Source checklist
Dolibarr migration checklist
Exit checklist for unwinding your Dolibarr ERP setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Dolibarr ERP object lands in Microsoft Dynamics 365 Business Central, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Dolibarr ERP
Third Party (llx_societe)
Microsoft Dynamics 365 Business Central
Account + Contact
1:manyDolibarr's llx_societe table holds customers, prospects, and suppliers in one entity with a client/prospect/supplier type flag. We split this into Dynamics 365 Account records (the company and commercial entity) and Contact records (the individuals). The type flag maps to Account.accounttype or a custom field, and individual contact details from llx_socpeople link to the Account via a Contact relationship. Deduplication uses the siret/siren code if populated, falling back to email domain or company name match.
Dolibarr ERP
Contact (llx_socpeople)
Microsoft Dynamics 365 Business Central
Contact
1:1Dolibarr contacts stored in llx_socpeople map to Dynamics 365 Contact records. The fk_soc foreign key links each contact to the parent Account. We preserve email, phone, job title, address fields, and country, and map the active/inactive status from Dolibarr's statut field to the Contact statecode in Dataverse.
Dolibarr ERP
Product and Service (llx_product)
Microsoft Dynamics 365 Business Central
Product
1:1Dolibarr products (type=0) and services (type=1) both map to Dynamics 365 Product records. The product's sell price, buy price, VAT rate, unit, and stock quantity migrate as product attributes. We create product records as Inactive initially, then activate after pricing is confirmed against the destination price book. Product stock levels in llx_product_stock map to warehouse inventory in Dynamics 365.
Dolibarr ERP
Commercial Proposal (llx_proposal)
Microsoft Dynamics 365 Business Central
Quote
1:1Dolibarr proposals map to Microsoft Dynamics 365 Sales Quote. The proposal status (draft, open, signed, refused, closed) maps to the Quote statuscode field. Quote lines reference product IDs resolved against the migrated product catalog. The validity date and total amounts migrate as typed currency fields, and the commercial terms or notes become the Quote description field.
Dolibarr ERP
Customer Order (llx_commande)
Microsoft Dynamics 365 Business Central
Sales Order
1:1Dolibarr customer orders map to Microsoft Dynamics 365 Sales Order or a Business Central Sales Document depending on the destination module. The order status (draft, validated, shipped, delivered, cancelled) maps to the destination status lifecycle. Order lines reference migrated products with quantity, unit price, and discount preserved. If Dolibarr's warehouse module is active, we map the source warehouse to the destination location on the order line.
Dolibarr ERP
Invoice (llx_facture)
Microsoft Dynamics 365 Business Central
Sales Invoice + General Journal Entry
1:1Invoice migration is the most complex object in this pair. Open Dolibarr invoices (not paid) migrate as open Sales Invoice records in Dynamics 365, preserving the original invoice number, date, due date, and line items with product, quantity, and price. Closed invoices (paid) generate General Journal Entry records for the posted amounts, with the payment records (llx_paiement and llx_paiement_facture) migrated as customer payments applied to the corresponding invoice. We flag any invoice with a mismatched total before import to prevent posting errors.
Dolibarr ERP
Bank Account (llx_bank)
Microsoft Dynamics 365 Business Central
Bank Account + Ledger Entry
1:1Dolibarr bank accounts and transactions in llx_bank map to Dynamics 365 Bank Account records and ledger entries. The reconciliation state from Dolibarr (reconciled flag) is preserved as a written note alongside each transaction so that the customer's accountant can re-reconcile in Dynamics 365 without losing audit context. Multi-bank-account setups are each imported as a separate Bank Account entity.
Dolibarr ERP
Project (llx_projet)
Microsoft Dynamics 365 Business Central
Project
1:1Dolibarr projects map to Dynamics 365 Project records or Business Central Projects depending on the destination module. Project status, description, budget amounts, and start/end dates migrate directly. We link project tasks from llx_projet_task as sub-records under the parent Project, preserving task assignees and time budget references from the task table.
Dolibarr ERP
Task (llx_projet_task)
Microsoft Dynamics 365 Business Central
Project Task
1:1Dolibarr project tasks migrate as Project Task records under the corresponding Dynamics 365 Project. Task assignees resolve by email against migrated user accounts. Time budget fields migrate as typed decimal values, and the task status maps to the destination project task statuscode.
Dolibarr ERP
Agenda Event (llx_actioncomm)
Microsoft Dynamics 365 Business Central
Activity (Appointment, Task)
1:1Dolibarr calendar events in llx_actioncomm map to Dynamics 365 Activities: meetings become Appointments with start and end times preserved, tasks become Task records with the original Dolibarr date and assignee, and calls become Task records with TaskSubtype set to Call. Attendee lists from llx_actioncomm_resources link as Party records on the destination Activity. Recurring event rules are not migrated; we flag them in the handoff document for manual recreation in Dynamics 365.
Dolibarr ERP
Stock/Materials (llx_product_stock + llx_stock_mouvement)
Microsoft Dynamics 365 Business Central
Inventory + Warehouse
1:1Stock levels in llx_product_stock map to Dynamics 365 warehouse inventory records. Warehouse locations from llx_entrepot map to Locations on the Inventory. Stock movement history in llx_stock_mouvement migrates as inventory posting records with transaction dates preserved. We apply the correct decimal precision for quantities during import to avoid silent rounding in unit-of-measure conversions.
Dolibarr ERP
User (llx_user)
Microsoft Dynamics 365 Business Central
User
1:1Dolibarr user accounts migrate as Dynamics 365 User records with metadata (first name, last name, email, role) preserved. Password hashes (bcrypt-salted) do not migrate and are not usable at the destination. The customer's Dynamics 365 admin provisions the new users and distributes credentials post-migration. Active and inactive status from Dolibarr maps to the User.isactive flag; the admin confirms which inactive users should be provisioned as active in Dynamics 365.
Dolibarr ERP
Custom Fields (extrafields JSON in extraoptions column)
Microsoft Dynamics 365 Business Central
Custom Field
lossyAny custom fields added via Dolibarr's extrafields system are serialized as JSON in the extraoptions column on the parent table. We deserialize each object's extraoptions at migration time, map the deserialized key-value pairs to typed Dynamics 365 custom fields, and apply those values to each record. Lookup-type extrafields that reference other Dolibarr records require resolution against the migrated IDs of the target object before the custom field value is written.
| Dolibarr ERP | Microsoft Dynamics 365 Business Central | Compatibility | |
|---|---|---|---|
| Third Party (llx_societe) | Account + Contact1:many | Fully supported | |
| Contact (llx_socpeople) | Contact1:1 | Fully supported | |
| Product and Service (llx_product) | Product1:1 | Fully supported | |
| Commercial Proposal (llx_proposal) | Quote1:1 | Fully supported | |
| Customer Order (llx_commande) | Sales Order1:1 | Fully supported | |
| Invoice (llx_facture) | Sales Invoice + General Journal Entry1:1 | Fully supported | |
| Bank Account (llx_bank) | Bank Account + Ledger Entry1:1 | Fully supported | |
| Project (llx_projet) | Project1:1 | Fully supported | |
| Task (llx_projet_task) | Project Task1:1 | Fully supported | |
| Agenda Event (llx_actioncomm) | Activity (Appointment, Task)1:1 | Fully supported | |
| Stock/Materials (llx_product_stock + llx_stock_mouvement) | Inventory + Warehouse1:1 | Fully supported | |
| User (llx_user) | User1:1 | Fully supported | |
| Custom Fields (extrafields JSON in extraoptions column) | Custom Fieldlossy | 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.
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
Microsoft Dynamics 365 Business Central gotchas
Named-user licensing has no concurrent-use relief
API rate limits throttle large-volume migrations
Historical posted transactions require selective migration scoping
NAV-to-Business Central cloud migration requires partner coordination
Custom fields and AL extensions require separate migration handling
Pair-specific challenges
Migration approach
Discovery and schema audit
We audit the source Dolibarr instance across enabled modules, database object counts, active third parties, product catalog size, open invoice volume, and historical financial records. We identify custom fields from the extraoptions columns across all active tables, note the decimal precision configuration, and confirm the Dolibarr database engine (MySQL or PostgreSQL). We pair this with a Dynamics 365 edition review and identify which modules are required in the destination (Business Central Essentials vs. Premium vs. Finance and Operations) based on the customer's feature requirements.
Third Party deduplication and split design
We run a deduplication analysis on llx_societe to identify records that are individuals rather than companies, flagging records where the name matches a personal naming pattern or where a single-record third party has contact-person characteristics. We design the split rule for each record, determine which records become Account vs. Contact, and prepare the import order: Accounts first, then Contacts with parent Account references resolved. This design step is completed before any sandbox migration begins.
Sandbox migration and reconciliation
We run a full migration into a Dynamics 365 sandbox using production-equivalent data volume. The customer's team reconciles record counts (Accounts in, Contacts in, Products in, Quotes in, Orders in, Invoices in), spot-checks 25-50 records against the source Dolibarr instance, and validates financial totals against Dolibarr's invoice reports. Any mapping corrections and the financial schema validation happen here before production migration begins.
User provisioning and financial setup confirmation
We extract every Dolibarr user from llx_user and match by email against the destination Dynamics 365 User table. Users without a match go to a reconciliation queue. The customer's Dynamics 365 admin provisions any missing users and confirms active/inactive status. Simultaneously, we confirm with the customer's accountant that the chart of accounts, tax codes, payment terms, and fiscal periods are fully configured in Dynamics 365 before any financial data moves.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from llx_societe companies), Contacts (from llx_societe individuals and llx_socpeople with AccountId resolved), Products (from llx_product), Quotes (from llx_proposal), Orders (from llx_commande), Invoices (from llx_facture with payment links from llx_paiement and llx_paiement_facture resolved), Bank Accounts and transactions (from llx_bank with reconciliation notes), Projects and tasks (from llx_projet and llx_projet_task), Activities (from llx_actioncomm), Stock and warehouse data (from llx_product_stock and llx_stock_mouvement), then Custom Fields (from extraoptions JSON deserialized per record). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and module rebuild handoff
We freeze Dolibarr writes during cutover, run a final delta migration of any records modified during the migration window, then enable Dynamics 365 as the system of record. We deliver the Dolibarr module and workflow inventory document to the customer's admin team, noting which commercial add-ons have equivalent Dynamics 365 features and which require a Microsoft partner for rebuild. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Dolibarr workflows or commercial modules as Power Automate flows, Business Central workflows, or Finance and Operations workflows inside the migration scope; that work is a separate engagement or an internal admin task.
Platform deep dives
Dolibarr ERP
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Business Central
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between Dolibarr ERP and Microsoft Dynamics 365 Business Central.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Dolibarr ERP and Microsoft Dynamics 365 Business Central.
Object compatibility
All 8 core objects map 1:1 between Dolibarr ERP and Microsoft Dynamics 365 Business Central.
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
Dolibarr ERP: Not publicly documented.
Data volume sensitivity
Dolibarr ERP 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 Dolibarr ERP to Microsoft Dynamics 365 Business Central migration scoping. Not seeing yours? Book a call.
Walk through your Dolibarr ERP to Microsoft Dynamics 365 Business Central migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Dolibarr ERP
Other ways to arrive at Microsoft Dynamics 365 Business Central
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.