ERP migration
Field-level mapping, validation, and rollback between Dolibarr ERP and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
Dolibarr ERP
Source
Epicor Prophet 21
Destination
Compatibility
9 of 12
objects map 1:1 between Dolibarr ERP and Epicor Prophet 21.
Complexity
BStandard
Timeline
6-10 weeks
Try the reverse
Overview
Moving from Dolibarr ERP to Epicor ERP is a migration from a modular open-source ERP built for SMEs and freelancers to a vertically specialized enterprise platform targeting manufacturing, distribution, and retail operations. Dolibarr stores custom fields as opaque JSON in an extraoptions column, while Epicor uses standard relational UD fields that require a pre-migration deserialization and type-mapping step. There is no documented Dolibarr REST API for bulk operations, so we access Dolibarr's MySQL or PostgreSQL database directly with read-only credentials, bypassing the web application entirely during the migration window. Epicor's parent-child object architecture (Part -> PartSite, Customer -> CustomerContact, OrderHed -> OrderDtl) means we must sequence all parent-record inserts before child-record imports to satisfy foreign key constraints. We do not migrate Dolibarr Workflows, Dolistore add-on modules, binary file attachments, or HR-specific leave and expense records that depend on Epicor's HR module being licensed. We deliver a written inventory of any unrecoverable automation and HR configuration for the customer's Epicor administrator to rebuild 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.
Source platform
Dolibarr ERP platform overview
Scorecard, SWOT, gotchas, and pricing for Dolibarr ERP.
Destination platform
Epicor Prophet 21 platform overview
Scorecard, SWOT, gotchas, and pricing for Epicor Prophet 21.
Data migration guide
The complete Epicor ERP 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
Epicor ERP migration checklist
Pre- and post-cutover tasks for moving onto Epicor Prophet 21.
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 Epicor Prophet 21, 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, llx_socpeople)
Epicor Prophet 21
Customer / Supplier / Contact
1:1Dolibarr's llx_societe stores customers, suppliers, and prospects in a single table differentiated by Tiers type codes (0=customer, 1=supplier, 2=lead). llx_socpeople stores contacts linked to llx_societe by fk_soc. We split each Dolibarr Third Party into the equivalent Epicor Customer or Supplier entity plus a related Contact record. Address fields (street, zip, town, country) map to Epicor's Address table with addr fields; we create a Company record in Epicor first, then link all Contact records before any Order or Invoice import. The Dolibarr Tiers code maps to Epicor's Customer_Tye value and the Customer/Ty type classification.
Dolibarr ERP
Product / Service (llx_product)
Epicor Prophet 21
Part / Part Plant
1:1Dolibarr llx_product with type=0 (product) maps to Epicor Part with Part.TypeCode=Part; type=1 (service) maps to Epicor Part with Part.TypeCode=Service. Price fields from llx_product require precision normalization because Dolibarr allows up to 5 decimal places on unit price by default while Epicor applies a decimal-separator configuration per company. We record Dolibarr's Setup > Limits accuracy settings during discovery and apply matching field-level formatting in Epicor. Stock levels in llx_product_stock map to PartWhse quantities in Epicor with the warehouse reference resolved from llx_entrepot.
Dolibarr ERP
Commercial Proposal (llx_proposal)
Epicor Prophet 21
QuoteHed / QuoteDtl
1:1Dolibarr Proposals map to Epicor QuoteHed (header) and QuoteDtl (line) records. Dolibarr's integer status codes (0=draft, 1=validated, 2=signed, 3=refused, 4=billed) map to Epicor's QuoteHed.QuoteStage values. Proposal lines reference llx_product IDs that we resolve to Epicor PartNum during import, and we create a QuoteCnt record for the linked third-party contact. Historical Proposals with status signed or billed are migrated with their original dates; draft proposals are migrated as open quotes requiring review in Epicor before use.
Dolibarr ERP
Customer Order (llx_commande)
Epicor Prophet 21
OrderHed / OrderDtl
1:1Dolibarr Customer Orders map to Epicor OrderHed (header) and OrderDtl (line). OrderHed.BTCustomer indicates whether the order was entered by the customer portal, which is set to false for all migrated orders. We resolve Dolibarr's fk_soc (third-party reference) to the Epicor Customer.CustNum and map fk_user_author (order owner) to Epicor's SalesRep.SalesRepCode. The Dolibarr order date maps to OrderHed.OrderDate and the payment terms reference maps to OrderHed.TermsCode via a lookup table derived during scoping.
Dolibarr ERP
Invoice (llx_facture, llx_paiement, llx_paiement_facture)
Epicor Prophet 21
InvcHead / InvcDtl / CashHead
lossyDolibarr invoice migration is the most complex object because it requires preserving three related tables simultaneously. llx_facture (header) maps to Epicor InvcHead; llx_facturedet (lines) maps to InvcDtl; llx_paiement (payments) maps to Epicor CashHead with the payment method resolved via the payment type mapping (DTYPE_CHQ to Check, DTYPE_VIR to ElectronicTransfer); and llx_paiement_facture links payments to invoices which maps to InvcHead应用中 with matching InvcHead.InvoiceNum and CashHead.Reference. We process invoices in two phases: first all InvcHead and InvcDtl records, then all CashHead records with their links. Open invoices and closed invoices migrate with their original dates and status flags preserved.
Dolibarr ERP
Bank Account and Transactions (llx_bank)
Epicor Prophet 21
CashHead / BankAcct
1:1Dolibarr llx_bank records hold bank transaction rows linked to llx_bank_account. We map llx_bank rows to Epicor CashHead with the transaction date, amount, and label preserved. The reconciliation flag from Dolibarr (reconciled column) sets CashHead.LegalNumber status. We link CashHead to the corresponding Epicor BankAcct by matching the bank account reference or IBAN from Dolibarr. Epicor's full bank reconciliation workflow is configured post-migration by the customer's Epicor administrator.
Dolibarr ERP
Project and Task (llx_projet, llx_projet_task)
Epicor Prophet 21
Project / ProjectTask
1:1Dolibarr Projects map to Epicor Project with Project.Workspace_Job closed flag set based on the project's active status. Task rows in llx_projet_task map to Epicor ProjectTask with work date, estimated hours, and task owner preserved. Time budgets stored in llx_projet_task_time migrate to ProjectTaskBudget entries in Epicor. Dolibarr project milestones (project milestone dates from the project record) map to Epicor ProjectPhase entries with Phase start and end dates carried over.
Dolibarr ERP
Custom Fields (llx_extrafields via extraoptions JSON)
Epicor Prophet 21
UD (User-Defined) Fields on standard tables
lossyThis is the most technically involved mapping step. Dolibarr's extrafields system serializes custom field definitions and values as JSON inside the extraoptions column on the parent table (llx_societe, llx_product, llx_proposal, llx_commande, llx_facture, llx_projet, llx_user). We parse each object's extraoptions JSON at migration time, deserialize every key-value pair, and map each to a typed Epicor UD field (UD01, UD05, or a named UD column on the parent table). We flag any Dolibarr file-path references stored as text fields that cannot map cleanly to Epicor's UD field types. The destination UD fields are pre-created during the schema design phase before any data migration begins.
Dolibarr ERP
User Accounts (llx_user)
Epicor Prophet 21
User / SalesRep
1:1Dolibarr llx_user records migrate as Epicor User records and corresponding SalesRep records. We map Dolibarr's login email to Epicor.UserName and preserve the user type (internal vs external), status, and permission group memberships. We do not migrate Dolibarr password hashes because they are salted bcrypt with no exportable format; users reset passwords through Epicor's standard invitation flow after migration. Active/inactive status is preserved; users marked inactive in Dolibarr are provisioned as inactive in Epicor to prevent inadvertent access.
Dolibarr ERP
Agenda / Calendar Events (llx_actioncomm)
Epicor Prophet 21
Calendar / DataTable (Engagement migration inventory)
lossyDolibarr calendar events in llx_actioncomm are migrated as a written inventory for the customer's Epicor administrator to rebuild in Epicor's Kinetic calendar module or a connected third-party scheduling tool. Dolibarr's recurring event rules and fullcal integration metadata do not have a direct Epicor equivalent; we document the event type, date range, owner, linked third-party, and linked project in a CSV export. Epicor's Kinetic UI includes a native calendar component that can be configured for similar scheduling purposes by the administrator.
Dolibarr ERP
Attachments (llx_document references)
Epicor Prophet 21
Not migrated (file inventory delivered)
1:1Dolibarr attachments are stored as files on the filesystem with references in llx_document pointing to physical file paths. We do not migrate binary file attachments as part of the standard migration scope because Dolibarr stores files in a flat filesystem structure with no consistent relational reference that maps to Epicor's document management model. We export a manifest of all attachment file paths linked to their parent record (third party, product, invoice, project) and deliver it to the customer for manual re-upload to Epicor's SharePoint or Linked attachments module post-migration.
Dolibarr ERP
Warehouse / Stock Locations (llx_entrepot, llx_product_stock, llx_stock_mouvement)
Epicor Prophet 21
Warehouse / PartWhse / PartTran
1:1Dolibarr warehouses (llx_entrepot) map to Epicor Warehouse records. Stock levels in llx_product_stock map to PartWhse records with on-hand quantities and warehouse location references. Stock movement history in llx_stock_mouvement is migrated as PartTran records in Epicor with transaction type labeled as DMB-Transfer (Debit Memo Transfer) as the closest equivalent, with the original movement date, quantity, and warehouse from/to fields preserved. This migration requires Epicor's Inventory Management module to be licensed.
| Dolibarr ERP | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Third Party (llx_societe, llx_socpeople) | Customer / Supplier / Contact1:1 | Fully supported | |
| Product / Service (llx_product) | Part / Part Plant1:1 | Fully supported | |
| Commercial Proposal (llx_proposal) | QuoteHed / QuoteDtl1:1 | Fully supported | |
| Customer Order (llx_commande) | OrderHed / OrderDtl1:1 | Fully supported | |
| Invoice (llx_facture, llx_paiement, llx_paiement_facture) | InvcHead / InvcDtl / CashHeadlossy | Fully supported | |
| Bank Account and Transactions (llx_bank) | CashHead / BankAcct1:1 | Fully supported | |
| Project and Task (llx_projet, llx_projet_task) | Project / ProjectTask1:1 | Fully supported | |
| Custom Fields (llx_extrafields via extraoptions JSON) | UD (User-Defined) Fields on standard tableslossy | Fully supported | |
| User Accounts (llx_user) | User / SalesRep1:1 | Fully supported | |
| Agenda / Calendar Events (llx_actioncomm) | Calendar / DataTable (Engagement migration inventory)lossy | Fully supported | |
| Attachments (llx_document references) | Not migrated (file inventory delivered)1:1 | Fully supported | |
| Warehouse / Stock Locations (llx_entrepot, llx_product_stock, llx_stock_mouvement) | Warehouse / PartWhse / PartTran1: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.
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
Epicor Prophet 21 gotchas
Third-party bolt-on integrations complicate migration scope
Dirty data without standardized processes compounds migration risk
SDK customizations and BPMs may not survive platform upgrades
Report-based export only for non-technical users
Per-user pricing model requires accurate user count before migration planning
Pair-specific challenges
Migration approach
Discovery and migration scope definition
We audit the source Dolibarr instance by querying its MySQL or PostgreSQL database directly with read-only credentials. We inventory all active modules (CRM, Invoicing, Stock, Project, HR if enabled), count records per table (llx_societe, llx_product, llx_proposal, llx_commande, llx_facture, llx_paiement, llx_projet, llx_user), check for custom fields in the extraoptions JSON, identify any Dolistore add-on tables, and assess the Dolibarr version and database engine version. We pair this with an Epicor edition and module review of the destination system to confirm which Epicor modules are licensed (Finance, Distribution, Manufacturing, Inventory, Project, HR). The discovery output is a written migration scope document with record counts, object mapping, and a migration sequencing plan.
Schema design and Epicor UD field pre-creation
We review the Dolibarr extraoptions JSON from each migrated object and design the Epicor UD field schema in the destination Epicor company. We pre-create all required UD fields on the relevant Epicor tables (Customer, Part, QuoteHed, OrderHed, InvcHead, Project) before any data migration begins, using Epicor's REST API to deploy the schema. For multi-entity Epicor configurations, we confirm the target Epicor Company ID and ensure the UD field template applies across all relevant company codes.
Targeted data extraction from Dolibarr database
We run targeted SELECT queries against each Dolibarr table using a read-only database account, exporting each object to a staging CSV file. We process the extraoptions JSON deserialization for each object with non-null extraoptions values, flattening the JSON into named columns that match the Epicor UD field names defined in schema design. We export payments (llx_paiement) and payment-to-invoice links (llx_paiement_facture) separately for post-processing. Dolibarr attachments are not exported as binary files; we export the llx_document reference manifest (file path, parent table, parent ID) for the customer's manual re-upload inventory.
Epicor staging import and reconciliation
We import all records into Epicor in dependency order using Epicor's REST API. Customer records import first (with Customer.CustNum assigned); Contact records import second with fk_soc resolved to Customer.CustNum; Part records import third; Project records import fourth. QuoteHed, OrderHed, and InvcHead import after their parent Customer and Part records are committed. Payment records (mapped to CashHead) import last. Each phase emits a row-count reconciliation report comparing source Dolibarr record count against successfully imported Epicor record count. We resolve any OwnerId (SalesRep) references by matching Dolibarr user email to Epicor User.UserName.
Sandbox validation and mapping corrections
If the destination Epicor tenant includes a Sandbox company for pre-production testing, we run a full migration cycle against the Sandbox to validate Epicor validation rules, required field constraints, picklist whitelists, and any custom business logic that may reject migrated records. We coordinate with the customer's Epicor administrator to temporarily disable blocking validation rules during the sandbox migration or to extend them with a migration-context bypass flag. Any mapping corrections identified in sandbox are applied before the production migration begins.
Production migration and cutover handoff
We run the production migration in the same phased sequence validated in sandbox, with a final delta migration to capture any records modified in Dolibarr during the migration window. After the last phase commits, we deliver the attachment manifest (file path inventory), the calendar event CSV for Epicor administrator rebuild, and the Dolibarr Workflow and automation inventory document. We do not rebuild Dolibarr Workflows, Dolistore add-on automations, or HR leave/expense configurations inside the migration scope; these are documented for the customer's Epicor administrator to configure post-migration. We support a five-business-day post-migration hypercare window to resolve any data reconciliation issues raised by the customer's team.
Platform deep dives
Dolibarr ERP
Source
Strengths
Weaknesses
Epicor Prophet 21
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 Dolibarr ERP and Epicor Prophet 21.
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
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 Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your Dolibarr ERP to Epicor Prophet 21 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 Epicor Prophet 21
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.