Verbindt met ERP & MES-systemen zoals

Integraties / ERP / Odoo

Odoo-integratiegids voor productieschema’s met SkyPlanner APS

Deze gids laat Odoo-partners, ontwikkelaars en IT-verantwoordelijken zien hoe ze Odoo Manufacturing aan SkyPlanner APS koppelen. Meer over de businesscase en wat de knop Plan in Odoo al doet, leest u op de pagina over productieschema’s in Odoo en in Ondersteunt Odoo capaciteitsplanning?.

Gantt-tijdlijn in SkyPlanner APS met taken ingepland op verschillende werkcentra en daaronder een orderlijst.

Odoo blijft het bronsysteem voor producten, stuklijsten, bewerkingen, fabricageorders, voorraad en kostencalculatie. SkyPlanner stelt met zijn Arcturus-engine op basis van die gegevens het productieschema op. De integratie met Odoo werkt in beide richtingen:

  • Fabricageorders, productieorders, BoM-bewerkingen, werkcentra en inkooporders worden ingelezen.
  • De geplande start- en eindtijd en de werkcentra worden teruggeschreven naar mrp.workorder.
  • Voortgang en geregistreerde tijd worden als Odoo Time Logs teruggestuurd.
  • SkyPlanner-webhooks sturen wijzigingen in het productieschema direct door.

Het SkyPlanner-team configureert de integratie tijdens de onboarding via de standaard externe API van Odoo. Het team stemt deze af op uw versie, hosting en maatwerk en biedt ook na de ingebruikname ondersteuning. Deze gids is bedoeld voor partners en ontwikkelaars die willen meewerken of zelf op de gedocumenteerde REST API van SkyPlanner willen voortbouwen (API-referentie). De verwerking van producten, materialen en inkooporders staat beschreven in de openbare SkyPlanner-documentatie.

Stap nul: controleer het Odoo-abonnement en de hosting

Ga eerst na welke Odoo-omgeving de klant gebruikt. Die bepaalt de aanpak.

OmgevingExterne APIMaatwerkmodulesPraktische aanpak
Odoo Online, One App Free of StandardNeeNeeCSV/XLSX, of overstappen op het Custom-abonnement
Odoo Online, Custom-abonnementJaNeeExterne API
Odoo.sh (Custom-abonnement)JaJaExterne API, optionele module
On-premise, Community of EnterpriseJaJaExterne API, optionele module

Volgens de API-documentatie van Odoo is toegang tot de externe API “only available on Custom Odoo pricing plans” (alleen beschikbaar bij Custom-abonnementen van Odoo), niet bij One App Free of Standard. Op de prijzenpagina staat dat Standard op Odoo Online wordt gehost “without custom modules” (zonder maatwerkmodules). Vraag dit tijdens de inventarisatie na, niet halverwege de bouw.

Integratiemogelijkheden van Odoo

OptieVersiesAuthenticatieRol bij een planningsintegratie
External JSON-2 API: POST /json/2/<model>/<method>Nieuw in 19.0API-sleutel in Authorization: bearer <key>, optionele header X-Odoo-DatabaseStandaard voor nieuwe integraties: search_read voor uitlezen, write voor het terugschrijven van datums
Externe XML-RPC / JSON-RPC: /xmlrpc/2, /jsonrpc, services common, objectTot en met 19.0; verwijdering geplandcommon.authenticate met inlognaam en wachtwoord of API-sleutel, daarna execute_kwVereist voor klanten op 16.0 tot en met 18.0
Maatwerkcontrollers in een moduleAllePer route, bijvoorbeeld auth='bearer'Gecombineerde payloads: een MO met de bijbehorende productieorders in één aanroep
Automatiseringsregels: “Send Webhook Notification” (webhookmelding verzenden)Gedocumenteerd vanaf 17.0Uitgaand POST-verzoek naar een URLPush bij het aanmaken of wijzigen van MO’s en productieorders
Records importeren (CSV, XLSX) en exporterenAlleGebruikerssessieProefgegevens en eenmalige import van stamgegevens

