Na een bulk-import van producten staan er ineens dubbelen in Odoo: twee keer “M8-bout verzinkt”, elk met eigen voorraad, eigen prijshistorie en eigen leverancierregels. Inkoop bestelt op het ene record, verkoop levert van het andere, en uw voorraadcijfers kloppen nergens meer. Hoe ontstaat dat, en hoe lost u het op — zonder handmatig duizend producten door te lopen?
Oorzaak: geen unieke sleutel
Odoo herkent “bestaand versus nieuw” uitsluitend aan een External ID of een match op Internal Reference. Heeft uw Excel geen van beide, dan beschouwt Odoo elk ingelezen record als nieuw — ook als er al een product met exact dezelfde naam bestaat. De productnaam is voor Odoo géén sleutel, hoe uniek die er voor u ook uitziet.
Fix vooraf: external ID toevoegen
Voeg aan uw importbestand een kolom id (External ID) toe met een stabiel formaat, bijvoorbeeld import.product_SKU001. Bij elke volgende import matcht Odoo op die ID en werkt het bestaande record bij in plaats van een tweede aan te maken. Eén kolom extra in Excel, en het duplicatenprobleem is bij de bron opgelost.
Fix achteraf: duplicaten opsporen en samenvoegen
Staat het kwaad al in de database, ga dan zo te werk:
- Open Inkoop → Producten (of Voorraad → Producten) in lijstweergave.
- Groepeer op Internal Reference; groepen met meer dan één regel zijn verdacht.
- Selecteer de dubbelen en kies Actie → Merge. Odoo koppelt alle voorraadbewegingen, orders en historie aan één master-product.
Controleer bij het samenvoegen welk record de juiste kostprijs, BTW-instelling en routes heeft — dat wordt de overlever. Begin met een klein groepje en controleer het resultaat voordat u de hele lijst doorwerkt.
Voorkomen: uniciteit afdwingen
Wilt u dit structureel dichtzetten, dan kunt u onder Instellingen → Technisch → Database Structure → SQL Constraints een unique constraint op default_code laten zetten. Odoo weigert dan elk nieuw product met een al bestaande SKU — ook bij imports en ook als een enthousiaste collega handmatig een tweede record aanmaakt. Laat dit wel door iemand met technische kennis inrichten; een constraint op een vervuilde tabel geeft eerst foutmeldingen tot de bestaande dubbelen zijn opgeruimd.
Tot slot: een praktische tip
Spreek één vaste SKU-conventie af en maak één persoon eigenaar van het productbestand. Verreweg de meeste duplicaten ontstaan niet door techniek, maar doordat drie collega's elk hun eigen Excel importeren. Zit uw database al vol dubbelen, of wilt u de imports goed inrichten? Neem contact op met DAADit Group — we ruimen het graag met u op.
Vragen over uw Odoo implementatie? Doe de gratis Business Scan.
Start de Business Scan →Na een bulkimport van producten verschijnen er plotseling duplicaten in Odoo: twee records voor “M8-bout, verzinkt”, elk met een eigen voorraad, eigen prijshistorie en eigen leveranciersregels. Inkoop bestelt op het ene record, verkoop levert van het andere, en uw voorraadcijfers kloppen nergens meer. Hoe ontstaat dit, en hoe lost u het op — zonder handmatig duizend producten na te lopen?
Cause: no unique key
Odoo herkent “bestaand versus nieuw” uitsluitend aan een externe ID of een match op Interne referentie. Heeft uw Excel geen van beide, dan behandelt Odoo elk geïmporteerd record als nieuw — ook als er al een product met exact dezelfde naam bestaat. Voor Odoo is de productnaam geen sleutel, hoe uniek die er voor u ook uitziet.
Vooraf oplossen: een externe ID toevoegen
Voeg een kolom id (externe ID) toe aan uw importbestand met een stabiel formaat, bijvoorbeeld import.product_SKU001. Bij elke volgende import matcht Odoo op die ID en werkt het bestaande record bij in plaats van een tweede aan te maken. Eén extra kolom in Excel, en het duplicatenprobleem is bij de bron opgelost.
Achteraf oplossen: duplicaten vinden en samenvoegen
Zit de schade al in de database, werk dan zo:
- Open Inkoop → Producten (of Voorraad → Producten) in lijstweergave.
- Groepeer op Interne referentie; groepen met meer dan één regel zijn verdacht.
- Selecteer de duplicaten en kies Actie → Samenvoegen. Odoo koppelt alle voorraadbewegingen, orders en historie aan één hoofdproduct.
Controleer bij het samenvoegen welk record de juiste kostprijs, btw-instellingen en routes heeft — dat record blijft over. Begin met een kleine groep en controleer het resultaat voordat u de hele lijst doorwerkt.
Prevention: enforce uniqueness
Om dit structureel dicht te zetten, kunt u een unieke constraint laten instellen op default_code onder Instellingen → Technisch → Databasestructuur → SQL-constraints. Odoo weigert dan elk nieuw product met een bestaande SKU — bij imports, en ook wanneer een enthousiaste collega handmatig een tweede record aanmaakt. Laat dit wel instellen door iemand met technische kennis; een constraint op een vervuilde tabel geeft foutmeldingen totdat de bestaande duplicaten zijn opgeschoond.
Tot slot: een praktische tip
Spreek één vaste SKU-conventie af en maak één persoon eigenaar van de productstamgegevens. Verreweg de meeste duplicaten ontstaan niet door techniek, maar doordat drie collega's elk hun eigen Excel importeren. Zit uw database al vol dubbelen, of wilt u uw imports goed ingericht hebben? Contact DAADit Group — we ruimen het graag samen met u op.
Vragen over uw Odoo-implementatie? Doe de gratis Business Scan.
Doe de Business Scan →