Techniek
Tools & Technology

Odoo koppelen aan Power BI: wat werkt en wat je beter laat

Er zijn drie manieren om Odoo-data in Power BI te krijgen. Twee ervan gaan vroeg of laat stuk. Welke overblijft en waarom.

Odoo is bij veel kmo's het systeem waar alles in zit. Verkoop, aankoop, voorraad, soms boekhouding en projecten erbij. Logisch dus dat de vraag komt om er rapportage op te bouwen die verder gaat dan de ingebouwde schermen.

Er zijn drie manieren om die data in Power BI te krijgen. Ze lijken alle drie te werken op de dag dat je ze opzet. Twee ervan gaan daarna stuk.

Manier een: exporteren

Iemand trekt elke maand een export uit Odoo en laat die in Power BI inlezen. Dit werkt, tot het niet meer werkt.

Het gaat stuk op de gewone dingen. Iemand exporteert met andere kolommen geselecteerd. Iemand slaat op in een ander formaat. Iemand is met vakantie. En omdat het handwerk is, zit er altijd een moment tussen het feit en het cijfer waardoor je nooit echt actueel bent.

Voor een eenmalige analyse is een export prima. Voor iets dat elke week moet draaien is het geen oplossing, het is een afspraak die op termijn niet nagekomen wordt.

Manier twee: rechtstreeks op de database

Odoo draait op PostgreSQL, dus technisch kan je er rechtstreeks op aansluiten. Bij een eigen installatie op je eigen server kan dat zelfs zonder veel gedoe.

Dit werkt goed en het is snel. Er zitten twee addertjes onder.

Het eerste is dat je bij Odoo Online of Odoo.sh die toegang meestal niet krijgt. Dat beslis je dus niet zelf, dat hangt af van je hostingvorm.

Het tweede is belangrijker. Het datamodel van Odoo is gemaakt voor de applicatie, niet voor jou. Bedragen staan in de valuta van de order, niet noodzakelijk in de jouwe. Er zitten kolommen in die de applicatie gebruikt en die niet betekenen wat de naam suggereert. En bij een upgrade kan er iets veranderen zonder dat iemand je dat komt vertellen, waarna je rapport stil of fout draait.

Rechtstreeks op de database werkt dus, maar alleen als iemand dat model kent en het in de gaten houdt.

Manier drie: via de API, in je eigen laag

Dit is wat ik in de praktijk bouw. Je haalt de data op via de officiële interface van Odoo, je schrijft ze weg in je eigen database, en Power BI kijkt naar die eigen database.

Dat lijkt een omweg. Het is het niet, en wel om drie redenen.

Je hebt historiek. Odoo bewaart de huidige toestand, niet hoe iets er drie maanden geleden uitzag. Wil je zien hoe je voorraad of je orderboek evolueerde, dan moet je dat zelf bijhouden. Een eigen laag doet dat vanzelf.

Je bent beschermd tegen wijzigingen. Als Odoo iets verandert, pas je één ophaalscript aan in plaats van elk rapport.

En je kan combineren. Je passage, je webshopdata, je marketingcijfers, je loonkost: die zitten niet in Odoo en moeten er toch naast komen te staan. Een eigen laag is de enige plek waar dat kan.

Welke van de drie ik zelf gebruik

De derde, altijd. Ophalen via de interface, wegschrijven in een eigen database, en dat op een vast moment laten draaien.

Concreet bij mij: een script dat op schema draait via GitHub Actions, met de sleutels in de secrets van de repository. Dat draait intussen een tijd en het heeft nog geen enkele fout opgeleverd. Dat is geen toeval maar een gevolg van waar die opzet de fouten weghaalt: er is niemand die iets moet exporteren, er is geen bestand dat ergens verkeerd terechtkomt, en als het misgaat krijg ik een verwittiging in plaats van oude cijfers.

De eerste manier, exporteren met de hand, gebruik ik alleen voor een eenmalige analyse. De tweede, rechtstreeks op de database, is technisch prima maar maakt je afhankelijk van een datamodel dat voor de applicatie gemaakt is en dat bij een upgrade kan schuiven.

Wat in die derde aanpak de meeste tijd kost, is niet de techniek. Het is beslissen welk van de drie omzetcijfers in Odoo jouw omzetcijfer is, en dat gesprek voer je maar één keer.

Waar je in de praktijk op vastloopt

De interface van Odoo is niet het lastige deel. Wat tijd kost, is het bepalen van wat je precies ophaalt.

Odoo heeft voor de meeste zaken meerdere plaatsen waar iets staat. Een verkoop zit in de orderlijnen, in de facturatie, en in de boekhouding, en die drie geven niet hetzelfde antwoord. Dat is niet fout, ze meten alleen iets anders: wat besteld is, wat gefactureerd is, en wat geboekt is.

Voor je begint moet je dus beslissen welk van die drie je omzetcijfer is. Kies je dat niet expliciet, dan kiest degene die het rapport bouwt het voor je, en dan klopt je dashboard niet met je boekhouding zonder dat iemand weet waarom.

Datzelfde geldt voor kortingen, creditnota's, btw en intercompany. Allemaal keuzes die je één keer maakt en daarna vastlegt.

Wat je nodig hebt om te beginnen

Toegang met een gebruiker die alleen mag lezen, niet meer. Duidelijkheid over welke Odoo-versie en welke hostingvorm je hebt, want dat bepaalt je opties. En een half uur om af te spreken wat omzet betekent.

De technische kant is daarna een kwestie van dagen, niet van maanden. Het gesprek over definities is wat de doorlooptijd bepaalt.

De stelling

De vraag is niet hoe je Odoo aan Power BI koppelt. Dat is opgelost. De vraag is welke van de drie omzetcijfers in Odoo jouw omzetcijfer is, en die vraag moet jij beantwoorden, niet je integrator.

Gregory Moureau