Houd nu al rekening met de verwijdering. Odoo heeft de verwijdering van XML-RPC en JSON-RPC gepland voor Odoo 22 (najaar 2028) en Odoo Online 21.1 (winter 2027). Bouw voor 19.0 op JSON-2 en scherm het RPC-pad voor oudere databases af achter één adapter. Zo volstaat bij een upgrade één wijziging. Maatwerkcontrollers met @route(type='jsonrpc') vallen niet onder deze verwijdering.

Authenticatie

Maak een aparte integratiegebruiker aan met leesrechten voor Manufacturing en Inventory en schrijfrechten voor productieorders. Genereer de sleutel via Preferences > Account Security > New API Key. In 19.0 zijn sleutels maximaal drie maanden geldig. De middleware moet daarom sleutels kunnen roteren en een melding geven bij authenticatiefouten. Zonder die voorzieningen stopt de synchronisatie ongemerkt zodra een sleutel verloopt. Aan de kant van SkyPlanner gebruikt de REST API JWT, dus de middleware beheert beide inloggegevens.

Elke JSON-2-aanroep draait in een eigen SQL-transactie. Een schrijfactie die over meerdere aanroepen is verdeeld, is dus niet atomair. Schrijf per productieorder en leg elk resultaat vast.

Gebeurtenissen

Odoo pusht wijzigingen via automatiseringsregels. Een regel op mrp.production of mrp.workorder met de trigger On create and edit en de actie “Send Webhook Notification” (webhookmelding verzenden) verstuurt een POST-verzoek met de geselecteerde velden naar een URL. Maak de regel in Studio of, in ontwikkelaarsmodus, via het formulier Automation Rules. Combineer dit met een periodieke search_read-poll op write_date om imports en wijzigingen die de regel heeft gemist alsnog op te halen. In de andere richting pushen SkyPlanner-webhooks wijzigingen in planning en status zodra ze plaatsvinden.

Veldnamen verschillen per versie. In 19.0 vermeldt elke database zijn modellen, velden en methoden op /doc; roep bij oudere versies fields_get aan. Baseer de mapping daarop, niet op uw geheugen.

Gegevensmapping: van Odoo naar SkyPlanner

Odoo-modelSkyPlanner-objectRichtingFrequentie
product.product / product.template (default_code, uom_id, qty_available)Product of materiaalOdoo → SkyPlannerEerste import, daarna dagelijks of bij wijziging
mrp.bom (product_tmpl_id, product_qty, produce_delay), mrp.bom.line (product_id, product_qty, operation_id), mrp.bom.byproductProduct met meerdere niveaus, materiaalbehoefte per stapOdoo → SkyPlannerBij wijziging
mrp.routing.workcenter (tabblad Operations: workcenter_id, sequence, time_mode, time_cycle_manual, blocked_by_operation_ids)Processtappen met volgorde en bewerkingstijdOdoo → SkyPlannerBij wijziging
mrp.workcenter (resource_calendar_id, time_efficiency, time_start, time_stop, alternative_workcenter_ids)Werkcentrum, efficiëntie, instellen en opruimen, alternatieve werkcentraOdoo → SkyPlanner, daarna beheerd in SkyPlannerEerste import
mrp.workcenter.capacity (capacity)Stuks per cyclus, productspecifieke instel- en opruimtijdenOdoo → SkyPlannerEerste import
resource.calendar, resource.calendar.attendance, resource.calendar.leavesDiensten en verlofOdoo → SkyPlannerEerste import, verlof bij wijziging
mrp.production (product_id, product_qty, date_deadline, priority, state, workorder_ids)Order met uiterste einddatum en prioriteitOdoo → SkyPlannerWebhook bij bevestiging, aangevuld met polling
mrp.workorder (operation_id, workcenter_id, duration_expected, state)Taak op een werkcentrumOdoo → SkyPlannerWebhook, aangevuld met polling
stock.quant, stock.move (componentmutaties)Aanwezige voorraad en materiaalbehoefte voor materiaalgestuurd plannenOdoo → SkyPlannerPeriodiek, bijvoorbeeld elke 15 tot 60 minuten
purchase.order (partner_id, state), purchase.order.line (product_id, product_qty, date_planned, qty_received)Inkooporders en binnenkomend materiaal, beschikbaar op de verwachte leverdatumOdoo → SkyPlannerWebhook bij bevestiging of wijziging van de inkooporder, aangevuld met dezelfde periodieke polling
Geplande start- en eindtijd en werkcentrummrp.workorder.date_start, date_finished, workcenter_idSkyPlanner → OdooBij een planningswijziging, via een SkyPlanner-webhook
Mobile Confirmations, tijdregistratiesmrp.workcenter.productivity (Time Logs: workcenter_id, workorder_id, date_start, date_end, loss_id)SkyPlanner → OdooPer terugmelding
Geproduceerd aantal, voltooide bewerkingqty_producing op de productieorder, daarna button_finish; button_mark_done op de MOSkyPlanner → Odoo, of uitgevoerd in Odoo Shop FloorPer terugmelding

