ERP migration
Field-level mapping, validation, and rollback between Brightpearl and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
Brightpearl
Source
Epicor Prophet 21
Destination
Compatibility
8 of 12
objects map 1:1 between Brightpearl and Epicor Prophet 21.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from Brightpearl to Epicor ERP is a structural ERP migration, not a direct record copy. Brightpearl organises around a unified Contact object and a real-time accounting engine; Epicor ERP separates customers (AR) from vendors (AP), uses a Part-centric product model with bill-of-materials support, and stores inventory per-site in PartBin rather than a flat warehouse hierarchy. We resolve the Contact split to AR Customer and AP Supplier records, flatten Brightpearl's four-level Aisle/Bay/Shelf/Bin location hierarchy into Epicor's Site/Warehouse/Bin structure, and preserve the PCF-prefixed custom field values as Epicor Part UDF records. Open sales orders and purchase orders migrate as OrderHed and OrderRel records with line-level status. Automation rules, order-processing workflows, and the Automation-rule accounting-period bypass do not migrate; we deliver a written inventory of every active rule for the customer's Epicor administrator to rebuild. We do not migrate Brightpearl's Reports or analytics dashboards; those require rebuild in Epicor BI.
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 Brightpearl 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.
Brightpearl
Contact
Epicor Prophet 21
AR Customer and AP Supplier
1:manyBrightpearl stores both customers and vendors as Contact records, differentiated by a role flag. We split these at migration time: Contact records with customer role map to Epicor AR Customer (CustCnt and CustBank records with address and contact detail), and Contact records with vendor role map to Epicor AP Supplier (VendorPP and VendBank records). The Brightpearl contact email and phone fields map to CustCnt conEmail and conPhone. We preserve any PCF_* custom field values on Contact as UDF fields on the destination Customer or Supplier record. Owner assignment from Brightpearl maps to Epicor SalesRep records resolved by email match.
Brightpearl
Chart of Accounts
Epicor Prophet 21
GL Account
1:1Brightpearl's Chart of Accounts with structured account codes maps directly to Epicor GL Account (GLAccount table). Account code, account name, and account type (asset, liability, equity, revenue, expense) migrate as GLAccount and GLAccountType records. We extract the full account code list from Brightpearl and map each to the destination system's account codes established during Epicor implementation, preserving account balances where the migration includes open GL periods. The account hierarchy (parent/segment structure) maps to Epicor's Natural Account and Statistical Account segments.
Brightpearl
Product
Epicor Prophet 21
Part
1:1Brightpearl Products map to Epicor Part records. The Brightpearl SKU becomes Part.PartNum, product name becomes Part.PartDescription, and product type maps to Part.TypeCode (stocked, non-stock, service). We preserve all PCF_* custom fields as Epicor PartUDF records with matching field labels and data types. Brightpearl's multiple price lists per product map to Epicor PricePer and PriceLbr records linked to the Part, resolved by currency and price break quantity. Product type (Item vs Service) in Brightpearl maps to Part.TypeCode in Epicor.
Brightpearl
Warehouse Locations
Epicor Prophet 21
Site, Warehouse, PartBin
lossyBrightpearl's four-level Aisle/Bay/Shelf/Bin location hierarchy grouped into Zones requires flattening to Epicor's Site/Warehouse/Bin structure. We represent each Brightpearl location path as a concatenated Bin string (Aisle-Bay-Shelf-Bin format) and map the Zone to the Epicor Warehouse code. Zone-to-Warehouse association is preserved as a configuration note in the migration manifest. Epicor Warehouse codes are created during schema setup and referenced by PartBin records during inventory migration. Multi-warehouse customers require multiple Site/PartWhse/PartBin entries per product.
Brightpearl
Sales Order
Epicor Prophet 21
OrderHed / OrderRel
1:1Brightpearl Sales Orders map to Epicor OrderHed (header) and OrderRel (release) records. The order number, order date, and customer reference map to OrderHed.OrderNum, OrderHed.OrderDate, and OrderHed.Cust_PO. Line items with SKU, quantity, and price map to OrderRel with PartNum, SellingQuantity, and UnitPrice. We resolve Brightpearl customer contact IDs to Epicor AR Customer and CustCnt records at migration time. Order status in Brightpearl (pending, confirmed, shipped, invoiced) maps to Epicor OrderRel.ProdStatus and OrderRel.LineStatus. We flag any Brightpearl orders in a locked accounting period that would conflict with Epicor's fiscal period restrictions.
Brightpearl
Purchase Order
Epicor Prophet 21
POHeader / POLine
1:1Brightpearl Purchase Orders map to Epicor POHeader and POLine. PO number, PO date, and vendor reference map to POHeader.PONum, POHeader.PODate, and POHeader.BuyerID. We resolve Brightpearl vendor Contact IDs to Epicor AP Supplier records during migration. POLine records carry PartNum, Quantity, DueDate, and JobNum (if the PO is linked to a production job). Lead time and expected delivery dates from Brightpearl become POLine.PromiseDate. Received quantities in Brightpearl map to POLine_received values in Epicor, and POLine status reflects the current receipt lifecycle.
Brightpearl
Invoice and Credit Note
Epicor Prophet 21
InvcHead / Credit Memo
1:1Brightpearl Invoices map to Epicor InvcHead (accounts receivable invoice header). Invoice number, invoice date, and total map to InvcHead.InvoiceNum, InvcHead.InvoiceDate, and InvcHead.TotalAmt. Brightpearl's embedded accounting data (tax, discount, payment terms) map to InvcHead.TaxAmt, InvcHead.Discount, and InvcHead.TermsCode. Credit notes from Brightpearl map to Epicor InvcHead with CreditMemo = true. Line items migrate as InvcDtl records linked to the InvcHead. We note that Epicor's invoice numbering and fiscal period assignment require the GL and AR periods to be open for the invoice date at migration time.
Brightpearl
Price List
Epicor Prophet 21
PricePer / PriceLbr
1:1Brightpearl Price Lists associate a price value with a product and a price list identifier. We map each Brightpearl PriceList to an Epicor PricePer record linked to the corresponding Part, with the price value mapping to PricePer.UnitPrice and the currency mapping to PricePer.CurrencyCode. Multiple price lists per product (common in Brightpearl) are preserved as multiple PricePer records with distinct price codes. Price break quantities and effective dates from Brightpearl map to PricePer BreakQty and PricePer.QualifyByDate fields where present.
Brightpearl
Inventory Summary and Detail
Epicor Prophet 21
PartWhse / PartBin
1:1Brightpearl inventory summary (total cost value per SKU) and inventory detail (per-warehouse, per-location stock levels) map to Epicor PartWhse (warehouse-level summary) and PartBin (per-bin detail) records. We reconstruct the stock position from Brightpearl's four-level location hierarchy into PartBin.BinNum using the concatenated location path, and aggregate to PartWhse.OnHandQty per Site/Part combination. Total cost value from Brightpearl maps to PartWhse.DemandUOM and PartWhse.OnHandQty with a unit cost calculation. Stock status (available, allocated, in quarantine) from Brightpearl maps to PartBin.LotNo or a PartBin UDF field depending on the customer's configuration.
Brightpearl
User and Owner Assignment
Epicor Prophet 21
User and SalesRep
1:1Brightpearl assigns a staff member as the Owner of a Contact and can auto-assign orders to the contact owner. We export the full user roster and map each Brightpearl owner by email to an Epicor User account (UserFile) and a SalesRep record (SalesRep table) with the matching Repcode. Owners without a matching Epicor User are placed in a reconciliation queue for the customer's Epicor administrator to provision before record import proceeds. Owner assignment on orders maps to OrderHed.RepID after SalesRep resolution.
Brightpearl
Automation Rules
Epicor Prophet 21
Not migrated
lossyBrightpearl Automation rules (conditional triggers and actions against incoming orders, status updates, and post-purchase workflows) do not migrate. The Brightpearl rules engine and Epicor Kinetic Workflow/Process Management are architecturally distinct, and Epicor's automation context (production jobs, MES, shop-floor routing) differs fundamentally from Brightpearl's retail order-processing model. We deliver a written inventory of every active Brightpearl Automation rule with its trigger condition, action sequence, and scope (contacts, orders, inventory). The customer's Epicor administrator or implementation partner rebuilds these in Kinetic Workflow or Epicor Process Management post-migration.
Brightpearl
Reports and Analytics
Epicor Prophet 21
Not migrated
lossyBrightpearl analytics dashboards and custom reports do not migrate. Epicor's reporting architecture uses Kinetic BAQ (Business Activity Queries) and Power BI integration for advanced analytics, which is structurally different from Brightpearl's report builder. We deliver a manifest of every Brightpearl report and dashboard with its data source tables, filters, and scheduling. The customer's Epicor administrator rebuilds these as BAQ reports or connects the Epicor data to a BI tool of their choice.
| Brightpearl | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Contact | AR Customer and AP Supplier1:many | Fully supported | |
| Chart of Accounts | GL Account1:1 | Fully supported | |
| Product | Part1:1 | Fully supported | |
| Warehouse Locations | Site, Warehouse, PartBinlossy | Fully supported | |
| Sales Order | OrderHed / OrderRel1:1 | Fully supported | |
| Purchase Order | POHeader / POLine1:1 | Fully supported | |
| Invoice and Credit Note | InvcHead / Credit Memo1:1 | Fully supported | |
| Price List | PricePer / PriceLbr1:1 | Fully supported | |
| Inventory Summary and Detail | PartWhse / PartBin1:1 | Fully supported | |
| User and Owner Assignment | User and SalesRep1:1 | Fully supported | |
| Automation Rules | Not migratedlossy | Fully supported | |
| Reports and Analytics | Not migratedlossy | 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.
Brightpearl gotchas
Brightpearl API rate limits are undocumented
Pending order download has a 36-hour recovery window
Country names must match exact localisation strings
Automation rules can execute in locked accounting periods
Placeholder contacts require valid formatted data
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 Epicor topology scoping
We audit the Brightpearl organisation across tier (Starter to Platinum+), custom field count (PCF_* fields), location and zone count, open order and PO volume, invoice and credit note history, active Automation rules, and Chart of Accounts structure. In parallel we review the target Epicor topology: single-site vs multi-site, single-company vs multi-company GL, existing fiscal calendar, chart of account segment structure, and whether the AR/AP/Customer Supplier records are pre-seeded from an Epicor implementation. The discovery output is a written migration scope, Epicor topology confirmation, and the contact split decision matrix for Brightpearl customer vs vendor roles.
Epicor schema preparation and contact split design
We design the Epicor schema before any data moves. This includes mapping the Chart of Accounts to GLAccount, configuring PartUDF fields to carry Brightpearl PCF_* custom field values, setting up PartUOM for each product, creating Site and Warehouse records that map to Brightpearl Zones, flattening the four-level location hierarchy into Bin records, and designing the AR Customer and AP Supplier split for Brightpearl Contacts. We deploy the schema to an Epicor test company first for validation, then lock it before master data migration begins.
Sandbox migration and reconciliation
We run a full migration into the Epicor test company using representative data volumes. The customer's ERP administrator and finance lead reconcile record counts (AR Customers in, AP Suppliers in, Parts in, GL Accounts in, PartBins in, open OrderHed in, open POHeader in) and spot-check 25-50 records against the Brightpearl source for field accuracy. The contact split quality, PartUOM completeness, and PartBin quantity accuracy are the primary validation targets. Sign-off on the sandbox run authorises production migration. Any mapping corrections happen here.
User and SalesRep reconciliation
We extract every distinct Brightpearl owner referenced on Contact, Sales Order, and Purchase Order and match by email against the Epicor UserFile table and SalesRep table. Owners without a matching Epicor User or SalesRep record go to a reconciliation queue. The customer's Epicor administrator provisions any missing users and SalesRep codes before master data migration begins. OrderHed.RepID and OrderHed.RequestedBy require valid SalesRep references, so this step must complete before transactional migration.
Production migration in dependency order
We run production migration in strict dependency order. Phase one: GL Account codes (accounting must be open before any transactional document posts). Phase two: AR Customer and AP Supplier records (orders and POs reference these). Phase three: Part master with PartUDF, PartUOM, PartWhse, and PartBin layers (inventory requires the warehouse and bin structure to be in place). Phase four: open Purchase Orders (POHeader/POLine) with Supplier references resolved. Phase five: open Sales Orders (OrderHed/OrderRel) with Customer references and line-level status resolved. Phase six: open and recent invoices and credit notes (InvcHead/InvcDtl) against open GL periods. Phase seven: inventory snapshot (PartWhse on-hand, PartBin per-location quantities). Each phase emits a row-count reconciliation report and the customer's Epicor administrator confirms before the next phase begins.
Cutover, delta migration, and go-live
We freeze Brightpearl from new writes during the cutover window. We run a final delta migration capturing any records created or modified after the main migration run. We validate totals (total open order value, total PO value, total AR balance, total inventory cost) against Brightpearl reports before declaring Epicor the system of record. We enable Epicor as live and deliver the Automation Rule inventory document to the customer's Epicor administrator. We provide a one-week hypercare window post-go-live to resolve any data issues surfaced by the operational team. We do not rebuild Brightpearl Automation rules, analytics dashboards, or forms inside the migration scope; those are separate engagements or internal administrator tasks.
Platform deep dives
Brightpearl
Source
Strengths
Weaknesses
Epicor Prophet 21
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 2 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 Brightpearl and Epicor Prophet 21.
Object compatibility
2 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
Brightpearl: Not publicly documented.
Data volume sensitivity
Brightpearl 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 Brightpearl to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your Brightpearl 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 Brightpearl
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.