ERP migration
Field-level mapping, validation, and rollback between ERPNext and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
ERPNext
Source
Epicor Prophet 21
Destination
Compatibility
10 of 13
objects map 1:1 between ERPNext and Epicor Prophet 21.
Complexity
CModerate
Timeline
6-10 weeks
Overview
ERPNext and Epicor ERP occupy different segments of the manufacturing and distribution market, and the migration gap reflects that difference. ERPNext's document-based data model built on Frappe Framework stores entities as DocTypes in MariaDB, with deep customization through custom fields and server scripts. Epicor ERP uses a hierarchical relational schema organized around Part, Customer, Supplier, and Order families, with native MES and EDI capabilities that ERPNext requires custom API work to replicate. We extract data from ERPNext via CSV export and direct database query, flatten multi-level BOMs into Epicor work-center and routing structures, resolve payment status from ERPNext v14's split Payment Ledger, and carry custom field definitions forward as Epicor UD (User Defined) fields. We do not migrate Frappe server scripts, custom Frappe App modules, or Workflows; we deliver a written inventory of these for the customer's Epicor administrator to rebuild.
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.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a ERPNext 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
Customer
Epicor Prophet 21
Customer
1:1ERPNext Customer DocType maps directly to Epicor Customer record. ERPNext stores addresses in a linked Address DocType; Epicor uses separate Customer and CustCnt (contact) records. We flatten ERPNext address rows into Epicor CustCnt contact records linked to the Customer, using the primary-address flag to set the ShipTo default. Tax ID (gstin, tax_id) maps to Customer Tax ID. Customer type (individual, company) maps to Epicor Customer Group. The customer_code field from ERPNext becomes Epicor's CustID with a dedupe pass to avoid conflicts if the customer code space overlaps with existing Epicor data.
ERPNext
Supplier
Epicor Prophet 21
Supplier
1:1ERPNext Supplier DocType maps to Epicor Supplier record. The same address-flattening logic applies as with Customer. ERPNext's supplier type and payment terms map to Epicor Supplier Group and Terms code respectively. Bank details stored in ERPNext's Bank Account child table migrate to Epicor Supplier Bank Account records.
ERPNext
Item
Epicor Prophet 21
Part
1:1ERPNext Item DocType maps to Epicor Part master with type distinction: Item Type of Stock maps to Part Type Stock, Item Type of Service maps to Part Type Service, Item Type of Asset maps to Part Type NonPart. ERPNext's item_group hierarchy maps to Epicor's Product Group codes. UOM (stock UOM, sales UOM, purchase UOM) map to Epicor's UOMClass and UOMCode fields. Valuation method (FIFO, Moving Average, Manual) maps to Part's costing method. Standard rate from ERPNext sets the initial Part standard cost in Epicor.
ERPNext
BOM (Bill of Materials)
Epicor Prophet 21
Part BOM + Work Center + Routing
1:manyERPNext's multi-level BOM nesting with operation routing and workstation definitions does not map to a single Epicor object. We flatten the ERPNext BOM tree during extraction: top-level finished goods map to Epicor Part, each ERPNext BOM level becomes an Epicor Part BOM (material lines), and ERPNext operation routing maps to Epicor JobMtl and JobOper records with work_center_code linked to an Epicor Work Center created from ERPNext's Workstation DocType. If ERPNext's BOM has piece-rate or hour-rate costing on operations, we store those as UD fields on JobOper. Multi-level BOMs are exploded into flat Epicor job records for manufacturing planning.
ERPNext
Stock Entry / Warehouse
Epicor Prophet 21
Warehouse + PartBin
1:1ERPNext warehouse structure (with bin-level data) and open stock ledger entries export via database query or CSV. We map ERPNext warehouse codes to Epicor Warehouse codes and ERPNext bin entries to PartBin records. We flag whether the destination Epicor environment uses periodic or perpetual inventory; Epicor Kinetic uses perpetual by default, which requires GL account mapping from ERPNext's stock reconciliation accounts.
ERPNext
Sales Order
Epicor Prophet 21
Sales Order
1:1ERPNext Sales Order header maps to Epicor OrderHed with order date, customer reference, shipping terms, and payment terms preserved. Line items map to OrderDtl with PartNum resolved, UOM converted, and qty transferred. ERPNext packed items and product bundle components are extracted as separate relational CSVs and mapped to OrderDtl's sub-assembly lines. Delivery schedule dates from ERPNext (delivery date per line) map to Epicor OrderRel release records for controlled shipment scheduling.
ERPNext
Purchase Order
Epicor Prophet 21
PO Header + PO Detail
1:1ERPNext Purchase Order maps to Epicor POHeader with vendor reference, terms, and currency preserved. POLine items map to PODetail with PartNum resolved (for stocked items) or Description and LineDesc (for non-stocked items). ERPNext's material supplied flag and schedule dates map to PORel release records.
ERPNext
Sales Invoice
Epicor Prophet 21
AR Invoice
1:1ERPNext Sales Invoices map to Epicor AR Invoice. ERPNext v14+ introduced a split Payment Ledger where Payment Entry documents are no longer child rows on Invoices. We resolve each invoice's actual payment status by joining ERPNext's Payment Ledger to the Invoice during extraction; invoices with no Payment Ledger entry are imported as Open in Epicor, and invoices with a settled Payment Ledger entry are imported as Closed. Skip this step and every open invoice in Epicor will show unpaid even when settled.
ERPNext
Purchase Invoice
Epicor Prophet 21
AP Invoice
1:1ERPNext Purchase Invoices map to Epicor AP Invoice with the same Payment Ledger resolution logic applied. Supplier reference, invoice date, due date, and tax amounts transfer directly. Pre-payment and credit note entries from ERPNext are mapped to Epicor Debit Memo records.
ERPNext
Project
Epicor Prophet 21
Project + Task
1:manyERPNext Project DocType nests Tasks with assignees, time logs, milestone dates, and cost tracking. Epicor Project uses a hierarchical Task structure where the ERPNext Project maps to Epicor ProjectHed and ERPNext Tasks map to ProjectTask records. ERPNext time logs and expense entries are mapped to ProjectTaskEntry records with the project phase as the costing category. ERPNext's project type (external vs internal) maps to Epicor Project Type code. Milestone dates become Epicor Phase dates on the ProjectTask.
ERPNext
Employee
Epicor Prophet 21
Employee
1:1ERPNext Employee DocType maps to Epicor Employee record. Department and designation map to Epicor's HRM module Department and Job Title fields. Date of joining, date of relieving, and employment status transfer as HireDate, TerminationDate, and Active field. ERPNext's salary structure assignments (stored in Salary Slip or Salary Structure Assignment DocTypes) are consolidated into Epicor HRM Employee records with pay group and compensation frequency as UD fields. Attendance and leave records are extracted as separate time-and-attendance data for customer admin to configure in Epicor HRM's time and attendance module.
ERPNext
Custom Field Registry
Epicor Prophet 21
UD Fields
lossyERPNext custom fields are stored in the Custom Field DocType referencing a parent DocType, with fieldtype, options, and mandatory flags. We export the full custom field registry separately before any data migration begins. Each ERPNext custom field is created as an Epicor User Defined field (UD field on the target UD table or standard table UD column) with the appropriate data type mapped: ERPNext Select becomes Epicor Combo, ERPNext Link becomes Epicor UD lookup, ERPNext Int/Float/Decimal become Epicor number types. The customer reviews the custom field inventory and confirms which ones are business-critical and should be migrated versus which can be dropped.
ERPNext
Attachments / File Records
Epicor Prophet 21
Document Management
1:1ERPNext File DocType stores binary files in Frappe's private files folder or S3-compatible storage, with metadata linking to the parent DocType and doctype name. We export file metadata (filename, URL, doctype reference, doctype_name) as a separate inventory. Binary attachments are not migrated directly through our API ingestion layer; instead we deliver the file metadata inventory and a recommended path for the customer's Epicor admin to move file blobs into Epicor's internal document management system or SharePoint integration post-migration.
| ERPNext | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Customer | Customer1:1 | Fully supported | |
| Supplier | Supplier1:1 | Fully supported | |
| Item | Part1:1 | Fully supported | |
| BOM (Bill of Materials) | Part BOM + Work Center + Routing1:many | Fully supported | |
| Stock Entry / Warehouse | Warehouse + PartBin1:1 | Fully supported | |
| Sales Order | Sales Order1:1 | Fully supported | |
| Purchase Order | PO Header + PO Detail1:1 | Fully supported | |
| Sales Invoice | AR Invoice1:1 | Fully supported | |
| Purchase Invoice | AP Invoice1:1 | Fully supported | |
| Project | Project + Task1:many | Fully supported | |
| Employee | Employee1:1 | Fully supported | |
| Custom Field Registry | UD Fieldslossy | Fully supported | |
| Attachments / File Records | Document Management1:1 | Mapping required |
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.
ERPNext gotchas
CSV import does not detect or prevent duplicate records
Custom server scripts break silently on version upgrades
BOM routing and workstation data requires manual reconstruction
Payment ledger entries in v14+ are decoupled from invoices
Frappe rate limiting is configurable per-site and undocumented
Epicor Prophet 21 gotchas
Third-party bolt-on integrations complicate migration scope
Dirty data without standardized processes compounds migration risk
SDK customizations and BPMs may not survive platform upgrades
Report-based export only for non-technical users
Per-user pricing model requires accurate user count before migration planning
Pair-specific challenges
Migration approach
Discovery and migration scope document
We audit the source ERPNext instance across version (v13, v14, or v15), active DocTypes, custom field registry, server script inventory, BOM depth and operation complexity, open order buffer, transaction history age, and Frappe App extensions. We pair this with an Epicor edition assessment (Kinetic Cloud, Prophet 21, or on-premises) based on the customer's industry vertical and module requirements. The discovery output is a written migration scope with object inventory, BOM flattening plan, archive boundary recommendation, and custom field carry-forward decision.
BOM flattening design and routing reconstruction
We extract the full ERPNext BOM tree (all levels of nested materials and operations) and design the flattening approach before any Epicor schema work begins. Each ERPNext BOM becomes a set of Epicor JobMtl and JobOper records. ERPNext Workstation DocTypes map to Epicor Work Centers with the same labor and overhead rates. Piece-rate and hour-rate operation costs from ERPNext are stored as UD fields on JobOper. Multi-level BOMs are exploded into flat job structures. The flattened BOM design is reviewed by the customer's Epicor manufacturing engineer before Epicor schema creation.
Epicor sandbox schema build and UD field provisioning
We build the destination schema in the customer's Epicor Sandbox environment. This includes creating Part BOMs and Work Centers for the flattened ERPNext BOMs, provisioning UD fields on Customer, Supplier, Part, SalesOrder, and Project tables for migrated custom field values, configuring Order Types and their associated processing rules, and setting up Product Groups and Part classes mapped from ERPNext item groups. Epicor UD field creation requires Epicor Administrator access and is performed in the Sandbox before any production migration step begins.
Data extraction, deduplication, and payment ledger resolution
We extract all master data (Customers, Suppliers, Parts, Employees) from ERPNext via CSV export and direct database query. A pre-extraction deduplication pass flags duplicate customer names, duplicate item codes, and duplicate supplier names with merge recommendations for the customer to review. For invoice data, we run the Payment Ledger join query to resolve open versus closed status before extraction. All custom field values are extracted as a separate named-value dataset mapped to Epicor UD columns by doctype and fieldname.
Sandbox migration and reconciliation
We run a full migration into the Epicor Sandbox using production-like data volume. The customer's Epicor functional lead reconciles record counts (Customers in, Suppliers in, Parts in, BOMs in, Sales Orders in, Purchase Orders in), spot-checks 25-50 records per object against the ERPNext source, and validates BOM routing accuracy against shop floor process documentation. Any BOM flattening corrections, field mapping corrections, or UD field type adjustments are made in the Sandbox before the production migration phase begins.
Production migration in dependency order
We run production migration in record-dependency order: master data first (Customers and Suppliers, then Parts and their BOMs), followed by transactional data (open Sales Orders, open Purchase Orders, open AR/AP Invoices), then Projects and Employees. UD field values are loaded last as a separate pass after the standard fields are committed. BOM loading is sequenced so that sub-assembly parts are loaded before finished goods. Each phase emits a row-count reconciliation report and a random-sample validation check before the next phase begins.
Cutover, validation, and script rebuild handoff
We freeze ERPNext writes during cutover, run a final delta migration of any records modified during the migration window, then enable Epicor as the system of record. We deliver the Frappe server script inventory document and the custom field carry-forward map to the customer's Epicor administrator. We support a one-week hypercare window where we resolve any data reconciliation issues. We do not rebuild Frappe server scripts as Epicor BAQ logic inside the migration scope; that work requires an Epicor implementation partner with manufacturing process expertise and is scoped as a separate engagement.
Platform deep dives
ERPNext
Source
Strengths
Weaknesses
Epicor Prophet 21
Destination
Strengths
Weaknesses
Complexity grading
Moderate ERP migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ERPNext and Epicor Prophet 21.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
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
ERPNext: Configurable per-site; default limits are not publicly documented and are set in site_config.json by the hosting provider. We probe the rate limit headers on discovery and throttle accordingly..
Data volume sensitivity
ERPNext 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 ERPNext to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your ERPNext to Epicor Prophet 21 migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave ERPNext
Other ways to arrive at Epicor Prophet 21
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.