ERP migration

Migrate from Fulfil to Dolibarr ERP

Field-level mapping, validation, and rollback between Fulfil and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.

Fulfil logo

Fulfil

Source

Dolibarr ERP

Destination

Dolibarr ERP logo

Compatibility

83%

10 of 12

objects map 1:1 between Fulfil and Dolibarr ERP.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Fulfil logo

Fulfil

What's pushing teams away

  • The built-in reporting suite is widely considered basic, forcing users to export to external BI tools for any non-standard analysis and creating friction in day-to-day decision-making.
  • Initial setup is described as challenging when company processes are still in flux, leading to rework and reconfiguration costs before the system stabilizes.
  • V2 platform glitches and AI reporting failures have caused delays in operations, with some users reporting unresolved support tickets dragging on for weeks.
  • Customer support responsiveness varies significantly, with mid-market users reporting longer wait times and complication escalation issues.
  • Scaling beyond basic inventory tracking into complex landed costs or multi-entity financials requires significant customization that is not well documented.

Choosing

Dolibarr ERP logo

Dolibarr ERP

What's pulling them in

  • Free open-source core with no per-user license fee makes it the lowest-cost entry point for small teams needing ERP and CRM in one package.
  • Self-hosted deployment gives full data ownership and eliminates vendor lock-in, especially attractive to businesses with compliance requirements.
  • Modular architecture means teams enable only the features they use, keeping the interface uncluttered and reducing learning curve.
  • Fast installation with no technical knowledge required — one reviewer set up multiple businesses in minutes using their own hosting.
  • Active community forum and marketplace of third-party add-ons provide support and extension options without mandatory subscription costs.

Object mapping

How Fulfil objects map to Dolibarr ERP

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

maps to

Dolibarr ERP

Orders (Commande client)

1:1
Fully supported

Fulfil 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)

maps to

Dolibarr ERP

Products (Produit)

1:1
Fully supported

Fulfil 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

maps to

Dolibarr ERP

Supplier Orders (Commande fournisseur)

1:1
Fully supported

Fulfil 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

maps to

Dolibarr ERP

Warehouses (Entrepots)

1:1
Fully supported

Multi-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

maps to

Dolibarr ERP

Third Parties (Tiers)

1:1
Mapping required

Fulfil 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

maps to

Dolibarr ERP

Supplier Invoices (Facture fournisseur)

1:1
Mapping required

Fulfil 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)

maps to

Dolibarr ERP

Product Variants or Attributes

lossy
Mapping required

Fulfil 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

maps to

Dolibarr ERP

Stock Lots (Lot de stock)

1:1
Fully supported

Lot 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

maps to

Dolibarr ERP

BOMs and Work Orders (Nomenclature / Ordres de fabrication)

1:1
Mapping required

Where 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

maps to

Dolibarr ERP

Accounting Account (Compte comptable)

lossy
Mapping required

Financial 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

maps to

Dolibarr ERP

Dolibarr User (Utilisateur)

1:1
Fully supported

Fulfil 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

maps to

Dolibarr ERP

Shipments (Expeditions)

1:1
Fully supported

Fulfil 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.

Gotchas + challenges

What specifically takes care here

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 logo

Fulfil gotchas

Medium

Reporting export requires API enumeration rather than bulk dumps

Medium

Custom product attributes are order-line metadata, not a distinct object

Low

No publicly documented API rate limits or throttle headers

Low

Purchase order receipts must be migrated before vendor closeout

Medium

Multi-entity financials require manual chart of accounts mapping

Dolibarr ERP logo

Dolibarr ERP gotchas

High

Foreign key constraint errors on cross-distribution database restore

High

SQL injection vulnerabilities in version 9.0.1

Medium

Custom fields stored as JSON in extraoptions require field-by-field deserialization

Medium

Decimal precision and rounding configuration affects price fields

Low

No native iOS/Android app forces reliance on browser

