Itgenclr078: Newtonsoft.Json.JsonReaderException / zorgen stabiliteit Exact Online

We krijgen weer een (voor ons) vage foutmelding bij een dataload vanuit Exact Online. Draaide dagen achter elkaar zonder problemen, en geeft nu onderstaande error.

2021-05-07 08:19:01.210 Error itgencun016: Error itgenclr078: External error in Invantive Data Hub.

Unterminated string. Expected delimiter: ". Path 'Data[322842].YourRef', line 1, position 499927815.
2021-05-07 08:19:03.291 Error itgenclr078: Newtonsoft.Json.JsonReaderException

Idee waar dit naar verwijst, hoe op te lossen, en hoe te voorkomen?

Streaming Data en Error Handling Down the Road

Exact Online geeft op de REST API data streaming terug, ook al werkt men met pagina’s. Streaming betekent dat de HTTP status 200 OK al teruggegeven wordt, voordat de Exact Online API server bij de database alle data voor de pagina en verwerkt opgehaald heeft.

Echter, indien blijkt dat de data uit de database corrupt is, dan zal de Exact Online API server een foutmelding opnemen in de streaming data. De reeds naar de gebruiker (in dit geval Invantive SQL) opgestuurde HTTP status blijft echter 200 en kan niet meer gewijzigd worden in 4xx of 5xx. Bij het uitpakken van de data in JSON-formaat constateert Invantive SQL dat de teruggegeven data corrupt is. Vaak is dan een error zichtbaar in de JSON-data vanuit Exact Online. Soms wordt de corrupte data zelfs verwerkt in de verdere keten, omdat het toevallig net past binnen het JSON formaat; dit komt gelukkig echter uitermate zelden voor.

Suggestie richting Exact

De Exact Online API heeft geen goede logging voor partners en eindgebruikers om de problemen op te vragen zoals Invantive Cloud dat kent met Systeemberichten of Invantive Bridge Online via monitoring of e-mails. Geconstateerde problemen worden zelden of pas na lange tijd opgelost in Exact zelf, dus vanzelf weggaan doet het meestal niet.

Suggesties richting Exact Online om de impact van dergelijke verwarrende foutmeldingen te voorkomen zijn:

  • Selectief streamen: verzamel eerst een groter deel van de pagina door de buffergrootte te verhogen voordat streaming start. Gebruik nog steeds streaming wanneer dat performancetechnisch nodig is, maar de kans wordt kleiner dat de error in een ongeldig OData formaat teruggegeven wordt.
  • Gebruik foutcodes: de foutmeldingen an sich zijn verwarrend en niet geautomatiseerd herkenbaar door het ontbreken van unieke foutcodes en vertalingen. Door unieke foutcodes toe te voegen kan de software aan de zijde van de HTTP client geautomatiseerd keuzes maken hoe om te gaan met een melding in de stream.
  • Exact Online testomgeving: dergelijke datafouten komen relatief weinig voor, maar met grote consequenties. De meeste client software biedt er geen voorzieningen voor, anders dan paar keer opnieuw proberen of stilletjes overslaan, hetgeen de kans op datacorruptie verhoogt. De Exact Online API’s kennen geen testomgeving met bekende risico’s zoals beschreven op bijvoorbeeld Impact Exact Online API aanpassingen 1 juli 2021. Een eventuele toekomstige testomgeving zou in een foutgeneratiemodus gebracht kunnen worden zodat software op dit gedrag gecertificeerd kan worden. Dit is vergelijkbaar met driveropties zoals simulate-http-400-errors-percentage op Invantive SQL.
  • Exact Online monitoring: de informatie over een opgetreden fout is vluchtig en meestal alleen beschikbaar diep in de client software. Het achteraf controleren en herleiden van de oorzaak is daardoor afhankelijk van de kwaliteit van de client software qua logging faciliteiten. Voor zover bekend biedt buiten Invantive SQL geen enkel platform een toegankelijke oplossing hiervoor en dit honderden keren implementeren is niet maatschappelijk efficient. Daarom suggestie dat Exact Online ook foutmeldingen en gebruik toont op detailniveau van bijvoorbeeld de afgelopen 8 dagen behorende bij een client ID voor ontwikkelaars.

Hoe gaat Bridge Online hiermee om?

Vergelijkbare problemen met errors bij streaming data komen ook voor bij Invantive Bridge Online. In het Bridge Online monitoring scherm en in het scherm Systeemberichten met verzamelde meldingen verschijnen deze errors wel, terwijl bijvoorbeeld vanuit Power BI alleen een vergelijkbare vage foutmelding getoond wordt. Vanuit Bridge Online wordt ook een e-mail gestuurd bij een datafout omdat de meeste startende gebruikers nog niet zo goed hun weg in Invantive Cloud kennen.

