ERP migration
Field-level mapping, validation, and rollback between Epicor Prophet 21 and Acumatica. We move data and schema; workflows are rebuilt natively in Acumatica.
Epicor Prophet 21
Source
Acumatica
Destination
Compatibility
14 of 15
objects map 1:1 between Epicor Prophet 21 and Acumatica.
Complexity
BStandard
Timeline
2–5 days
Try the reverse
Overview
Epicor Prophet 21 stores data in a Microsoft SQL Server database organized in header/detail table pairs — oe_hdr/oe_line for orders, po_hdr/po_line for purchase orders, customer tables with address splits, and user-defined fields in separate UDF tables. Acumatica exposes a REST API backed by an identical relational model — Customers, Stock Items, Sales Orders, Purchase Orders, Warehouse Management — so direct field-to-field mapping is structurally straightforward. The migration complexity lives in three zones: P21 user-defined fields (scattered across multiple tables) must be consolidated into Acumatica's user-defined field framework; P21's multi-company-in-one-database model must map to Acumatica's per-company tenant structure or a single company with cost-bucket segmentation; and P21 DynaChange customizations and Business Rules have no Acumatica equivalent and must be documented for rebuild. We extract from P21 via direct SQL queries (on-premises) or the P21 Data Services OData API (cloud/SaaS), stage in a FlitStack-controlled schema, transform all field names and data types, then load into Acumatica via its REST API with batch upsert. A delta-pickup window captures any P21 records modified during the cutover window, and an audit log with one-click rollback covers reconciliation failures.
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.
Source platform
Epicor Prophet 21 platform overview
Scorecard, SWOT, gotchas, and pricing for Epicor Prophet 21.
Destination platform
Acumatica platform overview
Scorecard, SWOT, gotchas, and pricing for Acumatica.
Data migration guide
The complete Acumatica migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Epicor ERP migration guide
Understand the data you're exporting from Epicor Prophet 21 before mapping it.
Destination checklist
Acumatica migration checklist
Pre- and post-cutover tasks for moving onto Acumatica.
Source checklist
Epicor ERP migration checklist
Exit checklist for unwinding your Epicor Prophet 21 setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Epicor Prophet 21 object lands in Acumatica, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Epicor Prophet 21
Customer (cust_hdr)
Acumatica
Customer (CR303000)
1:1P21 customer header maps to Acumatica Customer. P21's company_cd and cust_id combine to form Acumatica's CustomerID. Primary contact name and email pull from the cust_contact join; P21's credit_limit has no native Acumatica equivalent and migrates as a custom decimal field on the customer summary.
Epicor Prophet 21
Customer Address (cust_addr)
Acumatica
Customer Location (CR303010)
1:1P21 stores addresses in a separate cust_addr table keyed by cust_id and addr_cd. Each address row becomes an Acumatica Customer Location — AddressLine1, City, State, ZIP, Country map directly. The primary address flag (addr_cd = 'MAIN') becomes the IsDefaultLocation flag in Acumatica.
Epicor Prophet 21
Vendor (vendor_hdr)
Acumatica
Vendor (AP303000)
1:1P21 vendor header maps to Acumatica Vendor. P21 vendor_id becomes VendorCD in Acumatica; vendor_name becomes the VendorName attribute. The vendor's primary address (from vendor_addr) is also pulled during extraction and written to the default vendor location in Acumatica. Terms of payment (vendor.terms_code) maps to Acumatica's PaymentTermID by value lookup against the terms table, with unmatched codes defaulting to net-30.
Epicor Prophet 21
Vendor Location (vendor_addr)
Acumatica
Vendor Location (AP303010)
1:1P21's vendor address table maps to Acumatica Vendor Location with AddressLine1, City, State, and ZIP carried over directly. The primary vendor contact (contact_name, phone, email) populates the Vendor Contact fast-tab on the Acumatica vendor record, preserving the full vendor communication profile established in P21.
Epicor Prophet 21
Item (inv_hdr / item)
Acumatica
Stock Item (IN202000)
1:1P21 item master (inv_hdr or item table depending on P21 version) maps to Acumatica Stock Item. P21 part_no becomes InventoryCD; description becomes Description. Item class (prod_cat or item_class) maps to Acumatica ItemClassID; UOM from P21's uom_code maps to Acumatica's BaseUnit and SalesUnits.
Epicor Prophet 21
Item Warehouse (inv_loc)
Acumatica
Warehouse (WH204000) + Stock Item Site
1:1P21 warehouse locations (inv_loc table with whse_cd and loc_cd) map to Acumatica Warehouses. Each unique P21 warehouse code generates a corresponding Acumatica warehouse. Qty on hand, reorder point, and safety stock from P21's inv_loc aggregate into Acumatica's Stock Item Site records (IN2040S0 series) linked to each warehouse, preserving the on-hand position at the location level.
Epicor Prophet 21
Sales Order Header (oe_hdr)
Acumatica
Sales Order (SO301000)
1:1P21 order header (oe_hdr) maps to Acumatica Sales Order. Order number, order date, customer ID, and branch (whse_cd) map directly. P21 order status codes (HOLD, OPEN, SHIPPED) map to Acumatica Status values by value lookup. Freight and miscellaneous charges carry into Acumatica's Order Total.
Epicor Prophet 21
Sales Order Line (oe_line)
Acumatica
Sales Order Detail (SO3010L0)
1:1P21 order lines (oe_line) map to Acumatica Sales Order Details. Line number, part number (as InventoryID), description, quantity ordered, quantity shipped, unit price, and warehouse branch all transfer directly. Any promotional or volume discounts recorded in P21's disc_pct field become Acumatica's ManualDiscount field, preserving the original pricing intent at the line level.
Epicor Prophet 21
Purchase Order Header (po_hdr)
Acumatica
Purchase Order (PO301000)
1:1P21 PO header maps to Acumatica Purchase Order. VendorID, order date, terms, and branch warehouse transfer directly via direct field mapping. Acumatica uses a separate Vendor Ref (VendorRefNbr) field that captures P21's po_num for cross-system reconciliation, ensuring your AP team can match P21 PO numbers to Acumatica documents without ambiguity.
Epicor Prophet 21
Purchase Order Line (po_line)
Acumatica
Purchase Order Detail (PO3010L0)
1:1P21 PO lines map to Acumatica PO Details with line number, part number, description, quantity ordered, qty received, and unit cost carried over. P21 landed cost elements (freight, duty) require Acumatica's landed cost feature configuration before lines can capture those values.
Epicor Prophet 21
User-Defined Fields (P21 UDF tables)
Acumatica
Custom Fields (Acumatica UDF Framework)
1:1P21 UDFs are stored in separate tables per module (e.g., cust_udf, item_udf) with column names that are user-defined. Each UDF column becomes an Acumatica user-defined field on the corresponding screen — string UDFs become String fields, numeric UDFs become Decimal fields, and date UDFs become Date fields. An inventory UDF table covering 20+ custom columns will generate 20+ Acumatica custom field definitions.
Epicor Prophet 21
Part Cross-Reference (xc_ref)
Acumatica
Inventory Cross-Reference (IN2040G0)
1:1P21's part cross-reference table (xc_ref) maps to Acumatica's Inventory Cross-Reference screen. Each P21 alternate part number, manufacturer code, or customer-specific part ID becomes an Acumatica cross-reference row with the appropriate type designation (Vendor, Customer, or Manufacturer). The reference description and any preferred-vendor flags carry over to maintain your current sourcing relationships in Acumatica.
Epicor Prophet 21
Lot / Serial Number (lot_ser)
Acumatica
Lot / Serial Class (IN201030) + InventoryReceipt Details
1:1P21 lot/serial tracking data (lot_ser table) maps to Acumatica's Lot/Serial classes and receipt-level detail. Lot number, expiration date, and quantity on hand carry into Acumatica's LotSerialNbr and Qty fields. Acumatica's attribute configuration on the lot class captures any P21 lot-level custom fields.
Epicor Prophet 21
P21 Company Segmentation
Acumatica
Acumatica Company / Cost Bucket
1:manyP21 multi-company databases share a single schema with company-segmented data — each company has its own cust_id, vendor_id, and order number sequences. Teams with 2–5 P21 companies can map to individual Acumatica tenants (for isolated tax/reporting) or a single Acumatica company with cost-bucket segmentation for shared GL accounts. FlitStack surfaces the trade-offs in the migration plan before the run.
Epicor Prophet 21
DynaChange Customizations
Acumatica
No Equivalent — Acumatica Customization Project
1:1P21 DynaChange allows UI layout modifications, tab additions, and field visibility rules. Acumatica has no DynaChange equivalent — UI customizations are built as Acumatica Customization Projects (screen extensions, PX graph overrides). FlitStack inventories all DynaChange rules during discovery and exports a functional specification for your Acumatica developer to rebuild as customization projects.
| Epicor Prophet 21 | Acumatica | Compatibility | |
|---|---|---|---|
| Customer (cust_hdr) | Customer (CR303000)1:1 | Fully supported | |
| Customer Address (cust_addr) | Customer Location (CR303010)1:1 | Fully supported | |
| Vendor (vendor_hdr) | Vendor (AP303000)1:1 | Fully supported | |
| Vendor Location (vendor_addr) | Vendor Location (AP303010)1:1 | Fully supported | |
| Item (inv_hdr / item) | Stock Item (IN202000)1:1 | Fully supported | |
| Item Warehouse (inv_loc) | Warehouse (WH204000) + Stock Item Site1:1 | Fully supported | |
| Sales Order Header (oe_hdr) | Sales Order (SO301000)1:1 | Fully supported | |
| Sales Order Line (oe_line) | Sales Order Detail (SO3010L0)1:1 | Fully supported | |
| Purchase Order Header (po_hdr) | Purchase Order (PO301000)1:1 | Fully supported | |
| Purchase Order Line (po_line) | Purchase Order Detail (PO3010L0)1:1 | Fully supported | |
| User-Defined Fields (P21 UDF tables) | Custom Fields (Acumatica UDF Framework)1:1 | Fully supported | |
| Part Cross-Reference (xc_ref) | Inventory Cross-Reference (IN2040G0)1:1 | Fully supported | |
| Lot / Serial Number (lot_ser) | Lot / Serial Class (IN201030) + InventoryReceipt Details1:1 | Fully supported | |
| P21 Company Segmentation | Acumatica Company / Cost Bucket1:many | Fully supported | |
| DynaChange Customizations | No Equivalent — Acumatica Customization Project1: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.
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
Acumatica gotchas
API user licenses cap concurrent sessions and request throughput
Multi-tenant filtering requires CompanyID awareness
Custom fields require separate discovery before field mapping
Notes and attachments use a separate linked table structure
Implementation timelines frequently run 3–9 months end-to-end
Pair-specific challenges
Migration approach
Inventory the P21 schema and extraction strategy
FlitStack reviews your P21 environment: version, patch level, modules in use, number of UDF tables and column definitions, DynaChange rule inventory, number sequence configurations, and whether P21 is on-premises (direct SQL) or SaaS (OData/API extraction). On-premises P21 uses read-only SQL access; SaaS P21 uses the P21 Data Services OData API with pagination limits. We deliver a P21 Extraction Specification document that names every table and field we will read before we touch any data.
Design the Acumatica target schema
Based on the P21 inventory, FlitStack produces an Acumatica Schema Setup Plan: custom field definitions for every P21 UDF, item class configuration for valuation method, warehouse definitions for every P21 location code, and a decision framework for multi-company P21 setups (multi-tenant vs. cost-bucket). Your Acumatica administrator creates the schema elements before data arrives — we provide the exact list so nothing is missed.
Extract, stage, and validate P21 master data
Master data (customers, vendors, items, warehouses, price lists, and all UDF values) is extracted from P21, staged in FlitStack's validation environment, and checked for referential integrity — orphaned customer addresses, items with no UOM, vendors without payment terms. We surface duplicates, stale records, and incomplete addresses before the migration run. Historical orders (open and closed) are extracted separately after master data is confirmed clean.
Run a sample migration with field-level diff
A representative slice — typically 100–500 records spanning customers, items, open orders, and closed orders — migrates into a test Acumatica company. We generate a field-level diff between the P21 source values and the Acumatica destination values for every mapped field, so you can verify UDF consolidation, number sequence preservation, lot/serial traceability, and order status mapping before committing to the full run.
Execute full migration with delta-pickup and rollback guard
The full migration loads into the production Acumatica company via Acumatica's REST API with batch upsert for transactional records. A delta-pickup window (typically 24–48 hours after the full run completes) captures any P21 records modified during cutover — open orders in flight, new customer additions. FlitStack maintains an audit log of every record written, its source value, and its destination key. One-click rollback reverts all Acumatica records to the pre-migration state if reconciliation against P21 reveals unexpected gaps.
Platform deep dives
Epicor Prophet 21
Source
Strengths
Weaknesses
Acumatica
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 3 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 Epicor Prophet 21 and Acumatica.
Object compatibility
3 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
Epicor Prophet 21: Not publicly documented by Epicor; third-party connector rate limits vary by integration layer.
Data volume sensitivity
Epicor Prophet 21 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 Epicor Prophet 21 to Acumatica migration scoping. Not seeing yours? Book a call.
Walk through your Epicor Prophet 21 to Acumatica migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Epicor Prophet 21
Other ways to arrive at Acumatica
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.