Phase 0
Decide & Plan
Lock the decisions that scope every downstream phase — Kinetic vs on-prem, vertical, history depth, cutover anchor.
-
Risk if skipped: Building a mapping spreadsheet against the wrong vertical surfaces missing tables and templates only after staging begins.
-
Risk if skipped: A DMT template built for one release silently rejects columns added in another, producing partial loads that pass row counts but fail field-level validation.
-
Risk if skipped: Undocumented scope around open jobs and historical AP/AR is the single biggest cause of cutover slippage.
-
Risk if skipped: Importing decades of closed-period documents inflates the database, slows BAQs, and forces 2 TB+ backup windows that nobody costed in the implementation plan.
-
Risk if skipped: A mid-period cutover forces partial-period journals and double-counts revenue and expense across the legacy and Epicor ledgers.
-
Risk if skipped: Switching from single to multi-company after master data loads requires rekeying Company on every downstream record.
-
Risk if skipped: Items not explicitly out-of-scope reappear as last-minute demands during sandbox testing.
-
Risk if skipped: Late writes to the source after final export create a delta no one reconciles until users notice missing transactions post-cutover.
Phase 1
Pre-Migration Prep
Set up the destination tenant, cleanse the source, and prepare the people side before any byte moves.
1a. Source-system audit and cleansing
-
Risk if skipped: Duplicate customers loaded into CustGroup or Customer tables fragment AR aging and break credit-limit logic.
-
Risk if skipped: Mixed-case part numbers create phantom duplicates in inventory and break BOM resolution.
-
Risk if skipped: DMT silently skips rows missing required fields and reports them only in the job log, so partial loads can pass row-count checks but fail business validation.
-
Risk if skipped: Mojibake in customer and contact names is hard to spot until a user reports an email going to the wrong person.
1b. Destination tenant setup
-
Risk if skipped: A pilot one minor release ahead of production silently diverges DMT templates and Business Object signatures.
-
Risk if skipped: Changing base currency after master data loads requires a full reload — Epicor stores monetary values pre-converted on each row.
-
Risk if skipped: Changing segment count or width post-load forces a database-level rewrite of every posted GL row.
-
Risk if skipped: Loading foreign-currency invoices without an exchange rate for the document date posts them at zero rate and corrupts the GL.
-
Risk if skipped: DMT silently drops data in columns that do not exist in the destination, so missing UD fields cause invisible loss.
-
Risk if skipped: Integration noise during DMT loads sends spurious notifications to customers and vendors and pollutes downstream systems with not-yet-real data.
1c. People prep
-
Risk if skipped: Training users on the Classic shell creates double change-management debt when the shell is removed in a later release.
Phase 2
Source Export
Get every byte out of the source in a form you can transform.
-
Risk if skipped: Without a frozen trial balance snapshot you cannot prove the destination ties to the source in Phase 6.
-
Risk if skipped: Missing UoM Class on the Part master breaks every transaction that converts between purchase, stock, and sales UoMs.
-
Risk if skipped: Aggregating quantities above the bin or lot level loses the granularity Epicor needs to reconcile cycle counts.
-
Risk if skipped: Files larger than the destination cap need a Phase 3 decision (split, store externally, or skip); discovering the cap at cutover breaks the attachment migration.
Phase 3
Transform & Map
Turn raw source exports into Epicor-shaped DMT input files.
3a. Mapping spreadsheet
-
Risk if skipped: Without a master mapping, multiple analysts make conflicting decisions about the same field and the contradictions surface only in sandbox.
-
Risk if skipped: Implicit truncation on long Description fields silently loses information that auditors will eventually ask about.
3b. Data transformation
-
Risk if skipped: Date-format drift on transactional dates pushes documents into the wrong fiscal period.
-
Risk if skipped: A stray BOM is a one-character bug that fails the entire file with a misleading column-name error.
-
Risk if skipped: Without external IDs, re-running a failed load creates duplicates or silently overwrites unrelated rows.
3c. Relationships, audit trail, and attachments
-
Risk if skipped: Loading 1M+ rows with change-log directives enabled balloons the change-log table and degrades load throughput.
3d. ERP-specific transforms
-
Risk if skipped: Loading GL transactions before GLAccount completes pushes every line to a suspense account and reconciliation has to be re-done.
-
Risk if skipped: Either an opening journal that includes YTD income or current-year invoices loaded on top of an opening journal that already contains them double-counts income.
-
Risk if skipped: Loading Parts before the UoM Class they reference fails the row; loading them after a partial UoM Class load corrupts the link with no hard error.
-
Risk if skipped: An out-of-order BOM file rejects the child row before the parent and produces an incomplete bill of materials.
-
Risk if skipped: Direct writes to PartBin bypass costing logic and break the inventory-to-GL tie at the next inventory revaluation.
-
Risk if skipped: Missing a rate for a document date causes the document to post at the wrong converted amount, silently corrupting the multi-currency GL.
Phase 4
Sandbox Test Migration
Run every DMT template in pilot before touching production.
-
Risk if skipped: Row-count checks pass while field-level corruption hides until a user opens the record in production.
-
Risk if skipped: Loading 500K rows in pilot at the wrong concurrency setting wedges the application server and stretches cutover past the planned window.
-
Risk if skipped: An out-of-order BOM load rejects child rows and leaves an incomplete bill of materials that production-control will catch only at the first job.
-
Risk if skipped: An unbalanced or wrong-period opening journal taints every downstream financial report from go-live forward.
-
Risk if skipped: A misconfigured exchange-rate type produces invoices that look right on the document and wrong on the GL.
-
Risk if skipped: Discovering the file-size cap mid-cutover forces an emergency external-storage plan.
-
Risk if skipped: An end-to-end load that runs longer than the cutover window in pilot will not magically run faster in production.
Phase 5
Production Cutover
A tightly-sequenced execution window — load order matters, idempotency matters more.
-
Risk if skipped: A single late source write produces a reconciliation delta nobody hunts down for weeks.
-
Risk if skipped: A live BPM emailing every Customer record-creation event spams thousands of contacts during cutover.
-
Risk if skipped: Skipping the level-ascending order on BOM leaves orphan child rows that production-control surfaces at first job creation.
-
Risk if skipped: Posting before debits=credits is checked corrupts every downstream financial report.
-
Risk if skipped: Without logs you cannot reproduce a failed load idempotently or prove a number to an auditor later.
Phase 6
Validate
Prove the migration is correct before any end user logs into production.
6a. Reconciliation
-
Risk if skipped: A 1% row-count delta sounds small until it lands on AR invoices and the customer with the missing row notices first.
-
Risk if skipped: An unreconciled trial balance at go-live becomes a year-end audit finding.
-
Risk if skipped: Inventory rebuilds done after go-live break the GL-to-inventory tie because cost layers were never recreated.
6b. Relationship validation
6c. Audit and compliance
-
Risk if skipped: A GDPR mismatch found in audit costs more than the entire migration project.
6d. User-acceptance check
6e. Sign-off
Phase 7
Post-Migration Cleanup
Wrap up so the team can move on.
-
Risk if skipped: Missing reports at month-end forces finance back to spreadsheets and erodes confidence in the new system.
-
Risk if skipped: Hand-recreating BPMs in production diverges them from pilot and breaks the next upgrade.
-
Risk if skipped: Without archived exports, a year-end audit question about a migrated transaction has no source of truth to reference.
Watch list
Risks to track throughout
These risks live across multiple phases — keep an eye on them from kickoff through cutover.
-
DMT silently drops data into columns that do not exist
The Data Management Tool will load a row whose mapping references a UD column or table that was never created in the destination — the row succeeds in DMT but the missing-column values vanish. Audit the destination column list once in Phase 1b, again immediately before each Phase 4 sandbox load, and again before each Phase 5 production load. Treat any rename of a UD field as a blocking change that requires re-running every dependent DMT template.
-
Opening-balance journal and current-year postings double-count income
If the opening-balance journal includes current-year P&L lines and you also import the current-year invoices, revenue and expense are counted twice. Decide in Phase 0 which approach you are using — snapshot opening balances at fiscal-year-end with current-year documents loaded fresh, or skip current-year P&L lines in the opening journal — and verify the trial balance ties in Phase 4 sandbox and again in Phase 6 production.
-
Customizations and integrations do not lift-and-shift to the cloud
On-premise BPMs that hit the database directly, Service Connect workflows that reach external services on the LAN, and reports tied to Progress OpenEdge tables do not run on Kinetic Cloud. Inventory every customization and integration in Phase 2, decide rebuild-via-Epicor-Functions vs accept-standard vs accept-the-gap in Phase 3, and stage the rebuilds in pilot during Phase 4 — not after cutover.
Pair this with the long-form guide
The complete Epicor Prophet 21 migration guide
Same research, written as prose: data model, import mechanisms, mapping strategy, pitfalls, and partner landscape.