ERP migration

Migrate from WP ERP to Epicor Prophet 21

Field-level mapping, validation, and rollback between WP ERP and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.

WP ERP logo

WP ERP

Source

Epicor Prophet 21

Destination

Epicor Prophet 21 logo

Compatibility

86%

12 of 14

objects map 1:1 between WP ERP and Epicor Prophet 21.

Complexity

BStandard

Timeline

5-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from WP ERP to Epicor ERP is a platform-class migration that exits the WordPress ecosystem entirely. WP ERP stores its data in custom WordPress tables (erp_hr_*, erp_crm_*, erp_ac_*) that require direct MySQL extraction rather than XML export or WP-CLI dumps. We extract employee records with compensation and department assignments, CRM contacts with lifecycle stages and company associations, and the full Chart of Accounts with journal entries and open invoices. Epicor ERP uses a manufacturing-centric data model: Part records for inventory, Customer and Supplier tables for CRM data, General Ledger for accounting, and PartTracker or Kinetic Employee Management for HR. We resolve the structural differences (WordPress user IDs versus Epicor Party/Contact hierarchy, WooCommerce duplicate contact candidates, and payroll historical archive scope) during scoping and carry them through the migration in dependency order. Workflow automation rules from the WP ERP Workflow extension are serialized PHP in wp_options and cannot import into Epicor; we document every rule for manual rebuild in Epicor Kinetic Business Process Automation or MES workflow tools.

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

Epicor Prophet 21 logo

Epicor Prophet 21

What's pulling them in

  • Industry-specific design for wholesale distributors, not a general-purpose ERP repurposed for distribution — distributors choose P21 because it matches their replenishment, kitting, and counter-sale workflows out of the box.
  • Strong inventory control with automated replenishment, lot and serial tracking, and multi-warehouse management appeals to distributors with complex stock requirements and tight margin pressure.
  • Responsive customer support cited across G2 and Gartner reviews, with Epicor's 90% retention rate reflecting long-term customer satisfaction in a market where switching costs are high.
  • Cloud deployment on Microsoft Azure provides the flexibility to scale user counts and warehouse locations without on-premise infrastructure investment.
  • The Software Development Kit lets distributors personalize P21 to their specific business processes without modifying the application source code, preserving upgrade paths.

Object mapping

How WP ERP objects map to Epicor Prophet 21

Each row shows how a WP 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.

WP ERP

Employees (erp_hr_employees)

maps to

Epicor Prophet 21

PartTracker Employee or Kinetic Human Capital Management

1:1
Fully supported

WP ERP employee records (personal details, employment status, department, job title, hire date, compensation) extract from erp_hr_employees with wp_user_id cross-reference from wp_users. We map to Epicor Kinetic Employee records or PartTracker labor entries depending on the destination Epicor product (Kinetic HCM versus PartTracker). Compensation data (salary, pay type, bank details) is flagged as sensitive and handled under the payroll archive decision: migrate as record data, archive as PDF, or exclude entirely based on customer compliance requirements.

WP ERP

Departments (erp_hr_departments)

maps to

Epicor Prophet 21

Kinetic Organizational Unit or PartTracker Department

1:1
Fully supported

Department records in erp_hr_departments are top-down hierarchical key-value structures. We extract the full tree (parent-child relationships, department name, head of department) and rebuild it as an Epicor organizational structure. Employee-to-department assignments resolve by cross-referencing the erp_hr_employees.department_id foreign key to the migrated department ID on Epicor.

WP ERP

CRM Contacts (erp_crm_contacts)

maps to

Epicor Prophet 21

Epicor Customer Contact (CustCnt) and Employee Contact

1:many
Fully supported

WP ERP contacts (name, email, phone, address, lifecycle stage, source attribution) extract from erp_crm_contacts with wp_user_id links. Epicor Kinetic uses a Party-based model: the contact person attaches to a Customer or Supplier Party record. We split contacts into Customer Contact (sales-related) and Employee Contact (HR-related) based on the WP ERP contact type and lifecycle stage. WooCommerce duplicate candidates (same email appearing in manually created contacts and WooCommerce order records) are flagged for merge before export.

WP ERP

CRM Companies (erp_crm_companies)

maps to

Epicor Prophet 21

Epicor Customer or Supplier Party (CustPrt, VendPrt)

1:1
Fully supported

WP ERP company records in erp_crm_companies link to CRM contacts via erp_crm_contact_relations. We map companies to Epicor Customer Party (for B2B accounts) or Supplier Party (for vendor-of-record companies) based on whether the WP ERP company record has associated sales deals or purchase transactions. Company ID remapping preserves the contact-company relationship during migration by resolving erp_crm_contact_relations.contact_id to the new Epicor CustCnt ID.

WP ERP

