ERP migration

Migrate from Selly Erp to Epicor Prophet 21

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

Selly Erp logo

Selly Erp

Source

Epicor Prophet 21

Destination

Epicor Prophet 21 logo

Compatibility

83%

10 of 12

objects map 1:1 between Selly Erp and Epicor Prophet 21.

Complexity

BStandard

Timeline

6-10 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Selly ERP to Epicor ERP is a structural migration from a small-business CRM-plus-light-ERP platform to a purpose-built manufacturing and distribution ERP for companies with 50-2,500 employees. Selly ERP has no publicly documented API, which means every export begins with a manual in-app data dump per module; we design the export schedule with the customer during discovery and validate each CSV before ingestion. Epicor Kinetic uses a REST API for data ingestion with BAQ-based reporting and BPM-based customisation, which is fundamentally different from Selly's configuration model. We map Selly's Customers to Epicor Customer records, Deals to Sales Orders and Quotes, Pipeline Stages to Order and Quote stages, Parts to Epicor Part records with UOM and BOM data, and Activities to Document records. Workflow automations, invoice PDFs, and custom configuration do not migrate; we deliver a written inventory of active Selly automations and an Epicor BPM rebuild guide for the customer's admin team.

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

Selly Erp logo

Selly Erp

What's pushing teams away

  • Third-party ERP integrations are limited — existing accounting or inventory systems do not integrate smoothly with open platforms, forcing manual data re-entry.
  • Technical studios and businesses with specialist workflow needs report that Selly ERP requires significant customisation workarounds to fit their use case, which some find unsustainable.
  • Customers migrating away report that the platform lacks a well-documented public API, making automated data extraction difficult and dependent on in-app exports.
  • The analytics and reporting module is described as functional but not deep — power users needing custom dashboards or advanced forecasting outgrow the built-in capabilities.

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

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

Selly Erp

Lead

maps to

Epicor Prophet 21

Prospect

1:1
Fully supported

Selly ERP Leads map to Epicor Kinetic Prospect records. The Prospect table (UD08) stores pre-customer prospects with fields for company name, contact name, email, phone, and source. We carry over lead source and any custom fields as UD columns on Prospect. The Epicor Kinetic REST API endpoint /api/v1/Prospect handles ingest. Prospects without a company association store contact details in the ShipTo address fields.

Selly Erp

Customer

maps to

Epicor Prophet 21

Customer

1:1
Fully supported

Selly ERP Customer records map directly to Epicor Kinetic Customer records in the Customer table (Customer table, not a CRM contact object). Fields mapped include Company, CustID, Name, Address, City, State, Country, PostalCode, PhoneNum, EmailAddress, and TerritoryID. We preserve the Selly billing address as the primary Customer address and any shipping addresses as ShipTo records linked by CustNum. Epicor Kinetic supports multiple ShipTo records per Customer, which covers customers with multiple delivery locations.

Selly Erp

Opportunity

maps to

Epicor Prophet 21

Quote

1:1
Fully supported

Selly ERP Opportunities with an estimated value and close date map to Epicor Kinetic Quote records. The Quote header stores the customer reference, order total, and stage. Epicor Kinetic uses QuoteNum as the primary key and stores line items (PartNum, SellingQuantity, UnitPrice, DiscountPercent) in QuoteDtl. We map the Selly pipeline stage name to the Epicor Quote.QuoteStatus field and carry over the estimated value as the Quote.DocTotal field. Open quotes migrate as active Epicor quotes; closed-won quotes migrate as historical records or convert to Sales Orders if the customer chooses.

Selly Erp

Deal

maps to

Epicor Prophet 21

Sales Order

1:1
Fully supported

Selly ERP Deals that have reached a closed-won state map to Epicor Kinetic Sales Orders. We create OrderHed records with CustomerNum, OrderNum, PONumber, and OrderDate, then create OrderDtl line items from the deal line items with PartNum, Quantity, UnitPrice, and Discount. The Selly deal owner becomes the Epicor BuyerID on the OrderHed. OrderRel (fulfilment release) records are created for each line item based on the requested delivery date.

