ERP migration
Field-level mapping, validation, and rollback between Reflex ERP and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
Reflex ERP
Source
Dolibarr ERP
Destination
Compatibility
15 of 15
objects map 1:1 between Reflex ERP and Dolibarr ERP.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from Reflex ERP to Dolibarr is a structural migration from a Canadian enterprise platform serving $10M-$500M revenue companies with 50 integrated modules down to a modular open-source ERP designed for small and medium businesses. Reflex organizes data around a unified database with cross-module relationships between Projects, Work Orders, Items with BOM structures, and Open AR/AP; Dolibarr uses a looser module architecture where Third Parties, Products, Projects, and Invoicing are distinct entities linked by foreign key lookups. We extract via direct database queries from Reflex, sequence the migration in dependency order (Accounts first, then Third Parties, then Transactions, then Work Orders), and load through Dolibarr's native import module using CSV or direct MySQL inserts with UTF-8 encoding. We do not migrate Workflows, custom Reflex modules, or the CCC login portal authentication layer; we deliver a written inventory of these for the customer to rebuild in Dolibarr's module activation framework.
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 Reflex ERP 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.
Reflex ERP
Chart of Accounts
Dolibarr ERP
Accounting Account
1:1Reflex GL account codes, descriptions, and account types (Asset, Liability, Equity, Revenue, Expense) map directly to Dolibarr's llx_accounting_account table. We extract account records with inactive flags and sort sub-account hierarchies into Dolibarr's pcg_version structure. Multi-company intercompany accounts must be consolidated or split during extraction because Dolibarr's standard accounting does not natively support intercompany elimination entries.
Reflex ERP
Customers
Dolibarr ERP
Third Parties (Customer type)
1:1Reflex Customer master records (billing address, shipping address, payment terms, credit limits, contact details) map to Dolibarr's llx_societe with typethirdparty='C' and address, phone, email, and conditions stored in Dolibarr's standard third-party fields. We resolve any customer ID cross-references to AR invoice records before insert to preserve the AR aging relationship. Dolibarr requires country code in ISO format and does not accept free-text country names.
Reflex ERP
Vendors
Dolibarr ERP
Third Parties (Supplier type)
1:1Reflex Vendor master records map to Dolibarr's llx_societe with typethirdparty='F', mirroring the Customer mapping with address, payment terms, and 1099 settings translated to Dolibarr's supplier conditions fields. Vendor IDs are required to resolve AP aging records. We extract vendor records before AP records to satisfy foreign key constraints during import.
Reflex ERP
Items
Dolibarr ERP
Products / Services
1:1Reflex Items with part numbers, descriptions, costing methods (FIFO/average), and pricing tiers map to Dolibarr's llx_product. Item type (stock vs service) determines product_type in Dolibarr. Pricing tiers from Reflex map to Dolibarr's price lists attached to the product. Dolibarr does not natively support complex pricing tier matrices; we collapse multi-tier pricing into the primary price list and document the remaining tiers in a supplemental import sheet.
Reflex ERP
Items / BOM Structures
Dolibarr ERP
BOM (Bill of Materials)
1:1Reflex BOM relationships (parent item, component items, quantities, scrap percentages) map to Dolibarr's llx_product_bom and llx_bom_bom_product. Multi-level BOM explosion requires us to extract the full bill-of-materials tree from Reflex before migration and flatten or preserve the hierarchy in Dolibarr's BOM structure depending on whether the destination Dolibarr instance uses the MRP extension. We flag any BOMs with missing component Items for customer review before import.
Reflex ERP
Projects
Dolibarr ERP
Projects
1:1Reflex Project headers, budget lines, and actuals map to Dolibarr's llx_projet and llx_projet_task. Project cost tracking (labor, materials, equipment) from Reflex becomes task-level time and expense entries in Dolibarr. Budget-versus-actual variance reporting is not native to Dolibarr's Project module; we document the budget columns as custom project fields or recommend a reporting module add-on. Sub-projects become top-level projects or tasks depending on the customer's reporting structure preference.
Reflex ERP
Open AR
Dolibarr ERP
Customer Invoices / Credit Notes
1:1Reflex Open AR records (invoice number, customer ID, amount, due date, aging buckets, credit memos, prepayments) map to Dolibarr's llx_facture with invoice status set to unpaid at cutover. Credit memos become credit notes linked to the original invoice via fk_facture_source. Prepayments become down payment invoices. We extract open AR at a defined cut-off date and flag any invoices created after cutover for the customer's go-live window to be re-imported as a delta. Dolibarr's aging report uses the same due date logic as Reflex but requires the invoice date and payment term to be set correctly.
Reflex ERP
Open AP
Dolibarr ERP
Supplier Invoices / Credit Notes
1:1Reflex Open AP records (vendor ID, invoice number, amount, due date, payment terms) map to Dolibarr's llx_facture_fourn with typethirdparty='F'. Credit memos from vendors become supplier credit notes. We extract open AP at cut-off date, map vendor IDs to Dolibarr supplier records, and load invoices with status unpaid. Any 1099 settings from Reflex vendor records map to Dolibarr vendor accounting configuration fields.
Reflex ERP
Fixed Assets
Dolibarr ERP
Assets
1:1Reflex Fixed Asset records (acquisition date, cost, depreciation method, accumulated depreciation, useful life, asset category) map to Dolibarr's llx_asset and llx_asset_depreciation. Depreciation conventions (straight-line, declining balance, units of production) translate to Dolibarr's depreciation profile settings. We load accumulated depreciation as an opening depreciation entry so that net book value is correct at go-live. Asset disposal history and gain/loss entries are not migrated unless specifically scoped; we flag these for the customer's accounting team to handle post-migration.
Reflex ERP
Work Orders
Dolibarr ERP
Production Orders / MRP
1:1Reflex Work Orders with linked Items, BOMs, labor hours, and material consumption map to Dolibarr's llx_mrp_production if the MRP module is activated. Open work orders migrate with status in progress; closed work orders migrate as historical records. Labor hours and material consumption from Reflex closed work orders are logged as production tracking entries in Dolibarr's mrp production lines. Closed work orders that impacted COGS and inventory simultaneously require a manual GL reconciliation entry because Dolibarr's standard accounting does not auto-reverse COGS postings from production closes.
Reflex ERP
Tax Codes
Dolibarr ERP
Tax / VAT Setup
1:1Reflex tax codes (jurisdiction, rate, applicability to sales vs purchases) map to Dolibarr's llx_c_tva and llx_c_type_fees. We extract all active tax codes and map them to Dolibarr's VAT rate configuration, including compound tax scenarios and nexus-specific rates. Historical tax adjustments and multi-jurisdiction tax calculations are documented as supplemental configuration notes for the customer's admin to finalize based on their current tax obligations.
Reflex ERP
Users
Dolibarr ERP
Users
1:1Reflex user records with role assignments and permissions map to Dolibarr's llx_user. We extract user names, emails, and role classifications, but permission sets are Reflex-specific and must be rebuilt in Dolibarr's module-level permission framework. Dolibarr's user access is managed through module activation and per-module permission flags, not a unified role-permission matrix like Reflex. We deliver a written permission map matching each Reflex user role to the equivalent Dolibarr module permission set for the customer's admin to configure post-migration.
Reflex ERP
Documents
Dolibarr ERP
Documents
1:1Reflex Document Manager stores binary attachments linked to transactions and master records. We flag document associations during extraction (document type, linked record ID, file name) and re-link them post-migration in Dolibarr's documents directory using the same directory structure or a migration-specific subdirectory. Binary file migration requires UTF-8 encoding verification on file names; Dolibarr's document handler does not tolerate malformed encoding from Windows-exported files.
Reflex ERP
Sales Orders
Dolibarr ERP
Proposals / Customer Orders
1:1Reflex Sales Orders map to Dolibarr's llx_commande with status mapped from Reflex order state to Dolibarr order status values (draft, validated, shipped, closed). Line items resolve to llx_commandedet with product references linked to the migrated product catalog. Open orders migrate with status preserved; completed orders migrate as historical records. Quotes without a converted order in Reflex map to Dolibarr proposals (llx_propal) for any quotes still in progress at cutover.
Reflex ERP
Purchase Orders
Dolibarr ERP
Supplier Orders
1:1Reflex Purchase Orders map to Dolibarr's llx_commande_fournisseur with status translated to Dolibarr supplier order states. Vendor references resolve to the migrated supplier records. Open purchase orders migrate with status in progress for fulfillment tracking; closed purchase orders migrate as historical records.
| Reflex ERP | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Chart of Accounts | Accounting Account1:1 | Fully supported | |
| Customers | Third Parties (Customer type)1:1 | Fully supported | |
| Vendors | Third Parties (Supplier type)1:1 | Fully supported | |
| Items | Products / Services1:1 | Mapping required | |
| Items / BOM Structures | BOM (Bill of Materials)1:1 | Fully supported | |
| Projects | Projects1:1 | Mapping required | |
| Open AR | Customer Invoices / Credit Notes1:1 | Mapping required | |
| Open AP | Supplier Invoices / Credit Notes1:1 | Mapping required | |
| Fixed Assets | Assets1:1 | Mapping required | |
| Work Orders | Production Orders / MRP1:1 | Mapping required | |
| Tax Codes | Tax / VAT Setup1:1 | Mapping required | |
| Users | Users1:1 | Fully supported | |
| Documents | Documents1:1 | Mapping required | |
| Sales Orders | Proposals / Customer Orders1:1 | Fully supported | |
| Purchase Orders | Supplier Orders1: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.
Reflex ERP gotchas
Intercompany banking does not work seamlessly
Minimum 5 Full Client Access Licenses creates a floor on user count migration
Module-spanning data relationships require careful sequencing
Direct database access requires customer-side coordination
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 source assessment
We audit the Reflex ERP instance via direct database queries or CCC portal access. We inventory the Chart of Accounts structure, third-party volumes (customers, vendors, contacts), item catalog size and BOM depth, project and work order record counts, open AR/AP aging buckets and cut-off date, fixed asset register, and document attachment count and storage size. We also assess the Reflex database encoding (Latin-1 vs UTF-8) and hosting model (customer-managed vs Reflex-hosted managed infrastructure) to determine whether database credentials or an export request is required. The discovery output is a written migration scope document with record counts, encoding confirmation, and a go/no-go on BOM and work order scope based on MRP module availability in the destination Dolibarr instance.
Dolibarr instance provisioning and module activation
We provision the destination Dolibarr instance either on the customer's self-hosted infrastructure or via DoliCloud at €9 per user per month. We activate the required modules based on the migration scope: Third Parties (Customers and Suppliers), Products/Services, Invoicing, Project Management, Stock/MRP (if BOM and Work Order scope is confirmed), Asset Management, and Accounting. We configure the accounting chart using the pcg_version framework matching the Reflex account structure. We set the Dolibarr database charset to utf8mb4 regardless of source encoding to prevent character corruption during import.
Data extraction, cleansing, and encoding conversion
We run direct SQL extracts from the Reflex database in dependency order: Chart of Accounts first (no dependencies), then third parties (Customers and Vendors in parallel), then Products/Items with BOM relationships extracted as a separate related set, then Projects, then open AR and AP at the agreed cut-off date, then fixed assets, then work orders, then sales and purchase orders, then document metadata. We convert all text fields from the Reflex encoding (detected during discovery) to UTF-8 before writing staging files. We deduplicate third-party records where Reflex maintains separate billing and shipping address records as distinct entities and Dolibarr uses a single third-party with address sub-table. We flag any BOM components missing from the item extract for customer resolution before BOM import.
Staging import and sandbox validation
We load staging data into the Dolibarr instance using Dolibarr's native import module (CSV or direct MySQL inserts for larger volumes) and validate record counts, referential integrity, and character rendering. We run the Dolibarr accounting trial balance after loading the Chart of Accounts and open AR/AP to confirm debits equal credits. We spot-check 25-50 records per object against the Reflex source data. Any encoding issues, missing required fields (Dolibarr requires third-party name, country ISO code, and third-party type for every record), or foreign key violations are corrected in the staging files and re-loaded. The customer reviews the validated staging and signs off before production migration.
Production migration in dependency order
We run the production migration in strict record-dependency order: Chart of Accounts, Third Parties (Customers then Vendors), Products (with BOM parent-child relationships resolved), Accounting configuration (tax codes, payment terms), Projects, Fixed Assets, Open AR (with customer lookups resolved), Open AP (with vendor lookups resolved), Sales Orders and Proposals, Purchase Orders, Work Orders (with MRP module activated and BOM lookups resolved), and document metadata with re-linkage instructions. Each phase emits a row-count reconciliation report. Any records rejected during production import are logged to an exception file for customer review and manual correction or re-import.
Cutover, document migration, and automation rebuild handoff
We freeze Reflex data entry at cutover, run a final delta migration for any records modified during the production migration window, and switch the customer's system of record to Dolibarr. We migrate document binary files from Reflex's document storage to Dolibarr's documents directory structure using the document-linkage map built during extraction, and verify that attachment links resolve in the Dolibarr UI. We deliver a written inventory of Reflex workflows, custom Reflex modules, and permission structures for the customer's admin to rebuild in Dolibarr's module activation and permission framework. We support a one-week post-go-live hypercare window for reconciliation issues.
Platform deep dives
Reflex ERP
Source
Strengths
Weaknesses
Dolibarr 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 Reflex ERP and Dolibarr 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
Reflex ERP: Not publicly documented.
Data volume sensitivity
Reflex 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 Reflex ERP to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your Reflex ERP 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 Reflex ERP
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.