How to Migrate Your Epicor Customizations to the Cloud

Most manufacturers approaching an Epicor cloud migration start by asking what needs to move. That’s the wrong first question. The right one is why each customization exists in the first place, because the answer changes what you migrate, what you fix, and what you retire before the project even begins. This post works through that process in order.

A sleek futuristic cloud technology interface featuring interactive holographic displays, digital connectivity, and advanced data visualization in a modern high-tech environment.

Build Your Customization Inventory Before Migrating to the Cloud

You cannot scope a cloud migration without a clear picture of what’s running in your environment. Not what’s documented. What’s actually there.

 

Most on-premises Kinetic environments accumulate customizations across years of operation. Some were built deliberately, with a clear business requirement behind them. Others were added to work around a problem and never revisited. A significant portion exists somewhere in between: still running, still depended upon, but with no current owner who can explain the original intent.

 

The inventory is what makes the rest of the preparation work possible. Without it, migration scope estimates are guesswork.

What to Include in the Inventory

A complete customization inventory for an Epicor cloud migration covers more ground than most teams expect. At minimum it should include:

  • All active BPMs, separated by Method Directive and Data Directive, with trigger conditions documented
  • UI customizations built in the classic client, including embedded C# scripts and layered personalizations
  • Custom and modified SSRS reports, including report data definitions and whether each report uses direct SQL or a BAQ as its data source
  • Crystal Reports still in use, which will need to be converted before a cloud move
  • BAQs that feed dashboards, reports, or other customizations
  • Third-party integrations, with notes on whether they connect via Epicor APIs or direct database access
  • Scheduled tasks and custom processing jobs
  • User-defined fields and tables that other customizations depend on

The gap between what a team believes is in their environment and what the inventory actually surfaces is almost always wider than expected. In environments that have been running for five years or more, it is not unusual to find active BPMs nobody on the current team has touched, reports that finance runs monthly but cannot describe the logic behind, and integrations held together by a scheduled task nobody monitors.

That gap is where migration projects lose weeks.

Two Reasons a Customization Exists In Your Epicor Environment

Once the inventory is complete, the next step is to assess each item. Not to decide whether it migrates, but to understand why it exists. That distinction drives everything that follows.

In TeccWeb’s experience working through pre-migration assessments on on-premises Kinetic environments, most customizations fall into one of two categories.

It Solves a Real Business Requirement

Some customizations exist because the standard Epicor configuration genuinely cannot handle a specific business need. A BPM that enforces an approval workflow not supported out of the box. A report that combines data from multiple modules in a format the business requires for customer invoicing. A custom field that captures information specific to the manufacturer’s product or process.

 

These customizations have a clear owner, a documented purpose, and a business consequence if they disappear. They belong in the migration. The work is to convert them correctly for the cloud environment, not to question whether they should exist.

It Patches a Configuration Mistake

This is the category most migration guides don’t address honestly. A meaningful portion of the customizations in a typical on-premises Epicor environment aren’t solving business requirements. They are compensating for configuration decisions made at implementation, or shortly after, that were never corrected.

 

A BPM that forces a field to populate on every sales order might look like a business rule. It might actually be hiding the fact that the default field setup was never configured correctly. A custom report that recalculates a margin figure might look like a reporting need. It might be working around a costing method that was set up wrong years ago and has been producing slightly incorrect numbers ever since.

 

When TeccWeb walks into an on-premises environment ahead of a migration, this pattern comes up consistently. The team is aware the customization exists. Nobody questions it because it works. But migrating it into the cloud means carrying the original configuration problem into the new environment, wrapped in code that now needs to be maintained in a different architecture.

 

The cloud migration is the best opportunity most manufacturers will have to fix these problems rather than move them. Taking that opportunity requires asking why each customization exists before deciding what to do with it.

Where Manufacturers Make Mistakes During an Epicor Cloud Migration

Two areas surface more consistently than others when this preparation work isn’t done properly.

BPMs That Belong in the Base Configuration

Method Directives are hooked on a business object method, making them easier to scope and the preferred solution. Data Directives can be triggered by any transaction on a specified table and require careful conditions and thorough testing. 

 

In on-premises environments, loosely scoped Data Directives that fire against full tables are a known performance risk. In cloud environments, where you do not control the underlying infrastructure and cannot tune the server to compensate, that risk has fewer places to go. The same directive that ran acceptably on-prem may behave unpredictably when it cannot be isolated or optimized at the infrastructure level. 

 

Before migrating any BPM, review the directive type, the trigger conditions, and whether the logic it enforces is genuinely a business rule or a patch on a base configuration gap.

 

BPMs with embedded C# that call file system paths will break in a cloud environment. File system I/O access is not permitted in Epicor’s cloud hosting. BPMs that depend on advanced C# capabilities, including external method calls and certain library references, face additional restrictions: advanced BPM user rights are not available to Epicor cloud users. Any BPM that relies on these capabilities needs to be identified and rearchitected before migration, not after. 

Reports Built Around a Costing or Data Setup Problem

Legacy SSRS reports often rely on outdated data structures or queries that break in Kinetic. Report conversions frequently delay Epicor upgrades and create unexpected reporting failures. 

 

The delay is rarely caused by the conversion itself. It is caused by discovering mid-project that a report was built to compensate for a data or costing setup problem, and that the underlying issue was never fixed. Converting the report moves the workaround into the new environment. Fixing the underlying setup problem first removes the need for the workaround entirely, or at minimum clarifies what the converted report actually needs to do.

 

Crystal Reports will not work cleanly in a cloud environment. All bug fixes and updates are SSRS only. Any Crystal Reports still in use need to be converted to SSRS before a cloud migration, not treated as a migration task to handle later.

Frequently Asked Questions

Do BPMs carry over automatically in an Epicor cloud migration?

BPM logic and directives generally import into the cloud environment. That is not the same as working correctly. A BPM that imports successfully can still fail at runtime if it relies on file system access, restricted C# capabilities, or external method calls that are not permitted in cloud. Importing is the beginning of the review, not the end of it.

How do we know which customizations are safe to retire before migrating?

A customization is a candidate for retirement if it has no named owner who understands its original purpose, has not been modified in several years, or exists to compensate for a configuration setup that can now be corrected in base Epicor. Retiring it rather than migrating it reduces migration scope and removes technical debt from the new environment. The decision requires judgment about the business context, which is why this assessment benefits from a consulting partner with hands-on Epicor experience rather than a checklist.

How long does the pre-migration customization assessment take?

It depends on the size and complexity of the environment. A relatively standard deployment with a manageable number of customizations and integrations can be assessed in a few weeks. An environment with years of accumulated BPMs, custom reports, multiple integrations, and undocumented configuration changes takes longer. The assessment is not the migration. It is the work that makes the migration scope accurate and the timeline realistic.

Why Work With TeccWeb for Epicor Cloud Migration

The technical work of an Epicor cloud migration is manageable when you know what you’re dealing with. The harder part is knowing what you’re dealing with, and that requires experience working through real on-premises environments, not just familiarity with the Epicor platform.

 

TeccWeb has done this assessment work with manufacturers running on-premises Kinetic across a range of complexity levels. We know where configuration patches tend to hide inside what looks like intentional customization. We know how to separate what should migrate from what should be fixed first, and how to turn that assessment into a migration plan that reflects how the business actually runs.

 

If you’re preparing for a cloud migration and want a clear picture of what’s in your environment before committing to a scope and timeline, get in touch with TeccWeb.

Stay in touch to get the latest articles delivered
to you.