ERP migration
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
Source
Microsoft Dynamics 365 Business Central
Destination
Compatibility
13 of 14
objects map 1:1 between WP ERP and Microsoft Dynamics 365 Business Central.
Complexity
BStandard
Timeline
6-10 weeks
Overview
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.
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
WP ERP platform overview
Scorecard, SWOT, gotchas, and pricing for WP ERP.
Destination platform
Microsoft Dynamics 365 Business Central platform overview
Scorecard, SWOT, gotchas, and pricing for Microsoft Dynamics 365 Business Central.
Data migration guide
The complete Dynamics 365 Business Central migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Destination checklist
Dynamics 365 Business Central migration checklist
Pre- and post-cutover tasks for moving onto Microsoft Dynamics 365 Business Central.
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 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
Microsoft Dynamics 365 Business Central
Worker (HCM)
1:1WP 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
Microsoft Dynamics 365 Business Central
Business Unit or Department
1:1WP 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
Microsoft Dynamics 365 Business Central
Leave Request (HCM)
1:1Leave 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
Microsoft Dynamics 365 Business Central
Contact
1:1WP 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
Microsoft Dynamics 365 Business Central
Account
1:1WP 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
Microsoft Dynamics 365 Business Central
Opportunity
1:1Deals (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
Microsoft Dynamics 365 Business Central
Activity (Task, Appointment, Phone Call)
1:1Activities (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
Microsoft Dynamics 365 Business Central
G/L Account (Chart of Accounts)
1:1WP 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
Microsoft Dynamics 365 Business Central
Customer (AR)
1:1Accounting 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
Microsoft Dynamics 365 Business Central
Vendor
1:1Vendor 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
Microsoft Dynamics 365 Business Central
Sales Invoice or Purchase Invoice
1:1WP 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
Microsoft Dynamics 365 Business Central
General Journal
1:1Manual 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)
Microsoft Dynamics 365 Business Central
Worker Compensation / Pay Statement
1:1Payroll 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)
Microsoft Dynamics 365 Business Central
Contact + Account
1:manyWhen 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.
| WP ERP | Microsoft Dynamics 365 Business Central | Compatibility | |
|---|---|---|---|
| Employee | Worker (HCM)1:1 | Fully supported | |
| Department | Business Unit or Department1:1 | Fully supported | |
| Leave Request | Leave Request (HCM)1:1 | Fully supported | |
| CRM Contact | Contact1:1 | Fully supported | |
| CRM Company | Account1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Activity | Activity (Task, Appointment, Phone Call)1:1 | Fully supported | |
| Chart of Accounts | G/L Account (Chart of Accounts)1:1 | Fully supported | |
| Accounting Customer | Customer (AR)1:1 | Fully supported | |
| Vendor | Vendor1:1 | Fully supported | |
| Invoice | Sales Invoice or Purchase Invoice1:1 | Fully supported | |
| Journal Entry | General Journal1:1 | Fully supported | |
| Payroll Record (extension) | Worker Compensation / Pay Statement1:1 | Fully supported | |
| WooCommerce Customer (CRM integration) | Contact + Account1:many | 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
Microsoft Dynamics 365 Business Central gotchas
Named-user licensing has no concurrent-use relief
API rate limits throttle large-volume migrations
Historical posted transactions require selective migration scoping
NAV-to-Business Central cloud migration requires partner coordination
Custom fields and AL extensions require separate migration handling
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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.
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
WP ERP
Source
Strengths
Weaknesses
Microsoft Dynamics 365 Business Central
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. All 8 core objects map 1:1 between WP ERP and Microsoft Dynamics 365 Business Central.
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
All 8 core objects map 1:1 between WP ERP and Microsoft Dynamics 365 Business Central.
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 Microsoft Dynamics 365 Business Central migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave WP ERP
Other ways to arrive at Microsoft Dynamics 365 Business Central
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.