ERP migration

Migrate from WP ERP to Microsoft Dynamics 365 Business Central

Field-level mapping, validation, and rollback between WP ERP and Microsoft Dynamics 365 Business Central. We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Business Central.

WP ERP logo

WP ERP

Source

Microsoft Dynamics 365 Business Central

Destination

Microsoft Dynamics 365 Business Central logo

Compatibility

93%

13 of 14

objects map 1:1 between WP ERP and Microsoft Dynamics 365 Business Central.

Complexity

BStandard

Timeline

6-10 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from WP ERP to Microsoft Dynamics 365 is a cross-platform schema migration. WP ERP stores its three modules (HRM, CRM, Accounting) across WordPress custom tables (erp_hr_*, erp_crm_*, erp_ac_*) alongside standard wp_users and wp_usermeta. Those tables do not appear in WordPress XML exports or WP-CLI exports, so a migration requires direct MySQL extraction with cross-table joins. We perform that extraction, resolve WordPress user IDs to HR employee records, map CRM contacts and companies to Dynamics 365 Contact and Account entities, and map the Accounting module's Chart of Accounts and invoices to their Dynamics equivalents. We do not migrate Workflow automation rules (stored as serialized PHP in wp_options) or plugin-specific extensions that have no Dynamics 365 counterpart. We deliver a written inventory of those elements for the customer's admin team to rebuild in Power Automate or Dynamics workflows 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

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

Microsoft Dynamics 365 Business Central logo

Microsoft Dynamics 365 Business Central

What's pulling them in

  • Deep integration with Microsoft 365, Power BI, and Power Platform means organizations already on the Microsoft stack get identity, reporting, and workflow continuity out of the box.
  • Unified financials, sales, service, and operations replace multiple disconnected systems — users report that data entered once flows through purchase orders, invoicing, and approvals without manual re-entry.
  • Copilot AI features (predictive analytics, embedded business intelligence) are included in both Essentials and Premium tiers, addressing demand for AI without separate module purchases.
  • Named-user licensing with no concurrent model appeals to organizations that want predictable per-seat costs even if some users access the system infrequently.
  • Strong partner ecosystem with certified NAV-to-Business Central migration specialists gives mid-market companies confidence the cutover from legacy Navision can be executed reliably.

Object mapping

How WP ERP objects map to Microsoft Dynamics 365 Business Central

Each row shows how a WP ERP object lands in Microsoft Dynamics 365 Business Central, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

WP ERP

Employee

maps to

Microsoft Dynamics 365 Business Central

Worker (HCM)

1:1
Fully supported

WP ERP stores HR employees in erp_hr_employees with a wp_user_id foreign key linking to wp_users and wp_usermeta. We extract personal details (name, email, phone, address), employment status, department_id, job_title, hire_date, and compensation fields, then normalize WordPress user meta into Worker record fields in Dynamics 365 Human Resources or Business Central HCM. WordPress roles do not map directly to Dynamics 365 Worker roles; we assign the default Worker position and flag any compensation or benefits data for manual HR admin review before finalization.

WP ERP

Department

maps to

Microsoft Dynamics 365 Business Central

Business Unit or Department

1:1
Fully supported

WP ERP stores departments in erp_hr_departments as flat key-value records with parent_id for hierarchy. We extract the full department tree, preserve parent-child relationships, and map to Dynamics 365 Business Units (hierarchical organizational units) or Departments depending on the destination edition. We reattach employees to the correct department reference during Worker migration by resolving the department_id foreign key.

WP ERP

Leave Request

maps to

Microsoft Dynamics 365 Business Central

Leave Request (HCM)

1:1
Fully supported

Leave requests in erp_hr_leave_requests (approved, rejected, pending) migrate to Dynamics 365 HCM Leave Request records. Leave type, start date, end date, status, and approved-by user cross-reference are all mapped. Pending leave requests at migration cutover are flagged for the HR admin to approve in the destination system since workflow-triggered notifications cannot be carried over.

WP ERP

CRM Contact

maps to

