ERP migration
Field-level mapping, validation, and rollback between Fulfil and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
Fulfil
Source
Dolibarr ERP
Destination
Compatibility
10 of 12
objects map 1:1 between Fulfil and Dolibarr ERP.
Complexity
BStandard
Timeline
4-8 weeks
Overview
Moving from Fulfil to Dolibarr is a shift from a cloud-native SaaS ERP built for ecommerce brands to a self-hosted, open-source ERP-CRM with modular PHP architecture. Fulfil's REST API exposes operational objects (Orders, Items, Purchase Orders, Warehouses, Customers) but stores custom product attributes like engraving and made-to-order options as order-line metadata rather than distinct objects, requiring us to parse and flatten that extended line structure during extraction. Dolibarr has no native bulk-data API — migrations rely on Dolibarr's CSV Import Module and direct database writes, which means we build structured CSV files matched to Dolibarr's table schema for each object type. Multi-entity Fulfil deployments require manual chart of accounts mapping before any financial records transfer, because Dolibarr's accounting module uses a flat account structure that does not auto-cross-reference entity hierarchies. Workflows, automations, and native Shopify or Amazon channel integrations do not migrate; we deliver a written inventory of these for the customer's team to rebuild or reconfigure post-migration.
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 Fulfil 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.
Fulfil
Sales Orders
Dolibarr ERP
Orders (Commande client)
1:1Fulfil Sales Orders map to Dolibarr Customer Orders (ThirdParty as customer). Order status, line items, fulfillment state, channel attribution, and shipping details transfer as structured CSV rows matched to Dolibarr's llx_commande and llx_commandedet tables. We resolve the Fulfil customer reference to a Dolibarr ThirdParty ID before order insert to satisfy the foreign key constraint.
Fulfil
Items (Inventory)
Dolibarr ERP
Products (Produit)
1:1Fulfil Items (SKU, description, cost, price, reorder point, bin location) map to Dolibarr Products. Custom fields on the Item object require explicit field-level mapping per tenant. Lot and serial number assignments carry through as Dolibarr stock lot entries. We generate one product row per Fulfil item, with the type field set to 0 (product) or 1 (service) based on the Fulfil item type attribute.
Fulfil
Purchase Orders
Dolibarr ERP
Supplier Orders (Commande fournisseur)
1:1Fulfil Purchase Orders map to Dolibarr Supplier Orders. We sequence PO migration after warehouse stock records are landed, because Dolibarr's receiving workflow ties receipts to the supplier order and inventory location. Open POs with partial receipts carry both the order header and associated receiving lines. Vendor assignment resolves to the Dolibarr ThirdParty ID before order insert.
Fulfil
Warehouses / Locations
Dolibarr ERP
Warehouses (Entrepots)
1:1Multi-warehouse configurations with bin-level location data map to Dolibarr Warehouses. We map each Fulfil location and its associated stock levels as separate inventory snapshots imported into Dolibarr's llx_product_stock table. Bin-level detail in Fulfil that cannot be represented as a Dolibarr Warehouse is noted in the scoping document for manual configuration post-migration.
Fulfil
Customers
Dolibarr ERP
Third Parties (Tiers)
1:1Fulfil Customers map to Dolibarr Third Parties. Contact details, billing address, shipping addresses, and account-level pricing tiers transfer as structured rows. Custom fields on the Customer object require explicit field-level mapping per tenant. Dolibarr consolidates customers and suppliers into a single ThirdParty object with a Type field (Customer/Supplier/Both), so we set the type value based on Fulfil's customer classification.
Fulfil
Bills and Vendor Invoices
Dolibarr ERP
Supplier Invoices (Facture fournisseur)
1:1Fulfil vendor invoice records in the financials module export to Dolibarr Supplier Invoices. Mapping depends on the destination's chart of accounts structure, which we establish during scoping. Open invoices transfer as unpaid; historical invoices transfer with payment status. We do not migrate paid and fully reconciled invoices unless the customer specifically requests historical financial audit data.
Fulfil
Custom Product Options (Engraving, Made-to-Order)
Dolibarr ERP
Product Variants or Attributes
lossyFulfil stores custom product attributes as extended attributes on Sales Order Lines rather than as a standalone object. We extract these as structured line properties and map them to Dolibarr product variant rows (one variant per attribute combination) or to product_extra fields if the Dolibarr installation has a custom attributes module enabled. The flattening approach is validated during sandbox migration before production import.
Fulfil
Lot and Serial Numbers
Dolibarr ERP
Stock Lots (Lot de stock)
1:1Lot tracking and serial number assignments on Fulfil Items carry through as Dolibarr stock lot entries. Each lot is tied to a product and an inventory transaction (receiving or adjustment) at migration time. We preserve traceability by setting lot_number, batch_number, and expiry date from the Fulfil lot record, and linking the lot to the corresponding product stock entry.
Fulfil
Manufacturing / Work Orders
Dolibarr ERP
BOMs and Work Orders (Nomenclature / Ordres de fabrication)
1:1Where Fulfil's manufacturing module is in use, work orders, BOMs, and production steps are accessible via API. Complex BOM hierarchies with multi-level assemblies may require manual sequencing in Dolibarr because Dolibarr's BOM module handles single-level bills of materials natively but nests BOMs through production orders rather than through a recursive product structure. We map top-level BOM and work order data; deeply nested assemblies are flagged for manual post-migration configuration.
Fulfil
Chart of Accounts
Dolibarr ERP
Accounting Account (Compte comptable)
lossyFinancial accounts are exportable from Fulfil but require manual mapping against Dolibarr's chart of accounts. Multi-entity Fulfil deployments (each legal entity with its own chart of accounts) require separate account mapping tables per entity. We collect the full account tree for each entity during scoping, build the manual mapping table with the customer's finance team, and apply it as an account code crosswalk CSV before any transaction records transfer.
Fulfil
Owner
Dolibarr ERP
Dolibarr User (Utilisateur)
1:1Fulfil Owners map to Dolibarr Users. We resolve owners by email match. Any Fulfil Owner without a matching Dolibarr User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Dolibarr's user model is simpler than Salesforce's — users are internal staff, not external contacts, so contact records attached to an owner reference migrate separately as ThirdParty records.
Fulfil
Sales Order Shipments / Fulfillments
Dolibarr ERP
Shipments (Expeditions)
1:1Fulfil fulfillment records map to Dolibarr Shipments. Each shipment carries the linked customer order, shipped items, quantities, carrier, and tracking number. We resolve the order reference to the migrated Dolibarr order ID before shipment insert. Partial shipments from the same Fulfil order become separate Dolibarr shipment records.
| Fulfil | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Sales Orders | Orders (Commande client)1:1 | Fully supported | |
| Items (Inventory) | Products (Produit)1:1 | Fully supported | |
| Purchase Orders | Supplier Orders (Commande fournisseur)1:1 | Fully supported | |
| Warehouses / Locations | Warehouses (Entrepots)1:1 | Fully supported | |
| Customers | Third Parties (Tiers)1:1 | Mapping required | |
| Bills and Vendor Invoices | Supplier Invoices (Facture fournisseur)1:1 | Mapping required | |
| Custom Product Options (Engraving, Made-to-Order) | Product Variants or Attributeslossy | Mapping required | |
| Lot and Serial Numbers | Stock Lots (Lot de stock)1:1 | Fully supported | |
| Manufacturing / Work Orders | BOMs and Work Orders (Nomenclature / Ordres de fabrication)1:1 | Mapping required | |
| Chart of Accounts | Accounting Account (Compte comptable)lossy | Mapping required | |
| Owner | Dolibarr User (Utilisateur)1:1 | Fully supported | |
| Sales Order Shipments / Fulfillments | Shipments (Expeditions)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.
Fulfil gotchas
Reporting export requires API enumeration rather than bulk dumps
Custom product attributes are order-line metadata, not a distinct object
No publicly documented API rate limits or throttle headers
Purchase order receipts must be migrated before vendor closeout
Multi-entity financials require manual chart of accounts mapping
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 migration scoping
We audit the source Fulfil instance across objects in scope (Sales Orders, Items, Purchase Orders, Warehouses, Customers, Bills, Work Orders), custom field counts per object, multi-entity entity count, order and item volume, and the presence of custom product attribute data on order lines. We pair this with a Dolibarr readiness check: PHP version, MySQL or PostgreSQL version, Dolibarr version, and which modules are currently enabled. The discovery output is a written migration scope document and a Dolibarr module activation plan for the customer's self-hosted instance.
Dolibarr target schema preparation
We configure the destination Dolibarr instance before any data transfer. This includes activating the required modules (Products, Stocks, Customers, Suppliers, Orders, Invoices, BOM, Projects), creating custom product attribute fields or enabling a product variants approach based on the scoping findings, setting up warehouses matching the Fulfil location structure, and building the chart of accounts crosswalk CSV for multi-entity deployments. Dolibarr runs on the customer's self-hosted environment, so we coordinate with their IT team for database access credentials and file system paths.
Sandbox migration and reconciliation
We run a full migration into a Dolibarr staging environment using production-like data volume. The customer's operations lead reconciles record counts and spot-checks 25-50 random records against the Fulfil source. Key validation checks include: order totals match, item SKU uniqueness is preserved, lot traceability is intact on inventory records, and customer address structures map correctly to Dolibarr ThirdParty format. Any mapping corrections happen here before production migration begins.
Custom product attribute extraction and flattening
We extract order-line custom attribute JSON from Fulfil Sales Orders and transform it into Dolibarr-compatible product variant rows or attribute fields. This step is bespoke per tenant because engraving, embroidery, and made-to-order metadata structures vary by business. We document the attribute transformation logic during sandbox migration and apply it consistently across the full order set during production migration.
Production migration in dependency order
We run production migration in record-dependency order: Warehouses (first, because stock records depend on them), Products (Items with lot and serial data), ThirdParties (Customers and Suppliers), Customer Orders, Supplier Orders with receiving records, Bills and Vendor Invoices, Work Orders and BOMs, and Shipments last. Each phase emits a row-count reconciliation report. Purchase order receipts are sequenced before vendor account closeout in Fulfil to avoid orphaned receiving entries.
Cutover, validation, and automation handoff
We freeze Fulfil writes during cutover and run a final delta migration of any records modified during the migration window. We validate order totals, customer address completeness, and lot traceability in Dolibarr before declaring the migration complete. We deliver a written inventory of Fulfil workflows, channel integrations (Shopify, Amazon, SPS Commerce), and custom product attribute configurations requiring rebuild in Dolibarr's self-hosted environment. We do not rebuild Fulfil automations as Dolibarr workflows inside the migration scope; that is a separate engagement.
Platform deep dives
Fulfil
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 Fulfil 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
Fulfil: Not publicly documented.
Data volume sensitivity
Fulfil 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 Fulfil to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your Fulfil 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 Fulfil
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.