ERP migration
Field-level mapping, validation, and rollback between iCast and Epicor Prophet 21. We move data and schema; workflows are rebuilt natively in Epicor Prophet 21.
iCast
Source
Epicor Prophet 21
Destination
Compatibility
11 of 12
objects map 1:1 between iCast and Epicor Prophet 21.
Complexity
CModerate
Timeline
6-10 weeks
Overview
Moving from iCast to Epicor ERP is a mid-market manufacturing migration with a structural difference at its core: iCast operates a single-database, multi-entity model that stores operational and financial data in legacy formats, while Epicor Kinetic uses a modular schema with Part, Job, PO, and GL table structures that demand explicit field typing and dependency resolution before any record inserts. iCast provides no self-service data export, so we coordinate extraction directly with iCast professional services or through direct database access during the discovery phase. We map the Chart of Accounts to Epicor's COACode structure, multi-location inventory to the PartWhse table, open sales and purchase orders to SOHeader and POHeader, and BOMs to PartMtl with routing data going to JobOper. Epicor Workflows, Business Activity Queries, and customizations do not migrate; we deliver a written inventory of each for your implementation team to rebuild in Kinetic.
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 iCast 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.
iCast
Customer
Epicor Prophet 21
Customer
1:1iCast customer records with payment terms, credit limits, account managers, and address data map to Epicor Customer (Customer table). We map the iCast customer number to Epicor CustNum as the dedupe key, preserve payment terms in TermsCode, and audit for duplicate customers across iCast's multi-entity database during load. Any custom fields on the iCast Customer record are inventoried and mapped to UD fields on the Customer table or to related ShipTo records depending on the field's purpose.
iCast
Vendor
Epicor Prophet 21
Supplier
1:1iCast vendor records including address, payment terms, and account numbers map to Epicor Supplier (Supplier table). We use VendorID as the dedupe key and preserve RemitTo and RemitAddress references separately. Suppliers without a matching Epicor record are flagged for pre-creation before Purchase Order import, because POHeader.VendorNum is a required foreign key that cannot accept nulls during DMT load.
iCast
Inventory Item
Epicor Prophet 21
Part
1:1iCast inventory items with SKU, description, unit of measure, cost, and warehouse location map to Epicor Part records. Multi-location inventory maps to PartWhse records with Plant and Warehouse references resolved at load time. Serialized parts require PartBin and PartTran records to be sequenced after Part creation. Unit of measure conversions from iCast's UOM definitions map to UOMClass and UOMConv records in Epicor. We flag any iCast parts with non-standard cost methods (Average, Standard, FIFO) so the Part.CostMethod field is set correctly during import.
iCast
Sales Order
Epicor Prophet 21
SOHeader
1:1Open and historical sales orders from iCast map to Epicor SOHeader with line items going to OTRW. We map iCast order status to Epicor OpenFlag and OrderHed.OpenOrder values, flag held or pending orders for manual review before insert, and resolve CustomerNum references to the newly created Customer records. Pricing from iCast (including any discount codes) migrates to OTRW.UnitPrice with OrderMsc records for miscellaneous charges.
iCast
Purchase Order
Epicor Prophet 21
POHeader
1:1iCast purchase orders map to Epicor POHeader with line items going to POLine. We resolve VendorNum to the Supplier records created during the vendor migration phase. Expected dates, quantities, and line item descriptions map to POLine.PromiseDate, POLine.OrderQty, and POLine.LineDesc respectively. Open POs and closed POs with recent activity are both migrated; fully fulfilled historical POs are optionally migrated as reference records depending on the customer's historical window scope.
iCast
Chart of Accounts
Epicor Prophet 21
GLAccount
1:1iCast's hierarchical chart of accounts with account numbers and types maps to Epicor GLAccount records under the configured COACode. We map account numbers, account types (Asset, Liability, Equity, Revenue, Expense), and any segment structures. Accounts used in transactions but not yet existing in Epicor are flagged for pre-creation before Journal Entry import, because Epicor's GL validation rejects entries referencing non-existent account codes.
iCast
Journal Entry
Epicor Prophet 21
GLJrnHed
1:1General journal entries from iCast including date, account references, debit/credit amounts, and memo fields map to Epicor GLJrnHed and GLJrnDtl records. We resolve account references against the migrated GLAccount table, flag any entries with non-standard account mappings or missing debit/credit balance, and preserve the original iCast journal entry number in GLJrnHed.JournalCode for audit traceability. Entries with reversing periods are handled through Epicor's FiscalPeriod and FiscalYear configuration.
iCast
Job (Manufacturing)
Epicor Prophet 21
JobHead and JobOper
1:1iCast job costing and shop floor records map to Epicor JobHead for the job header and JobOper for each operation step. We map job number, job status, start and due dates, and estimated quantities. Operations sequence from iCast's routing steps into JobOper with Work Centers mapped to Epicor ResourceGroup and Resource records. JobMtl records carry material requirements mapped from iCast's BOM lines. Multi-level job structures require us to sequence parent jobs before child jobs or use Epicor's JobMtl.LowLevelCode to manage explosion at load time.
iCast
Bill of Materials
Epicor Prophet 21
PartMtl and PartOpr
1:1iCast BOM structures with parent parts, component parts, quantities per assembly, and operations map to Epicor PartMtl (material requirements) and PartOpr (routing operations). We handle single-level and multi-level BOMs by decomposing the iCast BOM hierarchy before loading. PartRev records serve as the revision header in Epicor, linking PartMtl and PartOpr to the part revision level. We flag any iCast BOMs with phantom assemblies or alternate materials so the PartMtl.EstScrapQty and PartMtl.AltMethod flags are set correctly.
iCast
User
Epicor Prophet 21
User
1:1iCast user accounts with login credentials, roles, and access permissions map to Epicor User records and associated UserFile entries. We match users by login name and resolve role mappings to Epicor's UserCodes and security assignments. Any iCast roles without a direct Epicor equivalent are flagged in the role reconciliation report for the customer's admin to map to Epicor's security groups post-migration. Inactive iCast users are created as inactive Epicor users to preserve historical assignment data.
iCast
Attachments and Documents
Epicor Prophet 21
Document and DocumentRef
1:1iCast stores file attachments on records (orders, parts, jobs, customers). We extract attachments by referencing the parent record in iCast's attachment table, then load them into Epicor as Document records linked via DocumentRef to the corresponding Part, JobHead, Customer, or Supplier. Document metadata (filename, file type, upload date, attached by user) is preserved. Large binary attachments are chunked and uploaded through Epicor's Document Management REST API with rate-limit handling.
iCast
Custom Fields (all objects)
Epicor Prophet 21
UD Fields or Custom Fields
lossyiCast custom fields and calculated fields built by the customer are inventoried during discovery across all objects. Each custom field is listed with its data type, object of origin, and current use. We map these to Epicor UD fields on the equivalent standard table (e.g., OrderHed_c for sales order UD fields) and flag any calculated fields that require BPM logic in Epicor to reproduce the computation. Custom reports built in iCast do not migrate; we deliver a written inventory of every saved report with its parameters and filters for manual rebuild in Epicor Advanced Reporting or SSRS.
| iCast | Epicor Prophet 21 | Compatibility | |
|---|---|---|---|
| Customer | Customer1:1 | Fully supported | |
| Vendor | Supplier1:1 | Fully supported | |
| Inventory Item | Part1:1 | Fully supported | |
| Sales Order | SOHeader1:1 | Fully supported | |
| Purchase Order | POHeader1:1 | Fully supported | |
| Chart of Accounts | GLAccount1:1 | Mapping required | |
| Journal Entry | GLJrnHed1:1 | Fully supported | |
| Job (Manufacturing) | JobHead and JobOper1:1 | Fully supported | |
| Bill of Materials | PartMtl and PartOpr1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Attachments and Documents | Document and DocumentRef1:1 | Fully supported | |
| Custom Fields (all objects) | UD Fields or Custom Fieldslossy | 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.
iCast gotchas
No self-service data export mechanism
Custom fields and reports do not migrate automatically
Historical data volume complicates migration timelines
Limited third-party integrator ecosystem
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 extraction coordination
We audit the iCast database across customers, vendors, inventory, sales orders, purchase orders, chart of accounts, journal entries, jobs, BOMs, users, and attachments. Simultaneously, we engage iCast professional services to initiate the data extraction request, since no self-service export path exists. We scope the historical window (recommending a cutover inventory count to close the books in iCast before final extraction) and identify all custom fields and saved reports requiring inventory. The discovery output is a written migration scope with object counts, dependency graph, and a timeline that accounts for iCast extraction coordination.
Epicor schema provisioning and DMT design
We design the destination Epicor schema including Part, PartWhse, PartMtl, PartOpr, Customer, Supplier, POHeader, POLine, SOHeader, OTRW, GLAccount, GLJrnHed, JobHead, JobOper, JobMtl, and User records. We configure the COACode and segment structure based on the migrated Chart of Accounts, set Part.CostMethod and Part.TypeCode per iCast inventory type flags, and provision any UD fields for custom data. UD field creation happens in Epicor's Kinetic environment via the Customization Editor or via metadata API before any DMT load begins.
Data extraction and transformation
We receive iCast data in whatever format iCast professional services delivers (typically CSV exports or a database snapshot). We transform each object into DMT-ready CSV format with Epicor field names, correct data types, and required foreign key references. Multi-location inventory is decomposed into PartWhse records per Plant and Warehouse. Multi-level BOMs are exploded into PartMtl records with material sequences. Jobs are decomposed into JobHead, JobOper, and JobMtl records with operation sequences and work center assignments. We run data profiling on the iCast extract to flag null foreign keys, duplicate records, and field-length violations before loading.
DMT load sequencing with phase gates
We execute DMT loads in strict dependency order: Company and Site configuration first, then GLAccount, Supplier, Customer, Part, PartWhse, PartMtl, PartOpr, SOHeader and OTRW, POHeader and POLine, GLJrnHed and GLJrnDtl, JobHead and JobOper and JobMtl, then User records and Document attachments. Each phase runs to completion, emits a row-count reconciliation report, and is validated by the customer before the next phase begins. Any records rejected by Epicor validation rules are logged, corrected, and reloaded in the same phase pass. Epicor BPMs and validation rules are audited and temporarily adjusted before each load phase.
Post-load validation and custom field inventory delivery
We run Epicor's built-in data integrity checks including GL balance verification, Part cost rollup, and Job status consistency reports against the migrated data. We spot-check 25-50 records per object against the iCast source to confirm field-level accuracy. We deliver the custom field inventory document listing every iCast custom field with its Epicor UD field equivalent, every saved iCast report with its parameters and recommended Epicor rebuild path, and every identified BPM trigger that should be considered for rebuild. We do not rebuild workflows, BAQs, or BPMs as part of the migration scope.
Cutover and hypercare
We freeze iCast to read-only mode, run a final delta migration of any records created or modified during the migration window, and confirm Epicor as the system of record. We support a one-week hypercare window where we resolve any record-level reconciliation issues raised by the customer's operations team. Epicor subscription setup, user provisioning, and Kinetic environment configuration are handled by the customer's Epicor team. We do not provide post-migration admin training, workflow rebuild, or ongoing support as part of standard scope; these are separate engagements.
Platform deep dives
iCast
Source
Strengths
Weaknesses
Epicor Prophet 21
Destination
Strengths
Weaknesses
Complexity grading
Moderate ERP migration. 5 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across iCast and Epicor Prophet 21.
Object compatibility
5 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
iCast: Not publicly documented..
Data volume sensitivity
iCast 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 iCast to Epicor Prophet 21 migration scoping. Not seeing yours? Book a call.
Walk through your iCast 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 iCast
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.