ERP migration

Migrate from ERPnext Enterprise - Bespoke to Epicor Prophet 21

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

ERPnext Enterprise - Bespoke logo

ERPnext Enterprise - Bespoke

Source

Epicor Prophet 21

Destination

Epicor Prophet 21 logo

Compatibility

86%

12 of 14

objects map 1:1 between ERPnext Enterprise - Bespoke and Epicor Prophet 21.

Complexity

BStandard

Timeline

6-10 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from ERPNext Enterprise to Epicor ERP is a structural migration driven by the need for industrial-grade manufacturing execution, MES integration, and predictable enterprise licensing at scale. ERPNext uses a DocType-based schema on MariaDB with no bulk-read API, while Epicor ERP exposes REST and OData endpoints with native bulk import capabilities. We resolve the BOM nesting mismatch (ERPNext allows arbitrary depth; Epicor uses a flat BOM plus production routing for multi-level assembly), remap ERPNext custom fields to Epicor UD fields on the relevant business objects, and validate that the destination chart of accounts has matching account codes before GL Vouchers are loaded. Workflows, server scripts, and DocType modifications do not migrate; we deliver a written inventory of every active automation for the customer's Epicor administrator to rebuild in Epicor Kinetic.

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

ERPnext Enterprise - Bespoke logo

ERPnext Enterprise - Bespoke

What's pushing teams away

  • Implementation and partner costs often exceed initial expectations, with quotes ranging from $10,000 to $100,000 for customisation and data migration — customers feel misled by 'free software' messaging.
  • Performance degrades significantly at scale: large transaction volumes across many warehouses can cause 20-second delays on simple POS operations, pushing high-volume retailers to alternative platforms.
  • Customisations written in the Frappe Framework frequently break when upgrading to a new major version, forcing organisations to choose between staying on an unsupported release or rewriting custom code.
  • The out-of-the-box UX and navigation require meaningful training investment; user adoption rates drop when organisations skip formal onboarding with a certified partner.
  • Long-term support contracts and managed hosting fees accumulate, narrowing the cost advantage over proprietary ERP alternatives over a 3–5 year horizon.

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 ERPnext Enterprise - Bespoke objects map to Epicor Prophet 21

Each row shows how a ERPnext Enterprise - Bespoke 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.

ERPnext Enterprise - Bespoke

Customer

maps to

Epicor Prophet 21

Customer

1:1
Fully supported

ERPNext Customer DocType maps to Epicor Customer with name, territory, tax ID, and payment terms. We validate the territory hierarchy against Epicor's Region/Territory setup and resolve any Customer-specific price lists to Epicor Price Code assignments. Customer addresses migrate as Epicor ShipTo records linked by CustomerNum.

ERPnext Enterprise - Bespoke

Supplier

maps to

Epicor Prophet 21

Supplier

1:1
Fully supported

Supplier DocType mirrors Customer structure in ERPNext. We map supplier type, payment terms, and address records to Epicor Supplier. Supplier-specific tax categories and lead-time fields carry forward as UD fields on the Epicor Supplier record if no standard equivalent exists in the destination.

ERPnext Enterprise - Bespoke

Item

maps to

Epicor Prophet 21

Part

1:1
Fully supported

ERPNext Item DocType carries item code, description, item group, stock UOM, valuation method, and barcodes. These map to Epicor Part with PartNum, PartDescription,IUM, TrackLots, and ValuationMethod fields. Barcodes migrate to PartLot or PartBin records depending on Epicor's barcode module configuration. Custom fields on the ERPNext Item DocType map to Part UD columns (UD01, UD02, or like-columns) that we pre-create before Part import.

ERPnext Enterprise - Bespoke

Bill of Materials (BOM)

maps to

Epicor Prophet 21

BOM and Job Routing

1:many
Mapping required

ERPNext BOMs support arbitrary nesting depth; Epicor separates BOM (flat multi-level assembly) from JobMtl and JobOper (exploded assembly operations). We flatten ERPNext BOM hierarchies into Epicor BOM lines and generate JobMtl and JobOper records with operation sequence numbers and work centre assignments. Parent part numbers and quantity-per ratios map 1:1; nested child BOMs are exploded and inserted as separate BOM lines in Epicor with the top-level parent as the assembly.

ERPnext Enterprise - Bespoke

Sales Order

maps to

Epicor Prophet 21

OrderHed and OrderDtl

1:1
Fully supported

