ERP migration

Migrate from Opto to Epicor Prophet 21

Field-level mapping, validation, and rollback between Opto and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.

Opto logo

Opto

Source

Epicor Prophet 21

Destination

Epicor Prophet 21 logo

Compatibility

58%

7 of 12

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

Complexity

BStandard

Timeline

6-10 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Opto to Epicor ERP is a scale-up migration: Opto handles barcode-driven stock tracking and automated reorder alerts for small ops, while Epicor Kinetic targets discrete, make-to-order, and mixed-mode manufacturers with deep shop-floor control, MES, APS, and production scheduling. Opto has no documented REST API, which means we extract data through its native CSV export, chunk the output into import-ready batches, and load into Epicor via REST or file-based import. The central schema challenge is flattening Opto's named Stock Locations into Epicor's PartBin model (warehouse plus bin designation), and documenting Opto Reorder Rules as a structured reference table for manual reconfiguration at the destination. Open Purchase Orders map to Epicor POHeader and POLine; historical invoices separate into open AR/AP for re-creation and closed records for archive. We do not migrate workflows, automations, or reporting configurations — these require a documented inventory for the customer's Epicor admin to rebuild post-migration.

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

Opto logo

Opto

What's pushing teams away

  • Lack of an exposed REST API limits automation and third-party integrations beyond the pre-built connectors.
  • Reporting and analytics lag behind dedicated BI tools, pushing power users toward platforms with richer dashboards.
  • Scalability concerns arise when transaction volume grows beyond mid-size, prompting a move to full-featured ERPs.

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 Opto objects map to Epicor Prophet 21

Each row shows how a Opto 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.

Opto

Item

maps to

Epicor Prophet 21

Part

1:1
Fully supported

Opto Items (SKU, name, description, unit cost, reorder point, lead time) map directly to Epicor Part. The Opto Item code becomes PartNum, description maps to Part.Description, and unit cost maps to the primary PartCost record. Where Opto stores a barcode, we map it to Part.AltMethod or a custom UD field. If the destination Epicor uses a specific company-level costing method (Average, Standard, FIFO), we align the PartCost records accordingly during import. Standard UOMs from Opto become PartUOM records with UOMCode and ConversionFactor.

Opto

Customer

maps to

Epicor Prophet 21

Customer

1:1
Fully supported

Opto Customer records (contact name, email, phone, billing address) map to Epicor Customer. The Opto customer name becomes Customer.Name, email maps to a UD field or Contact record email, and billing address maps to Customer.BTAddress fields. Customer-specific pricing tiers from Opto migrate to Epicor PartPlant records or PriceLbr records if the destination has customer-specific price lists configured.

Opto

Vendor

maps to

Epicor Prophet 21

Vendor

1:1
Fully supported

Opto Vendors (supplier name, contact, payment terms, lead time) map directly to Epicor Vendor. Vendor.Name maps from Opto supplier name, Vendor.PaymentTerms maps from payment terms, and Vendor.LeadTime maps from Opto's per-Item lead-time data when the Item-Vendor link is present. We extract the full vendor contact record (phone, email, address) and map to VendorPP (VendorPP) or the primary VendorContact record in Epicor.

Opto

Stock Location

maps to

Epicor Prophet 21

PartBin

1:many
Fully supported

Opto multi-location inventory with named bins or warehouses splits into Epicor PartBin records. Each unique Opto Stock Location becomes a PartBin with WarehouseCode and BinNum resolved from the Opto location name hierarchy. If Opto stores a nested location (e.g., Warehouse-A / Zone-B / Bin-03), we preserve the full path as BinNum and set a default WarehouseCode. Part quantity per location maps to PartBin.OnHandQty. This is a 1:N split because one Opto Item at one location produces one PartBin row; the same Item at five locations produces five PartBin rows.

Opto

Purchase Order

maps to

Epicor Prophet 21

POHeader + POLine

1:1
Fully supported

Opto Purchase Orders (Vendor, Items, quantities, expected delivery dates) map to Epicor POHeader and POLine records. The Opto PO number becomes POHeader.PONum, VendorID resolves via the Vendor mapping, and each line maps as a separate POLine with PartNum, OrderQty, DueDate, and UnitCost. Open Purchase Orders (status not closed) are candidates for migration; closed POs are documented as historical reference. Epicor's approval workflow on POHeader must be configured or bypassed during migration to allow imported records to enter at the correct status.

Opto

Reorder Rule

maps to

Epicor Prophet 21

UD Table (configuration reference)

lossy
Fully supported

Opto Reorder Rules define per-Item minimum thresholds and reorder quantities — these are account-level configuration, not transactional records. We export them as a structured CSV with Item number, minimum quantity, reorder quantity, and reorder method. This CSV is delivered as a reference table in the mapping worksheet. The customer manually re-enters these as Part.Planning_alert or Epicor's MRP/ATP settings, or configures a BPM to trigger PO generation from the threshold. We do not migrate configuration as code.

Opto

Invoice (AR)

maps to

Epicor Prophet 21

InvcHead + InvcDtl

1:1
Fully supported