Deals (erp_crm_deals, paid CRM extension)

maps to

Epicor Prophet 21

Epicor Opportunity or Sales Order

1:1
Fully supported

WP ERP Deals (title, value, currency, stage, owner, pipeline association) extract from the Deals extension ($9.49/mo). Epicor Kinetic does not have a standalone Deal object; deals with an active sales process map to Epicor Opportunity (if pre-quote) or to Sales Order (if in progress). Pipeline stages from WP ERP map to Epicor Opportunity Stage or Sales Order status based on deal state at migration time. Deals with a status of Closed-Won map to a closed Epicor Sales Order; Closed-Lost deals are flagged for reporting exclusion.

WP ERP

CRM Activities (erp_crm_activities)

maps to

Epicor Prophet 21

Epicor Tracker Activities or CRM Communication Log

1:1
Fully supported

Activities (calls, meetings, emails, tasks) stored in erp_crm_activities with polymorphic type fields flatten into a standard activity log structure. We map WP ERP activity type to Epicor Tracker activity category (Phone Call, Meeting, Email, To-Do). Activity timestamps, owner assignment, and associated contact or company links migrate directly. Note attachments associated with activities migrate as Epicor attachments linked to the parent activity record.

WP ERP

Chart of Accounts (erp_ac_chart_of_accounts)

maps to

Epicor Prophet 21

Epicor General Ledger Account (GLAccount)

1:1
Fully supported

WP ERP chart of accounts records (account code, name, type, subtype, parent-child hierarchy for grouped accounts) extract from erp_ac_chart_of_accounts. We map WP ERP account types to Epicor GL Account categories: Asset, Liability, Equity, Revenue, Expense. Account code prefixes and hierarchical groupings (parent_account_id) preserve the COA structure in Epicor. GL account codes that conflict with Epicor Kinetic chart of accounts conventions are remapped during the transform phase with a reconciliation report delivered to the customer.

WP ERP

Accounting Customers (erp_ac_customers)

maps to

Epicor Prophet 21

Epicor Customer Party (CustPrt)

1:1
Fully supported

Accounting customers in erp_ac_customers link to CRM contacts via erp_crm_contacts.id. We resolve the cross-reference at migration time so that the Epicor Customer Party record points to the correct CRM contact person (CustCnt). Billing address, payment terms, and credit limit from erp_ac_customers migrate to Epicor Customer maintenance screens. Open invoice balances and aged receivable data attach to the Customer record for AR initialization.

WP ERP

Accounting Vendors (erp_ac_vendors)

maps to

Epicor Prophet 21

Epicor Supplier Party (VendPrt)

1:1
Fully supported

Vendor records in erp_ac_vendors migrate with billing address, company name, and contact email. Vendor-ledger entries (purchase transactions) link via vendor_id foreign key to the migrated VendPrt record. Epicor uses a Vendor maintenance record with Supplier contacts and payment terms. We preserve any 1099 reporting flags from WP ERP in the Epicor Vendor record for US tax compliance.

WP ERP

Invoices (erp_ac_invoices)

maps to

Epicor Prophet 21

Epicor AR Invoice and AP Invoice

1:1
Fully supported

WP ERP invoices include line items, tax codes, payment status, and due dates. We flag open invoices (unpaid, partially paid) versus paid or voided invoices and map status to Epicor AR Invoice status (Open, Closed, Disputed). Open invoices migrate as Epicor AR Invoice records with aging; paid invoices migrate as historical records for financial audit trails. Invoices that reference non-existent customers or vendors are held in a reconciliation queue.

WP ERP

Journal Entries (erp_ac_journal_entries)

maps to

Epicor Prophet 21

Epicor GL Journal Entry

1:1
Fully supported

Manual journal entries stored in erp_ac_journal_entries with debit/credit line items migrate to Epicor GL Journal Entry. Each line maps the WP ERP account code (resolved via the COA migration) to the Epicor GL Account, with debit/credit amounts and descriptions preserved. Automated journal entries generated by the WP ERP Payroll module migrate as manual entries with a Payroll source reference, since Epicor handles payroll journal creation natively.

WP ERP

Inventory Items (erp_ac_inventory, paid extension)

maps to

Epicor Prophet 21

Epicor Part (PartMsc, PartWhse)

1:1
Fully supported

WP ERP inventory items (name, SKU, unit cost, current stock quantity, reorder level) extract from the Inventory extension if active. Epicor Kinetic uses a Part master (Part table) with PartMsc for miscellaneous costs and PartWhse for warehouse-specific stock levels. We map WP ERP stock quantity to Epicor PartWhse.OnHandQty, unit cost to PartMsc.MtlCost, and reorder level to PartWhse.MinimumQty. Stock movement history migrates as a separate transaction log for audit rather than as Epicor PartTran records.