Selly Erp

Pipeline Stage

maps to

Epicor Prophet 21

Quote Stage or Order Type

lossy
Fully supported

Selly ERP pipeline stage names (Prospecting, Qualification, Proposal, Negotiation, Closed Won, Closed Lost) map to Epicor Kinetic Quote.QuoteStatus values or a custom Quote Stage UD column if the customer uses Epicor's stage tracking. We extract the full Selly pipeline stage list during scoping, confirm the mapping with the customer, and configure the matching Quote status values in Epicor before migration begins. Stage probability percentages are stored as UD fields on the Quote.

Selly Erp

Product

maps to

Epicor Prophet 21

Part

1:1
Fully supported

Selly ERP Products map to Epicor Kinetic Part records. The Part table stores PartNum, PartDescription, UnitOfMeasure, TypeCode (stocked, make-to-order, phantom), and CostData. The Selly SKU maps to Part.PartNum, and any Selly product categories map to Part.ClassID or a UD field. Standard cost from Selly migrates as Part.StandardCost. We create PartPlant records for each Epicor site where the part is stocked.

Selly Erp

Quote Line Item

maps to

Epicor Prophet 21

QuoteDtl

1:1
Fully supported

Selly ERP Quote line items map to Epicor Kinetic QuoteDtl records. Each line carries the PartNum (or a description-only line), SellingQuantity, UnitPrice, DiscountPercent, and a reference to the parent QuoteNum. QuoteDtl.DocUnitPrice preserves the original quoted price. If Selly stores pricing by volume break, we create multiple QuoteDtl lines or use Epicor's Quantity Price Break functionality.

Selly Erp

Invoice

maps to

Epicor Prophet 21

AR Invoice (historical)

1:1
Fully supported

Selly ERP Invoices cannot be migrated as structured Epicor ERP transactional records because Selly does not export invoice PDFs as structured data reliably. We archive the invoice PDF files separately and link them to the corresponding Epicor Customer record as a document attachment. The invoice line items (PartNum, Quantity, UnitPrice) are re-imported as structured records manually or via a separate line-item import batch. Customers requiring full invoice history in Epicor should plan for a separate AR import using Epicor's AR Invoice entry or a bulk import tool.

Selly Erp

Activity

maps to

Epicor Prophet 21

Document and Notes

1:1
Fully supported

Selly ERP Activities (calls, emails, meetings, tasks, notes) attached to Contacts, Companies, or Deals map to Epicor Kinetic Document records linked via the DocType and Key fields. Activity timestamps migrate as the Document.CreateDate and Document.CreateTime. Email body content stores as Document[1] character data. Meeting location and duration store as UD fields. We normalise timestamps to UTC before Epicor ingest. The activity owner maps to an Epicor User ID for assignment tracking.

Selly Erp

Custom Field

maps to

Epicor Prophet 21

UD Column (UD01-UD30)

lossy
Fully supported

Selly ERP custom fields on any object migrate to Epicor Kinetic User-Defined (UD) columns. Each Selly custom field is assessed for data type (string, number, date, boolean, picklist) and mapped to the corresponding Epicor UD data type (string, int, date, boolean, character). We pre-create UD columns in Epicor during the schema phase before any data import. Epicor Kinetic UD columns are created in the Ice.BO.UserFile tables (UD01, UD02, etc.) and linked to the base table via Key1, Key2, Key3 values. Epicor community posts confirm that UD column mapping requires BPM logic for calculated or conditional values.

Selly Erp

Owner/User

maps to

Epicor Prophet 21

User

1:1
Fully supported

Selly ERP user accounts map to Epicor Kinetic User records. We resolve owners by email match against the Epicor Kinetic User table. Any Selly Owner without a matching Epicor User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Inactive or archived Selly users are migrated as inactive Epicor User records for audit completeness.

Selly Erp

Attachment

