ERP migration
Field-level mapping, validation, and rollback between EBMS and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
EBMS
Source
Epicor Prophet 21
Destination
Compatibility
10 of 12
objects map 1:1 between EBMS and Epicor Prophet 21.
Complexity
CModerate
Timeline
8-12 weeks
Overview
Migrating from EBMS to Epicor ERP is a structured extraction-and-load project shaped by EBMS having no documented public REST API. All source data must be extracted through the built-in report writer, extended to include any custom fields before extraction, and delivered as structured CSV or Excel for Epicor DMT ingestion. Epicor ERP organizes manufacturing data around Part, Supplier, Customer, OrderHed, and POHeader records with separate PartPlant and OrderDtl detail records. We map EBMS Customers to Epicor Customer, EBMS Inventory Items to Part and PartPlant, EBMS Sales Orders to OrderHed and OrderDtl, EBMS Purchase Orders to POHeader and PODetail, and EBMS Vendors to Supplier. Custom fields built in EBMS Customization Designer require database-level enumeration before we can map them. We do not migrate EBMS Reports, automation configurations, or eCommerce website configurations; these are documented in an inventory the customer's admin uses to rebuild in Epicor.
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 EBMS 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.
EBMS
Customer
Epicor Prophet 21
Customer
1:1EBMS Customer records map to Epicor Customer with the CustomerID as the dedupe key. Standard EBMS fields (name, address, terms, ship-to locations) map to Epicor Customer base fields. EBMS customer price levels map to Epicor Customer Price Group assignments on the Customer record or to individual CustomerPart Xref records if the customer has negotiated per-part pricing. We resolve the CustomerID from EBMS using the customer code field and validate uniqueness before insert. EBMS Customer Portal accounts map to Epicor Customer with the portal price level stored in a custom field or as a Customer Price Group assignment.
EBMS
Inventory Item / Product
Epicor Prophet 21
Part + PartPlant
1:1EBMS inventory items map to Epicor Part records. EBMS product fields (description, unit of measure, standard cost, stocking quantity) map to Epicor Part (PartNum, PartDescription,IUM) and PartPlant (OnHandQty, LeadTime, ABCCode). Serial number tracking in EBMS maps to Part.SalesUM and PartStock.SerialNumber if the Epicor environment is configured for serial tracking. EBMS product pricing tiers (price levels 1-99) map to Epicor PriceLbr records or to Part.SalesUM pricing if simplified. EBMS product categories map to Epicor Product Group codes. We request PartPlant configuration (site-specific stocking and planning data) to be exported separately from the base Part master.
EBMS
Sales Order
Epicor Prophet 21
OrderHed + OrderDtl
1:1EBMS Sales Order headers map to Epicor OrderHed with OrderNum as the parent key. EBMS order line items map to OrderDtl with Line, PartNum, OrderQty, UnitPrice, and Discount fields preserved. EBMS payment terms on the order header map to OrderHed.TermsCode. EBMS order status (open, shipped, invoiced, closed) maps to Epicor OrderHed.OpenLine and OrderHed shipped/released flags. We extract OrderHed and OrderDtl via separate EBMS reports and merge them during transform so that the parent-child relationship is resolved at import time. Historical closed orders require careful date-range scoping; we confirm whether the customer wants full history or only open and recent orders.
EBMS
Sales Order Pipeline / Stage
Epicor Prophet 21
OrderHed.Status + OrderHed.TermsCode
lossyEBMS does not have an explicit pipeline or deal-stage model; orders progress through document statuses (Quote, Order, Shipped, Invoiced, Closed). Epicor OrderHed has a Status field that maps to these document states. We configure Epicor OrderHed.Status values to match the EBMS order lifecycle during migration. EBMS quote extensions (quotes not yet converted to orders) map to Epicor QuoteHed if the customer uses Epicor CPQ, or to OrderHed with a Quote-held status if CPQ is not licensed.
EBMS
Purchase Order
Epicor Prophet 21
POHeader + PODetail
1:1EBMS Purchase Order headers map to Epicor POHeader with PONum as the parent key. EBMS PO line items map to PODetail with POLine, PartNum, POLine.UnitCost, OrderQty, and DueDate preserved. EBMS vendor references on PO map to POHeader.SupplierID via the Vendor mapping. EBMS PO approval status maps to POHeader.Status. We extract POHeader and PODetail via separate EBMS reports and merge them before Epicor DMT import. EBMS custom fields on PO headers or lines require explicit mapping to Epicor UD fields on POHeader or PODetail.
EBMS
Invoice / Accounts Receivable
Epicor Prophet 21
InvoiceHed + InvoiceDtl
1:1EBMS invoices map to Epicor InvoiceHed and InvoiceDtl. EBMS invoice header fields (invoice number, date, customer, terms, total) map to Epicor InvoiceHed fields. EBMS invoice line items map to InvoiceDtl with PartNum, InvoiceQty, UnitPrice, and ExtendedPrice. EBMS open AR aging data maps to Epicor CashReceipt if partial payments have been recorded. Historical invoice PDFs are exported as files and attached to Epicor InvoiceHed via DocumentRev records. We scope historical invoices by date range to avoid mid-period splits and confirm with the customer whether the new Epicor environment will carry the full AR history or only open items.
EBMS
Vendor
Epicor Prophet 21
Supplier
1:1EBMS Vendor records map to Epicor Supplier with SupplierID as the dedupe key. EBMS vendor fields (name, address, payment terms, contacts) map to Epicor Supplier base fields. EBMS vendor part numbers for purchased items map to Epicor SupplierPart Xref records for cross-referencing. EBMS vendor-specific pricing tiers map to Epicor SupplierPrice effective-date records. We extract vendors via EBMS vendor reports and map them to Supplier before PO import to satisfy the SupplierID lookup on POHeader.
EBMS
Custom Fields (Customization Designer)
Epicor Prophet 21
UD Fields (PartUims, VendorUims, etc.)
1:manyEBMS custom fields created in the Customization Designer may exist on any entity (Customer, Product, Order, PO, Vendor). These are not always visible in standard EBMS reports without first adding them to the report layout. We request read-only SQL access during data profiling to enumerate all custom field columns in the EBMS database, then work with the customer to confirm which custom fields require migration. Each EBMS custom field maps to a corresponding Epicor UD field (e.g., PartUOM.Character01 for string UD fields, Customer.UDFld1 for customer custom fields). We pre-create Epicor UD fields in the destination environment before data import begins. Fields without an Epicor destination are flagged in the mapping document for the admin to resolve.
EBMS
eCommerce Product Catalog
Epicor Prophet 21
Part + PartWebConf
1:1EBMS eCommerce product data (product name, description, images, availability, pricing, categories) maps to Epicor Part and PartWebConf (web configuration) records if the customer licenses Epicor Commerce or integrates with a third-party commerce platform. EBMS product catalog exports via inventory reports include web-specific fields (web description, image URLs, category assignments) that map to PartWebConf and CategoryPart records in Epicor. EBMS eCommerce tier caps do not affect the migration scope directly, but we confirm whether the customer has been capping or manually handling orders at the tier boundary, which could result in incomplete order history.
EBMS
Customer Portal Accounts
Epicor Prophet 21
Customer + CustomerPriceLbr
1:1EBMS Customer Portal accounts store B2B customer login credentials, price levels, and payment terms. These map to Epicor Customer records with the portal price level stored in CustomerPriceLbr or a custom field on Customer. EBMS portal-specific fields (price level visibility, credit limit override) map to Epicor CustomerCreditLimit and Customer.PriceCode. We extract portal accounts from EBMS customer reports and map them as a supplement to the standard Customer migration, with the portal-specific fields stored in designated Epicor custom fields.
EBMS
GL Accounts
Epicor Prophet 21
GLAccount
1:1EBMS general ledger account codes and descriptions map to Epicor GLAccount with AccountDesc preserved. EBMS account segments (if using segmented chart of accounts) map to Epicor GLAccount with COACode and segments parsed from the EBMS account code. We extract GL accounts via EBMS financial reports and map them before invoice and PO import so that distribution accounts are resolved at load time. Cross-reference mapping from EBMS account codes to Epicor GLAccount numbers is delivered as a written mapping table for the customer's GL team to validate.
EBMS
Salespersons / Sales Representatives
Epicor Prophet 21
SalesRep
1:1EBMS salesperson records map to Epicor SalesRep with SalesRepCode as the dedupe key. EBMS salesperson names, commission rates, and territories map to Epicor SalesRep fields. Salesperson assignments on EBMS orders map to OrderHed.SalesRepCode via the SalesRep mapping during order import. We extract salespersons via EBMS user and sales reports and validate against Epicor SalesRep records before importing orders.
| EBMS | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Customer | Customer1:1 | Fully supported | |
| Inventory Item / Product | Part + PartPlant1:1 | Fully supported | |
| Sales Order | OrderHed + OrderDtl1:1 | Fully supported | |
| Sales Order Pipeline / Stage | OrderHed.Status + OrderHed.TermsCodelossy | Fully supported | |
| Purchase Order | POHeader + PODetail1:1 | Fully supported | |
| Invoice / Accounts Receivable | InvoiceHed + InvoiceDtl1:1 | Fully supported | |
| Vendor | Supplier1:1 | Fully supported | |
| Custom Fields (Customization Designer) | UD Fields (PartUims, VendorUims, etc.)1:many | Fully supported | |
| eCommerce Product Catalog | Part + PartWebConf1:1 | Fully supported | |
| Customer Portal Accounts | Customer + CustomerPriceLbr1:1 | Mapping required | |
| GL Accounts | GLAccount1:1 | Fully supported | |
| Salespersons / Sales Representatives | SalesRep1: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.
EBMS gotchas
No public API forces report-based extraction
Custom fields require exclusive database access
eCommerce tier sales-volume caps affect data scoping
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 EBMS report audit
We conduct a discovery phase that includes auditing every EBMS report used for data extraction, identifying all standard and custom fields used on Customers, Products, Sales Orders, Purchase Orders, Vendors, and Invoices, and requesting read-only SQL access to enumerate custom fields not visible in the report writer. We deliver a written extraction plan that lists each EBMS report to be run, the fields to be added to each report before export, and the file format (CSV or Excel) for each entity. We also confirm the customer's Epicor edition (Kinetic SaaS or on-premise), licensed modules, and any existing Epicor configuration (COA structure, site assignments, currency settings) that affects the destination schema design.
Epicor DMT template configuration and UD field pre-creation
We configure Epicor DMT templates for each entity type in scope (Customer, Part, PartPlant, POHeader, PODetail, OrderHed, OrderDtl, Supplier, InvoiceHed, InvoiceDtl, GLAccount, SalesRep). For each DMT template, we map the EBMS export columns to the corresponding Epicor DMT column names. Custom EBMS fields map to Epicor UD fields (PartUOM, VendorUOM, CustomerUDF fields, etc.) which we pre-create in the destination Epicor environment via Epicor Ice.Library.UpdateUDColumn or a BAQ-generated UD field definition. UD field creation is validated in Epicor Sandbox before production deployment.
EBMS data extraction with custom field inclusion
We guide the customer's EBMS administrator through running each scoped report, verifying that all custom fields are included in the report layout before export. Custom fields not yet in any report are added to the relevant report via the Customization Designer before extraction. We receive the exported CSV or Excel files and perform a data profiling pass that checks record counts, identifies missing required fields for Epicor DMT (e.g., CustomerID, SupplierID, PartNum), flags duplicate records, and validates date ranges for historical scoping. We report any data quality issues back to the customer for remediation before transformation begins.
Data transformation and Sandbox migration
We transform EBMS export files into Epicor DMT-ready CSV format, applying the column mapping, custom field translation, and deduplication logic designed in step two. We run the DMT import into a full-copy or partial-copy Epicor Sandbox using production-like data volume. The customer's Epicor administrator reconciles record counts (Customers in, Parts in, Orders in, POs in, Invoices in), spot-checks 25-50 records against the EBMS source for field-level accuracy, and validates that custom fields populated correctly on the UD field records. Any mapping corrections are made to the transform logic and the Sandbox migration is re-run before production migration begins.
Owner and cross-reference reconciliation
Epicor requires valid references for SupplierID on POHeader, CustomerID on OrderHed, PartNum on OrderDtl, and SalesRepCode on OrderHed. We build a cross-reference table that maps EBMS vendor codes to Epicor SupplierID, EBMS customer codes to Epicor CustomerID, EBMS product codes to Epicor PartNum, and EBMS salesperson codes to Epicor SalesRepCode. Any EBMS records with unmapped references go to a reconciliation queue for the customer to resolve before the production migration phase. We cannot insert an OrderHed without a valid CustomerID; resolution is required before insert.
Production migration in dependency order and cutover
We run production migration in Epicor in dependency order: GLAccount and SalesRep (reference data, no dependencies), Supplier (required for POHeader), Customer (required for OrderHed and InvoiceHed), Part and PartPlant (required for OrderDtl and PODetail), POHeader and PODetail, OrderHed and OrderDtl, InvoiceHed and InvoiceDtl, and finally custom field UD imports. Each phase emits a row-count reconciliation report before the next phase begins. We freeze EBMS writes during the cutover window, run a final delta migration of any records modified during the migration window, then enable Epicor as the system of record. We deliver a written inventory of EBMS Reports, eCommerce configurations, and automation settings that do not migrate and must be rebuilt in Epicor by the customer's admin team or implementation partner.
Platform deep dives
EBMS
Source
Strengths
Weaknesses
Epicor Prophet 21
Destination
Strengths
Weaknesses
Complexity grading
Moderate ERP migration. 4 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 EBMS and Epicor Prophet 21.
Object compatibility
4 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
EBMS: Not publicly documented.
Data volume sensitivity
EBMS 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 EBMS to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your EBMS 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 EBMS
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.