Integratiepatronen

Eerst de stamgegevens.

Laad eerst de werkcentra en kalenders en daarna de producten, BoMs en bewerkingen die naar werkcentra verwijzen. Tijdens de proefperiode van 30 dagen worden dezelfde lijsten als CSV-exports ingelezen. De import- en exportfunctie van Odoo werkt in elke lijstweergave.

Ordersynchronisatie.

Haal MO’s met de status confirmed en progress op, inclusief de bijbehorende productieorders. Laat concept-MO’s buiten beschouwing of behandel ze als voorlopige vraag. Subassemblages met een eigen stuklijst kunnen als afzonderlijke onderliggende MO’s binnenkomen. Odoo plant elke MO afzonderlijk. Koppel ze aan subproducten in SkyPlanner, zodat subassemblages klaar zijn voordat het bovenliggende product start.

Het productieschema terugschrijven.

Wanneer de planning verandert, activeert een SkyPlanner-webhook de integratie. Die roept de ORM-methode write aan voor elke betrokken mrp.workorder. In Odoo 19.0 is dat één JSON-2-verzoek per productieorder:

“ POST /json/2/mrp.workorder/write Authorization: bearer <api-key> {"ids": [4711], "vals": {"date_start": "2026-11-03 06:00:00", "date_finished": "2026-11-03 09:30:00", "workcenter_id": 7}} “

JSON-2 accepteert elk methodeargument op naam, plus ids en context. Zo wordt write(vals) de sleutel vals. In 16.0 tot en met 18.0 verloopt dezelfde aanroep als execute_kw(db, uid, key, 'mrp.workorder', 'write', [[4711], vals]) via XML-RPC of JSON-RPC. In 16.0 heten de sleutels date_planned_start en date_planned_finished. Verstuur datums en tijden in UTC. Met een paar regels houdt u het terugschrijven correct:

  • Verstuur beide datums in dezelfde aanroep.
  • Voeg workcenter_id alleen toe als de engine een alternatieve machine heeft gekozen.
  • Schrijf alleen planningsvelden, nooit hoeveelheden of BoMs.

Door de datums terug te schrijven, verschuift de reservering van het werkcentrum in Odoo. Daardoor tonen de planningsweergaven in Odoo het schema van SkyPlanner.

Van de productievloer terug naar Odoo. Operators registreren hun werk in SkyPlanner Mobile Confirmations. Voor elke terugmelding roept de integratie create aan op mrp.workcenter.productivity (JSON-2: POST /json/2/mrp.workcenter.productivity/create met vals_list). Daarbij worden workorder_id, workcenter_id, date_start, date_end en een loss_id van het type Productive ingevuld. De arbeidsuren en kosten worden in Odoo geboekt.

Zodra een bewerking klaar is, stelt de integratie het geproduceerde aantal in en roept ze button_finish aan op de productieorder. Na de laatste productieorder is de MO klaar voor button_mark_done. Elke terugmelding wordt één keer geboekt. De bijbehorende Odoo-record-ID wordt bij de SkyPlanner-tijdregistratie bewaard, zodat een opnieuw verstuurde webhook nooit een tweede Time Log aanmaakt.

Bij fabrieken die de Enterprise Shop Floor-app gebruiken, werkt dit andersom: SkyPlanner leest de status van de productieorder en qty_produced uit. Autopilot past de planning automatisch aan wanneer de productie verandert.

Gegevenseigenaarschap. Leg de regels vóór de ingebruikname vast:

