ERP migration
Field-level mapping, validation, and rollback between Grade and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
Grade
Source
Epicor Prophet 21
Destination
Compatibility
10 of 12
objects map 1:1 between Grade and Epicor Prophet 21.
Complexity
CModerate
Timeline
8-12 weeks
Overview
Moving from Grade to Epicor ERP is a manufacturing-foreground migration. Epicor Kinetic is built for discrete, make-to-order, and engineer-to-order manufacturers with deep MES, APS, and production scheduling capabilities that Grade does not document as available. We map Grade's master data objects to Epicor's Bill-to Account, Ship-to Account, Part, JobMtl, JobOper, PO, and SO schemas, handling the Bill-to and Ship-to split that most ERPs require. We sequence Production Orders and Job records to respect Epicor's CoPart and JobOper dependency chains, and we migrate UD01 and UD02 custom fields into Epicor's User Defined Data table structure. Workflows, automations, and report definitions do not migrate; we deliver a written inventory of every configured automation requiring rebuild in Epicor Kinetic BPM or Kinetic Functional Alert.
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 Grade 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.
Grade
Company or Account
Epicor Prophet 21
Customer (BillTo + ShipTo)
1:manyGrade Companies or Accounts map to Epicor Customer records with separate BillTo and ShipTo contact and address structures. We create a Customer record for each Grade Company, then generate a ShipTo record for each unique shipping location found in Grade's address records. The BillTo record carries the primary contact and billing address. ShipTo records reference the Customer as the parent via CustNum and are ordered by ShipToNum sequentially.
Grade
Vendor or Supplier
Epicor Prophet 21
Supplier
1:1Grade Vendors map to Epicor Supplier records. We map the vendor name to Supplier.Name, the vendor code to Supplier.VendorID, and the primary contact address to Supplier.Address fields. POrel records in Epicor reference Supplier by VendorID, so this mapping must be validated before any Purchase Order import begins.
Grade
Part or Product
Epicor Prophet 21
Part
1:1Grade Part or Product records map to Epicor Part master with Part.Number, Part.TypeCode, Part.IUM (inventory unit of measure), and Part.ProdCode (product group). We derive PartWhse records for each site in the destination Epicor org during import. Any Grade unit-of-measure conversions map to PartUOM records. Standard cost and current cost from Grade transfer to PartWhse.LbrBurdenCost, PartWhse.LaborCost, and PartWhse.MaterialCost.
Grade
Bill of Materials
Epicor Prophet 21
CoPart
1:1Grade BOMs map to Epicor CoPart (configurator Part) records with the parent Part as CoPart.PartNum and each component as CoPart.MtlPartNum. Revision and alternate methods from Grade map to CoPart.RevisionCode and CoPart.AltMethod. Multi-level BOMs require explosion during scoping: each sub-assembly BOM becomes a separate CoPart record linked to the parent CoPart.PartNum. We run BOM explosion in a pre-migration transform step before Epicor DMT ingestion.
Grade
Job or Work Order
Epicor Prophet 21
JobMtl + JobOper (via Job entry)
1:1Grade Job or Work Order records map to Epicor Job records created via the JobEntry business object or DMT. The Grade job number becomes JobHead.JobNum, the job type maps to JobHead.JobType, and StartDate and DueDate transfer to JobHead.StartDate and JobHead.DueDate. Material components from Grade job lines map to JobMtl with JobMtl.MtlPartNum, JobMtl.QtyPer, and JobMtl.IssueMethod (manual or backflush). Operations map to JobOper with JobOper.OprSeq, JobOper.OpCode, and JobOper.EstHours. JobOper dependency chains (NextOprSeq) are resolved before import to prevent orphan operations.
Grade
Purchase Order
Epicor Prophet 21
POPOHeader + POPOLine + POrel
1:1Grade Purchase Orders map to Epicor POPOHeader with POLine detail records and POrel release records. The Grade PO number becomes POPOHeader.PONum, vendor reference maps to POPOHeader.VendorNum, and terms map to POPOHeader.TermsCode. Line items become POLine records with PartNum, Quantity, and UnitCost. POLine.Approve = true is set where Grade PO status indicates approved. POrel records are created for each scheduled delivery against a POLine.
Grade
Sales Order
Epicor Prophet 21
OrderHed + OrderDtl
1:1Grade Sales Orders map to Epicor OrderHed and OrderDtl records. The Grade order number becomes OrderHed.OrderNum, the customer reference maps to OrderHed.CustomerPO, and the order date transfers to OrderHed.OrderDate. Line items become OrderDtl with OrderDtl.PartNum, OrderDtl.OrderQty, and OrderDtl.UnitPrice. If Grade ships partial quantities, OrderDtl.TaxCategory and OrderDtl.SellingFactor are preserved. Open orders vs closed orders are distinguished by OrderHed.OpenOrder flag.
Grade
Inventory or Stock
Epicor Prophet 21
PartWhse + PartTran
1:1Grade inventory balances map to Epicor PartWhse records by site (WarehouseCode). We set PartWhse.OnHandQty to the Grade stock quantity, and PartWhse.MinimumQty and PartWhse.MaximumQty to any min-max parameters found in Grade. Historical stock movements from Grade transfer as PartTran records with TranDate, TranQty, and TranType (adjustment, receipt, issue) for audit trail completeness.
Grade
Employee
Epicor Prophet 21
EmpBasic
1:1Grade Employee records map to Epicor EmpBasic with EmpBasic.Name, EmpBasic.EmailAddress, EmpBasic.Phone, and EmpBasic.DepartmentCode. The Grade employee ID becomes EmpBasic.CardID for badge or time-clock integration. Active vs inactive status from Grade maps to EmpBasic.ProductionEmployee. Labor rates from Grade populate EmpBasic.HourlyRate if time-tracking is in scope.
Grade
Custom UD Fields
Epicor Prophet 21
UD01 through UD30 tables
lossyGrade custom fields and user-defined data map to Epicor's User Defined Data tables (UD01-UD30) with Key1 as the primary record reference, Key2 and Key3 as secondary keys, and Character01-Character20, Number01-Number20, Date01-Date10, and CheckBox01-CheckBox20 fields carrying the actual values. We inspect Grade's actual custom field definitions during discovery to build the field-level mapping before UD table ingestion. UD table sequences must be set correctly to satisfy Epicor's Key1 uniqueness constraint.
Grade
Attachments or Documents
Epicor Prophet 21
DocStar or External Archive
1:1Grade file attachments (PDFs, images, exported reports) map to Epicor's document management or an external archive linked via a URL reference in a custom field or the Part.Safetycert field. Epicor's native document storage does not handle bulk attachment migration efficiently; we extract attachments from Grade, package them as a file tree, and deliver them alongside a mapping CSV that links each attachment to its parent record (Part, Job, PO, SO, Customer, or Supplier) with the correct Epicor document key.
Grade
General Ledger Account
Epicor Prophet 21
GLAccount
1:1Grade GL account codes and descriptions map to Epicor GLAccount records with GLAccount.Account and GLAccount.Description. Account types (Asset, Liability, Equity, Revenue, Expense) map to GLAccount.TypeCode. Segment values in Grade's chart of accounts transfer to Epicor GLAccount with segment separators matching the destination COA structure. Account balances migrate as GLJrnLine records in a separate post-schema entry.
| Grade | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Company or Account | Customer (BillTo + ShipTo)1:many | Fully supported | |
| Vendor or Supplier | Supplier1:1 | Fully supported | |
| Part or Product | Part1:1 | Fully supported | |
| Bill of Materials | CoPart1:1 | Fully supported | |
| Job or Work Order | JobMtl + JobOper (via Job entry)1:1 | Fully supported | |
| Purchase Order | POPOHeader + POPOLine + POrel1:1 | Fully supported | |
| Sales Order | OrderHed + OrderDtl1:1 | Fully supported | |
| Inventory or Stock | PartWhse + PartTran1:1 | Fully supported | |
| Employee | EmpBasic1:1 | Fully supported | |
| Custom UD Fields | UD01 through UD30 tableslossy | Fully supported | |
| Attachments or Documents | DocStar or External Archive1:1 | Fully supported | |
| General Ledger Account | GLAccount1: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.
Grade gotchas
Cross-module data lineage (time entry -> invoice -> payroll) must be preserved
Services-shaped data model does not include inventory or MRP
Resume files and AI-parsed candidate data are two separate artifacts
Free / discounted tiers (non-profits, Ukrainian companies) carry feature restrictions
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
Grade instance discovery and object enumeration
We request direct read access to a Grade database export, API documentation, or a live administrative walkthrough to enumerate the actual objects (Companies, Vendors, Parts, BOMs, Jobs, POs, SOs, Inventory, Employees, Custom Fields), their field names, and foreign key relationships. We run a data profiling pass to identify record counts, data quality issues (duplicate Part numbers, missing vendor codes, null required fields), and any custom UD field usage. The discovery output is a confirmed Grade object inventory and a data quality report that determines what cleansing work is required before Epicor DMT ingestion.
Epicor schema design and site configuration
We design the Epicor Kinetic destination schema in the customer's Sandbox or staging environment. This includes provisioning Part records with PartUOM, PartWhse per site, and ProdCode groups; setting up the GL chart of accounts with the correct segment structure; configuring Customer BillTo and ShipTo records; defining Supplier records; and designing the JobType and SalesProcess configurations. If UD01-UD30 custom fields are in scope, we add those table definitions during this step. All schema changes deploy via Epicor Kinetic's deployment workbench or manual entry before any DMT phase begins.
BOM explosion and transform development
If Grade BOMs have multiple levels, we build a BOM explosion transform that flattens or nests the hierarchy into Epicor CoPart records. We identify the top-level Part for each BOM, generate a CoPart record for each sub-assembly, and link CoPart.MtlPartNum to the component Part record. The explosion transform output is a CoPart staging table that we reconcile against the Grade BOM source before DMT ingestion. We deliver the CoPart import batch alongside the Part import batch with a cross-reference report showing every BOM relationship and its Epicor CoPart target.
DMT phase sequencing and Sandbox migration
We run Epicor DMT imports in strict dependency order: Suppliers (Vendors), Customers (Companies with BillTo and ShipTo split), Parts, CoParts (BOMs), PartWhse (inventory by site), EmpBasic (Employees), then transactional records (Jobs, POs, SOs). Each phase emits a reconciliation report with source record count, DMT import log, and destination row count. The customer's Epicor administrator reviews and signs off on each phase before the next begins. We capture any DMT validation errors (missing foreign keys, invalid formats, field length violations) and resolve them with mapping corrections before re-running the phase.
Production migration with cutover delta
After Sandbox sign-off, we run production DMT migration following the same sequenced phases. We freeze Grade writes 24 hours before cutover to capture final transactional state. A delta migration handles any records created or modified during the production migration window. After all DMT phases complete, we run a final row-count reconciliation against the Grade source and a spot-check of 25-50 records per object type. We validate PartWhse on-hand quantities against Grade stock totals, Job status against Grade work order status, and PO and SO open amounts against Grade order totals.
Attachment migration and automation rebuild handoff
We extract Grade file attachments and package them as a structured file tree with a mapping CSV linking each file to its Epicor parent record (Part, Job, PO, SO, Customer, Supplier) by the Epicor key field. The customer's Epicor administrator loads attachments into Epicor's document management or an external archive. We deliver a written inventory of every Grade workflow, automation, or alert configuration requiring rebuild in Epicor Kinetic BPM, Functional Alert, or dashboard reconfiguration. We do not rebuild automations as code inside the migration scope.
Platform deep dives
Grade
Source
Strengths
Weaknesses
Epicor Prophet 21
Destination
Strengths
Weaknesses
Complexity grading
Moderate ERP migration. 2 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Grade and Epicor Prophet 21.
Object compatibility
2 of 8 objects need a manual workaround.
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
Grade: Not publicly documented — rate limits are not published on the marketing site..
Data volume sensitivity
Grade 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 Grade to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your Grade 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 Grade
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.