Pair-specific challenges

  • Fulfil API lacks documented rate limits

    Fulfil does not publish per-tenant rate limits or throttle header responses in its API documentation. During large-volume extractions (orders, items, receiving records), we pace conservatively with retry logic and exponential backoff to avoid triggering undocumented throttling. If throttling is encountered mid-migration, we resume from the last confirmed record checkpoint. This is a known constraint of Fulfil's open API and requires extraction scoping calls to account for pagination overhead on accounts with multi-year histories.

  • Custom product attributes are order-line metadata, not a distinct object

    Engraving, embroidery, and made-to-order customization data in Fulfil is stored as extended attributes on Sales Order Lines rather than as a standalone object. This means attribute preservation depends on correctly parsing line-level JSON during extraction. We flatten line metadata into a structured format that maps into Dolibarr product variant rows or product_extra fields, but the mapping is tenant-specific and must be validated during sandbox migration before production transfer.

  • Purchase order receipts must migrate before vendor closeout

    When migrating out of Fulfil, open Purchase Orders with partial receipts must have their receiving records transferred before vendor accounts are closed in the source system. Closing vendors prematurely creates orphaned receiving entries. We sequence vendor-related records late in the migration run to ensure all associated transactions are already landed in Dolibarr's supplier order and receipt modules.

  • Dolibarr has no native bulk data API

    Dolibarr does not expose a REST or Bulk API for data ingestion at the scale required for ERP migrations. Its built-in Import Module accepts CSV files one table at a time with predefined profiles, which is designed for occasional data entry, not high-volume migrations. We work around this by generating schema-matched CSV files aligned to Dolibarr's llx_* table structure and loading via direct database inserts with transaction safety, or through Dolibarr's CLI import mechanism where available. This requires pre-mapping every column to the exact Dolibarr field name and type before any load begins.

  • Multi-entity financials require manual chart of accounts mapping

    Fulfil supports multi-entity deployments where each legal entity has its own chart of accounts. There is no automated cross-walk export for account codes. Dolibarr's accounting module uses a flat account structure with one chart per installation; multi-entity setups in Dolibarr require either separate Dolibarr instances per entity or custom accounting configuration. During migration scoping, we collect the full account tree for each Fulfil entity and build a manual mapping table before any financial record transfer begins.

Migration approach

Six steps for a successful Fulfil to Dolibarr ERP data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Fulfil logo

Fulfil

Source

Strengths

  • Native Shopify, Amazon, and SPS Commerce integrations with minimal configuration overhead.
  • Multi-location inventory with full lot and serial number traceability out of the box.
  • Purchase order and receiving workflow that replaces standalone procurement software.
  • Custom product workflows supporting engraving, embroidery, and made-to-order routing.
  • Open REST API that supports custom integrations and data extraction.

Weaknesses

  • Built-in reporting is considered basic and inadequate for non-standard analytical needs.
  • Initial implementation complexity when business processes are still in flux.
  • V2 platform stability concerns with occasional glitches and AI reporting failures.
  • Customer support responsiveness is inconsistent for mid-market accounts.
  • Complex landed cost and multi-entity financials require significant undocumented customization.
Dolibarr ERP logo

Dolibarr ERP

Destination

Strengths

  • Free core software with AGPL license and no per-user mandatory fee for self-hosted deployments.
  • Modular architecture lets teams activate only needed features, keeping the interface focused and the database lean.
  • Self-hosted option provides full data sovereignty and avoids recurring SaaS subscription costs.
  • Built-in CSV/Excel import and export wizard with saved profiles simplifies recurring data operations.
  • Low-code Module Builder allows functional extensions without writing PHP code.

Weaknesses

  • No native documented REST API for programmatic bulk operations — all migrations depend on the import/export wizard or direct database access.
  • Reporting and analytics are weak without paid add-ons, and built-in charts are limited compared to modern SaaS platforms.
  • UI design is described as dated by multiple reviewers, with infrequent visual updates to the default theme.
  • Community-only support for self-hosted deployments means no SLA or guaranteed response time for issues.
  • Security vulnerabilities (CVE-2024-5314, CVE-2024-5315) in version 9.0.1 with no immediate patch reported.

Complexity grading

How hard is this migration?

Standard ERP migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Fulfil and Dolibarr ERP.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Fulfil: Not publicly documented.

  • Data volume sensitivity

    B

    Fulfil doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Fulfil to Dolibarr ERP migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Fulfil to Dolibarr ERP data migrations

Answers to the questions buyers ask most during Fulfil to Dolibarr ERP migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between four and eight weeks for accounts under 10,000 orders, 2,000 items, and a single Fulfil entity with straightforward inventory. Migrations with multi-entity Fulfil deployments, manufacturing work orders with complex BOMs, large landed-cost inventory records, or extensive custom product attribute data requiring bespoke line-attribute flattening move to ten to sixteen weeks because of schema preparation, manual account mapping, and custom attribute transformation work.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Fulfil.
Land in Dolibarr ERP, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day