Cleaning customer master data in ERP: how to remove duplicates without paralysing the company

· 8 min read · SilverData team

In every other company that comes to us asking "we'd like to finally see who our best customer actually is", the problem isn't with the reports. It's in the customer master file. The same customer sits in the ERP under four different names, three typo'd tax IDs and two independent order histories. No BI tool fixes that — not even an expensive one.

Duplicates in customer master data aren't a cosmetic problem. They're real money: wrong marketing segments, duplicate offers sent to the same partner, missed volume discounts (because the "new" customer never hit the threshold), salespeople cold-calling firms that have been loyal for eight years, and a complete loss of management's trust in the sales reports. "This data is useless" — we hear that roughly once a week.

This piece is about how to clean up the customer file in a 10–50-person company without paying half a million for an MDM project and without paralysing the sales team for three months.

4,200 customers, of which 1,400 are the same customer

At one of our clients — a 26-person electrical-wholesale business, on Comarch Optima for 11 years — the management team was convinced the company served "around 4,000 active customers". That number appeared in investor decks, in sales targets, in commission calculations.

One week of work with a master-file export revealed that out of 4,217 active customer records: 1,411 were duplicates (same companies under different spellings), 643 were customers who hadn't bought anything in over 36 months, and 287 were "test", "Test customer", "ABC contractor" and similar leftovers from old migrations. The real number of active customers was 1,876. Less than half of what the reports said.

The consequences were measurable. The "VIP customer" segment (over PLN 50k/year) showed 312 firms in the report — after deduplication, only 198 unique customers, with nine of them "split" across two records and never crossing the threshold inside the report. They were missing 4–7% volume rebates they were formally entitled to and never received. Marketing had been sending the same newsletter four times to the same company for 18 months. At least two salespeople were competing for a "new" customer who was already a colleague's loyal account in another region.

The whole cleanup project ran for 6 weeks — 2 weeks of audit and analysis, 3 weeks of controlled merging (40–80 records per day, verified by the responsible salesperson) and one week to rebuild the reports. Total cost: under PLN 18k including their own team's time. Return: the first sales report management actually trusted, plus a roughly PLN 9k per year saving on marketing alone.

This isn't a story about software. It's a story about what happens when, for 11 years, every new customer was entered by whoever picked up the phone, with no rules.

Where duplicates come from

Nobody creates duplicates on purpose. They accumulate because every company has a few classic "duplicate generators":

These are systemic causes, not human ones. If you clean the file but don't change the causes, in 18 months you'll be having the same conversation with management again.

What "clean" actually means for an SME

In enterprises, "clean master data" means an MDM project, a dedicated data team, half-a-million-zloty tooling. In an SME, you need far less, but specifically:

Five things. Not ten, not twenty. Five — which together deliver 90% of the value of an MDM programme at SME scale.

How to clean it up, step by step

A customer-file cleanup, done right, is a 4-to-8-week project for a typical 20-50-person company. Order matters — done in reverse, it can paralyse the sales team for weeks.

  1. Export and audit — 3 to 5 days. Export the whole customer file to Excel or CSV. Count: how many records have an empty tax ID, how many records share an identical tax ID (guaranteed duplicates), how many have similar names (Levenshtein/fuzzy matching — doable with an Excel formula, or 20 lines of Python), how many had no transaction in the last 24 months. Produce a one-page report for management. You're not touching anything yet — only measuring.
  2. Written merge rules. Before merging anything, agree and write down: how do we recognise that two records are the same customer (tax ID + legal name, email + address, for private persons — phone). Which record "wins" in a merge (usually the one with the longest transaction history or the most complete data). What happens to sales history, documents, receivables from the "losing" record. Comarch Optima has a "merge partners" function, enova365 has one too — but both demand clear rules, or you'll do more harm than good.
  3. Pilot on one segment. Pick one segment (e.g. "customers in the Mazovian region" or "salesperson X's customers") and run the full merge cycle on it. That's 200–500 records. Learn what edge cases pop up (e.g. two group companies with different tax IDs but the same billing address).
  4. Controlled merging, in batches. 40–80 records per day, verified by the responsible salesperson. Never merge in "one big batch" — one wrongly merged customer in a wholesaler is two days of untangling invoices and stock reservations. After each batch — a quick check that sales reports haven't started misbehaving.
  5. Archive, don't delete. A customer who hasn't bought anything for 36 months goes to "archived" status, doesn't disappear. Because in six months they might come back — and you'll want to see their full history, not start from scratch.
  6. Rules for the future. Tax-ID validation, one or two people authorised to create new partners, integration with the Polish REGON database to auto-fill the name from the tax ID, a monthly "new partners to review" report. Skip this step and you're back to square one in 18 months.

Each of these steps works in Comarch Optima, enova365, Subiekt GT, Microsoft Dynamics 365 Business Central and most other systems used in Polish SMEs. They differ in details, not in the idea.

What not to do

Three classic mistakes we see regularly:

Cleaning the customer file is craft work, not a sprint. A pace of 40–80 verified records per day is the pace that works. Anything faster usually generates more cost than savings.

Where to start next week

If you're reading this thinking "ours is worse than I thought", do this in order:

  1. Export the full customer file from your ERP to CSV. Open in Excel, sort by tax ID. Count records with an identical tax ID. That one number tells 80% of the truth about your master file.
  2. Ask your bookkeeper how many times in the last 12 months they had to manually fix an invoice because "the customer was duplicated". That's your first real cost — multiply by 30 minutes apiece.
  3. Appoint one person responsible for master-file quality. Even if it's 4 hours a week. Without an owner, nothing changes.
  4. Run a pilot on one segment (one region, one salesperson, one product group). 200–500 records. Learn. Measure how long it took.
  5. If the pilot worked, plan the rest as a 4-to-8-week project. If it didn't — stop and check whether you have written merge rules. Without them, don't go any further.

Master-data chaos doesn't fix itself, and a new ERP won't fix it either (if you don't clean before the migration, the new system will hold the same mess, just better-looking). It's fixed by one person with a plan and a few weeks of patience.

If you want to set this up at your company but aren't sure where to start, we help SMEs break this down regularly. The first conversation is free and takes half an hour.

AI won't tell you who your best customer is if that customer sits in the database under four different names. Start with the master file — the rest can wait.

← Back to blog