GegevensEigenaar
Producten, BoMs, bewerkingen, hoeveelheden, MO-statusOdoo
Volgorde van productieorders, start- en eindtijden, keuze van werkcentrumSkyPlanner
Omsteltijdenmatrix, eisen aan gereedschap en operators, alternatieve resourcesSkyPlanner
Werkcentrumkalenders en Time OffEén systeem, te kiezen tijdens de scopebepaling
Time Logs, voorraad en kostencalculatieOdoo, gevoed met terugmeldingen uit SkyPlanner

Planners gebruiken de knoppen Plan en Unplan in Odoo niet meer voor MOs die SkyPlanner inplant. Anders reserveert Odoo zelf tijdvakken die de datums van SkyPlanner overschrijven.

Gebruikelijke projectstappen

De implementatie is doorgaans binnen enkele weken na de start van de onboarding afgerond. Daarvóór gebruikt u de gratis proefperiode van 30 dagen met CSV-exports van uw eigen Odoo-gegevens. Het project zelf omvat:

  1. Mapping van stamgegevens: Odoo-modellen en -velden per versie (controleer /doc of fields_get), maateenheden en welk systeem de kalenders en Time Off beheert.
  2. Opschonen: werkcentrumkalenders, Setup Time en Cleanup Time, en voor de duur van BoM-bewerkingen Fixed in plaats van Computed instellen.
  3. Eerste gegevensimport: producten, werkcentra met kalenders, BoMs en de bijbehorende bewerkingen.
  4. Synchronisatie van orders en inkooporders: bevestigde en lopende MO’s met de bijbehorende productieorders, plus purchase.order-regels met hun verwachte aankomstdatums.
  5. Planning terugschrijven: datums en werkcentra op mrp.workorder, met rotatie van de API-sleutel aan de Odoo-kant.
  6. Terugmeldingen van de productievloer: Time Logs en gereedmeldingen van productieorders terugsturen naar Odoo.
  7. Testen naast de huidige planning, daarna ingebruikname.

Valkuilen in Odoo

  • Hernoemde datumvelden. Tot en met 16.0 bevatten date_planned_start en date_planned_finished de geplande datums en date_start/date_finished de werkelijke datums. Vanaf 17.0 zijn date_start en date_finished de geplande datums. Een mapping die uit een 16.0-project is overgenomen, leest op 17+ ongemerkt werkelijke datums als geplande datums.
  • Datums van productieorders zijn reserveringen. In 19.0 worden date_start en date_finished op mrp.workorder berekend op basis van een resource.calendar.leaves-record (leave_id) in de werkcentrumkalender. Als u de datums op de productieorder schrijft, wordt die reservering bijgewerkt. Schrijf nooit rechtstreeks naar de verloftabel.
  • Gestarte productieorders blokkeren Unplan. Odoo weigert een MO uit de planning te halen wanneer “Some work orders have already started” (sommige productieorders zijn al gestart). Sla bij het terugschrijven productieorders met de status progress of done over en verplaats alleen wat nog niet is gestart.
  • Bewerkingstijden veranderen. Bewerkingen met de instelling Computed ontlenen hun duur aan de laatste productieorders (standaard 10), bijgesteld op basis van Time Efficiency. Stel ze voor de proefperiode in op Fixed, of accepteer dat de invoerwaarden veranderen. Bewerkingen worden per BoM vastgelegd, zonder gedeelde stamgegevens voor de bewerkingsvolgorde. Elke BoM moet dus afzonderlijk worden opgeschoond.
  • Onjuiste kalenders. Elk werkcentrum heeft een werktijdenkalender nodig. De eigen planner van Odoo zoekt tot 700 dagen vooruit en stopt dan met de melding “Impossible to plan the workorder” (de productieorder kan niet worden ingepland). Corrigeer de kalenders vóór de eerste gegevensimport.
  • Maateenheden. mrp.bom.line heeft een eigen product_uom_id, die kan afwijken van de voorraadeenheid van het product. Reken de eenheden om voordat u de materiaalbeschikbaarheid controleert.

Wie configureert de Odoo-integratie?