maps to

Epicor Prophet 21

Document Management

1:1
Fully supported

File attachments linked to Selly ERP records are extracted from the export and uploaded to Epicor Kinetic's Document Management system. We link documents to the parent record (Customer, Quote, Order, Part) using the DocumentKey fields. Document Type (PDF, image, spreadsheet) is preserved. Attachments that do not survive the bulk export cleanly are stored in a managed file share and linked manually post-migration.

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.

Selly Erp logo

Selly Erp gotchas

High

No public API forces manual data export

Medium

Invoice PDFs are not exported as structured records

Medium

Workflow automations are undocumented and non-transferable

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

  • Selly ERP has no public API — manual export is mandatory

    Selly ERP does not publish a REST or GraphQL API that external tools can query programmatically. We cannot initiate automated record retrieval. We ask the customer to log into Selly ERP and use the in-app export function to produce CSV or Excel dumps for each module: Leads, Customers, Opportunities, Deals, Products, Quotes, Invoices, and Activities. This export must be performed manually per module, and the quality of the output depends on the customer's navigation of the UI. We plan additional scoping time for the customer to prepare and validate the export files before ingestion begins into Epicor Kinetic. Any export errors or missing fields are flagged before we begin Epicor API ingest.

  • BOM and routing structures must be reconstructed from Selly product data

    Selly ERP does not store Bill of Materials or routing data as structured records. If the customer has product structures or production routings in Selly ERP, they are likely held as custom fields, notes, or external spreadsheets. We work with the customer during discovery to identify which parts have BOMs and routings, reconstruct those structures as structured data during the transformation phase, and ingest them as Epicor Part.BOM and Part.MOQRouting records. This reconstruction step can add one to three weeks to the migration timeline depending on BOM complexity and volume.

  • Epicor Kinetic UD column configuration requires BPM logic for calculated values

    Epicor Kinetic stores custom fields as UD columns in the Ice BO UserFile tables (UD01-UD30). A community post from epiusers.help confirms that mapping ShipTo data into OrderHed as a UD column requires BPM logic, not just direct field mapping, because the Like column in UD column definition must reference a valid base table field or the save fails with a Business Layer Exception. We pre-validate all UD column definitions in a Epicor Kinetic sandbox before production migration. Any calculated or conditionally populated UD fields require a BPM to be written during the Epicor implementation phase, which is outside our migration scope but documented for the customer's Epicor partner.

  • Invoice PDFs do not migrate as structured Epicor AR records

    Selly ERP generates invoice PDFs linked to customer records, but these are not reliably available as structured data in the export. We archive the PDF files separately and link them to the corresponding Epicor Customer record as a Document Management attachment. Invoice line items must be re-imported as structured records manually or through a separate AR batch import. The original PDF serves as a reference copy only. Customers that require full AR invoice history in Epicor should plan for a separate AR import project with their Epicor implementation partner.

  • Workflow automations and sequences do not migrate to Epicor BPM

    Active workflow rules, triggers, and automated sequences configured inside Selly ERP are not accessible as structured data that can be extracted. Epicor Kinetic uses BPM (Business Process Management) as its automation model, which is fundamentally different from Selly's configuration. We do not migrate automations as code. During discovery, we document every active Selly automation and produce a written specification with recommended Epicor BPM equivalents. The customer's Epicor implementation partner or admin rebuilds these post-migration. This is a manual step the customer must budget time and budget for after go-live.

Migration approach

