ERP migration

Migrate from Brightpearl to Epicor Prophet 21

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 logo

Brightpearl

Source

Epicor Prophet 21

Destination

Epicor Prophet 21 logo

Compatibility

67%

8 of 12

objects map 1:1 between Brightpearl and Epicor Prophet 21.

Complexity

BStandard

Timeline

6-10 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Brightpearl logo

Brightpearl

What's pushing teams away

  • Sales teams report that core features such as bulk pricing updates, payment gateway integration and product syncing to connected storefronts did not work as described during implementation, leading to disputes over prepaid contracts.
  • System errors and performance degradation — with some warehouse and sales teams experiencing delays of up to five minutes — disrupt fulfilment throughput during peak order periods.
  • Discovery and demo practices have been criticised: customers report being asked to commit full payment upfront before receiving a live trial, which limits recourse when promised capabilities are absent or misrepresented.
  • Brightpearl's development pace has been flagged by long-term users, who note that maintaining competitive feature parity requires increasing investment in third-party connectors and integrations.

Choosing

Epicor Prophet 21 logo

Epicor Prophet 21

What's pulling them in

  • Industry-specific design for wholesale distributors, not a general-purpose ERP repurposed for distribution — distributors choose P21 because it matches their replenishment, kitting, and counter-sale workflows out of the box.
  • Strong inventory control with automated replenishment, lot and serial tracking, and multi-warehouse management appeals to distributors with complex stock requirements and tight margin pressure.
  • Responsive customer support cited across G2 and Gartner reviews, with Epicor's 90% retention rate reflecting long-term customer satisfaction in a market where switching costs are high.
  • Cloud deployment on Microsoft Azure provides the flexibility to scale user counts and warehouse locations without on-premise infrastructure investment.
  • The Software Development Kit lets distributors personalize P21 to their specific business processes without modifying the application source code, preserving upgrade paths.

Object mapping

How Brightpearl objects map to Epicor Prophet 21

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

maps to

Epicor Prophet 21

AR Customer and AP Supplier

1:many
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

GL Account

1:1
Fully supported

Brightpearl'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

maps to

Epicor Prophet 21

Part

1:1
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

Site, Warehouse, PartBin

lossy
Fully supported

Brightpearl'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

maps to

Epicor Prophet 21

OrderHed / OrderRel

1:1
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

POHeader / POLine

1:1
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

InvcHead / Credit Memo

1:1
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

PricePer / PriceLbr

1:1
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

PartWhse / PartBin

1:1
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

User and SalesRep

1:1
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

Not migrated

lossy
Fully supported

Brightpearl 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

maps to

Epicor Prophet 21

Not migrated

lossy
Fully supported

Brightpearl 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.

Gotchas + challenges

What specifically takes care here

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 logo

Brightpearl gotchas

High

Brightpearl API rate limits are undocumented

High

Pending order download has a 36-hour recovery window

Medium

Country names must match exact localisation strings

Medium

Automation rules can execute in locked accounting periods

Low

Placeholder contacts require valid formatted data

Epicor Prophet 21 logo

Epicor Prophet 21 gotchas

High

Third-party bolt-on integrations complicate migration scope

High

Dirty data without standardized processes compounds migration risk

Medium

SDK customizations and BPMs may not survive platform upgrades

Medium

Report-based export only for non-technical users

Low

Per-user pricing model requires accurate user count before migration planning

