Book call
Two laptops exchanging data
  • Angel Sanchez Güeche

    Angel Sanchez Güeche

    Co-Founder of Map to Moon

Table of contents

A migration is not just copying a database

The day a new ERP goes live, an online store switches platforms, or a CRM replaces scattered spreadsheets, the risk is not only technical. It is operational: invoices that do not match, duplicate customers, incorrect stock levels, lost orders, or teams that stop trusting the new system. That is why migrating data between business systems should be treated as a business project with technical implications, not as a simple import task.

For a growing SME, data is often spread across an invoicing system, a CRM, an email marketing tool, an online store, internal documents and, frequently, several spreadsheets. The new system may be better, but it will only deliver value if it receives reliable, well-structured information that is useful for the company's actual processes.

The right question is not “how do we move the data?”. It is “what data do we need so that operations, sales and customer service continue to work better from day one?”.

Define the scope before touching any records

The first mistake is trying to migrate everything. Legacy systems accumulate obsolete fields, duplicate records, inactive contacts, discontinued products and processes that nobody follows anymore. Moving this noise into the new system increases the cost of the project and reduces data quality from the outset.

Start by cataloguing the data sources and classifying the information according to its operational value. The priority blocks are usually customers, contacts, suppliers, products, price lists, orders, invoices, inventory, marketing communication consent and service history. However, priorities vary. A distributor may need several years of sales history to maintain commercial terms; a service company may only need active contracts, outstanding invoices and recent sales conversations.

You must also decide what stays out. It is not always worth transferring old documents, sales opportunities closed eight years ago or fields created for a one-off campaign. This decision should have an owner: sales management, finance, operations or customer service, depending on the type of data. The technical team can implement the rules, but it should not have to invent them.

Migrating data between business systems requires a map

A good data map defines how each element is transformed between the source and the destination. It is not enough to map a “name” column to another “name” column. You need to establish meaning, format, requirements, permitted values and relationships with other records.

Consider a customer who exists three times: as a CRM contact, as an online store buyer and as a debtor in the accounting system. If each application represents that customer differently, importing the files without an identification rule will create duplicates. The result is an incomplete commercial view, repeated communications and unreliable reports.

To prevent this, it is advisable to define a stable identifier. This could be an internal code, a VAT or tax identification number where appropriate, a validated email address or a combination of fields. The best option depends on the business model and privacy requirements. An email address, for example, can be useful for consumers but is insufficient for identifying companies with multiple contacts.

The map should also explain the transformations. A date may arrive in different formats; an amount may or may not include taxes; an old order status may not exist in the new ERP. In these cases, you need to document the equivalent value or decide whether to archive the data without bringing it into active operations. Implicit decisions are the ones that later become incidents.

Data cleaning is not a secondary phase

Migration exposes problems that already existed. Addresses without a country, telephone numbers in incompatible formats, products without references, empty mandatory fields or duplicate customers do not appear because the new system is deficient. They were already present in the business, but the old systems allowed them to coexist.

Cleaning should combine automated rules with human review. You can standardise postcodes, unify telephone number formats, remove unnecessary spaces and detect obvious matches. However, determining whether two companies with similar names are actually the same company, or whether a historical price list is still valid, requires business knowledge.

This is an area where pragmatism is essential. Trying to achieve a perfect database can block the project. The goal is to have data that is accurate enough to operate safely and to establish a plan for correcting the rest. The distinction is critical: a migration should not become an endless audit, but neither should it be an excuse to import known errors.

Choose an architecture that fits your operations

Not every integration requires the same level of complexity. For some companies, a controlled export, a file transformation and a one-time import are sufficient. For others, an API integration, scheduled synchronisation or an intermediate layer coordinating several systems may be necessary.

The decision depends on the frequency of change, data volume and the cost of an error. If the CRM and invoicing system need to share information every day, a manual monthly upload is a guaranteed source of friction. Conversely, building a real-time integration for a catalogue that only changes twice a year may be difficult to justify financially.

You should also designate the master system for each type of data. The CRM may be the source of truth for sales contacts; the ERP for invoices and inventory; the ecommerce platform for online orders. When two systems can edit the same field without a priority rule, conflict is inevitable.

Test the process with real data, not assumptions

A reliable migration is built through repeated testing. First, run a pilot migration using a representative sample: active and inactive customers, orders with discounts, credit or corrective invoices, products with variants, incomplete records and known exceptions. If you only validate simple records, the test proves very little.

Results should then be compared against clear criteria. Counting records is necessary, but not sufficient. You should also review total amounts, relationships between entities, access permissions, statuses, mandatory fields and critical reports. If the new system shows 10,000 orders but the total invoiced amount does not match, the migration has not been validated.

Validation should include the people who will use the system. Finance should check balances and documents. Sales should review customer records and opportunities. Operations should confirm inventory, order flows and exceptions. This involvement reduces surprises and helps identify requirements that do not appear in a technical document.

Plan the system change as a controlled operation

The go-live moment requires a specific cutover plan. You need to define when changes to the old system will be blocked, which data will be reloaded to capture the most recent activity, who will validate the results and at what point the decision will be made to continue or roll back.

In higher-risk projects, it is useful to work with an initial load and a final delta load. The first transfers most of the historical data in advance. The second incorporates changes made during the last few hours or days before launch. This reduces the downtime window, but requires control over what has changed and how duplicates will be avoided.

You should also prepare a contingency plan. This does not mean assuming that the project will fail; it means knowing what to do if a critical validation does not pass. This may involve keeping the old system available in read-only mode, maintaining temporary manual processes or postponing the activation of a non-essential module. Improvising in response to an incident is far more expensive than agreeing on the options beforehand.

Security and governance continue after the migration

Business data may include personal, financial or commercially sensitive information. During the project, access should be restricted, transfers encrypted where appropriate, temporary files controlled and deadlines established for deleting working copies. Exporting a database to a local computer or sending it through uncontrolled channels can create a security problem that the new system will not solve.

Once the migration is complete, governance remains equally important. Define who can create new fields, modify master values, merge duplicates or change integrations. Without these rules, the data quality recovered during the project will quickly deteriorate.

The best migration is not the one that ends with an import showing no visible errors. It is the one that leaves the company ready to work with more reliable data, clear responsibilities and systems that support growth instead of holding it back. If the new environment simplifies decision-making and eliminates manual work, the migration is already generating a return.