Microsoft Dynamics 365 Business Central

Contact

1:1
Fully supported

WP ERP CRM contacts in erp_crm_contacts include name, email, phone, address, social profiles, lifecycle_stage, source, and owner_id. We extract all standard fields plus custom fields built with the Custom Field Builder extension, map lifecycle_stage to a custom Contact field for post-migration segmentation, and set the contact's primary address from erp_crm_contact_addresses. If WooCommerce CRM integration created duplicate contacts for the same email address, we detect these during scoping and present a merge decision to the customer before export.

WP ERP

CRM Company

maps to

Microsoft Dynamics 365 Business Central

Account

1:1
Fully supported

WP ERP company records in erp_crm_companies link to contacts via erp_crm_contact_relations. We preserve the company-contact association mapping during migration, extract the company name, domain, address, and industry, and create Salesforce-style Account records in Dynamics 365 with the company-domain mapped to Website. After creating Accounts, we reattach Contact records by resolving the erp_crm_contact_relations mapping to the new Account GUID.

WP ERP

Deal

maps to

Microsoft Dynamics 365 Business Central

Opportunity

1:1
Fully supported

Deals (CRM Deals extension, $9.49/mo) store deal title, value, currency, stage, owner, and pipeline association in erp_crm_deals. We map deal title to Opportunity.Name, deal value to Amount, currency to TransactionCurrencyId, and stage to a Dynamics 365 Opportunity Stage that we configure as a Sales Process before migration. Pipeline stages differ between WP ERP and Dynamics 365; we provide a stage mapping worksheet during scoping and apply it during the transform phase. Owner resolution uses the email-based user lookup established in the Owner mapping step.

WP ERP

Activity

maps to

Microsoft Dynamics 365 Business Central

Activity (Task, Appointment, Phone Call)

1:1
Fully supported

Activities (calls, meetings, tasks, emails) stored in erp_crm_activities with polymorphic type fields (type: call, meeting, email, task) are flattened into Dynamics 365 activity records. Call dispositions and durations land in custom Task fields. Meeting start and end times map to Appointment StartTime and EndTime. Activity timestamp is preserved in the ActivityDate or DateCreated field. Activities without a resolved parent Contact or Company are attached to the owning Contact or Account record identified during the entity-resolution phase.

WP ERP

Chart of Accounts

maps to

Microsoft Dynamics 365 Business Central

G/L Account (Chart of Accounts)

1:1
Fully supported

WP ERP Accounting stores the chart of accounts in erp_ac_chart_of_accounts with account code, name, type, and subtype. We preserve the full account structure including parent-child relationships for grouped accounts, map account type to the Dynamics 365 G/L Account Type (Posting, Heading, Total, or statistical), and set the appropriate account category. The account code becomes G/L Account Number; we validate that codes are alphanumeric and within the Dynamics 365 character limit before import.

WP ERP

Accounting Customer

maps to

Microsoft Dynamics 365 Business Central

Customer (AR)

1:1
Fully supported

Accounting customers in erp_ac_customers link to CRM contacts via erp_crm_contacts.id. We resolve this cross-reference during migration so that each customer record in Dynamics 365 is linked to the corresponding Account record created from the CRM Company. The customer name, billing address, and payment terms are mapped; if no corresponding CRM Company exists for an erp_ac_customer, we create a standalone Customer record without an Account linkage.

WP ERP

Vendor

maps to

Microsoft Dynamics 365 Business Central

Vendor

1:1
Fully supported

Vendor records in erp_ac_vendors (vendor name, billing address, contact email) migrate to Dynamics 365 Vendor records. Vendor-ledger entries link via the vendor_id foreign key and are resolved after the Vendor records are created. We map payment terms and currency from WP ERP vendor fields to Dynamics 365 Vendor payment terms and TransactionCurrencyId.

WP ERP

Invoice

maps to

Microsoft Dynamics 365 Business Central

Sales Invoice or Purchase Invoice

1:1
Fully supported

