ERP migration

Migrate from WP ERP to Dolibarr ERP

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 logo

WP ERP

Source

Dolibarr ERP

Destination

Dolibarr ERP logo

Compatibility

86%

12 of 14

objects map 1:1 between WP ERP and Dolibarr ERP.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

WP ERP logo

WP ERP

What's pushing teams away

  • Extension costs stack up quickly — Recruitment, Payroll, Deals, Workflow, and others are billed per-month on top of the core module, making the total cost of ownership unpredictable.
  • The CRM module is functionally basic compared to dedicated platforms — no advanced automation, limited pipeline customization, and a shallow integrations marketplace beyond WooCommerce.
  • Plugin conflicts with other WordPress plugins cause data inconsistency or crashes, and support response times frustrate users managing business-critical operations.
  • WordPress as the application layer limits scalability and performance — growing teams hit PHP memory limits and database bottlenecks that standalone ERP systems do not share.
  • Limited API documentation makes third-party integrations and custom development difficult, pushing technically ambitious teams toward platforms with better developer ecosystems.

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 WP ERP objects map to Dolibarr ERP

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

maps to

Dolibarr ERP

llx_societe (type=Contact) + llx_resource

1:1
Fully supported

WP 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

maps to

Dolibarr ERP

llx_holiday_category + llx_element_contact (context: department)

1:1
Fully supported

Department 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

maps to

Dolibarr ERP

llx_socpeople

1:1
Fully supported

CRM 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

maps to

Dolibarr ERP

llx_societe (type=Company)

1:1
Fully supported

Company 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

maps to

Dolibarr ERP

llx_socpeople.fk_soc

lossy
Fully supported

The 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

maps to

Dolibarr ERP

llx_actioncomm

1:1
Fully supported

