1. Purpose & Scope
This best practice defines a standard, repeatable approach for testing and implementing any ERP module, configuration change, or data migration before it goes live: configure and test in a Pilot (non-production) environment first, validate the results against defined controls, remediate issues, and only then repeat the same process in Live.
It applies to any organization unit implementing a new module, migrating historical data, or changing a financial or operational process within an ERP system, and is intended to be adopted as a repeatable standard across ERP Rescue engagements, regardless of the specific ERP platform or module involved.
Never implement a financial or operational change directly in Live. Prove the approach in Pilot — including its controls, validation steps, and edge cases — before repeating it in Live. Each function involved (project team, process owner, control/finance reviewer) owns a distinct stage so accountability stays clear.
2. Roles & Responsibilities
| Role | Responsibility |
|---|---|
| Project Lead / Implementation Team | Configures the Pilot and Live environments, builds and runs the import or process change, and documents methodology and results. |
| Process / Control Owner | Defines the control(s) the implementation must satisfy (e.g., no duplicate postings, no restated balances), and confirms test results meet them. |
| Subject Matter Expert (Accounting, Quality, Purchasing, etc.) | Reviews source data, validates business logic, and signs off that results are correct from a functional standpoint. |
| Executive Sponsor / Board | Receives the Executive Summary; approves go-live based on Pilot results and documented controls. |
3. Process Workflow
The same five-stage workflow applies regardless of module or platform. Only the configuration details and specific controls change.
| Stage | Action | Owner | Detail |
|---|---|---|---|
| 1 | Configure | Project Lead | Build the supporting structure required by the change — e.g., new module setup, GL accounts, calendars, mappings — in the Pilot environment first. |
| 2 | Test in Pilot | Project Lead | Run the full process (import, transaction, or workflow change) in Pilot, configured to mirror Live conditions (e.g., matching closed-period status). |
| 3 | Validate | Process/Control Owner + SME | Confirm results against defined controls using system-generated reports (see Section 5). Validate before and after each posting step, not just at the end. |
| 4 | Remediate | Project Lead + SME | Correct any data or configuration issues found in Pilot at the source, and re-test using the same validation steps. |
| 5 | Repeat in Live | Project Lead | Once Pilot results are clean and signed off, repeat the identical configuration and process in Live. Do not introduce new steps or shortcuts at this stage. |
4. Key Control Pattern: Protect Previously Reported Results
The central control behind any historical data migration or retroactive process change: prior-period financial or operational results must not be duplicated, restated, or silently altered.
When historical activity has already been recorded in the system of record (e.g., postings already in the GL, transactions already completed), an import or correction that re-creates that activity will double-count it unless explicitly prevented. The general pattern, regardless of module:
- Identify which accounts, balances, or records already reflect the historical activity.
- Direct any new entries created by the migration or correction to net to zero against those same accounts or records, preserving subledger detail without changing previously reported totals.
- Document the specific accounts/fields involved and the rationale, so the control is auditable independent of the implementer.
This pattern applies beyond financial postings — any migration into a system that already has a system of record for the same activity should be evaluated for this risk before import.
5. Validation Method: System-Generated Reports
Validation should rely on system-generated reports, not visual inspection of the source file, at every posting step:
- Pre-post edit list / preview: confirm account, amount, date, and description match the source before committing any transaction.
- Post-post detail report (e.g., a ledger or transaction tracker): confirm the transaction posted to the expected account, in the expected period, with debits and credits (or equivalent controls) behaving as designed.
- Run this same two-step check for every batch and every transaction type involved (e.g., additions, then depreciation, then disposals) — do not assume a control proven for one transaction type holds for another.
6. Issues & Remediation Log (Template)
Use this log during Pilot testing to track and resolve data or configuration issues before they reach Live. Categories will vary by module; common examples include:
- Duplicate records
- Records assigned to an incorrect category, group, or code
- Incorrect amounts, quantities, or durations
- Incorrect dates (effective, acquisition, placed-in-service, etc.)
Each issue should be corrected in the source data — not patched after import — and re-tested using the same validation steps in Section 5.
7. Implementation & Rollout Guidance
| Milestone | Guidance |
|---|---|
| Go-live timing | Align go-live with a clean period boundary (e.g., month-end, fiscal year-end) to avoid conflicts with closing activities. |
| Pilot scope | Configure Pilot to mirror Live conditions as closely as possible (e.g., matching closed-period status), so test results are representative. |
| Sign-off before Live | Require explicit sign-off from the process/control owner and SME on Pilot results before repeating the process in Live. |
| Post-launch monitoring | Monitor the first cycle in Live closely; expect — and budget time for — minor issues even after a clean Pilot. |
8. Tools & Support
- Maintain a current End User Procedure (EUP) describing the process for ongoing use; update it as new questions or edge cases arise.
- Use a Pilot/test environment for any future changes to this process, not just the initial implementation.
- Designate a Process Owner as the point of contact for questions after go-live, to prevent compounding errors from undocumented workarounds.
9. Implementation Checklist
Project / Implementation Team
- Configure and document the Pilot environment to mirror Live conditions.
- Run the full process in Pilot and produce edit-list/preview and post-validation evidence for every transaction type.
- Document the specific control(s) used to protect previously reported results (Section 4).
Process / Control Owner & SME
- Review and sign off on Pilot results, including the issues-and-remediation log, before Live execution is approved.
- Confirm the control(s) in Section 4 are correctly designed for this specific process before go-live.
Executive Sponsor
- Review the accompanying Executive Summary and approve go-live based on documented Pilot results.
10. Worked Example
This best practice was generalized from a Fixed Assets module implementation in Epicor Kinetic, in which historical asset records spanning three fiscal years were migrated using a GL-netting control to avoid duplicating previously reported balances, validated via Edit List and Chart Tracker review in Pilot before repeating the process in Live with a 100% success rate.
Implementing or Migrating a Module?
Our consultants design and run Pilot-to-Live testing for Epicor module implementations and data migrations — from control design through go-live support. Same-day response, no long-term contract required.