OTM krijgt een officiële .NET-library op NuGet

Op 1 juli 2025 werd OpenTripModel.Model gepubliceerd op NuGet. Kort daarna, op 7 juli, volgden OpenTripModel.Serializer en OpenTripModel.Profile.
Dat klinkt als een gewone package-release. Het is er geen, want het is de eerste keer dat je OTM in .NET kunt gebruiken zonder de specificatie eerst met de hand na te typen.
Waar hebben we het over — wat is OTM? Het Open Trip Model is een open standaard voor het uitwisselen van logistieke ritgegevens over het internet: ritten, zendingen, transportorders, voertuigen, locaties, goederen en de events die daarbij horen, als lichtgewicht JSON over een REST-API.
Het punt van OTM is dat verladers, vervoerders, softwareleveranciers en wegbeheerders dezelfde rit op dezelfde manier beschrijven. Zonder die afspraak bouwt elke partij een vertaallaag naar elke andere partij, en betaalt de hele sector voor hetzelfde probleem. De standaard wordt sinds 2018 beheerd door de Stichting Uniforme Transport Code, samen met TLN, evofenedex en DALTI.
Waarom een library uitmaakt
Een standaard is pas een standaard als hij daadwerkelijk hetzelfde geïmplementeerd wordt. En daar zat het gat.
OTM bestond uit een OpenAPI-specificatie en een documentatiesite — sinds mei 2025 op versie 5.7. Wilde je koppelen, dan schreef je zelf de types, zelf de serialisatie, zelf de validatie. Iedereen deed dat, iedereen deed dat nét anders, en de verschillen kwamen pas boven tafel bij de eerste integratietest met een tegenpartij.
Een gedeelde library haalt precies dat weg. Niet omdat je zelf geen types kunt schrijven, maar omdat jouw types en die van je tegenpartij dan uit dezelfde bron komen.
Drie packages, drie taken
De .NET-toolkit is opgesplitst in drie onafhankelijke packages, en die splitsing is verstandig gekozen:
OpenTripModel.Model— C#-typedefinities voor de OTM v5-entiteiten. Trip, Vehicle, Location, StopAction, associaties, enums. Kant-en-klare datastructuren die één-op-één de entiteiten van de specificatie volgen.OpenTripModel.Profile— validatie van een bericht tegen een gekozen profiel: verplichte velden, waardebeperkingen zoals lengtes, patronen en enums, en het signaleren van onbekende velden waar die niet toegestaan zijn. Levert een pass/fail mét reden.OpenTripModel.Serializer— JSON-serialisatie volgens de OTM-conventies: camelCase, enums als string, voorspelbare omgang met null.
Die middelste is de interessantste. Profielen zijn in OTM de manier waarop een specifieke use case invult wat er verplicht is — het transportorder-profiel, het CBS-profiel voor wegvervoerstatistiek, het carbon footprint-profiel, het eFTI-profiel. De kernspecificatie laat veel open; het profiel maakt het concreet.
Dat betekent dat 'valide OTM' zonder profiel een halve vraag is. Een library die validatie tegen een profiel meelevert, valideert dus tegen de afspraak die er werkelijk toe doet, in plaats van tegen het schema in het algemeen.
Hoe het eruitziet
De opzet is bewust saai, in de goede zin. Je bouwt een Trip, hangt er een Vehicle en een lijst acties aan via de associatie-types die OTM ook in JSON gebruikt, valideert tegen je profiel en serialiseert.
dotnet add package OpenTripModel.Model
En dan gewoon C#-objecten, met InlineAssociationType<T> voor de inline-associaties die OTM kent. Geen eigen transportlaag, geen eigen client: publiceren doe je via de HTTP-, bestand- of messaging-stack die je al hebt. De library gaat over het model, niet over hoe je berichten verstuurt.
Dat is een goede grens. Een library die ook je transport wil regelen, is een library die je over drie jaar niet meer kwijtraakt.
De aanloop
Voor de volledigheid, want de datums lopen door elkaar: de repository begon op 24 april 2025, en op 27 mei 2025 stond er al een eerste package op NuGet onder de werknaam otm.model. Die is later vervangen door de OpenTripModel.*-serie die op 1 en 7 juli verscheen.
Wie het pakket zoekt: uitgever is FiLogic B.V., en de packages heten voluit OpenTripModel.Model, OpenTripModel.Profile en OpenTripModel.Serializer.
Wat wij ervan vinden
Het bestaan van een officiële library verandert de businesscase van een OTM-koppeling. Niet dramatisch — je bespaart een paar dagen typewerk — maar wel structureel, want je bespaart die dagen bij élke release van de standaard opnieuw, en je bespaart de discussie met je tegenpartij over wiens interpretatie klopt.
De vraag die je jezelf wel moet stellen: hoe snel volgt zo'n library de standaard? Een library die achterloopt is erger dan geen library, want dan denk je dat je bij bent. Daar komen we in een volgend artikel op terug — de versienummers van deze packages hebben later een veelzeggende sprong gemaakt.
Voor Keana, onze planningssoftware voor groene stadslogistiek, is dit soort standaardisatie het verschil tussen aansluiten en aanbouwen. Hoe minder van een koppeling maatwerk is, hoe meer tijd er overblijft voor het probleem dat er werkelijk toe doet: minder ritten door de binnenstad. Bekijk de Keana-case.
Kort samengevat
Op 1 juli 2025 verscheen OpenTripModel.Model op NuGet, gevolgd door OpenTripModel.Serializer en OpenTripModel.Profile op 7 juli 2025.
Drie packages: modeltypes voor de OTM v5-entiteiten, validatie tegen een OTM-profiel met pass/fail en reden, en serialisatie volgens de OTM-JSON-conventies. Geen transportlaag — die houd je zelf.
Daarmee is OTM voor .NET-teams voor het eerst iets dat je installeert in plaats van iets dat je naschrijft.

Softwareontwikkeling ontmoeilijken
Laat ZEN Software je softwareontwikkeling analyseren en optimaliseren.
Lees ook:

Zenthropic: AI-telefoonagenten die 24/7 opnemen
De telefoon gaat buiten kantooruren, tijdens een incident, of precies als iedereen in een overleg zit. Zenthropic zet da...

OTM 5.8: een voertuig mag eindelijk meer dan één brandstof hebben
OTM 5.8 verscheen op 13 maart 2026. De opvallendste wijziging deprecieert een veld dat in 5.4 nog werd toegevoegd: één b...

Wat is een klantenportaal?
Een klantenportaal is een afgeschermd deel van je software waar klanten inloggen om hun eigen orders, facturen of dossie...

CyberCloud Voice Analytics: zie wat er in je telefoongesprekken gebeurt
De meeste organisaties weten hoeveel er gebeld is en verder niets. Voice Analytics laat zien waarover die gesprekken gin...

De OTM .NET-packages springen van 1.1 naar 5.7
Een maand na hun eerste release maakten de OTM .NET-packages een sprong van 1.1.1.x naar 5.7.1.1. Geen semver-ongeluk, m...

Bedrijfsprocessen automatiseren: waar begin je?
Bijna elke organisatie heeft een handvol handelingen die niemand zou missen: dezelfde gegevens twee keer invoeren, de we...