WP ERP

Documents (Document Manager extension)

maps to

Epicor Prophet 21

Epicor Attachments

1:1
Fully supported

The Document Manager extension ($2.49/mo) stores files in the WordPress media library or custom uploads directory. We export file metadata (filename, upload date, associated WP ERP entity) and re-upload the binary files to Epicor as attachments linked to the corresponding Part, Customer, Supplier, or Order record. File permissions and access controls do not migrate; Epicor's attachment security model applies post-migration.

WP ERP

Workflow Automation (wp_options serialized PHP)

maps to

Epicor Prophet 21

Not migrated; documented for rebuild

lossy
Fully supported

The WP ERP Workflow extension stores automation rules as serialized PHP arrays in wp_options. These cannot be imported into Epicor Kinetic. We extract the trigger-action pairs (trigger module, condition logic, action steps) and deliver a written automation inventory with Epicor Kinetic equivalent recommendations: Business Process Automation for order-triggered workflows, MES workflow routing for shop floor automation, or Kinetic Dashboard alerts for conditional notifications. The customer's Epicor admin or implementation partner rebuilds them post-migration.

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

Epicor Prophet 21 logo

Epicor Prophet 21 gotchas

High

Third-party bolt-on integrations complicate migration scope

High

Dirty data without standardized processes compounds migration risk

Medium

SDK customizations and BPMs may not survive platform upgrades

Medium

Report-based export only for non-technical users

Low

Per-user pricing model requires accurate user count before migration planning

Pair-specific challenges

  • Direct MySQL extraction required from custom WP ERP tables

    WP ERP stores HR, CRM, and Accounting data in custom WordPress tables (erp_hr_*, erp_crm_*, erp_ac_*) rather than standard WP posts or user meta. WordPress XML exports and WP-CLI exports do not capture these tables. We perform direct MySQL extraction from each custom table, cross-referencing wp_users and wp_usermeta for HR employee assignments. Failing to do a direct database pull means HR employee records, all accounting data, and CRM deal associations silently drop from the export. We verify table existence and record counts in the scoping phase before building the extraction script.

  • Epicor Kinetic GL account code format conflicts

    WP ERP allows alphanumeric account codes of variable length. Epicor Kinetic enforces a structured GL account code format (typically numeric segments separated by dashes or a fixed-width format). Account codes from WP ERP that contain letters or exceed the Epicor segment length constraint must be remapped to a compliant format during the transform phase. We detect all non-compliant account codes during scoping, propose a remapping schema, and present it to the customer before migration begins. If GL account codes change, downstream journal entry line items and trial balance totals are updated to reflect the new codes.

  • WooCommerce CRM integration creates duplicate contact records

    When the WP ERP WooCommerce CRM integration is active, WP ERP creates a CRM contact record for every WooCommerce order customer. If the same email appears in both a manually created CRM contact and a WooCommerce order record, WP ERP may create two separate contact records. We detect duplicate candidates (same email, different source flag) during the migration scope phase and give customers the choice to merge them before exporting. Unresolved duplicates cause Epicor to reject one of the two records on import if the Customer Contact email is enforced as unique.

  • Payroll historical data scope and compliance

    The WP ERP Payroll extension ($9.49/month) stores payslips, tax withholdings, and bank transfer data in erp_hr_payroll* tables. Historical payroll records may contain PII (bank account numbers, tax identifiers) that require secure handling during migration. We include payroll data in the standard HRM extraction scope but clarify the customer's destination: migrate payslip records to Epicor HCM as historical pay records, archive as PDF for compliance, or exclude entirely and rely on the payroll system as the source of record. The choice affects the migration price and timeline if document regeneration or redaction is required.

  • Epicor does not support serialized PHP workflows

    WP ERP Workflow extension rules are stored as serialized PHP arrays in wp_options. Epicor Kinetic uses Business Process Automation (BPA) and MES routing workflows with different trigger models, condition syntax, and action types. There is no automated conversion path. We extract the rule structure (trigger module, conditions, actions, execution order) from each wp_options entry, document it in a migration handoff report with Epicor BPA equivalent recommendations, and leave the rebuild to the customer's Epicor admin or implementation partner. We do not migrate workflows as code.

Migration approach