Activities (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

maps to

Dolibarr ERP

llx_accounting_account

1:1
Fully supported

Accounting 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

maps to

Dolibarr ERP

llx_societe + llx_societe.accountancy_code_customer

1:1
Fully supported

Accounting 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

maps to

Dolibarr ERP

llx_societe + llx_societe.accountancy_code_supplier

1:1
Fully supported

Vendor 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

maps to

Dolibarr ERP

llx_facture

1:1
Fully supported

Invoices 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

maps to

Dolibarr ERP

llx_accounting_bookkeeping

1:1
Fully supported

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

maps to

Dolibarr ERP

llx_product + llx_product_stock

1:1
Fully supported

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

maps to

Dolibarr ERP

Dolibarr documents directory

lossy
Fully supported

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

maps to

Dolibarr ERP

llx_payroll + llx_payment_salary

1:1
Fully supported

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

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.

WP ERP logo

WP ERP gotchas

High

Custom database tables require direct SQL extraction

High

PHP version and WordPress version mismatches block migration tooling

Medium

WooCommerce CRM integration creates duplicate contact records

Medium

Payroll historical data is module-gated and extension-specific

Medium

Workflow automation rules are serialized PHP in wp_options

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

  • WP ERP stores data in custom WordPress tables that WordPress exports do not capture

    WP ERP creates its own table schema (erp_hr_employees, erp_crm_contacts, erp_crm_companies, erp_ac_chart_of_accounts, erp_ac_invoices, erp_ac_journal_entries) that sits outside the standard WordPress post and user meta tables. Neither the WordPress XML export nor WP-CLI export captures these tables. We perform direct MySQL SELECT queries against each custom table, cross-referencing wp_users and wp_usermeta for HR user assignments. Failing to do a direct database pull means Employee records, all accounting data, CRM contact-company associations, and deal history silently drop from the export.

  • WooCommerce CRM integration creates duplicate contact records that must be resolved before export

    When the WooCommerce CRM integration is active in WP ERP, every WooCommerce order customer generates a CRM contact record automatically. If the same email appears in both a manually created CRM contact and a WooCommerce order, WP ERP may create two separate contact records. We detect these duplicate candidates during the migration scope phase using email deduplication against erp_crm_contacts and erp_crm_contact_relations, then give the customer a choice to merge them before exporting. Merging after migration requires manual reconciliation in Dolibarr and risks orphaned invoice links.

  • Workflow automation rules are serialized PHP and cannot import into Dolibarr's workflow engine

    The WP ERP Workflow extension stores automation rules as serialized PHP arrays in the WordPress wp_options table under option_name LIKE '%erp_workflow%'. These cannot be deserialized into Dolibarr's workflow configuration format because Dolibarr uses its own module-internal database-backed rule model (llx_workflow_*, llx_workflow_actiondef). We extract the rule structure (trigger module, conditions, action), document it in a migration summary with a recommended Dolibarr equivalent action, and advise the customer to rebuild equivalent rules manually in Dolibarr Setup > Workflow after migration.

  • Dolibarr's database character set must match the source MySQL charset for special characters

    WP ERP instances frequently use utf8mb4 character sets for international names and addresses. Dolibarr's default installation may use latin1 or utf8 depending on the hosting provider. If the charset mismatch is not corrected before migration, accented characters (é, ñ, ü), non-Latin scripts (Cyrillic, Arabic, CJK), and emoji in contact names or addresses will corrupt. We verify the source database charset, set the Dolibarr database to the same charset before import, and validate a sample of 50 records with special characters before proceeding to full import.

  • PHP version differences between WordPress and Dolibarr hosting can block migration tooling

    WP ERP requires PHP 5.6+ with optimal performance on PHP 7.4+. Dolibarr 14+ requires PHP 7.4 or 8.x. If the source WordPress server runs PHP 7.2 and the destination Dolibarr instance is on PHP 8.1, serialized PHP data from custom fields or workflow rules will not be corrupted during extraction (we read raw bytes, not unserialize), but the Dolibarr import environment must match or exceed the PHP version of the export environment for consistent string handling. We verify both environments before running any extraction scripts and flag mismatches in the pre-migration audit report.

Migration approach

Six steps for a successful WP ERP to Dolibarr ERP data migration

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

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

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

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

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

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

Context on both ends of the pair

WP ERP logo

WP ERP

Source

Strengths

  • Free core plugin provides functional HRM and CRM without any purchase, making pilot migrations low-cost.
  • Deep WooCommerce integration syncs order history, customer LTV, and product data directly into CRM contacts.
  • Extension marketplace of 23+ add-ons covers specific verticals like Recruitment, Payroll, and Asset Management for businesses with targeted needs.
  • Runs entirely inside WordPress admin — no separate application to log into for teams already managing their site via WordPress.
  • Open-source core available on GitHub allows self-hosted deployments and code-level customization.

Weaknesses

  • WordPress as the underlying application layer constrains performance, security, and scalability compared to standalone ERP platforms.
  • CRM features are intentionally narrow — limited pipeline stages, basic activity logging, and no native marketing automation.
  • API lacks public documentation and a developer SDK, making automated integrations and migrations harder to architect.
  • Extension-based pricing model means the advertised starting price of $12.99/user/month does not reflect the full cost of Payroll, Recruitment, or Workflow modules.
  • Plugin architecture creates cross-dependency risks — deactivating one extension can break data relationships in others.
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. All 8 core objects map 1:1 between WP ERP and Dolibarr ERP.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between WP ERP and Dolibarr ERP.

  • 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

    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

    B

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

Estimator

Estimate your WP ERP 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 WP ERP to Dolibarr ERP data migrations

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

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 500 employees, 5,000 contacts, and 2,000 invoices with no active payroll extension. Migrations with active payroll data, WooCommerce-synced CRM contacts (requiring duplicate resolution), document manager file re-uploads, or multi-department hierarchies with nested org charts move to eight to twelve weeks because of custom table dependency resolution, file transfer, and payroll data validation. The pair-specific audit phase (Step 1) typically adds two to five business days before any extraction begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from WP ERP.
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