ERPNext Sales Order maps to Epicor OrderHed (header) and OrderDtl (line). The customer and ship-to references resolve via CustomerNum; line items resolve PartNum. ERPNext's qty-delta logic against Delivery Notes maps to Epicor's open OrderRel records, which we preserve as release rows with requested ship dates and quantity per release.

ERPnext Enterprise - Bespoke

Purchase Order

maps to

Epicor Prophet 21

POHeader and PODetail

1:1
Fully supported

ERPNext Purchase Order header and line rows map to Epicor POHeader and PODetail. Supplier references resolve via VendorNum; line items resolve PartNum. Advance allocation records that exist as Payment Entries in ERPNext are flagged separately for the customer to create as AP Payments in Epicor post-migration rather than as part of the PO import.

ERPnext Enterprise - Bespoke

Stock Ledger Entry

maps to

Epicor Prophet 21

PartTran

1:1
Fully supported

ERPNext SLEs map to Epicor PartTran records for inventory movement history. Open stock positions migrate as Epicor PartBin records with OnHandQty and BinNum resolved per warehouse. Historical movement logs (which require bulk CSV export from ERPNext due to no bulk-read API) are transformed into Epicor PartTran batch imports using Epicor's Data Import template, with MtlSeq and OprSeq resolved against the Job or Order reference.

ERPnext Enterprise - Bespoke

GL Voucher / Journal Entry

maps to

Epicor Prophet 21

GLJrnGrp and GLJrnLine

1:1
Fully supported

ERPNext vouchers use a double-entry model mapped to Epicor GLJrnGrp and GLJrnLine. We validate that the source chart of accounts has matching account codes in the Epicor Natural Account structure before importing; accounts without a match go to a reconciliation queue for the customer's Epicor admin to map or create before GL import proceeds. ERPNext cost centre and dimension fields map to Epicor's Division, Department, and Project dimension codes.

ERPnext Enterprise - Bespoke

Project and Task

maps to

Epicor Prophet 21

Project and ProjectPhase

1:1
Fully supported

ERPNext Project maps to Epicor Project with start and end dates, billing method, and WBS codes. Tasks map to ProjectPhase and ProjectTask records. Billable hours, labour rates, and expense mappings carry forward as Epicor ProjectBilling line definitions. Custom task fields migrate to Project UD columns pre-created on the Project record.

ERPnext Enterprise - Bespoke

Employee

maps to

Epicor Prophet 21

Employee

1:1
Fully supported

ERPNext Employee DocType migrates to Epicor Employee with employment details, department, and reporting structure. Compensation records (current salary, pay frequency) migrate as UD fields on the Employee record; payroll history migrates only for the most recent fiscal year unless the customer specifies a longer window because ERPNext payroll history is often incomplete.

ERPnext Enterprise - Bespoke

Custom Field

maps to

Epicor Prophet 21

UD Column

lossy
Fully supported

ERPNext custom field definitions are exported separately and applied on the Epicor destination before data import. Each ERPNext Custom Field DocType becomes an Epicor UD column on the corresponding business object (UD01, UD02, or like-columns on Part, OrderHed, Customer, etc.). UD data types are matched to Epicor column types (String, Integer, Date, Decimal) during the custom field pre-creation phase to ensure target fields exist before any data is loaded.

ERPnext Enterprise - Bespoke

Asset

maps to

Epicor Prophet 21

FixedAsset

1:1
Fully supported

ERPNext Asset records with active depreciation schedules migrate to Epicor FixedAsset with acquisition details, useful life, and depreciation method. Assets already depreciated to zero are flagged and not migrated unless the customer specifies they need the historical record. Depreciation records migrate as Epicor FaDep records linked to the FixedAsset.

ERPnext Enterprise - Bespoke

Address and Contact

maps to

Epicor Prophet 21

Customer and Supplier addresses / Contact

1:1
Mapping required

ERPNext stores contacts and addresses as separate DocTypes linked by Dynamic Links. We resolve these relationships during export to produce flat contact records with embedded address data compatible with Epicor's address schema. Customer ShipTo and Contact records are created with the correct parent reference (CustomerNum) and address role (ShipTo, BillTo, Primary).

ERPnext Enterprise - Bespoke

User and Role

maps to

Epicor Prophet 21

User and UserComp

1:1
Fully supported

ERPNext enabled users map to Epicor User records by email match. Role profiles export as Epicor UserComp permission sets. Role permission rules that define field-level or document-level access are documented as a written inventory for the customer's Epicor admin to configure in Kinetic Security Administration 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.

