ERP migration
Field-level mapping, validation, and rollback between WP ERP and Dolibarr ERP. We move data and schema; workflows are rebuilt natively in Dolibarr ERP.
WP ERP
Source
Dolibarr ERP
Destination
Compatibility
12 of 14
objects map 1:1 between WP ERP and Dolibarr ERP.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from WP ERP to Dolibarr is a platform exit, not a plugin switch. WP ERP stores its core data across WordPress custom tables (erp_hr_employees, erp_crm_contacts, erp_crm_companies, erp_ac_invoices, erp_ac_journal_entries) that standard WordPress exports do not capture. We perform direct MySQL extraction from each custom table, cross-referencing wp_users for HR employee assignments and resolving the contact-to-company relationship from erp_crm_contact_relations before inserting into Dolibarr's llx_socpeople, llx_societe, and llx_commercial tables. Dolibarr's modular architecture means we enable only the modules your migrated data requires (HRM, CRM, Accounting, Stock) and skip extensions (Payroll, Recruitment, Projects) you did not activate in WP ERP. Workflow automation rules stored as serialized PHP in wp_options cannot migrate directly; we extract the trigger-action structure and deliver a written map for manual rebuild in Dolibarr's built-in workflow engine.
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 WP 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.
WP ERP
erp_hr_employees
Dolibarr ERP
llx_societe (type=Contact) + llx_resource
1:1WP ERP employee records in erp_hr_employees include personal details, employment status, department, job title, hire date, compensation, and WordPress user ID (wp_user_id). We extract all fields and create Dolibarr Third Party records of type Contact for each employee, with the resource table (llx_resource) activated if the HR module is enabled in Dolibarr. The wp_user_id cross-reference is resolved by matching against the WordPress user email for identity confirmation before Dolibarr User provisioning.
WP ERP
erp_hr_departments
Dolibarr ERP
llx_holiday_category + llx_element_contact (context: department)
1:1Department records in erp_hr_departments are straightforward key-value structures with parent-child hierarchy (parent_id). We migrate the department tree as a top-down structure, creating Dolibarr categories or using a custom llx_c_departments lookup depending on which HR module variant the customer deployed. Employees are reattached to the correct department ID on the destination by resolving the department_id foreign key during the employee import phase.
WP ERP
erp_crm_contacts
Dolibarr ERP
llx_socpeople
1:1CRM contacts in erp_crm_contacts include name, email, phone, address, social profiles, lifecycle stage, source attribution, and a wp_user_id link. We extract all standard fields and map lifecycle_stage to a custom contact attribute in Dolibarr. If WooCommerce CRM integration is active, we detect contacts created by WooCommerce orders and flag duplicate candidates against manually created CRM contacts for customer-directed merge before export.
WP ERP
erp_crm_companies
Dolibarr ERP
llx_societe (type=Company)
1:1Company records in erp_crm_companies are linked to contacts via erp_crm_contact_relations. We preserve the association mapping during migration, creating Dolibarr Company (llx_societe with typent_code=2) records before contact import so that the llx_socpeople.fk_soc foreign key is satisfied at insert time. Company address, phone, email, website, and industry classification map to Dolibarr's corresponding societe fields.
WP ERP
erp_crm_contact_relations
Dolibarr ERP
llx_socpeople.fk_soc
lossyThe cross-reference table erp_crm_contact_relations defines which contacts belong to which companies. We resolve this relationship by first creating all llx_societe (Company) records, then inserting llx_socpeople (Contact) records with fk_soc pointing to the resolved Company ID. This ensures the Contact-Company relationship is intact in Dolibarr's commercial module from the first import phase.
WP ERP
erp_crm_activities
Dolibarr ERP
llx_actioncomm
1:1Activities (calls, meetings, emails, tasks) are stored in erp_crm_activities with polymorphic type fields distinguishing the activity type. We flatten them into Dolibarr's llx_actioncomm (agenda events) with the activity type mapped to actioncomm.type_code (AC_TEL for calls, AC_MT for meetings, AC_EMAIL for emails, AC_TASK for tasks). Notes attached to contacts or companies migrate as llx_c_actioncomm entries linked to the parent llx_socpeople or llx_societe record.
WP ERP
erp_ac_chart_of_accounts
Dolibarr ERP
llx_accounting_account
1:1Accounting chart of accounts records in erp_ac_chart_of_accounts include account code, name, type, subtype, and parent-child grouping. We preserve the full account structure including parent-child relationships for grouped accounts, mapping account type to Dolibarr's PCG type system (ACTIVA, PASSIVA, CHARGE, PRODUIT). The account codes are preserved verbatim to maintain compatibility with any existing financial reports or auditor references.
WP ERP
erp_ac_customers
Dolibarr ERP
llx_societe + llx_societe.accountancy_code_customer
1:1Accounting customers in erp_ac_customers link to CRM contacts via erp_crm_contacts.id. We resolve the cross-reference during migration so invoices land against the correct llx_societe record in Dolibarr. The customer accountancy code maps to llx_societe.accountancy_code_customer for tax reporting and audit trail.
WP ERP
erp_ac_vendors
Dolibarr ERP
llx_societe + llx_societe.accountancy_code_supplier
1:1Vendor records in erp_ac_vendors are migrated with their billing address, company name, and contact email. The vendor type is set in Dolibarr as typent_code=4 (Supplier). Vendor-ledger entries are linked via vendor_id foreign key in the purchase journal migration phase.
WP ERP
erp_ac_invoices
Dolibarr ERP
llx_facture
1:1Invoices in erp_ac_invoices include line items, tax codes, payment status, and due dates. We flag open invoices versus paid or voided invoices using the status field and map invoice status to Dolibarr's facture status (Validated, Paid, Abandoned). Line items migrate as llx_facturedet records with product references resolved to Dolibarr product IDs or simple label lines if no product match exists.
WP ERP
erp_ac_journal_entries
Dolibarr ERP
llx_accounting_bookkeeping
1:1Manual journal entries stored in erp_ac_journal_entries are migrated with debit/credit line items and the COA account mapping. We insert records into llx_accounting_bookkeeping (the direct accounting entry table) with proper debit/credit amounts and account references. Automated journal entries generated by the Payroll module migrate as standard journal lines with a payroll origin flag for audit purposes.
WP ERP
erp_ac_products (Inventory extension)
Dolibarr ERP
llx_product + llx_product_stock
1:1Inventory items from the WP ERP Inventory extension include item name, SKU, unit cost, current stock quantity, and reorder level. We migrate llx_product records (product type = 0 for stockable) with stock levels into llx_product_stock. Stock movement history migrates as a separate transaction log (llx_stock_mouvement) because most destination systems store movement history separately from current stock levels.
WP ERP
wp_posts (Document Manager extension files)
Dolibarr ERP
Dolibarr documents directory
lossyDocument Manager files stored in the WordPress media library or custom uploads directory are exported as binary files and re-uploaded to Dolibarr's documents directory, associated with the relevant entity (contact, company, invoice) via Dolibarr's document management linking. We export file metadata from the wp_posts table filtered by post_type and re-create the directory structure in Dolibarr.
WP ERP
erp_hr_payroll (Payroll extension)
Dolibarr ERP
llx_payroll + llx_payment_salary
1:1Historical payroll records from the WP ERP Payroll extension ($9.49/mo) include payslips, tax withholdings, and bank transfer data stored in erp_hr_payroll tables. We migrate payslip headers and line items as Dolibarr salary payment records (llx_payment_salary) with a note that payslip PDFs require regeneration on the destination system or archival as PDF files for compliance. The customer confirms before migration whether regeneration or archive is the preferred compliance approach.
| WP ERP | Dolibarr ERP | Compatibility | |
|---|---|---|---|
| erp_hr_employees | llx_societe (type=Contact) + llx_resource1:1 | Fully supported | |
| erp_hr_departments | llx_holiday_category + llx_element_contact (context: department)1:1 | Fully supported | |
| erp_crm_contacts | llx_socpeople1:1 | Fully supported | |
| erp_crm_companies | llx_societe (type=Company)1:1 | Fully supported | |
| erp_crm_contact_relations | llx_socpeople.fk_soclossy | Fully supported | |
| erp_crm_activities | llx_actioncomm1:1 | Fully supported | |
| erp_ac_chart_of_accounts | llx_accounting_account1:1 | Fully supported | |
| erp_ac_customers | llx_societe + llx_societe.accountancy_code_customer1:1 | Fully supported | |
| erp_ac_vendors | llx_societe + llx_societe.accountancy_code_supplier1:1 | Fully supported | |
| erp_ac_invoices | llx_facture1:1 | Fully supported | |
| erp_ac_journal_entries | llx_accounting_bookkeeping1:1 | Fully supported | |
| erp_ac_products (Inventory extension) | llx_product + llx_product_stock1:1 | Fully supported | |
| wp_posts (Document Manager extension files) | Dolibarr documents directorylossy | Fully supported | |
| erp_hr_payroll (Payroll extension) | llx_payroll + llx_payment_salary1: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.
WP ERP gotchas
Custom database tables require direct SQL extraction
PHP version and WordPress version mismatches block migration tooling
WooCommerce CRM integration creates duplicate contact records
Payroll historical data is module-gated and extension-specific
Workflow automation rules are serialized PHP in wp_options
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
Direct MySQL audit and custom table inventory
We connect directly to the source WordPress MySQL database and enumerate all WP ERP tables: erp_hr_employees, erp_hr_departments, erp_hr_payroll*, erp_crm_contacts, erp_crm_companies, erp_crm_contact_relations, erp_crm_activities, erp_ac_chart_of_accounts, erp_ac_customers, erp_ac_vendors, erp_ac_invoices, erp_ac_journal_entries, and any inventory or document extension tables present. We count rows, identify foreign key references, detect NULL rates on key fields, and flag WooCommerce integration tables (erp_crm_woo_order*) if present. The audit output is a data quality report with record counts, empty table warnings, and duplicate email candidates for the customer to resolve before extraction begins.
Dolibarr module activation and schema preparation
We install Dolibarr on a clean environment (self-hosted VPS or DoliCloud) and activate only the modules required by the customer's WP ERP deployment: HRM (if employees present), CRM (always), Accounting (if accounting tables non-empty), Stock (if inventory extension active), Projects (if used), and Document (if Document Manager extension was active). We configure the Chart of Accounts structure, third-party type codes, and invoice numbering sequences before any data import. We do not activate Payroll or Recruitment modules unless the customer confirms active historical payroll data that requires migration.
Cross-reference resolution and export transform
We resolve all cross-module relationships before writing import files. This includes resolving erp_crm_contact_relations (contact-to-company links), erp_ac_customers cross-references (accounting customer to CRM contact), and wp_user_id foreign keys (HR employee to WordPress user). We apply the WooCommerce duplicate contact merge decision from the scope phase, transform date formats from WordPress timestamp to MySQL date strings compatible with Dolibarr's schema, and encode all special characters in UTF-8 before writing the CSV and JSON import payloads for each Dolibarr module.
Staged import in dependency order with reconciliation
We run staged import into a Dolibarr test instance in record-dependency order: llx_societe (Company third parties) first, then llx_socpeople (Contact third parties with fk_soc resolved), then llx_societe (Supplier third parties), then llx_accounting_account (Chart of Accounts), then llx_facture and llx_facturedet (invoices), then llx_accounting_bookkeeping (journal entries), then llx_actioncomm (activities), then llx_product and llx_product_stock (inventory if present), then document files. Each phase emits a row-count reconciliation report. We compare imported row count against the source row count from the audit phase and investigate any discrepancy before proceeding to the next phase.
Sandbox validation and customer spot-check
We invite the customer's administrator to access the Dolibarr test instance and spot-check migrated records across all modules. We recommend a manual reconciliation of 25-50 records per module (random sampling) against the WP ERP source. The customer validates that contact-company associations are intact, invoice line items match the original, Chart of Accounts codes are preserved, and employee records include correct department and job title assignments. Any mapping corrections are documented and the import transforms are updated before the production migration phase begins.
Production migration, cutover, and workflow handoff
We freeze WP ERP writes, run a final delta extraction of any records modified during the test phase, and execute the full production import into the production Dolibarr instance in the same staged dependency order. We re-run reconciliation reports and resolve any remaining gaps. We deliver the Workflow Automation Inventory document (extracted trigger-action pairs from wp_options with Dolibarr equivalent recommendations) to the customer's administrator. We support a one-week post-migration window to resolve reconciliation issues raised by the team. We do not rebuild WP ERP Workflows as Dolibarr workflows inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
WP ERP
Source
Strengths
Weaknesses
Dolibarr ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between WP ERP and Dolibarr ERP.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across WP ERP and Dolibarr ERP.
Object compatibility
All 8 core objects map 1:1 between WP ERP and Dolibarr ERP.
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
WP ERP: WordPress REST API with no publicly documented rate limit; XML-RPC is capped at 10 requests per 30 seconds per IP on VIP environments.
Data volume sensitivity
WP 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 WP ERP to Dolibarr ERP migration scoping. Not seeing yours? Book a call.
Walk through your WP 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 WP 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.