Pair-specific challenges

  • Brightpearl automation rules do not rebuild in Epicor Kinetic Workflow

    Brightpearl Automation rules are evaluated against order events, contact updates, and inventory changes with conditional triggers and actions. Epicor Kinetic Workflow uses a different model built around production jobs, MES events, and supply chain processes. There is no automated conversion path. We document every active Brightpearl Automation rule during discovery, including its trigger, conditions, and actions, and deliver that as a written rebuild guide. The customer's Epicor administrator or implementation partner rebuilds these post-migration. Skipping this step leaves order-processing, status-routing, and post-purchase workflows in an unconfigured state at go-live.

  • Four-level location hierarchy must flatten to Epicor bins

    Brightpearl stores warehouse locations as a four-level hierarchy (Aisle / Bay / Shelf / Bin) grouped into Zones, where each SKU's stock position is tracked per-location. Epicor stores inventory per Site/PartWhse/PartBin with BinNum as a flat string. During migration, we concatenate the four Brightpearl levels into a single BinNum string (Aisle-Bay-Shelf-Bin format) and reconstruct the Zone-to-Warehouse mapping as a configuration table. Inventory quantities aggregate from the four-level detail to Epicor's PartBin per-bin quantity. Migrations that skip this flattening step produce orphaned PartBin records without meaningful bin references.

  • Contact split to AR Customer and AP Supplier must resolve before orders

    Brightpearl uses a single Contact object for both customers and vendors, differentiated by a role flag. Epicor ERP separates AR Customer records (with CustCnt contact roles) from AP Supplier records (with VendorPP contact roles). We perform the split during scoping and create both the AR Customer and AP Supplier records before any order migration begins, because POHeader references the Supplier and OrderHed references the Customer. Contacts without a resolved role flag are placed in a reconciliation queue. Migrations that import orders before the contact split completes produce orphaned POHeader or OrderHed records with null Customer or Vendor references.

  • Epicor Part model requires PartUOM, PartWhse, and PartBin to be configured per SKU

    Brightpearl Products store pricing and inventory at the product level. Epicor Parts require a layered configuration: PartUDF (custom fields from Brightpearl's PCF_* fields), PartUOM (unit of measure with stocking and selling UOMs), PartWhse (warehouse-level stocking data with OnHandQty), and PartBin (per-bin quantities with bin number from the flattened location hierarchy). We configure all four layers during the schema preparation phase before any product or inventory data migrates. Migrations that import Parts without PartWhse and PartBin entries produce parts with zero stock and no bin assignment.

  • Accounting periods in Epicor GL must be open for the invoice date

    Brightpearl invoices and credit notes embed accounting data and can be generated against locked accounting periods via Automation rules. Epicor enforces GL period status — invoices with an invoice date in a closed fiscal period will fail to post. We audit all Brightpearl invoice dates against the Epicor GL calendar during migration planning and either open the relevant periods in Epicor or flag invoices requiring period adjustment. Purchase order and sales order documents face the same restriction if linked to GL entries. Brightpearl's 36-hour order download recovery window does not apply to Epicor, but the customer's Epicor administrator must confirm all required fiscal periods are open before transactional migration begins.

Migration approach

Six steps for a successful Brightpearl to Epicor Prophet 21 data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Brightpearl logo

Brightpearl

Source

Strengths

  • Unified platform spanning inventory, orders, CRM, WMS and accounting without requiring third-party integrations for core financials.
  • Omnichannel order management with real-time channel synchronisation across Shopify, BigCommerce, Amazon and EDI.
  • Built-in automation rules engine for order routing, status updates and post-purchase triggers.
  • Multi-warehouse and zone-based location management with guided picking routes for warehouse efficiency.
  • Sage backing provides a mature, audit-compliant accounting engine with real-time ledger updates.

Weaknesses

  • API rate limits are not publicly documented, requiring careful pagination and retry logic during large exports.
  • System performance can degrade under load, with reported errors causing delays of several minutes for warehouse and sales teams.
  • Pre-sales demo practices have been criticised, with customers reporting they were required to pay upfront before validating capabilities against live data.
  • Feature development pace lags behind faster-moving competitors, often requiring third-party connector investment to maintain integrations.
Epicor Prophet 21 logo

Epicor Prophet 21

Destination

Strengths

  • Purpose-built for wholesale distribution with industry-specific replenishment, kitting, and counter-sale workflows out of the box.
  • Multi-warehouse management with bin locations, cross-docking, and real-time inventory visibility across all warehouse locations.
  • Automated replenishment engine with demand-based and min-max planning reduces stockouts and overstock carrying costs.
  • AI-infused reporting via Epicor Prism provides Gen AI-driven insights into ERP data without requiring a BI team.
  • Strong customer retention at 90% and a 50-year track record in the distribution vertical provides long-term vendor stability.

Weaknesses

  • High total cost of ownership — per-user pricing of $150-200/month plus $10K-$500K implementation creates significant budget commitment for small and mid-market distributors.
  • Customization via SDK requires technical expertise and introduces upgrade risk when custom code conflicts with new P21 releases.
  • Report generation performance is a known pain point — multiple users report system freezes during large or complex report exports.
  • Third-party bolt-on reliance for functionality that competitors include natively increases integration complexity and total solution cost.
  • Limited public API documentation — developers building custom integrations report difficulty finding P21 API authentication methods and endpoint specifications.

Complexity grading

How hard is this migration?

Standard ERP migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Brightpearl and Epicor Prophet 21.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Brightpearl: Not publicly documented.

  • Data volume sensitivity

    B

    Brightpearl doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Brightpearl to Epicor Prophet 21 migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Brightpearl to Epicor Prophet 21 data migrations

Answers to the questions buyers ask most during Brightpearl to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most Brightpearl to Epicor ERP migrations land between six and ten weeks for mid-market accounts with under 5,000 SKUs, 20,000 contacts, and 3,000 open orders. Migrations with high-volume product catalogues (over 10,000 SKUs), multi-warehouse inventory snapshots, large closed-order history, or multi-company Epicor configuration move to ten to eighteen weeks because of PartBin reconstruction, PO/SO line-level status mapping, and GL account reconciliation. Epicor implementation itself (configuration, testing, training) typically adds an additional two to four months outside the migration window.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Brightpearl.
Land in Epicor Prophet 21, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day