Six steps for a successful Selly Erp to Epicor Prophet 21 data migration

  1. Discovery and manual export scheduling

    We audit the source Selly ERP account across all modules: Leads, Customers, Opportunities, Deals, Products, Quotes, Invoices, Activities, and any custom fields. Since Selly ERP has no public API, we work with the customer to schedule the manual in-app export for each module, provide export templates specifying the exact fields and format required, and set expectations for data validation before ingestion begins. We also identify BOM and routing data held outside the standard Selly schema and plan the reconstruction phase accordingly. The discovery output is a written migration scope, an export checklist, and a BOM reconstruction plan if applicable.

  2. Epicor Kinetic schema design and UD column provisioning

    We design the destination schema in Epicor Kinetic. This includes creating Part records with the correct TypeCode (stocked, make-to-order, phantom), PartPlant records per site, BOM structures for parts with multiple levels, Quote and Order record types, and UD columns for any Selly custom fields. We deploy schema changes into a Epicor Kinetic sandbox first for validation. UD columns are created in the appropriate UserFile tables with correct data types and linked to base tables via Key fields. Any UD columns requiring calculated values are flagged with BPM logic requirements for the customer's Epicor partner to implement.

  3. Sandbox migration and reconciliation

    We run a full migration into the Epicor Kinetic sandbox using production-like data volume. The customer's operations and finance leads reconcile record counts (Customers in, Quotes in, Orders in, Parts in, Activities in), spot-check 25-50 random records against the Selly source export, and sign off the schema and mapping before production migration begins. Any mapping corrections, missing UD columns, or BOM reconstruction issues surface here. Epicor Kinetic REST API rate limits and BAQ query performance are tested against the sandbox to calibrate batch sizes for production ingest.

  4. Owner reconciliation and Epicor Kinetic User provisioning

    We extract every distinct Selly ERP Owner referenced on any record and match by email against the Epicor Kinetic User table. Owners without a matching Epicor User go to a reconciliation queue. The customer's Epicor admin provisions any missing users (active or inactive depending on whether the original Selly user is still active). We also identify any Selly users who are assigned as record owners but do not have a corresponding Epicor login, as OwnerId references are required on most Epicor transactional records. Epicor Kinetic supports role-based access control, which we map from Selly's user tier structure.

  5. Production migration in dependency order

    We run production migration into Epicor Kinetic in record-dependency order using the REST API: Part records (base for all manufacturing and sales data), Customer records (base for quotes and orders), Prospect records, Quotes, Sales Orders, Activities, then UD column values. BOM structures are ingested after Parts are validated. We use Epicor Kinetic REST API batch endpoints with rate-limit handling and exponential backoff. Each phase emits a row-count reconciliation report before the next phase begins. Invoice PDFs are archived as document attachments and linked to the corresponding Customer records.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Selly ERP 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 the Workflow and Automation inventory document with recommended Epicor BPM equivalents to the customer's Epicor implementation partner. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Selly workflow automations as Epicor BPM inside the migration scope; that work is handled by the customer's Epicor partner as a separate engagement.

Platform deep dives

Context on both ends of the pair

Selly Erp logo

Selly Erp

Source

Strengths

  • Flat per-user pricing without per-module add-ons keeps costs predictable for SMB teams
  • Covers the full sales cycle from lead capture through invoicing in one subscription
  • Italian-language customer support receives consistently high marks in user reviews
  • Google Workspace integration with Gmail and Google Drive out of the box
  • Suitable for small to mid-sized businesses that do not need enterprise-level customisation depth

Weaknesses

  • No publicly documented API — automated export is not possible without a manual in-app data dump
  • Limited third-party integrations; existing ERP and accounting tools do not connect smoothly
  • Reporting and analytics are functional but lack the depth power users require
  • Customisation for specialist industries requires workarounds rather than native configuration
  • Platform originated in Italy and documentation is primarily in Italian, limiting accessibility for international teams
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 Selly Erp 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

    Selly Erp: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between six and ten weeks for accounts with fewer than 5,000 Customers, 2,000 Sales Orders, and no complex BOM structures. Migrations with active BOMs, multi-level routings, large Parts libraries (over 10,000 Part records), or multi-site Epicor Kinetic deployments move to fourteen to twenty-two weeks because of BOM-level data reconstruction, Epicor REST API rate-limit handling, and UD column provisioning per module. The manual export requirement for Selly ERP adds one to two weeks to the scoping phase before any Epicor ingest begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Selly Erp.
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