Analyseren Error in Streaming Data

De enige praktische manier om er enigszins achter te komen is om native call logging aan te zetten en de native call log te doorzoeken zoals beschreven in Collect Native Platform Call Data. Meestal bevat één van de laatste logs de echte foutmelding. Het is het overwegen waard om de laatste in- en uitgaande call logs bij Exact Online API support in te dienen. Het oplossen kan echter geruime tijd duren; doorlooptijden tot oplossing van 6 maanden zijn niet ongebruikelijk.

Van Incident naar Oplossing

Eerlijkheid gebiedt te zeggen dat we vanuit Invantive geen tijd willen steken in het opvolgen van dergelijke datafouten bij een platform aangezien het probleem ook met andere apps dan Invantive SQL optreedt en Exact zelden oplossingen realiseert binnen een acceptabele termijn van zeg een maand. Soortgelijke problemen van datacorruptie volgens de metadata gelden voor meer cloudplatformen met vergelijkbaar problematische doorlooptijden. Een andere negatieve uitschieter daarin zijn de Atlassian producten. Positieve uitschieters zijn Loket (REST API) en Visma.net Financials.

Hallo Guido,

Bedankt voor je uitgebreide uitleg. Ik moet eerlijk zeggen dat veel van de uitleg mijn (technische) kennis te boven gaat.

Ik moet eerlijk zeggen dat ik me ernstig zorgen begin te maken over de betrouwbaarheid/continuïteit van de tooling / onderliggende procedures etc. Wij hebben inmiddels tientallen klanten die vertrouwen op dagelijkse live-data. De realiteit is dat er dagelijks weer nieuwe, onbekende, vage foutmeldingen komen waardoor de omgeving niet goed draait en we weer aan klanten moeten uitleggen waarom hun data niet ververst is.

Ik begrijp goed dat het technische verhaal hierachter zeer complex is, en dat de foutmeldingen altijd een reden hebben, maar het begint een onwerkbare situatie te worden. Het is voor mij (en voor klanten) moeilijk te begrijpen dat een dataload 4 dagen achter elkaar goed draait, en dag 5 met een vage foutmelding komt.

Eerlijkheid gebied te zeggen dat de opmerking “we gaan hier vanuit Invantive geen tijd in steken” mij ook grote zorgen baart: ik vertrouw er namelijk op dat het product dat we aanschaffen bij Invantive wel doet waarvoor we het hebben aangeschaft: het (betrouwbaar/continu) laden van data uit verschillende bronsystemen.

Commercieel is het voor ons momenteel echt een probleem. Klanten zijn ontevreden omdat het elke ochtend weer spannend is of alles heeft gedraaid. Wij hebben er inmiddels een dagtaak aan om te kijken waarom omgeving X, Y en Z nu weer niet hebben gedraaid en oplossingen zijn soms niet eens mogelijk.

Als ik kijk naar Loket: dat kunnen we nu niet verkopen omdat het laden van de verloonstaat veel te lang duurt (wordt dan aangegeven dat we het maar met Loket moeten regelen)

Als ik kijk naar EOL: dat kunnen we nu niet verkopen omdat de dataload gewoon nooit stabiel is.

Dit begint inmiddels een groot (commercieel) probleem te worden omdat de Invantive producten niet doen waarvoor we ze aanschaffen.

Laat ik duidelijk zijn de relatie met Invantive super goed is, ik heel tevreden ben met de service/support en ik Guido qua expertise en kennis op een voetstuk heb staan. Ik vraag me alleen af op welke manier we dit toekomstbestendig kunnen gaan maken.

Gr, Mike

Bedankt voor delen van je mening.

In totaliteit worden de Invantive producten voor circa 20.000 bedrijven gebruikt, waarvan een groot deel op Exact Online. Ik herken de problemen die je beschrijft bij een deel van de gebruikers. Ook van andere partners komen vergelijkbare berichten door.

Sinds einde vorig jaar is de ondersteuning vanuit support bij Exact Online merkbaar slechter. Naast reductie in beschikbare kennis en capaciteit speelt het onaangekondigd afsluiten van administraties, hetgeen op zich in noodgevallen te rechtvaardigen kan zijn, maar ook zonder terugkoppeling achteraf. In een gesprek tussen de meest intensieve gebruikende partners met Exact Online enkele dagen daarvoor is dit onderwerp niet besproken geweest en is expliciet afgesproken dat er geen breaking changes of changes op korte termijn zouden zijn tot juli 2021. Er is toendertijd alleen gesproken over wijzigingen die per 1 juli zouden ingaan. Het afsluiten gebeurde vooral bij onze partners, die niet allemaal dezelfde optimalisaties aan hadden staan en de meest veeleisende gebruikers herbergen met eveneens de hoogste maandelijkse omzetten qua Exact abonnementen.

