Why Accounting Data Migration Looks Easy Until You Try It
By Hugh O. Stewart
A common misconception in the ERP implementation industry is that data migration is a simple data transfer exercise. Take data out of the legacy system, fill out a bunch of templates, and import data into the target system. Even experienced data engineers tend to underestimate the project, assuming they can just map the table fields in SQL and send the data over to the data tables in the target system that best correspond via API.
In reality, data migration is a risk management problem.
Extracting and importing the data itself only represents about 20 percent of the total time spent on a migration. The real challenge is identifying and mitigating the dozens of hidden failure modes that can corrupt your financial history or cause your team to lose faith in the migrated data.
That’s the 80 percent of the job that makes the 20 percent look easy.
At Platform Transition, we’ve spent a decade learning about all of the possible risks that come with data migrations to Sage Intacct, and we’ve developed a process that systematically minimizes those risks.
Here are five types of hidden failure modes that our accounting data migration process is designed to prevent.
1. Data Extraction Risks
Before any migration begins, the first challenge is simply extracting reliable data from the legacy system. But there are many situations that can cause the data coming out of the legacy system to be incomplete or erroneous.
Reports That Should Match Don’t Always Match
In a GL Detail Migration, we start by extracting the opening trial balance, a GL Detail Report, and a period closing trial balance. In a perfect world, the sum of the first two reports should always match the last one. But in the real world, report configuration errors, hidden filters, or corrupted transactional detail can cause discrepancies that clients may never have noticed before.
Before moving forward with the migration, we verify that these in-system reports reconcile with the transactional data we extract, and we work with the client to resolve any discrepancies in the legacy system prior to moving any further in the process.
Financial Information Lives in Multiple Systems or Modules
Legacy accounting systems often store related information across multiple modules, databases, or reporting tables. For example, in construction systems, operational data such as job costs, commitments, and change orders may live in separate modules rather than in the general ledger.
Because these systems sometimes contain overlapping information, extracting data from both sources introduces the risk of duplicating transactions during migration.
When there’s a potential for transaction duplication when combining multiple data sources, we perform multiple independent migrations and apply our dimensional enrichment methodology to reconstruct accurate reporting structures in Sage Intacct.
2. Structural Data Translation Problems
Legacy accounting systems frequently structure data in ways that do not translate directly into modern ERP platforms.
QuickBooks Subaccount Naming Collisions
QuickBooks allows hierarchical un-numbered account naming structures, which can result in a variety of subaccounts sharing part of their name:
- Marketing:Other
- Preemployment Costs:Other
The costs recorded in these two accounts are completely unrelated. However, when you use the Journal Report to extract transactions from QuickBooks, it will only export the lowest-level account name. In this example, both accounts would appear simply as “Other,” and the two sets of unrelated transactions would convert into one target account with no way to distinguish them. This can happen dozens or even hundreds of times, depending on the naming conventions in the legacy system.
To mitigate this risk, we extract the full chart of accounts and screen for duplicate lowest subaccount names before migration. When necessary, we adjust the naming structure in the legacy system to eliminate the creation of duplicates during extraction.
Special Characters That Break Imports
Legacy systems often allow special characters — such as ampersands or trailing backslashes — that modern ERP systems like Sage Intacct can’t handle. Ampersands are especially common in vendor names (think J&J Plumbing), but they can corrupt data when imported into Sage Intacct.
To mitigate this, we scan the extracted master data for unsupported special characters and normalize them before the import.
Leading or Trailing Zeros Lost During Extraction
In many legacy accounting systems, it’s common to use leading or trailing zeroes as part of an account ID structure. However, spreadsheet tools like Excel will try to read those account numbers as numeric values and may remove leading or trailing zeros. That can change the meaning of the account number and break the import. To prevent any issues with leading or trailing zeroes, we review the account naming structures before extraction and recommend any necessary changes to the client.
3. Accounting Configuration Mismatches Between Systems
Even when data is extracted and imported correctly, migrations can still run into problems when the accounting configuration of the legacy system differs from the way Sage Intacct processes transactions. Because the numerical values are correct, these issues often don’t show up until the client starts running real workflows in the new system.
Subledger Posting Behavior Differs Between Systems
In many legacy systems, certain transactions may flow into the general ledger differently than they do in Sage Intacct. The same operational event might post to different accounts or follow a different workflow depending on how the legacy system was configured.
If these differences aren’t identified early, the problem may only appear later when users begin running reports and notice that certain transactions are posting to unexpected accounts.
Before migration begins, we carefully review the legacy system configuration to identify differences in how transactions will behave in Sage Intacct. When we find known issues, we make sure the import templates will classify and/or enrich the transactions properly.
Historical Data Lacks the Detail the New System Supports
Modern cloud ERPs like Sage Intacct allow organizations to track far more contextual information about transactions, such as departments, locations, or entities using dimensions.
However, that information may not exist in the historical transaction data they want to migrate from the legacy system. For example:
- Historical transactions may not include department data.
- Inter-entity activity may not have been recorded with proper due to/due from accounts.
In these situations, it’s almost impossible to retroactively add information that was never recorded in the first place, so we work with clients early in the migration process to establish realistic expectations about what historical data can and cannot support.
4. Validation Risks
Even when a migration is technically correct, validation mistakes can create confusion during testing that leads to loss of confidence in the migration.
Validating Against Manually Edited Reports
We once had a client who tried to validate our migration against a report they had manually modified in Excel and sent to their investors. Because the spreadsheet contained records that never existed in the legacy system, the numbers appeared incorrect even though the migration itself was accurate.
That situation, and many others like it, taught us to establish clear data migration validation standards with the client before beginning any of our work. That includes coming to agreement about which reports will serve as the official source for reconciliation, and exactly how they will be configured.
Pre-Existing GL and Subledger Mismatches
Some legacy systems allow users to post directly to the general ledger without updating the subledger modules. Sage Intacct best practices strongly suggest against this, because it can cause the GL and subledgers to fall out of sync. But if these mismatches exist, and they aren’t identified before migration, the target system will inherit the same discrepancies. If the client wasn’t already aware of these issues, they may question the accuracy of the migration.
To ensure the client’s complete confidence at every point during the migration, we compare GL and subledger balances early in the process to identify any inconsistencies that existed prior to the migration.
5. Environment and Process Risks During Implementation
ERP implementations typically involve multiple system environments, including the legacy system, the implementation environment, the live (production) environment, and sometimes a sandbox.
Managing data across these environments introduces several operational risks.
Vendor ID Divergence Across Environments
If the client creates new vendors in the production environment while we’re still loading historical data, sequential vendor ID numbering can diverge between environments. Mismatches between vendor IDs in the test and production systems can cause transactions to get assigned to the wrong vendors in the final imports.
To mitigate this, we actively monitor for changes in the live environment and offset ID ranges where necessary to allow the customer to create new vendors that won’t accidentally merge with existing vendors that have yet to be imported.
Integrations Introducing New Transactions During Migration
Automated integrations — like Bill.com or Sage Paperless — may introduce new transactions during the migration process. These transactions can violate our validation standards, if we don’t know about them ahead of time. To deal with this, we may temporarily disable certain integrations until the migration is complete.
Users Interacting With Placeholder Objects During Migration
During construction subledger migrations, we often create placeholder objects to preserve balances while we’re migrating additional data.
If our clients interact with these objects without realizing their purpose as temporary migration structures — such as using placeholder change orders to pay bills — it can break their reporting.
We proactively communicate with clients about which objects should not be used until the migration process is complete.
Why Experienced Migration Teams Focus on Risk Prevention
Many migration teams underestimate the complexity involved with accounting system transitions because they assume it’s basically a copy-and-paste process. Their only plan for dealing with errors is to handle them manually at the end of the process. Not only does this miss issues that only show up when you begin running reporting workflows, it also causes enormous frustration for the client.
In contrast, experienced migration teams focus on identifying and eliminating the conditions that cause migrations to fail at the beginning, such as structural mismatches, inconsistent master data, unclear validation standards, and environmental divergence.
By preventing these issues early, migrations that might otherwise become chaotic often feel surprisingly smooth.
Reduce Migration Risk During Your Sage Intacct Implementation
Platform Transition specializes in historical accounting data migration for Sage Intacct implementations. Our process identifies and eliminates hidden migration risks before they destabilize your project.
Schedule a Strategic Exploration call or request a quote to discuss our different migration scopes, pricing, and turnaround times.