WP ERP invoices in erp_ac_invoices include line items, tax codes, payment status, and due dates. We flag open invoices versus paid or voided invoices and map invoice status to the Dynamics 365 equivalent (Open, Paid, Cancelled). Open invoices are migrated as active receivables linked to the Customer and Account; paid and voided invoices migrate with their final status and are available for historical reporting. We do not regenerate PDF invoices; we archive invoice metadata as document attachment records.

WP ERP

Journal Entry

maps to

Microsoft Dynamics 365 Business Central

General Journal

1:1
Fully supported

Manual journal entries in erp_ac_journal_entries migrate to Dynamics 365 General Journal lines with debit and credit amounts mapped to the corresponding G/L Account. We resolve COA account references from the chart of accounts mapping so that each journal line debits or credits the correct account number. Automated payroll journal entries (generated by the Payroll extension) are migrated as separate journal batches with a Payroll source reference. Journal entry dates and descriptions are preserved.

WP ERP

Payroll Record (extension)

maps to

Microsoft Dynamics 365 Business Central

Worker Compensation / Pay Statement

1:1
Fully supported

Payroll is a $9.49/month extension. Historical payslip data in erp_hr_payroll* tables is included in standard HRM extraction. We migrate payslip metadata (pay period, gross pay, deductions, net pay, tax withholdings, bank transfer data) as Worker Compensation history or Pay Statement records if the destination HCM supports it. If the destination is Business Central without the full HCM add-on, payroll history migrates as a custom payroll-history table with a flat record structure. Payslip PDFs require regeneration on the destination system.

WP ERP

WooCommerce Customer (CRM integration)

maps to

Microsoft Dynamics 365 Business Central

Contact + Account

1:many
Fully supported

When WP ERP's WooCommerce CRM integration is active, WooCommerce order customers create CRM contact records automatically. These records carry a WooCommerce order ID reference in erp_crm_contacts. We extract these separately, map the contact to a Dynamics 365 Contact, link to the corresponding Account, and carry the original WooCommerce order reference in a custom field for any future WooCommerce-Dynamics integration rebuild.

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

Microsoft Dynamics 365 Business Central logo

Microsoft Dynamics 365 Business Central gotchas

High

Named-user licensing has no concurrent-use relief

High

API rate limits throttle large-volume migrations

Medium

Historical posted transactions require selective migration scoping

Medium

NAV-to-Business Central cloud migration requires partner coordination

Low

Custom fields and AL extensions require separate migration handling

Pair-specific challenges

  • WP ERP custom tables require direct MySQL extraction

    WP ERP stores core HR, CRM, and Accounting data in custom WordPress tables (erp_hr_employees, erp_crm_contacts, erp_crm_companies, erp_ac_chart_of_accounts, erp_ac_invoices, etc.) that do not appear in WordPress XML exports, WP-CLI exports, or any standard WordPress backup. We perform direct MySQL SELECT queries against each custom table, cross-referencing wp_users and wp_usermeta for HR user assignments and erp_crm_contact_relations for company-contact links. Any extraction method that relies on WordPress export APIs silently drops all HR, CRM, and Accounting data from the migration.

  • WooCommerce CRM integration creates duplicate contact records

    When the WooCommerce CRM integration is active, WP ERP creates a CRM contact record for every WooCommerce order customer. If the same email address appears in both a manually created CRM contact and a WooCommerce-generated order record, WP ERP creates two separate contact rows. We detect duplicate candidates during the migration scope phase by querying for matching email addresses across erp_crm_contacts, present the duplicates to the customer, and offer a merge strategy before exporting. Unresolved duplicates will appear as separate Contact records in Dynamics 365.

  • Workflow automation rules are serialized PHP and do not transfer

    WP ERP Workflow extension automation rules are stored as serialized PHP arrays in the WordPress wp_options table. These rules (trigger module, conditions, actions) cannot be deserialized into non-WordPress systems and do not have an equivalent in Microsoft Dynamics 365. We extract the rule structure, document it in a migration summary, and advise the customer to rebuild equivalent rules using Power Automate or Dynamics 365 Business Rules post-migration. Any rule relying on WordPress hooks or WP ERP-specific actions cannot be preserved as code.

  • Dynamics 365 entity relationships require sequential load order

    Dynamics 365 requires parent records to exist before child records can reference them via lookup fields. A Contact requires an Account; an Opportunity requires both Account and Contact; an Invoice requires Customer, Account, and G/L Account records. WP ERP's flat and cross-linked table structure (erp_ac_customers links to erp_crm_contacts which links to erp_crm_companies) must be sequenced: Accounts first, then Contacts, then Opportunities, then accounting records. Attempting to load in the wrong order results in foreign key violations that halt the migration. We sequence every phase explicitly and validate parent-record existence before each child phase begins.

  • PHP version and WordPress version can corrupt serialized custom field data

    WP ERP requires PHP 5.6+ and WordPress 4.4+, but optimal performance requires PHP 7.4+. Custom fields built with the Custom Field Builder extension store values in serialized PHP arrays in wp_postmeta or wp_erp_* tables. PHP version mismatches between the source server and migration environment can corrupt these serialized structures during extraction, causing custom field values to drop or truncate. We verify the source WordPress environment's PHP version before running any extraction and apply a compatibility-safe unserialize replacement if needed.

