ERP migration
Field-level mapping, validation, and rollback between Fulfil and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
Fulfil
Source
Epicor Prophet 21
Destination
Compatibility
11 of 12
objects map 1:1 between Fulfil and Epicor Prophet 21.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Fulfil and Epicor ERP serve overlapping but distinct mid-market segments. Fulfil targets high-growth ecommerce brands with deep Shopify, Amazon, and SPS Commerce channel integrations and a REST API that exposes operational data without aggregated reporting convenience. Epicor ERP targets manufacturing, distribution, and retail with configure-to-order, MES integration, and deep landed-cost accounting that Fulfil does not natively offer at scale. The migration is a schema translation problem: Fulfil stores custom product options as order-line metadata (not a distinct object), multi-entity financials require a manual chart of accounts crosswalk, and PO receipts must sequence before vendor closeout to avoid orphaned receiving commitments. We use Fulfil's REST API with conservative pagination pacing, map all standard objects to their Epicor equivalents, and deliver a written inventory of Work Order BOM hierarchies, custom fields, and financial account structures that require manual configuration post-migration. Workflows, automations, and channel integration logic do not migrate as code.
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 Fulfil 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.
Fulfil
Sales Order
Epicor Prophet 21
Sales Order
1:1Fulfil Sales Orders map 1:1 to Epicor Sales Orders via REST API extraction and Epicor Sales Order entry API. We preserve order number, order date, customer reference, fulfillment state (Open, Closed, Cancelled), channel attribution (Shopify order ID, Amazon order ID), and all line items with quantity, unit price, and discount. Shipping and payment records are pulled in the same extraction pass and linked via Epicor's OrderHed and OrderRel structures. Order holds and credit check flags map to Epicor OrderHed fields.
Fulfil
Item (Inventory)
Epicor Prophet 21
Part
1:1Fulfil Items (SKU, description, cost, price, reorder point, bin location) map to Epicor Part Master records. Standard cost from Fulfil Item becomes Epicor Part.Plant Unit Cost; standard price becomes Part.SellingFactor-derived pricing. User-defined custom fields on the Fulfil Item object are mapped to Epicor Part custom fields (Part._x_ fields) which we create during schema setup. Lot and serial number control settings on the Fulfil Item determine the Part.LotShimize and Part.SerialTracking fields in Epicor.
Fulfil
Purchase Order
Epicor Prophet 21
Purchase Order
1:1Fulfil Purchase Orders map to Epicor POHeader records with line items mapped to POLine. Vendor assignment, expected dates, and receiving records transfer directly. We sequence PO receipts before vendor closeout to ensure no orphaned receiving commitments land in Epicor against a closed vendor. Open PO status (Open, Closed, Cancelled) maps to Epicor POHeader.OpenPor flag and PORel records.
Fulfil
Warehouse / Location
Epicor Prophet 21
Site + Warehouse
1:1Fulfil multi-warehouse configurations with bin-level location data map to Epicor Site records with nested Warehouse and Bin structures. Each Fulfil location and its associated stock snapshot becomes a separate Epicor PartBin entry per Site. Bin location strings from Fulfil (e.g., A-01-03) are parsed and mapped to Epicor WarehouseBin.BinNum. Multi-entity deployments with separate legal entity warehouses map to separate Epicor Sites with inter-company configuration handled post-migration.
Fulfil
Customer
Epicor Prophet 21
Customer
1:1Fulfil Customer records (contact details, billing address, shipping addresses, account-level pricing tiers) map to Epicor Customer. We use Fulfil customer number as Epicor Customer.CustID with name and contact fields mapped directly. Multiple shipping addresses from Fulfil become Epicor ShipTo records under a single Customer. Custom fields on the Fulfil Customer object require explicit per-tenant field mapping. Account-level pricing tiers map to Epicor PriceLbr and PriceMat codes or a Customer-level price group reference.
Fulfil
Bill / Vendor Invoice
Epicor Prophet 21
AP Invoice
1:1Fulfil vendor invoice records export from the financials module and map to Epicor AP Invoice records (APInvoiceHed and APInvoiceDtl). Mapping depends on the destination's chart of accounts structure which we reconcile during the manual account crosswalk phase. Open invoices transfer with full line-level detail; historical invoices transfer as posted records with invoice number preserved for audit trail continuity.
Fulfil
Lot Number
Epicor Prophet 21
Part Lot
1:1Fulfil lot tracking assignments on Items tie to inventory transactions and map to Epicor PartLot records. Lot number, lot expiration date, and lot attribute fields transfer as PartLot.LotNum and custom lot fields. Lot assignments are carried through as part of inventory ledger entries so that traceability across receiving and fulfillment is preserved in Epicor's lot tracking system.
Fulfil
Serial Number
Epicor Prophet 21
Part Serial Number
1:1Fulfil serial number assignments on Items map to Epicor PartSN records linked to the associated PartLot and PartBin. Serialized inventory traceability from Fulfil receiving through to sales order fulfillment is preserved as PartSN.SerNum with activity history logged to PartTran entries in Epicor.
Fulfil
Custom Product Options (Engraving, Made-to-Order)
Epicor Prophet 21
Configure-to-Order / Part Revision Attribute
1:manyFulfil custom product data (engraving text, embroidery specs, made-to-order attributes) is stored as extended attributes on Sales Order Lines rather than as a standalone object. We extract these as flattened line properties and map them to Epicor OrderDtl._x_ custom fields for the Sales Order. For customers using Epicor's configure-to-order module, we also create Part Revision attributes to carry the product specification data. The customer chooses between Sales Order line custom fields or Part Revision attributes during scoping based on whether they need the customization data to live on the Part Master or on the Order.
Fulfil
Work Order
Epicor Prophet 21
Job Entry (JobHead / JobMtl / JobOper)
1:1Fulfil manufacturing work orders, BOMs, and production steps accessible via API map to Epicor Job Entry records (JobHead for the job header, JobMtl for materials, JobOper for operations). Complex multi-level BOM hierarchies may require manual sequencing in Epicor's Job Entry structure because Fulfil's BOM representation and Epicor's job/material/operation breakdown follow different data models. We deliver a written BOM mapping table for the customer's Epicor admin to finalize before production migration.
Fulfil
Chart of Accounts
Epicor Prophet 21
GL Account
1:1Fulfil financial accounts export from each legal entity and require a manual crosswalk against Epicor's chart of accounts before any financial record transfer begins. Multi-entity deployments need account codes reconciled across legal entities with inter-company account mapping handled as a separate configuration step in Epicor. We collect the full account tree for each entity during scoping and build the mapping table with the customer before any GL balance transfer.
Fulfil
Owner (User)
Epicor Prophet 21
User
1:1Fulfil Owners referenced on Sales Orders, Purchase Orders, and Customer records map to Epicor Users by email match. We resolve OwnerId references at migration time by matching Fulfil user email against Epicor's labor table (EMailAddress field). Any Fulfil Owner without a matching Epicor User goes to a reconciliation queue for the customer's admin to provision before record import resumes.
| Fulfil | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Sales Order | Sales Order1:1 | Fully supported | |
| Item (Inventory) | Part1:1 | Fully supported | |
| Purchase Order | Purchase Order1:1 | Fully supported | |
| Warehouse / Location | Site + Warehouse1:1 | Fully supported | |
| Customer | Customer1:1 | Fully supported | |
| Bill / Vendor Invoice | AP Invoice1:1 | Fully supported | |
| Lot Number | Part Lot1:1 | Fully supported | |
| Serial Number | Part Serial Number1:1 | Fully supported | |
| Custom Product Options (Engraving, Made-to-Order) | Configure-to-Order / Part Revision Attribute1:many | Mapping required | |
| Work Order | Job Entry (JobHead / JobMtl / JobOper)1:1 | Fully supported | |
| Chart of Accounts | GL Account1:1 | Mapping required | |
| Owner (User) | User1: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.
Fulfil gotchas
Reporting export requires API enumeration rather than bulk dumps
Custom product attributes are order-line metadata, not a distinct object
No publicly documented API rate limits or throttle headers
Purchase order receipts must be migrated before vendor closeout
Multi-entity financials require manual chart of accounts mapping
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 scope definition
We audit the source Fulfil environment across tier (Starter/Growth/Enterprise), channel integrations in use (Shopify, Amazon, SPS Commerce), multi-location count, active Purchase Orders, work order volume, customer account count, custom field usage on Item/Customer/Order objects, and whether the manufacturing module is active. We pair this with an Epicor edition assessment: Epicor ERP SaaS or on-premise, required modules (distribution, manufacturing, financial management), site count, and whether configure-to-order or MES is needed. The discovery output is a written migration scope document with record counts per object, a chart of accounts crosswalk task assigned to the customer's finance team, and a go/no-go on manufacturing module inclusion.
Schema design and Epicor sandbox setup
We configure the destination Epicor environment in a Sandbox org. This includes Part Master setup with Part-Plant cost and stocking data, Site and Warehouse/Bin structure mapped from Fulfil locations, Customer and ShipTo records, GL account structure with segments from the manual chart of accounts crosswalk, Purchase Order defaults, and any required Part custom fields for custom product attribute mapping. We pre-create all Epicor custom fields needed for Fulfil custom field content before any data is loaded. Configure-to-order Part templates and BOM structures are created for any manufacturing module scope.
Sandbox migration and reconciliation
We run a full migration into the Epicor Sandbox using production-equivalent data volume. The customer's operations lead reconciles record counts across all objects (Sales Orders in, Purchase Orders in, Parts in, inventory balances by Site/Bin, open PO receipts, Customer and ShipTo records, and work order headers), spot-checks 25-50 records per object against the Fulfil source for field accuracy, and signs off the mapping before production migration begins. Custom product attribute mapping is validated during this phase to confirm the chosen approach (Sales Order line custom fields vs Part Revision attributes) meets the customer's needs. Chart of accounts reconciliation and BOM mapping are finalized here.
Owner reconciliation and User provisioning
We extract every distinct Fulfil Owner referenced on Sales Orders, Purchase Orders, Customers, and Work Orders and match by email against Epicor's Labor table. Owners without a matching Epicor User go to a reconciliation queue. The customer's Epicor admin provisions missing Users (active or inactive status matching the original Fulfil user state). Migration cannot proceed past record import because Epicor requires Owner references to be satisfied on Sales Orders, POs, and Jobs.
Production migration in dependency order
We run production migration in dependency order: GL Accounts (from chart of accounts crosswalk), Sites and Warehouses (mapped from Fulfil locations), Parts and Part Lot/Serial records, Customers and ShipTo addresses, Purchase Orders and open PO receipts (before vendor closeout), AP Invoice records, Sales Orders with line items, Work Orders with JobMtl and JobOper entries, and finally custom product attribute data on Sales Order lines. BOM hierarchies requiring manual sequencing are handled in a dedicated step with the written mapping table. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation rebuild handoff
We freeze Fulfil writes during cutover, run a final delta migration of any records modified during the migration window, then enable Epicor ERP as the system of record. We deliver a written inventory of Fulfil channel integration configurations (Shopify, Amazon, SPS Commerce endpoints), workflow and automation logic requiring rebuild in Epicor Kinetic BPM or a dedicated MES integration layer, and any unreconciled multi-entity financial account entries requiring manual posting. We support a one-week hypercare window where we resolve any data quality issues raised by the customer's operations team. We do not rebuild Fulfil automations as Epicor Kinetic Business Activity Management (BAM) or process map flows inside the migration scope; that is a separate engagement.
Platform deep dives
Fulfil
Source
Strengths
Weaknesses
Epicor Prophet 21
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 Fulfil and Epicor Prophet 21.
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
Fulfil: Not publicly documented.
Data volume sensitivity
Fulfil 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 Fulfil to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your Fulfil 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 Fulfil
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.