Open and historical Opto invoices map to Epicor InvcHead and InvcDtl. Open invoices (status open, partially paid) are candidates for re-creation at Epicor with the correct customer, line items, amounts, and payment status. Closed invoices are migrated as historical records for reporting continuity but flagged with a closed status and posting date. We separate open from closed invoices at the start of migration so that open items receive the full Epicor AR treatment (aging, dunning, payment application) while historical records are read-only.

Opto

Invoice (AP)

maps to

Epicor Prophet 21

APInvoice + APInvoiceDtl

1:1
Fully supported

Opto accounts payable invoices map to Epicor APInvoice and APInvoiceDtl. Open AP invoices (not yet paid) are re-created with VendorID, invoice number, invoice date, due date, and line amounts. Historical paid AP invoices migrate for GL continuity. We reconcile vendor payment terms against Epicor's TermsCode table during mapping so that DueDate and DiscountDueDate on APInvoice are correctly populated from the original Opto vendor terms.

Opto

Custom Field (Item)

maps to

Epicor Prophet 21

UD Field (Part)

lossy
Fully supported

Opto Items frequently carry custom fields unique to the account. We extract the full custom-field schema during discovery, identify the Epicor Part UD table that matches (UD05, UD06, etc.), and map each custom field to a typed UD column (character, number, date, checkbox). Epicor's ZDataTable adapter manages UD field definitions; we configure UD01-UD08 labels and data types via Epicor REST before Part import begins. Fields with no Epicor equivalent are flagged in the mapping worksheet for the customer's admin to evaluate post-migration.

Opto

Custom Field (Customer)

maps to

Epicor Prophet 21

UD Field (Customer)

lossy
Fully supported

Opto Customer custom fields (e.g., customer-specific flags, internal references, custom pricing tiers) map to Epicor Customer UD fields via the Customer UD table. We extract the custom field definition, map to the matching UD column type in Epicor, and load during Customer import. Fields without an Epicor equivalent are documented for manual evaluation.

Opto

Barcode

maps to

Epicor Prophet 21

Part.AltMethod or UD Field

lossy
Fully supported

Opto's barcode-to-Item associations are extracted as a separate mapping table. Epicor stores barcode data in the Part table (via AltMethod or a UD field), or uses a separate BarcodeSym record linked to Part. We resolve the correct destination field based on the Epicor edition and configuration. If the customer uses Epicor's barcode scanning module, we create BarcodeSym records during Part import. Otherwise, we preserve the barcode association in a Part UD field.

Opto

GL Account (AR/AP references)

maps to

Epicor Prophet 21

GL Account

1:1
Fully supported

Opto's accounts receivable and accounts payable references link to a chart-of-accounts structure. Where Opto uses a simplified account schema, Epicor maintains a full GL chart with AccountType, Segment values, and Natural Account. We map Opto account codes to Epicor GL Account segments during discovery and build a pre-migration GL mapping worksheet. This ensures that AR and AP invoices land in the correct natural account so that AR/AP reconciliation in Epicor matches the pre-migration trial balance.

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.

Opto logo

Opto gotchas

High

No documented export API for programmatic data pull

Medium

Reorder Rules are configuration data, not records

Medium

Custom field schema varies per account

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

  • Opto has no documented REST API for programmatic data extraction

    Opto does not publish a public REST API in its current documentation or observed CSV research. Migrations must rely on Opto's native data export function or manual downloads, producing CSV files that must be chunked into import-ready batches for Epicor. We work around this by mapping the Opto export format to the Epicor REST schema, chunking large CSV files, and handling any encoding or delimiter inconsistencies during the transformation step. Customers must validate their export scope (which records, which date ranges, which fields are included) early in discovery to avoid discovering export limits during cutover.

  • Multi-location inventory requires PartBin flattening

    Opto stores stock quantities per named Stock Location. Epicor Kinetic does not use a standalone Stock Location object — inventory sits in PartBin with WarehouseCode and BinNum as the location key and OnHandQty as the quantity. A single Opto Item tracked in five locations produces five PartBin rows. We flatten the Opto location hierarchy during transformation, preserving the full Opto location name as BinNum. Customers using Opto's multi-bin features must review the resulting PartBin count and confirm warehouse-code assignment in Epicor before bulk import.

  • Reorder Rules are configuration, not records

    Opto Reorder Rules are account-level settings per Item rather than transactional records. They define minimum threshold quantities and reorder quantities that drive automated purchase orders. Epicor has no direct equivalent object for these rules — the equivalent functionality lives in Part.Planning_alert, MRP alert thresholds, or a custom BPM that triggers PO generation. We export Reorder Rules as a structured CSV reference table, but they must be re-entered manually in Epicor or rebuilt as a BPM. We document the full rule set in the mapping worksheet to make manual reconfiguration straightforward.

  • Epicor requires minimum 10 users and charges implementation fees

    Epicor Kinetic has a minimum 10-user floor and implementation services that typically start at $50,000 for mid-market deployments. Opto pricing is accessible for smaller teams without these floors. Teams migrating from a single-digit Opto seat count must budget for Epicor's minimum user count and professional services costs even if not all users are active on the platform. FlitStack AI's migration fee is separate from Epicor's software and implementation costs and is scoped to data transfer only.

  • Custom field schema varies per Opto account and requires UD table configuration

    Both Item and Customer records in Opto may carry custom fields unique to the account with no standard Epicor equivalent. We extract the full custom-field schema during discovery, map each field to a matching Epicor UD column (UD05-UD08 on Part, UD01-UD04 on Customer), and configure UD table definitions before import. Fields with no equivalent are flagged in the mapping worksheet for the customer's admin to evaluate post-migration. Custom fields are never silently dropped — every Opto custom field gets an explicit disposition in the mapping document.