ERPnext Enterprise - Bespoke logo

ERPnext Enterprise - Bespoke gotchas

High

Open-source licence does not cover implementation or hosting costs

Medium

Rate limiting is site-configured and returns HTTP 429

Medium

No documented bulk-read API for large DocTypes

High

Major version upgrades break custom DocType scripts

Medium

CSV Data Export does not include file attachments

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

  • ERPNext BOM nesting must be flattened for Epicor routing

    ERPNext supports BOMs with unlimited nesting depth using recursive item ratios; Epicor separates BOM (flat component list with quantity-per) from JobMtl and JobOper (operation-specific material and routing). Deeply nested ERPNext assemblies must be exploded into a flat BOM structure in Epicor with parent-child relationships resolved by quantity explosion. We perform the BOM flatten as part of the transformation phase, generating JobMtl records for each exploded component and JobOper records for routing operations. Customers with configure-to-order variants should note that ERPNext product configurations require a separate reconfiguration strategy in Epicor CPQ or Epicor Configure To Order.

  • ERPNext has no bulk-read API; large SLE and GL exports require direct DB access

    ERPNext exposes REST endpoints for single-document CRUD but lacks a bulk-read endpoint. High-volume DocTypes such as Stock Ledger Entries and GL Vouchers require direct MariaDB export or the Data Export CSV interface, both of which demand careful sequencing to avoid server timeout on large result sets. We monitor the MariaDB connection during extraction and chunk exports by date range or warehouse. Epicor's bulk ingestion via REST and Data Import templates accommodates these volumes natively once we complete the transformation.

  • ERPNext custom fields use a DocType layer with no Epicor direct equivalent

    ERPNext stores custom field definitions in the Custom Field DocType and attaches them to standard DocTypes at runtime. Epicor uses UD fields (UD01, UD02, and like-columns on specific business objects) with a different registration model. We pre-create UD columns on the target Epicor business objects before any data import, using the ERPNext Custom Field export as our source of truth for field names, data types, and default values. ERPNext custom server scripts that reference custom fields must be documented separately; they do not migrate as code.

  • Chart of accounts structure may require pre-migration remap

    ERPNext's flexible account structure with cost centre and dimension filters does not map directly to Epicor's fixed Natural Account dimension plus optional Division, Department, and Project dimension codes. We audit the ERPNext account tree before GL migration and flag any accounts that do not have a clear Epicor Natural Account counterpart. The customer's Epicor administrator creates missing account codes before GL imports run; skipping this step causes GLJrnLine rejects on the first import attempt.

  • File attachments export separately from ERPNext Data Export

    ERPNext's native Data Export DocType exports field data only. Scanned documents on Purchase Receipts, images on Item masters, and PDFs attached to Sales Orders are stored in the ERPNext file store (file system or S3 bucket) and must be exported via bench export-background-files or direct filesystem access. We handle attachment export as a parallel workflow, preserving the folder hierarchy so files can be re-associated with the correct Epicor records (Part docs, OrderHed attachments, Supplier attachments) post-import. Binary attachment re-linking is scoped separately from the core data migration.

Migration approach

