ERP migration
Field-level mapping, validation, and rollback between Lead Commerce and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
Lead Commerce
Source
Epicor Prophet 21
Destination
Compatibility
10 of 13
objects map 1:1 between Lead Commerce and Epicor Prophet 21.
Complexity
CModerate
Timeline
6-10 weeks
Overview
Moving from Lead Commerce to Epicor ERP is a platform upgrade from an SMB order-management tool to a manufacturing-grade ERP. Lead Commerce stores transactional history and location-level stock data with no documented public API — we assess each migration scope individually during discovery, using CSV exports where available and flagging any data that requires direct database access authorized by the customer. Epicor ERP uses a deep manufacturing and distribution data model (Part, Customer, Supplier, Job, Quote, Sales Order, Purchase Order) that requires careful schema mapping before any import. We sequence the migration in dependency order — warehouse and location setup first, then Parts and Customers, then open and historical orders, then Purchase Orders — so that Epicor's referential integrity constraints are satisfied at insert time. Custom Apps and saved reporting data in Lead Commerce have no export path; we document these separately and flag them as manual rebuild items for the customer's team post-migration.
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 Lead Commerce 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.
Lead Commerce
Warehouse Location
Epicor Prophet 21
Plant / Warehouse (Site)
lossyLead Commerce warehouse records define physical locations where stock is held. We map each Lead Commerce warehouse to an Epicor Plant (Erp.Plant) or a PlantWarehouse record depending on whether the destination Epicor tenant uses multi-plant or single-plant with warehouse bins. Plant setup (site code, name, address) must exist in Epicor before inventory records insert, making this the first schema element we configure during migration scoping.
Lead Commerce
Inventory Item
Epicor Prophet 21
Part
1:1Lead Commerce inventory items with SKU, description, unit of measure, and stock level map to Epicor Part records. Multi-location stock levels from Lead Commerce map to Epicor PartWhse (Part Warehouse) records, one per warehouse-to-warehouse mapping. PartNumber in Epicor maps from Lead Commerce sku; PartDescription maps from name. We flag any items with zero or negative quantities in Lead Commerce as data quality issues requiring customer sign-off before import.
Lead Commerce
Inventory Item
Epicor Prophet 21
PartLot (Lot/Serial tracking)
lossyIf Lead Commerce tracks lot or serial numbers on any inventory items, those map to Epicor PartLot records linked to the corresponding PartWhse entries. Lot number, expiration date, and bin location from Lead Commerce migrate as PartLot fields. This mapping is conditional — we configure it only if lot tracking is active in the source data.
Lead Commerce
Customer
Epicor Prophet 21
Customer
1:1Lead Commerce customer records (contact name, company name, email, phone, address) map to Epicor Customer records. We use the customer email as the dedupe key during import and preserve the Lead Commerce customer ID in a custom Customer field for audit traceability. Customer must insert before any Sales Order that references it to satisfy Epicor's FK constraints.
Lead Commerce
Order
Epicor Prophet 21
SalesOrder
1:1Lead Commerce orders map to Epicor SalesOrder records with order lines mapped to OrderDtl. Order header fields (order number, order date, customer reference) map directly; order lines carry SKU, quantity, unit price, and warehouse assignment. We separate open orders from fulfilled orders during scoping — fulfilled orders insert as historical records while open orders require status mapping to Epicor's open-order workflow (Held, Pending, or released).
Lead Commerce
Order (Fulfilled)
Epicor Prophet 21
SalesOrder (Completed) + Inventory Transactions
1:1Lead Commerce fulfilled orders with shipped status map to Epicor SalesOrder records with OrderRel (order releases) marked as shipped, plus corresponding PartTran inventory transaction records that record the reduction of on-hand inventory and the cost of goods sold. This requires that the PartWhse and PartLot records exist in Epicor before this mapping runs.
Lead Commerce
Purchase Order
Epicor Prophet 21
POHeader + PODetail
1:1Lead Commerce purchase orders map to Epicor POHeader with PO lines mapped to PODetail. Open POs (not yet received) insert with status Open; received POs insert as Closed with PORel records reflecting received quantities. Vendor mapping resolves Lead Commerce supplier names to Epicor Supplier records before PO import begins.
Lead Commerce
Supplier
Epicor Prophet 21
Supplier
1:1Lead Commerce suppliers referenced on purchase orders map to Epicor Supplier records. Supplier code, name, address, and payment terms migrate. Supplier must exist in Epicor before any POHeader that references it — this is a hard FK dependency that we sequence after supplier mapping and before PO migration.
Lead Commerce
User
Epicor Prophet 21
User
1:1Lead Commerce user accounts and role assignments are exported as a flat list and mapped to Epicor User records by email. Role names from Lead Commerce map to Epicor CompanyPermission or PlantPermission groups. Any Lead Commerce user without a matching Epicor User goes to a reconciliation queue for the customer's admin to provision before order owner assignment proceeds.
Lead Commerce
Order
Epicor Prophet 21
Quote
lossyLead Commerce orders that have not yet been confirmed (quotes or pro-forma orders in pending or proposal status) map to Epicor Quote records. QuoteHdr and QuoteDtl map from the Lead Commerce order header and line data; quote expiration and revision tracking use Epicor's standard QuoteRev workflow. This mapping is conditional on source order status values that indicate pre-confirmation state.
Lead Commerce
Inventory Item (stock level delta)
Epicor Prophet 21
PartTran
1:1Historical inventory transactions implied by fulfilled orders in Lead Commerce (shipments reducing on-hand) map to Epicor PartTran records. We reconstruct the transaction history from the order fulfillment data by matching each shipped order line to a PartTran record with TranType of SHIP and the correct PartNum, WareHouseCode, and quantity. This mapping runs after Part, PartWhse, and SalesOrder are confirmed loaded.
Lead Commerce
Custom Apps
Epicor Prophet 21
Custom App Data (flagged, non-migratable)
1:1Lead Commerce custom apps carry business logic and associated data with no documented export path. We identify any custom app database tables the customer authorizes access to, extract the raw data, and deliver it as a structured CSV with schema documentation. The app logic itself cannot be transferred and must be rebuilt or re-platformed at the destination. This is flagged as a manual rebuild item, not a migration scope item.
Lead Commerce
Reporting Data
Epicor Prophet 21
Reporting Data (non-migratable)
1:1Lead Commerce saved reports and historical analytics snapshots are not exportable through its standard mechanisms. We include a reporting export step in the pre-migration checklist — customers pull saved reports as PDFs or screenshots before the migration cutoff date. Epicor reporting (Crystal Reports, SSRS, or Kinetic analytics) is rebuilt post-migration by the customer's team or an Epicor consultant using Epicor's native report designer.
| Lead Commerce | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Warehouse Location | Plant / Warehouse (Site)lossy | Fully supported | |
| Inventory Item | Part1:1 | Fully supported | |
| Inventory Item | PartLot (Lot/Serial tracking)lossy | Fully supported | |
| Customer | Customer1:1 | Fully supported | |
| Order | SalesOrder1:1 | Fully supported | |
| Order (Fulfilled) | SalesOrder (Completed) + Inventory Transactions1:1 | Fully supported | |
| Purchase Order | POHeader + PODetail1:1 | Fully supported | |
| Supplier | Supplier1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Order | Quotelossy | Fully supported | |
| Inventory Item (stock level delta) | PartTran1:1 | Fully supported | |
| Custom Apps | Custom App Data (flagged, non-migratable)1:1 | Not supported | |
| Reporting Data | Reporting Data (non-migratable)1:1 | Not 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.
Lead Commerce gotchas
No public API documentation for programmatic export
Custom Apps carry non-portable business logic
Open orders must be manually reconciled at cutover
Reporting snapshots are not exportable
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 export method assessment
We audit the Lead Commerce account for record volumes across Orders (open vs fulfilled), Inventory Items (per SKU and per warehouse), Warehouse Locations, Customers, Purchase Orders, and Suppliers. We assess the available export mechanism — CSV from within the application where available, or authorized database query for bulk extraction. We document any custom app data and flag any reporting snapshots that the customer must export manually before the cutoff. The discovery output is a written migration scope with record counts per object, the confirmed export method, and a data quality pre-assessment identifying duplicates, zero-quantity items, and orphaned foreign keys.
Destination schema design in Epicor
We design the Epicor destination schema based on the customer's target configuration (single plant vs multi-plant, lot tracking vs. standard inventory, and whether manufacturing modules are in scope). This includes configuring Plant and Warehouse records, creating Part records with PartWhse assignments, defining the Customer and Supplier hierarchies, and designing the Sales Order and Purchase Order type codes and status workflows. We deploy the base schema into the Epicor environment before any data migration begins. Any custom fields required for Lead Commerce data that does not map directly to a standard Epicor field are added at this stage.
Data profiling and cleansing
We run a data profiling pass against the extracted Lead Commerce data before loading into Epicor. This includes deduplicating customers by email, resolving supplier names to a canonical list, flagging inventory items with zero or negative quantities, normalizing SKU formats, and identifying any orders with missing customer or item references. The profiling report goes to the customer for review and sign-off. No data loads into Epicor until the customer approves the quality report. This step is where Lead Commerce's SMB-era data issues are surfaced and resolved before they can cause Epicor import rejections.
Warehouse and location setup
We configure Epicor Plant and Warehouse records to match the Lead Commerce warehouse structure. Each Lead Commerce warehouse location maps to an Epicor Plant or PlantWarehouse record. If Lead Commerce tracks bin-level locations within a warehouse, we configure the corresponding bin records in Epicor's warehouse management module. Warehouse configuration must be complete and validated in Epicor before any Part or inventory transaction records insert, because PartWhse records depend on a valid WarehouseCode.
Parent record migration — Parts, Customers, Suppliers
We migrate the master data layer in dependency order: Parts first (with PartWhse records per warehouse), then Customers, then Suppliers. Part insert validates PartNum uniqueness and creates PartPlant records for each active site. Customer insert uses the customer email as the dedupe key and resolves any duplicate entries flagged in profiling. Supplier insert runs after Customer because Purchase Orders reference Suppliers. Each phase emits a row-count reconciliation report and a spot-check comparison against the source data before the next phase begins.
Transactional migration — Purchase Orders and Sales Orders
We migrate Purchase Orders (open and closed) into Epicor POHeader and PODetail, resolving Supplier Num from the Supplier mapping. We then migrate Sales Orders — fulfilled orders insert as completed SalesOrders with shipped OrderRel records; open orders insert as Held or Pending status per the customer's Epicor workflow configuration. Order lines map PartNum to the Part records loaded in the prior phase. We separate fulfilled from open orders so that Epicor's inventory impact is correct and historical reporting reflects completed transactions accurately.
Inventory transaction reconstruction and cutover
We reconstruct implied inventory transactions from fulfilled order data — for each shipped order line in Lead Commerce, we generate a corresponding Epicor PartTran record with TranType of SHIP and the correct warehouse and quantity. This runs after Part, PartWhse, and SalesOrder are confirmed loaded. We then run the cutover delta export: any Lead Commerce records modified between the penultimate export and the go-live date are captured, profiled, and loaded into Epicor. We freeze Lead Commerce writes at cutover, run the final delta, and validate the Epicor record counts against the source totals before declaring the migration complete.
Inventory and handoff
We deliver a final reconciliation report comparing Epicor record counts to the approved Lead Commerce source totals for every object migrated. We deliver a written inventory of Lead Commerce Custom Apps (data only, with schema documentation) and a written inventory of Lead Commerce saved reports for the customer to export manually. We do not rebuild Lead Commerce custom app logic, workflows, or reports as part of the migration scope — those are documented separately for the customer's team or an Epicor consultant to rebuild post-migration. We support a one-week post-cutover reconciliation window to resolve any discrepancies reported by the customer's operations team.
Platform deep dives
Lead Commerce
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 Lead Commerce 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
Lead Commerce: Not publicly documented.
Data volume sensitivity
Lead Commerce 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 Lead Commerce to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your Lead Commerce 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 Lead Commerce
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.