Migration approach

Six steps for a successful WP ERP to Microsoft Dynamics 365 Business Central data migration

  1. Discovery and destination edition selection

    We audit the source WP ERP installation across active modules (HRM, CRM, Accounting), installed extensions (Payroll, Deals, Recruitment, Attendance, Document Manager), custom table record counts, and WooCommerce integration status. We pair this with a Dynamics 365 edition decision: Business Central ($70-$210/user/mo) for businesses needing Finance, Supply Chain, and basic CRM without the complexity of a full HCM; Dynamics 365 Finance and Operations ($180/user/mo+) for organizations with multi-entity accounting, manufacturing, or advanced HCM requirements. The discovery output is a written migration scope document with record counts per object, a destination edition recommendation, and a preliminary data audit flagging duplicates, missing parent records, and any payroll archive scope.

  2. Direct MySQL extraction and source schema documentation

    We perform direct SQL SELECT queries against WP ERP's custom tables: erp_hr_employees, erp_hr_departments, erp_hr_leave_requests, erp_crm_contacts, erp_crm_companies, erp_crm_contact_relations, erp_crm_deals, erp_crm_activities, erp_ac_chart_of_accounts, erp_ac_customers, erp_ac_vendors, erp_ac_invoices, erp_ac_journal_entries, and any payroll extension tables. We cross-reference wp_users and wp_usermeta to resolve employee-user mappings, build the cross-module relationship graph (contacts to companies, customers to contacts, invoices to customers), and generate a source schema map showing every field, type, and foreign key that will drive the transformation logic.

  3. Dynamics 365 schema design and entity provisioning

    We design the destination schema in Dynamics 365. This includes provisioning Chart of Accounts with account types and categories matching WP ERP's COA structure, creating Account records (from CRM companies) before any Contact load, designing the HR Worker schema with custom fields for any WP ERP compensation or employment-status fields that have no direct Dynamics 365 equivalent, configuring Opportunity Sales Processes and Stages to match WP ERP deal pipeline stages, and mapping the Journal template to match the WP ERP journal entry structure. If the destination is Business Central, we configure the company structure (single or multi-entity) and the chart of accounts dimensions for financial reporting.

  4. Sandbox migration and reconciliation

    We run a full migration into a Dynamics 365 Sandbox environment using production data volumes. The customer's admin team reconciles record counts per object, spot-checks 25-50 random records against the WP ERP source, and verifies that contact-company relationships, employee-department assignments, and invoice-customer links are intact in Dynamics 365. Any field mapping corrections, duplicate merge decisions, or account-contact attachment issues are resolved here before production migration begins. No production data is touched until sandbox sign-off is received.

  5. Owner and user reconciliation

    We extract every distinct WP ERP user referenced as an owner on Employee, Contact, Company, Deal, and Activity records. We match by email address against the Dynamics 365 User table. Users without a matching Dynamics 365 account go to a reconciliation queue for the customer's admin to provision before production migration resumes. In Dynamics 365, OwnerId references are required on most standard entities; any unresolved owner will cause records to fail import with a lookup validation error.

  6. Production migration in dependency order

    We run the production migration in strict dependency order: Chart of Accounts (no dependencies), then Account (from Company), then Contact, then Worker (from Employee with department resolution), then Opportunity (with AccountId, ContactId, and OwnerId resolved), then Vendor, then Journal Entries, then Invoice records (with Customer, Account, and COA references resolved). Payroll history (from erp_hr_payroll*) runs as a separate phase if the destination is Business Central HCM. Each phase emits a row-count reconciliation report before the next phase begins. We use the Dynamics 365 Dataverse REST API with batch processing, exponential backoff on throttling, and chunking for records exceeding API size limits.

  7. Cutover, validation, and automation rebuild handoff

    We freeze WP ERP writes during cutover, run a final delta migration of any records modified during the migration window, then enable Dynamics 365 as the system of record. We deliver the Workflow and Automation inventory document listing every serialized PHP workflow rule extracted from wp_options with a Power Automate or Dynamics 365 Business Rules equivalent recommendation. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team. We do not rebuild WP ERP Workflows as Power Automate flows inside the migration scope; that work is a separate engagement. We do not migrate reports or dashboards from WP ERP; Dynamics 365 Business Central's report designer and Power BI offer a different architecture that requires a rebuild.

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.
Microsoft Dynamics 365 Business Central logo