Six steps for a successful ERPnext Enterprise - Bespoke to Epicor Prophet 21 data migration

  1. Discovery and ERPNext audit

    We audit the source ERPNext instance across all active modules, DocTypes, custom fields, custom scripts, and BOM hierarchies. We inventory the item count, SLE volume by warehouse, open order count, GL account structure, and active user count. We also assess whether the instance is self-hosted (and thus MariaDB-accessible for bulk export) or Frappe Cloud (API-only export). The discovery output is a written migration scope, a BOM complexity rating (flat, medium, or deep nesting), a chart of accounts gap analysis, and a recommendation on whether to archive historical SLEs before migration or carry them forward.

  2. Epicor schema pre-creation and UD field setup

    We pre-create the Epicor destination schema in a non-production environment before any data moves. This includes creating UD columns (UD01, UD02, and like-columns on Part, OrderHed, Customer, Supplier, Employee, and Project) for every ERPNext custom field, configuring the chart of accounts with any missing Natural Account codes, setting up BOM structures and Job Routing templates, and configuring warehouse and bin structures. Epicor Kinetic requires schema to exist before record inserts; we complete this step first so that no data is rejected for missing target fields during import.

  3. BOM analysis and flattening design

    We analyse the ERPNext BOM tree for nesting depth and routing complexity. Multi-level BOMs are exploded into a flat Epicor BOM with JobMtl and JobOper records. Workstations referenced in ERPNext workstations map to Epicor Work Centre codes. Configure-to-order variants and product configurations are flagged as a separate workstream; these require Epicor CPQ or Configure-to-Order setup that falls outside standard migration scope. The BOM flattening design is documented and validated against the Epicor BOM validation report before production import.

  4. Sandbox migration and reconciliation

    We run a full migration into an Epicor non-production environment using representative data volume. The customer's Epicor administrator reconciles record counts against the ERPNext source (Customers in, Suppliers in, Parts in, BOM lines in, open orders in, PartBin quantities in, PartTran rows in). Spot-checks on 25-50 random records verify field-level accuracy. Any mapping corrections, missing UD columns, or account gaps are resolved in this phase. The administrator signs off the schema and mapping before production migration begins.

  5. Production migration in dependency order

    We run production migration in strict dependency order: Parts (required for BOM and orders), BOMs and Routings (required for jobs), Warehouses and Bins (required for inventory), Customers and Suppliers (required for orders), Price Lists, Open Purchase Orders, Open Sales Orders with OrderRel releases, PartBin open quantities (Stock Ledger open positions), PartTran historical movements, Project and ProjectPhase, Employees, and finally GLJrnGrp and GLJrnLine. Each phase emits a row-count reconciliation report; migration does not proceed to the next phase until the previous phase reconciles within a 0.5% variance.

  6. Delta migration, cutover, and automation handoff

    We freeze ERPNext writes during cutover, run a final delta migration of any records created or modified in the source during the production migration window, then enable Epicor as the system of record. File attachments are re-linked to their Epicor records. We deliver a written inventory of every active ERPNext workflow, DocType server script, and automation with a recommended Epicor Kinetic equivalent. We do not rebuild ERPNext automations as Epicor Kinetic Business Process Management (BPM) or REST calls inside the migration scope; that is a separate engagement. We provide a one-week hypercare window for reconciliation issues.

Platform deep dives

Context on both ends of the pair

ERPnext Enterprise - Bespoke logo

ERPnext Enterprise - Bespoke

Source

Strengths

  • GPL-3.0 open-source licence with zero software cost eliminates per-user or per-module vendor lock-in.
  • Three-tier architecture (MariaDB, Python app server, JavaScript frontend) runs on commodity cloud infrastructure.
  • Broad module coverage — accounting, CRM, inventory, manufacturing, HR, projects, POS — ships as standard rather than paid add-ons.
  • Frappe Framework enables programmatic DocType creation, Custom Field injection, and workflow scripting without modifying core source.
  • Active GitHub community (11k forks, 33k stars) surfaces bugs and workarounds publicly and continuously.

Weaknesses

  • Zero licence cost obscures the real total cost of ownership: hosting, implementation, partner fees, and support contracts are substantial and often under-estimated.
  • Performance degrades under high transaction throughput — documented cases show POS operations slowing to 20+ seconds at scale, requiring hardware upgrades or partitioning work.
  • Custom Frappe scripts and DocType modifications are not automatically forward-compatible with new major versions, creating upgrade risk for heavily customised instances.
  • No formal bulk-read API; large-volume migrations rely on CSV Data Export, which requires careful sequencing to avoid timeout on large result sets.
  • Documentation for advanced programmatic tasks — custom API endpoints, background job handling, long-term data archiving — is fragmented across forum posts and is not centrally maintained.
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 ERPnext Enterprise - Bespoke 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

    ERPnext Enterprise - Bespoke: Configurable per-site via site_config.json (default 600 seconds of request time per hour); defaults to HTTP 429 on exceedance with Retry-After header.

  • Data volume sensitivity

    B

    ERPnext Enterprise - Bespoke doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your ERPnext Enterprise - Bespoke 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 ERPnext Enterprise - Bespoke to Epicor Prophet 21 data migrations

Answers to the questions buyers ask most during ERPnext Enterprise - Bespoke to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your ERPnext Enterprise - Bespoke to Epicor Prophet 21 migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations under 50,000 items, flat BOMs, and no multi-company setup complete in six to ten weeks. Migrations with multi-level BOM nesting, high-volume stock ledger (over 500,000 SLEs), multi-company setups, or a chart of accounts remap requirement extend to twelve to twenty weeks. The BOM flattening design and Epicor schema pre-creation are the longest phases for manufacturing-heavy migrations.

Adjacent paths

Related migrations to explore

Ready when you are

Move from ERPnext Enterprise - Bespoke.
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