ERP migration
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
Source
Epicor Prophet 21
Destination
Compatibility
12 of 14
objects map 1:1 between ERPnext Enterprise - Bespoke and Epicor Prophet 21.
Complexity
BStandard
Timeline
6-10 weeks
Overview
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.
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 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
Epicor Prophet 21
Customer
1:1ERPNext 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
Epicor Prophet 21
Supplier
1:1Supplier 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
Epicor Prophet 21
Part
1:1ERPNext 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)
Epicor Prophet 21
BOM and Job Routing
1:manyERPNext 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
Epicor Prophet 21
OrderHed and OrderDtl
1:1ERPNext 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
Epicor Prophet 21
POHeader and PODetail
1:1ERPNext 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
Epicor Prophet 21
PartTran
1:1ERPNext 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
Epicor Prophet 21
GLJrnGrp and GLJrnLine
1:1ERPNext 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
Epicor Prophet 21
Project and ProjectPhase
1:1ERPNext 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
Epicor Prophet 21
Employee
1:1ERPNext 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
Epicor Prophet 21
UD Column
lossyERPNext 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
Epicor Prophet 21
FixedAsset
1:1ERPNext 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
Epicor Prophet 21
Customer and Supplier addresses / Contact
1:1ERPNext 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
Epicor Prophet 21
User and UserComp
1:1ERPNext 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.
| ERPnext Enterprise - Bespoke | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Customer | Customer1:1 | Fully supported | |
| Supplier | Supplier1:1 | Fully supported | |
| Item | Part1:1 | Fully supported | |
| Bill of Materials (BOM) | BOM and Job Routing1:many | Mapping required | |
| Sales Order | OrderHed and OrderDtl1:1 | Fully supported | |
| Purchase Order | POHeader and PODetail1:1 | Fully supported | |
| Stock Ledger Entry | PartTran1:1 | Fully supported | |
| GL Voucher / Journal Entry | GLJrnGrp and GLJrnLine1:1 | Fully supported | |
| Project and Task | Project and ProjectPhase1:1 | Fully supported | |
| Employee | Employee1:1 | Fully supported | |
| Custom Field | UD Columnlossy | Fully supported | |
| Asset | FixedAsset1:1 | Fully supported | |
| Address and Contact | Customer and Supplier addresses / Contact1:1 | Mapping required | |
| User and Role | User and UserComp1:1 | 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.
ERPnext Enterprise - Bespoke gotchas
Open-source licence does not cover implementation or hosting costs
Rate limiting is site-configured and returns HTTP 429
No documented bulk-read API for large DocTypes
Major version upgrades break custom DocType scripts
CSV Data Export does not include file attachments
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 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.
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.
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.
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.
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.
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
ERPnext Enterprise - Bespoke
Source
Strengths
Weaknesses
Epicor Prophet 21
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ERPnext Enterprise - Bespoke 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 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
ERPnext Enterprise - Bespoke 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 Enterprise - Bespoke to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave ERPnext Enterprise - Bespoke
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.