Elke fabriek gebruikt Odoo anders: met eigen BoM-bewerkingen, werkcentrumkalenders, alternatieve werkcentra en maatwerkmodules. Het SkyPlanner-team heeft de expertise om de gegevensmapping op die inrichting af te stemmen.

  1. Het SkyPlanner-team configureert de integratie tijdens de onboarding voor uw Odoo-omgeving en biedt na de ingebruikname ondersteuning. De integratie gebruikt de REST API en webhooks van SkyPlanner en de JSON-2- of RPC-API van Odoo. Dit is de standaardaanpak.
  2. Uw Odoo-partner kan meewerken. De partner kent uw inrichting en maatwerkmodules en kan voortbouwen op dezelfde gedocumenteerde REST API. Daarmee kunnen orders, producten, materialen, processtappen en tijdregistraties worden gelezen en geschreven, met JWT-authenticatie en Swagger/OpenAPI-documentatie.
  3. Uw eigen ontwikkelaars kunnen hetzelfde doen, meestal met een kleine middlewaretoepassing naast Odoo of met een module op Odoo.sh of on-premise. Een API-sleutel is genoeg om te beginnen (integratiehandleiding). Het SkyPlanner-team helpt waar nodig.

Dezelfde aanpak wordt al in de praktijk gebruikt met andere ERP-systemen. Bij Laboratory & Allied bouwde het interne IT-team de integratie met SAP Business One grotendeels zelf, met hulp van SkyPlanner. UTU gebruikt SkyPlanner naast zijn ERP-systeem NetSuite.

Waarom de integratie loont

Juist het terugschrijven van gegevens maakt de integratie dagelijks waardevol. Zodra dit werkt:

  • Odoo-productieorders krijgen concrete datums. De Arcturus AI-engine bepaalt in seconden de volgorde van alle openstaande MO’s. De berekende datums en gekozen werkcentra worden vastgelegd op mrp.workorder en zijn zichtbaar in de planningsweergaven van Odoo.
  • Niemand hoeft handmatig te herplannen. Autopilot past het productieschema automatisch aan bij wijzigingen in de productie. De webhook stuurt de nieuwe datums naar Odoo.
  • Terugmeldingen vanaf de productievloer maken de cirkel rond. Operators registreren hun werk op een telefoon of tablet met Mobile Confirmations, Production Timer en Quick Log Mode. Time Logs worden naar Odoo gestuurd voor voorraad en kostencalculatie. Planning en uitvoering komen samen in één tool, zowel op Community als op Enterprise.
  • De planning houdt rekening met beperkingen die Odoo niet meeneemt. Een omsteltijdenmatrix legt per productpaar de volgordeafhankelijke omsteltijd vast. Gereedschappen hebben een beperkte capaciteit en worden door meerdere machines gedeeld. Een taak kan meerdere operators tegelijk vereisen. Als de primaire machine of medewerker niet beschikbaar is, wijkt de engine uit naar alternatieven. De datums die naar mrp.workorder worden teruggeschreven, houden met al deze beperkingen rekening.
  • Materiaalaanvoer stuurt de planning. De aanwezige voorraad en openstaande inkooporders in Odoo vormen de basis voor materiaalgestuurd plannen. Bestelde componenten gelden als beschikbaar op de leverdatum van de PO. De voorraad wordt bijgewerkt zodra de PO als Delivered is gemarkeerd. Voor elke taak wordt gecontroleerd wat er in het magazijn ligt en wat er onderweg is.

U kunt het productieschema beoordelen voordat er integratiewerk nodig is. Start de gratis proefperiode van 30 dagen met CSV-exports en bekijk uw eigen Odoo-productieorders in het Gantt-diagram, met maximaal 20 werkstations en zonder creditcard. De prijs begint bij 199 € per maand, inclusief 5 werkstations, met maandelijkse facturering en opzegging op elk moment. U ontvangt vooraf een offerte voor de integratie, afgestemd op uw proces en behoeften, samen met uw abonnement. Zo kent u de volledige kosten voordat u begint. Bekijk de functies en klanten, of boek een demo.

Ervaringen van productiebedrijven met SkyPlanner

Kalle Kalliomäki, supplychainspecialist bij UTU, op de productievloer voor schakelborden in Ulvila

2 hbespaard per week

“Met SkyPlanner zijn we voor onze productieplanning overgestapt van Excel-spreadsheets naar realtime productieoptimalisatie.”

Kalle Kalliomäki, supplychainspecialist
UTU · Elektrische schakelborden en schakelapparatuur

Bij UTU bespaart de productieplanning elke week 2 uur werktijd en bereikt een nieuwe werklijst de productielijn binnen enkele seconden.