De problematiek verergerde zich verder door de introductie van onaangekondigde breaking changes op de REST API’s. Ook dit speelde cq. speelt voornamelijk bij de wederverkopers van Invantive; daar draaien de verreweg grootste Exact Online omgevingen met veel transacties en gebruikers omdat grote Exact omgevingen vaak gepaard gaan met relatief veel consultancybehoefte.

De afgelopen jaren is helaas niet merkbaar gewerkt aan verbetering van de betrouwbaarheid van het API platform. Initiatieven zijn wel gestart, maar niet tot wasdom gekomen, maar dat is een algemeen probleem: het oplossen van technical debt en stabiliteitsverbeteringen krijgen in de meeste branches maar weinig budget toegekend. In het NRC stond hierover gisteren nog een lezenswaardig verhaal over reductie van energiegebruik in de industrie, zie https://www.nrc.nl/nieuws/2021/05/06/bedrijven-zien-meer-in-nieuwe-technologie-dan-in-isolatie-a4042670.

We maken ons bij Invantive wel serieuze zorgen over de stabiliteit per 1 juli als er op een andere manier tegen fouten bij de interactie met de API’s aangekeken zou worden. We gaan er van uit dat deze nieuwe manier van tegen API-fouten aankijken niet live zal gaan per 1 juli 2021 of anders kort na livegang teruggedraaid of functioneel aangepast zal worden. Meer informatie hierover is te lezen op Impact Exact Online API aanpassingen 1 juli 2021.

De nieuwe (lagere) rate limits maken we ons geen zorgen over; Invantive SQL ondersteunt alle beschikbare opties. Enige risico zit er in dat gebruikers niet tijdig de beschikbare opties inzetten. Op dit moment zien we dat gebruikers vrij vlot overstappen op de nieuwe beschikbare opties en per 1 juli zijn door de rate limits weinig problemen te verwachten. Een groot deel van de gebruikers draait inmiddels op Invantive Cloud, waardoor de time-to-market van nieuwe performance opties ook teruggebracht is naar enkele weken doorlooptijd voor grote aantallen gebruikers.

Doordat we vanuit Exact Online support de afgelopen maanden weinig oplossingsgerichte ondersteuning hebben ervaren wordt er vanuit Invantive geen tijd meer gestoken in een aantal problemen. We zijn over de jaren heen naar verluidt een van de partners die de meeste bugs en risico’s ontdekken en melden, maar het is alleen zinvol om dit te doen als er ook verbeteringen komen en een dialoog plaatsvindt.

De bal hiervoor ligt momenteel in onze perceptie bij Exact Online support. Gezien personele mutaties zal het mogelijk nog wel enige tijd duren tot het partnerkanaal beter bediend wordt; denk aan na de zomer. In de praktijk zien we dergelijke golfbewegingen in stabiliteit van Exact Online ook vaker; grofweg is er elke 2 jaar een dieptepunt en daarna ook weer een hoogtepunt. Al met al schaalt Exact Online inmiddels vele malen beter dan 10 jaar geleden. Grootste aanhoudende probleem is zoals gezegd de betrouwbaarheid van het API platform.

Commercieel gezien kunnen we alleen aanraden om producten op Exact Online te verkopen die voldoende consultancy-omzet genereren. Veel apps in het app center draaien op een dergelijk verdienmodel; men hanteert een lage prijs en levert relatief veel bijkomende producten. Consultants adviseren vaker apps waar men ervaring mee heeft en/of een kickbackfee over ontvangt. Vooral Nederlandse bedrijven selecteren vaak bij inkoop op de prijs voor het eerste onderdeel en niet op Total Cost of Ownership.

Dit is niet het marktmodel van Invantive; Invantive focust voor klanten die rechtstreeks bediend worden op weinig tot geen consultancy omzet. Het partnerkanaal kan voor gebruikers waar daar behoefte aan is consultancydiensten leveren. Zo kunnen gebruikers kiezen voor een Invantive partner als ze consultancy nodig hebben en rechtstreeks inkopen bij Invantive als ze zelfvoorzienend zijn.

Daarnaast raden we aan om - ook al is er geen partnermanager meer bij Exact Online - toch contact te zoeken met Exact en de problematiek voor te leggen. De procedureel juiste contactpersonen zijn bij ons niet bekend.

Voor Loket verwacht ik dat het performance issue voor de verloning wel op redelijk korte termijn opgelost zal zijn. Hetzij door de Invantive optimizer te verbeteren, dan wel in onderling overleg met Loket. Ten opzichte van Exact biedt Loket als bijkomend voordeel dat de kwaliteiten van de SQL engine uniek zijn op dat cloudplatform en Invantive SQL marktleider is.