ERP migration
Field-level mapping, validation, and rollback between PILOT:Suite and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
PILOT:Suite
Source
Dolibarr ERP
Destination
Compatibility
10 of 13
objects map 1:1 between PILOT:Suite and Dolibarr ERP.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from PILOT:Suite to Dolibarr is a platform-type migration: PILOT:Suite organizes manufacturing-centric data around Items, Warehouses, Vendors, Customers, Purchase Orders, Sales Orders, and GL Accounts; Dolibarr uses a modular PHP-based schema where Third Parties (with type flags) cover both customers and suppliers, Products cover items with optional stock tracking, and a separate accounting module covers GL entries. We extract Chart of Accounts balances and open AP/AR during discovery, resolve item-warehouse assignments during import, and recreate PILOT:Suite custom module fields as Dolibarr extra attributes using Dolibarr's built-in extrafields system or the CustomFields module. We do not migrate internal workflow rules, custom business logic, or PILOT:Suite-specific module configurations; we deliver a written inventory of these for the customer's admin to rebuild in Dolibarr's action/condition system. Migration sequencing preserves transactional continuity where source entities reference active destination entities, and we flag orphaned records referencing inactive or missing parents.
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 PILOT:Suite 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.
PILOT:Suite
Item
Dolibarr ERP
Product (or Service)
1:1PILOT:Suite Items map to Dolibarr Products with type=Product for physical goods and type=Service for non-inventory items. PILOT:Suite item properties (SKU, description, unit of measure, cost price, sell price) map to Dolibarr fields ref, label, units, cost_price, and price. If PILOT:Suite uses item variants, each variant becomes a separate Dolibarr Product; multi-variant handling requires scoping during discovery.
PILOT:Suite
Warehouse
Dolibarr ERP
Warehouse
1:1PILOT:Suite Warehouses map directly to Dolibarr Warehouses (stock_warehouse table). The stock module must be enabled in Dolibarr before migration. Warehouse address, manager, and status fields migrate as Warehouse properties. We resolve warehouse references on Item-warehouse assignment records during import so that stock quantities land in the correct warehouse.
PILOT:Suite
Item-Warehouse Assignment
Dolibarr ERP
Product-Stock
lossyPILOT:Suite item-warehouse assignments (stock quantities per item per warehouse) map to Dolibarr stock_product records linked to the product and warehouse. Each stock record is created after both the Product and Warehouse records exist in Dolibarr. We use Dolibarr's stock movement API to set initial stock levels rather than direct SQL writes to preserve trigger integrity.
PILOT:Suite
Customer
Dolibarr ERP
Third Party (type=Customer)
1:1PILOT:Suite Customers map to Dolibarr Third Parties with the Customer checkbox enabled. PILOT:Suite customer fields (name, address, phone, email, tax ID, payment terms) map to the corresponding Dolibarr fields. The customer code in PILOT:Suite becomes the code (ref) field in Dolibarr and is used as the dedupe key during import. We create the Third Party record before any linked Sales Orders or Invoices to satisfy the socid foreign key.
PILOT:Suite
Vendor
Dolibarr ERP
Third Party (type=Supplier)
1:1PILOT:Suite Vendors map to Dolibarr Third Parties with the Supplier checkbox enabled. Vendor fields (name, address, phone, email, tax ID, payment terms) migrate identically to Customer mapping. The dedupe key is the vendor code. Third Parties that are both customers and suppliers get both type flags set in Dolibarr.
PILOT:Suite
Purchase Order
Dolibarr ERP
Supplier Order
1:1PILOT:Suite Purchase Orders map to Dolibarr Supplier Orders (commande_fournisseur). Status mapping: PILOT:Suite Draft/Submitted/Confirmed/Closed maps to Dolibarr Draft/Validated/Approved/Closed. Line items map to order lines with Product reference, quantity, unit price, and VAT rate resolved. The Supplier link (socid) must resolve before order import; we create any missing supplier Third Parties in a pre-phase if the vendor is referenced but not yet in Dolibarr.
PILOT:Suite
Sales Order
Dolibarr ERP
Customer Order
1:1PILOT:Suite Sales Orders map to Dolibarr Customer Orders (commande). Status mapping parallels Purchase Orders. Line items migrate with Product reference, quantity, unit price, and VAT rate. The Customer link (socid) is resolved from the Third Party mapping. If PILOT:Suite open orders reference inactive customers, we flag them in the reconciliation report for the customer to reactivate or close before import.
PILOT:Suite
Open AP (Accounts Payable)
Dolibarr ERP
Supplier Invoice / Supplier Credit Note
1:1PILOT:Suite open AP items (unpaid vendor invoices, credit memos) map to Dolibarr Supplier Invoices (facture_fournisseur) and Supplier Credit Notes. Invoice status (unpaid/partial/paid) maps to Dolibarr payed field. We extract the vendor reference, invoice date, due date, amount, and VAT breakdown, and create the invoice before any linked payments. Payment records (bank transfers, checks) map to Dolibarr Payment objects linked to the invoice.
PILOT:Suite
Open AR (Accounts Receivable)
Dolibarr ERP
Customer Invoice / Customer Credit Note
1:1PILOT:Suite open AR items (unpaid customer invoices, credit memos) map to Dolibarr Customer Invoices (facture) and Customer Credit Notes. Invoice status maps to Dolibarr payed field. We extract the customer reference, invoice date, due date, amount, and VAT breakdown, and create the invoice before any linked payments. If PILOT:Suite tracks invoice PDF attachments, these migrate as ContentDocument records linked to the invoice.
PILOT:Suite
GL Account
Dolibarr ERP
Bank Account / Accounting Account
lossyPILOT:Suite GL Accounts map to Dolibarr Accounting module accounts (accounting_account table). If the customer migrates with Chart of Accounts balances, each PILOT:Suite GL Account becomes a Dolibarr Accounting Account with the account number, label, and type (asset, liability, equity, revenue, expense) preserved. The accounting module must be enabled and configured in Dolibarr before GL migration. Historical balance carryforward requires a opening balance entry (mouvement d'ouverture) in the accounting module.
PILOT:Suite
PILOT:Suite Custom Module Field
Dolibarr ERP
Extrafield
lossyPILOT:Suite custom fields configured in the system's module structure map to Dolibarr Extrafields on the corresponding object. We identify each PILOT:Suite custom field during discovery (field name, data type, module association), create the equivalent Dolibarr Extrafield on the target object before migration, and populate it during record import. Complex PILOT:Suite module-specific data that does not map to a standard Dolibarr object is documented as a custom mapping task; the customer may need the CustomFields Pro module for structured field management.
PILOT:Suite
User / Owner
Dolibarr ERP
User
1:1PILOT:Suite Users and record Owners map to Dolibarr Users. We match by email address. Any PILOT:Suite User without a matching Dolibarr User goes to the reconciliation queue for the customer's admin to provision before record import resumes. User permissions and role mappings from PILOT:Suite do not transfer; we deliver a permissions inventory for the admin to configure in Dolibarr's user management.
PILOT:Suite
Transaction History (historical documents)
Dolibarr ERP
Archived Invoices / Orders
1:1PILOT:Suite closed Purchase Orders, Sales Orders, Invoices, and Credit Memos that predate the migration window can be migrated as archived documents in Dolibarr if the customer requires full history. These migrate as read-only records (condensed to key fields) linked to the corresponding Third Parties. We scope the historical depth during discovery; migrations without historical document requirements skip this phase to reduce scope.
| PILOT:Suite | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| Item | Product (or Service)1:1 | Fully supported | |
| Warehouse | Warehouse1:1 | Fully supported | |
| Item-Warehouse Assignment | Product-Stocklossy | Fully supported | |
| Customer | Third Party (type=Customer)1:1 | Fully supported | |
| Vendor | Third Party (type=Supplier)1:1 | Fully supported | |
| Purchase Order | Supplier Order1:1 | Fully supported | |
| Sales Order | Customer Order1:1 | Fully supported | |
| Open AP (Accounts Payable) | Supplier Invoice / Supplier Credit Note1:1 | Fully supported | |
| Open AR (Accounts Receivable) | Customer Invoice / Customer Credit Note1:1 | Fully supported | |
| GL Account | Bank Account / Accounting Accountlossy | Fully supported | |
| PILOT:Suite Custom Module Field | Extrafieldlossy | Fully supported | |
| User / Owner | User1:1 | Fully supported | |
| Transaction History (historical documents) | Archived Invoices / 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.
PILOT:Suite gotchas
Vendor-implemented system with no public developer portal
Process-industry data model differs from discrete-manufacturing MES
No published reviews complicate gotcha discovery
Mobile apps and web UI run against the same relational database
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 PILOT:Suite data audit
We audit the source PILOT:Suite instance to extract entity counts (Items, Warehouses, Vendors, Customers, Purchase Orders, Sales Orders, GL Accounts), identify custom module fields and their data types, assess open AP/AR volume and aging, review historical transactional depth requirements, and identify any inactive entities that will create orphaned references. We also confirm the target Dolibarr version, module activation state, and hosting environment. The discovery output is a written migration scope, a custom field inventory, and a dependency graph for sequencing.
Dolibarr schema preparation and module activation
We enable the required Dolibarr modules (Third Party, Product, Stock, Supplier Order, Customer Order, Supplier Invoice, Customer Invoice, Accounting) based on the discovered data. We create the corresponding Extrafields for each PILOT:Suite custom field, configure the chart of accounts structure for GL migration, and set up Warehouse records matching the PILOT:Suite warehouse list. Third Party type flags (Customer, Supplier, or both) are configured as a group decision during scoping. Schema preparation happens in the target Dolibarr instance with admin credentials.
Sandbox migration and reconciliation
We run a full migration into a test environment (or a fresh Dolibarr install) using production-equivalent data volume. The customer's operations lead reconciles record counts (Items in, Products created, Warehouses created, Vendors in, Customers in, Orders in, Invoices in), spot-checks 25-50 records against the PILOT:Suite source, and verifies that stock levels, account balances, and open invoice amounts match. Mapping corrections are documented and applied to the production migration plan. No production writes happen until this phase is signed off.
Third Party and User provisioning
We create all Dolibarr Third Parties (Customers and Suppliers) in dependency order, using PILOT:Suite entity codes as the ref field with uniqueness checks applied. We create or map Dolibarr Users against PILOT:Suite record Owners by email match. Owners without a matching Dolibarr User go to a reconciliation queue for the customer's admin to provision before record import resumes. Third Parties must be complete before any linked Orders or Invoices can be imported.
Product, Warehouse, and Stock migration
We import PILOT:Suite Items as Dolibarr Products (type=Product or Service) and Warehouses as Dolibarr Warehouse records. Once both are present, we import item-warehouse stock quantities as stock movements using Dolibarr's stock movement API, setting initial stock levels per product per warehouse. If PILOT:Suite uses variants or BOM, we scope these during discovery and create each variant as a separate Product or flag BOM for the Manufacturing module (experimental) rebuild.
Order and Invoice migration with AP/AR resolution
We import Purchase Orders and Sales Orders after Third Parties are resolved, mapping status values to Dolibarr equivalents and preserving line items with product references, quantities, unit prices, and VAT rates. Open AP (Supplier Invoices) and Open AR (Customer Invoices) migrate with payment status preserved; we create invoice records before any linked payment records. If PILOT:Suite tracks invoice PDFs, we attach them as ContentDocument records linked to the invoice.
GL migration and accounting balance carryforward
If the migration scope includes Chart of Accounts balances or historical GL entries, we activate the Dolibarr accounting module, create the account structure matching PILOT:Suite GL Accounts, and post opening balance entries (mouvement d'ouverture) to carry forward account balances at the migration date. Historical GL transactions beyond the opening balance are migrated as archived entries at the customer's request and scoped during discovery. We validate that debit and credit totals balance in Dolibarr before closing the accounting migration phase.
Cutover, delta migration, and handoff
We freeze PILOT:Suite writes during the cutover window, run a final delta migration of any records created or modified during the migration process, validate total record counts against the discovery baseline, and enable Dolibarr as the system of record. We deliver the custom field inventory, permissions mapping, and any custom module data that could not be automatically mapped as a written handoff document for the customer's admin. We do not rebuild PILOT:Suite internal workflow rules, custom business logic, or module-specific configurations in Dolibarr as part of the migration scope; these require a separate configuration engagement.
Platform deep dives
PILOT:Suite
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Moderate ERP migration. 2 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across PILOT:Suite and Dolibarr ERP.
Object compatibility
2 of 8 objects need a manual workaround.
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
PILOT:Suite: Not publicly documented..
Data volume sensitivity
PILOT:Suite 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 PILOT:Suite to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your PILOT:Suite 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 PILOT:Suite
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.