Lees de ervaring van UTU

Operators in cleanroompakken bij een flessenvullijn in de farmaceutische fabriek van Laboratory & Allied in Nairobi

+90%productie-efficiëntie

“De efficiëntie in de productie is met 90% gestegen.”

Abdul Rucyinga, IT-manager
Laboratory & Allied · Farmaceutische productie

De productie-efficiëntie is met 90% gestegen. Een geoptimaliseerde planning voor drie maanden voor alle werkstations is in minder dan 30 minuten klaar.

Lees de ervaring van Laboratory & Allied

Hannu Ryynänen, CEO van Mamec, in de productiehal van het bedrijf in Lohja

1.000’enproductieorders automatisch ingepland

“We hebben de productie op een andere manier onder controle, en ons inzicht in de capaciteit ligt op een heel ander niveau.”

Hannu Ryynänen, CEO
Mamec · Industriële mengers, pompen en hightechproductie in opdracht

Duizenden productieorders worden automatisch ingepland en de hele organisatie heeft realtime inzicht in de productie.

Lees de ervaring van Mamec

Luchtfoto van de fabriek van Piristeel voor dakveiligheidsproducten in Kauhava

99,2%leverbetrouwbaarheid

“Dankzij SkyPlanner zien we waar de knelpunten zitten en is de aansturing van de productie overzichtelijker geworden.”

Toni Tuori, productiemanager
Piristeel · Dakveiligheid en hemelwaterafvoersystemen

De leverbetrouwbaarheid bereikte dit jaar 99,2% en het inplannen bespaart tot vier uur werktijd per dag.

Lees de ervaring van Piristeel

Veelgestelde vragen

Werkt de integratie op Odoo Online?

Ja, met het Custom-abonnement, via de externe API. One App Free en Standard bieden geen toegang tot de externe API en Standard werkt zonder maatwerkmodules. Met die abonnementen bent u dus beperkt tot import en export via CSV/XLSX.

Moeten we JSON-2 of XML-RPC gebruiken?

Gebruik JSON-2 voor Odoo 19.0 en hoger. Voor 16.0 tot en met 18.0 zijn XML-RPC en JSON-RPC nog nodig, maar volgens planning worden ze in Odoo 22 verwijderd.

Hoe komt het productieschema terug in Odoo?

Via de ORM-methode write op elke mrp.workorder: in 19.0 met POST /json/2/mrp.workorder/write en ids en vals, of in 16.0 tot en met 18.0 met execute_kw en write via XML-RPC of JSON-RPC. Het gaat om de waarden date_start, date_finished (date_planned_start en date_planned_finished in 16.0) en, indien gewijzigd, workcenter_id. Odoo verplaatst de reservering van het werkcentrum mee, zodat de planningsweergaven van Odoo de datums uit SkyPlanner tonen.

Hoe komen de terugmeldingen van operators in Odoo terecht?

Als Time Logs: de integratie maakt mrp.workcenter.productivity-records aan bij de productieorder, met een starttijd, eindtijd en een verliesreden van het type Productive. Zodra de bewerking klaar is, roept ze button_finish aan. Elke terugmelding wordt één keer geboekt, zodat herhaalde pogingen geen dubbele tijdregistraties opleveren.

Wie onderhoudt de integratie na de ingebruikname?

Het SkyPlanner-team configureert de integratie tijdens de onboarding en biedt na de ingebruikname ondersteuning, ook als uw Odoo-inrichting verandert en er aanpassingen nodig zijn. Als uw partner of uw ontwikkelaars de integratie bouwen, gebruiken zij de gedocumenteerde REST API en de SkyPlanner-documentatie. Het team helpt waar nodig.

Wat gebeurt er met productieorders die al zijn gestart?

Laat die bij het terugschrijven ongemoeid. Odoo blokkeert het uit de planning halen van een MO zodra een productieorder in uitvoering of afgerond is. SkyPlanner leest de status en voortgang en plant het resterende werk eromheen.

Hoelang duurt de Odoo-integratie?

De implementatie is normaal gesproken binnen enkele weken na de start van de onboarding afgerond. Begin met de proefperiode van 30 dagen op basis van CSV-exports. Zo heeft het productieschema zich al bewezen met uw eigen Odoo-gegevens voordat het werk aan de API begint.