Six steps for a successful WP ERP to Epicor Prophet 21 data migration

  1. Scope and extraction design

    We audit the source WP ERP instance: PHP version, WordPress version, active extensions (HRM, CRM, Accounting, Payroll, Deals, Document Manager, Inventory, Workflow), custom table record counts, WooCommerce integration status, and any Custom Field Builder data. We verify access to the WordPress MySQL database and test direct table reads on erp_hr_*, erp_crm_*, and erp_ac_* tables. We document the WP ERP version and extension versions because table schemas vary between releases. The scope output is a written extraction specification and a data volume estimate for each object.

  2. Destination Epicor schema review

    We review the destination Epicor Kinetic or Prophet 21 environment: installed modules (HCM, MES, CRM, GL, AP, AR, Inventory, Order Management), current chart of accounts structure, existing customer and supplier records, and any UD field usage. If Epicor already has customer or supplier records, we perform a dedupe check against the WP ERP data and flag matches for the customer's review. We also review Epicor account code format requirements and document any GL account remapping needed for WP ERP account codes.

  3. GL account and party resolution mapping

    We build the GL account mapping table: WP ERP account code to Epicor GL Account number with the Epicor account type assignment (Asset, Liability, Equity, Revenue, Expense). We resolve WP ERP company records to Epicor Customer Party or Supplier Party based on transaction history (sales deals map to Customer, purchase transactions map to Supplier). For WooCommerce duplicate contact candidates, we produce a merge decision report with email, source, and record count. The mapping document is reviewed and signed off before extraction begins.

  4. Direct MySQL extraction and data quality validation

    We run direct MySQL SELECT statements against each WP ERP custom table (erp_hr_employees, erp_hr_departments, erp_crm_contacts, erp_crm_companies, 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 extension-specific tables). We validate record counts against WP ERP admin UI figures, check for null foreign keys and orphaned records, and flag any serialized data fields that require PHP deserialization. Data quality issues (duplicate emails, missing required fields, invalid GL account codes) are reported to the customer for remediation before transform.

  5. Transform and load into Epicor

    We run the migration in dependency order: GL Accounts first (all other accounting data depends on the COA), then Customers and Suppliers (CRM and accounting customers depend on contacts), then Contacts (activity and deal records depend on contact ID), then Employees, then Deals and Activities, then Invoices and Journal Entries, then Inventory (if extension active), then Documents. Each phase runs with Epicor REST or SOAP API calls (depending on Kinetic deployment model) using batch chunking for large record sets. Parent record lookups (contact to customer, account to GL account) resolve in-memory before insert to avoid foreign key violations.

  6. Cutover, validation, and workflow handoff

    We freeze WP ERP writes during cutover, run a final delta migration for any records modified during the migration window, and verify record counts in Epicor against the extraction totals. We spot-check 30-50 records per object against the WP ERP source data and deliver a reconciliation report. We deliver the Workflow automation inventory document to the customer's Epicor admin for rebuild in Epicor Business Process Automation. We support a one-week hypercare window where we resolve any post-migration data issues. We do not rebuild WP ERP workflows in Epicor; 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.
Epicor Prophet 21 logo

Epicor Prophet 21

Destination

Strengths

  • Purpose-built for wholesale distribution with industry-specific replenishment, kitting, and counter-sale workflows out of the box.
  • Multi-warehouse management with bin locations, cross-docking, and real-time inventory visibility across all warehouse locations.
  • Automated replenishment engine with demand-based and min-max planning reduces stockouts and overstock carrying costs.
  • AI-infused reporting via Epicor Prism provides Gen AI-driven insights into ERP data without requiring a BI team.
  • Strong customer retention at 90% and a 50-year track record in the distribution vertical provides long-term vendor stability.

Weaknesses

  • High total cost of ownership — per-user pricing of $150-200/month plus $10K-$500K implementation creates significant budget commitment for small and mid-market distributors.
  • Customization via SDK requires technical expertise and introduces upgrade risk when custom code conflicts with new P21 releases.
  • Report generation performance is a known pain point — multiple users report system freezes during large or complex report exports.
  • Third-party bolt-on reliance for functionality that competitors include natively increases integration complexity and total solution cost.
  • Limited public API documentation — developers building custom integrations report difficulty finding P21 API authentication methods and endpoint specifications.

Complexity grading

How hard is this migration?

Standard ERP migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across WP ERP and Epicor Prophet 21.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • 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 Epicor Prophet 21 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 Epicor Prophet 21 data migrations

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

Can't find your answer?

Walk through your WP ERP to Epicor Prophet 21 migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between five and eight weeks for straightforward cases with up to 500 employees, 5,000 contacts, and a chart of accounts under 500 GL accounts. Migrations with payroll historical data, large WooCommerce CRM contact pools (50,000+ records with duplicate candidates), multi-entity accounting structures, or active inventory data move to twelve to twenty weeks because of extraction complexity, GL account remapping, and customer-vendor-party resolution. Epicor implementation timelines cited by Epicor partners range from three months to over a year for full greenfield implementations; our migration scope is a subset of that since Epicor is already live.

Adjacent paths

Related migrations to explore

Ready when you are

Move from WP ERP.
Land in Epicor Prophet 21, 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