Migration approach

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

  1. Discovery and export scope validation

    We audit the Opto account across Items, Stock Locations, Vendors, Customers, Purchase Orders, Reorder Rules, Invoices (AR/AP), custom field definitions, and barcode associations. We identify the native export mechanism available in the Opto account and run a sample export to confirm field coverage, row counts, and encoding. We pair this with an Epicor Kinetic environment review (edition, UD table availability, GL chart structure) to produce a written migration scope document that defines what migrates, what documents for manual rebuild, and what scope decision (e.g., historical invoice cutoff date) the customer must confirm.

  2. Schema design and GL account mapping

    We design the destination Epicor schema: Part records with PartUOM and PartCost, Customer records with UD fields, Vendor records with VendorPP contacts, PartBin records from Opto Stock Locations, POHeader and POLine from Purchase Orders, and InvcHead/InvcDtl or APInvoice from invoices. We configure UD table definitions in Epicor via the REST API for any custom fields before data import begins. We build the GL account mapping worksheet that reconciles Opto's account structure to Epicor's chart of accounts so that AR and AP invoices post to the correct natural accounts.

  3. Data extraction, transformation, and chunking

    We extract Opto data via native CSV export, applying any encoding corrections and delimiter normalization. We transform each CSV into Epicor import-ready format: Items to Part, Stock Locations to PartBin, Customers to Customer, Vendors to Vendor, Purchase Orders to POHeader/POLine, Reorder Rules to a structured reference CSV, and Invoices to InvcHead/InvcDtl or APInvoice. We chunk large files (typically 5,000–10,000 rows per batch) to stay within Epicor API rate limits and apply exponential backoff on 429 responses. Each chunk is validated for required field presence and foreign-key consistency before submission.

  4. Sandbox migration and reconciliation

    We run a full migration into an Epicor Sandbox using production-like data volume. The customer's operations lead reconciles record counts (Parts in, Customers in, Vendors in, PartBin locations in, POs in, Invoices in), spot-checks 25–50 random records against the Opto source, and validates that GL account postings are correct. Any mapping corrections, missing required fields, or UD field configuration gaps are resolved here. Sign-off on the Sandbox reconciliation gates the production migration start.

  5. Production migration in dependency order

    We run production migration in record-dependency order: GL accounts (mapped from worksheet), Vendors (resolved first because Part-Vendor links reference them), Parts (with PartUOM and PartCost), PartBin (with WarehouseCode and BinNum resolved from Opto Stock Location), Customers (with UD fields populated), Purchase Orders (POHeader then POLine), AR and AP invoices (open items first, then closed history). Each phase emits a row-count reconciliation report before the next phase begins. Reorder Rules are delivered as a structured reference CSV at this stage for manual reconfiguration.

  6. Cutover, delta sync, and Reorder Rule handoff

    We freeze Opto writes during cutover, run a final delta migration of any records modified during the migration window, then enable Epicor as the system of record. We deliver the Reorder Rule reference CSV and the custom field disposition document to the customer's Epicor admin. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild automations, workflows, or reporting configurations — these are documented separately for the customer's admin or an Epicor implementation partner to handle post-migration.

Platform deep dives

Context on both ends of the pair

Opto logo

Opto

Source

Strengths

  • Barcode-driven stock tracking with automated reorder alerts.
  • Pre-built eCommerce and accounting platform connectors.
  • Simple per-seat or tiered pricing structure for small businesses.

Weaknesses

  • No publicly documented REST API limits programmatic data extraction and migration tooling.
  • Limited custom reporting and analytics compared to standalone BI platforms.
  • Maturity and feature depth trail behind established ERP players at larger scale.
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. 3 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 Opto and Epicor Prophet 21.

  • Object compatibility

    B

    3 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

    Opto: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.

  • Data volume sensitivity

    A

    Opto exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Opto 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 Opto to Epicor Prophet 21 data migrations

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

Can't find your answer?

Walk through your Opto to Epicor Prophet 21 migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Data migration alone lands between six and ten weeks for accounts under 15,000 Parts, 2,000 Customers, and 1,000 Vendors with straightforward PartBin mapping. Accounts with high-volume multi-bin stock locations, extensive custom field schemas, or AR/AP re-creation requirements move to twelve to twenty weeks because of Epicor API batch sizing, BAQ export time, and multi-pass reconciliation. These timeframes cover data transfer only — a full Epicor Kinetic implementation including configuration, testing, and go-live typically takes five to ten months for mid-market discrete manufacturers.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Opto.
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