Microsoft Dynamics 365 Business Central

Destination

Strengths

  • Tight integration with Microsoft 365 (Outlook, Teams, SharePoint) for users already in the Microsoft ecosystem.
  • Includes Copilot AI, predictive analytics, and embedded Power BI dashboards at no additional cost in both license tiers.
  • Supports multiple companies within a single tenant for holding-company or multi-entity organizational structures.
  • Open REST API v2.0 with OAuth 2.0 authentication and data entity abstraction layer for developer-friendly integrations.
  • Strong partner ecosystem specializing in NAV-to-Business Central migrations provides implementation confidence for legacy upgrades.

Weaknesses

  • Named-user licensing model means every active user account requires a paid license — no concurrent access model to reduce costs for occasional users.
  • SaaS-only deployment means no on-premises option; organizations requiring full data residency control may not have viable alternatives within Microsoft's stack.
  • Manufacturing module (Production Orders, routing, work centers) is only available on Premium tier, pushing cost-sensitive manufacturers to higher-priced plans.
  • Customization and extension development requires AL language knowledge and developer licenses, limiting what power users can do without a partner engagement.
  • Global pricing increases effective October 2024 and again October 2025 after five years of stable pricing, creating budget uncertainty for existing customers.

Complexity grading

How hard is this migration?

Standard ERP migration. All 8 core objects map 1:1 between WP ERP and Microsoft Dynamics 365 Business Central.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across WP ERP and Microsoft Dynamics 365 Business Central.

  • Object compatibility

    A

    All 8 core objects map 1:1 between WP ERP and Microsoft Dynamics 365 Business Central.

  • 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 Microsoft Dynamics 365 Business Central 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 Microsoft Dynamics 365 Business Central data migrations

Answers to the questions buyers ask most during WP ERP to Microsoft Dynamics 365 Business Central migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your WP ERP to Microsoft Dynamics 365 Business Central migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between six and ten weeks for businesses under 50 employees, 5,000 contacts, and clean single-entity accounting. Migrations with payroll history (erp_hr_payroll* tables), multi-entity accounting structures, large invoice volumes (over 5,000 open or historical), or a Dynamics 365 Finance and Operations destination move to twelve to twenty weeks because of HR normalization, chart-of-accounts dimensional mapping, and entity-sequence coordination across Business Central or F&O companies.

Adjacent paths

Related migrations to explore

Ready when you are

Move from WP ERP.
Land in Microsoft Dynamics 365 Business Central, 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