Itgenclr227 en itgenoda316 bij ophalen ExactOnlineREST.Cashflow.Payments

Bij het uitvoeren van de volgende query:

select /*+ join_set(pnt, entrynumber, 10000) */ coalesce(pnt.PaymentMethod, pcn.PaymentMethod) PaymentMethod
,      pnt.BankAccountNumber
,      pnt.AccountBankAccountNumber
,      aom.*
from   ( select to_number(aom.division_code) Division
         ,      to_guid(replace(aom.OUTSTANDINGITEMS_AP_ACCOUNT_ID_ATTR, '{', '', '}', '')) AccountId
         ,      aom.Description
         ,      aom.Number_Attr
         ,      aom.YourRef
         ,      aom.InvoiceDate
         ,      aom.DueDate
         from   APOutstandingItems aom
         where  aom.DueDate <= trunc(sysdateutc) + 7
       )
       aom
left
outer
join   Payments pnt
on     pnt.division    = aom.division
and    pnt.entrynumber = aom.NUMBER_ATTR
join   AccountsIncremental act
on     act.Division = aom.Division
and    act.id       = aom.AccountId
left
outer
join   ExactOnlineREST..PaymentConditions pcn
on     pcn.Division = act.Division
and    pcn.Code     = act.PaymentConditionPurchase

duurt het 6 seconden voor 18 rijen als ik limit 10 in de subquery zet, en 11 seconden voor 194 rijen als ik limit 100 in de subquery zet.

Echter, deze query haalt pakweg 500 rijen op in de subquery, maar duurt dan eeuwig.

Als ik dan kijk in de SessionIOs@DataDictionary met:

select id, url, *
from   sessionios@datadictionary
where  id > 1093
order 
by     id desc

dan zie ik dat het ophalen niet lukt. Telkens meldingen zoals:

https://start.exactonline.nl/api/v1/2957010/cashflow/Payments?$select=*
itgenclr227
De gegevens kunnen niet worden gedownload omdat de verbinding is verbroken voordat de resultaten werden geretourneerd.
Time-out is ingesteld op 23.000 ms.
Er is een time-out opgetreden voor de bewerking.

Dit patroon zich eindeloos opnieuw. Na 10 pogingen met steeds langere tussenpozen zal Invantive Control for Excel er mee stoppen qua pogingen met een melding. De foutmelding na 6 minuten is:

itgenoda316: De verbinding met de website is onverwacht en met geweld verbroken om 27-3-2025 11:11:57 voor redenen zoals onvoldoende rechten, het vastlopen van de website, het opnieuw opstarten van het systeem, het hard afsluiten van een externe host of firewallactie.
De gegevens kunnen niet worden gedownload omdat de verbinding is verbroken voordat de resultaten werden geretourneerd. Time-out is ingesteld op 23.000 ms.
Er is een time-out opgetreden voor de bewerking.
Het ophalen van gegevens is mislukt voor alle 10 pogingen gedurende 388 seconden. Neem contact op met de API-ondersteuning van Exact Online.

De native call logging laat zien dat de API-call niet lukt binnen 23 seconden:

{
   "MetadataType":"Invantive.Data.NativeCallEvent",
   "Url":"https://start.exactonline.nl/api/v1/2957010/cashflow/Payments?$select=*",
   "Success":false,
   "CallDirection":0,
   "Id":4,
   "DateRegisteredUtc":"2025-03-27T11:06:17.0715538Z",
   "SqlExecutionStep":{
      "MetadataType":"Invantive.Data.SqlExecutionStep",
      "Id":309,
      "ParentId":308,
      "Alias":"pnt",
      "Depth":9,
      "ManagedThreadId":67,
      "Description":"Data container I/O on 'pnt' (PAYMENTS)",
      "StartedUtc":"2025-03-27T11:05:29.1927565Z",
      "LoggedSessionIOs":[
         {
            "MetadataType":"Invantive.Basics.LoggedSessionIO",
            "Id":1236,
            "Uid":"0502fcdf-5ad9-4927-ae7f-74632c8dc4b0",
            "SqlExecutionStepId":309,
            "ProviderObjectId":"8ff0816d-e5d7-4f04-b3ad-a577eefa0d19",
            "RecursionLevel":0,
            "Partition":"DEFAULT",
            "Action":"WRITE",
            "DataContainerAlias":"ExactOnlineRest",
            "ClientId":"6768780a-8494-494b-a9b3-c17d4f5cad31",
            "DataContainerId":"https://start.exactonline.nl/64371154",
            "ExecutionDateUtc":"2025-03-27T11:05:29.2533678Z",
            "Successful":true,
            "Url":"https://start.exactonline.nl/api/oauth2/token",
            "CallSafeName":"Token",
            "LicenseContractCode":"something",
            "LicenseKeyIdentifier":"something",
            "ProviderName":"ExactOnlineRest",
            "ManagedThreadId":67,
            "ExecutionOptionsId":"b1cda7ae-d4fb-4563-8f21-058468266f16",
            "FromMemoryCache":false,
            "FromDiskCache":false,
            "FromApplicationCache":false,
            "ForwardedToCustomerService":false,
            "Iiid":"something",
            "Iuid":"something https://start.exactonline.nl/64371154 from something",
            "SessionId":"17402782E6FB4E2473580582569BC3EB",
            "MachineNameFull":"something",
            "ExecutableName":"C:\\Program Files\\Microsoft Office\\Root\\Office16\\EXCEL.EXE",
            "UserName":"something",
            "ProcessId":12804,
            "IsSharedEnvironment":false,
            "IsInternalOnly":false,
            "BytesSent":1092,
            "BytesReceived":1798,
            "RoundTrips":1,
            "RowCount":0,
            "DurationMs":307,
            "DurationOnCpuMs":46,
            "DurationOnSleepMs":0,
            "DurationOnIoMs":261
         },
         {
            "MetadataType":"Invantive.Basics.LoggedSessionIO",
            "Id":1237,
            "Uid":"a62f8d5b-c3af-493b-9eef-bbf8b9eb048d",
            "SqlExecutionStepId":309,
            "ProviderObjectId":"8ff0816d-e5d7-4f04-b3ad-a577eefa0d19",
            "RecursionLevel":0,
            "Partition":"2957010",
            "Action":"READ",
            "DataContainerAlias":"ExactOnlineRest",
            "ClientId":"6768780a-8494-494b-a9b3-c17d4f5cad31",
            "DataContainerId":"https://start.exactonline.nl/64371154",
            "ExecutionDateUtc":"2025-03-27T11:05:29.6146661Z",
            "Successful":false,
            "Url":"https://start.exactonline.nl/api/v1/2957010/cashflow/Payments?$select=*",
            "ErrorMessageCode":"itgenclr227",
            "ErrorMessage":"De gegevens kunnen niet worden gedownload omdat de verbinding is verbroken voordat de resultaten werden geretourneerd. Time-out is ingesteld op 23.000 ms. (https://start.exactonline.nl/api/v1/2957010/cashflow/Payments?$select=*).\r\n\r\nEr is een time-out opgetreden voor de bewerking.",
            "CallSafeName":"ExactOnlineREST.Cashflow.Payments",
            "LicenseContractCode":"something",
            "LicenseKeyIdentifier":"something",
            "ProviderName":"ExactOnlineRest",
            "ManagedThreadId":67,
            "ExecutionOptionsId":"b1cda7ae-d4fb-4563-8f21-058468266f16",
            "FromMemoryCache":false,
            "FromDiskCache":false,
            "FromApplicationCache":false,
            "ForwardedToCustomerService":false,
            "Iiid":"something",
            "Iuid":"something on https://start.exactonline.nl/64371154 from something",
            "SessionId":"17402782E6FB4E2473580582569BC3EB",
            "MachineNameFull":"PAAS.LOCAL\\PA-LPT-12",
            "ExecutableName":"C:\\Program Files\\Microsoft Office\\Root\\Office16\\EXCEL.EXE",
            "UserName":"something",
            "ProcessId":12804,
            "IsSharedEnvironment":false,
            "IsInternalOnly":false,
            "BytesSent":1140,
            "BytesReceived":0,
            "RoundTrips":0,
            "RowCount":0,
            "DurationMs":23043,
            "DurationOnCpuMs":11,
            "DurationOnSleepMs":0,
            "DurationOnIoMs":23032
         }
      ],
      "Sleeps":[
         {
            "MetadataType":"Invantive.Data.SqlExecutionSleep",
            "Id":21,
            "MessageCodeOrigin":"itgenhbr134",
            "Partition":"2957010",
            "ActualMs":1146,
            "ExpectedDurationMs":1140,
            "StartUtc":"2025-03-27T11:05:52.6748769Z",
            "EndUtc":"2025-03-27T11:05:53.821517Z"
         }
      ],
      "Children":[
         
      ]
   },
   "RequestBodyAsString":"",
   "ResponseBodyAsString":"",
   "StartUtc":"2025-03-27T11:05:54.0522504Z",
   "TableFullQualifiedName":"ExactOnlineREST.Cashflow.Payments",
   "MachineNameFull":"something",
   "UserLogonCodeWithDomain":"something",
   "ManagedThreadId":67,
   "ProcessId":12804,
   "Uid":"a1186e9f-cdf1-4620-9263-80818d41fd07",
   "MessageText":"GET",
   "MessageCode":"itgenoda502",
   "CallUid":"44e8c6a5-9451-469c-98b8-2e362c689611",
   "ResponseStatus":"",
   "PartitionCode":"2957010",
   "DataContainerId":"https://start.exactonline.nl/64371154",
   "UserLogOnCode":"something",
   "RequestContents":"Automatic decompression: GZip, Deflate\r\nMaximum automatic redirections: 5\r\nMaximum response headers length: 64\r\nProtocol version: 1.1\r\nTimeout: 23.000 ms\r\nContinue Timeout: 350 ms\r\nRead/write Timeout: 300.000 ms\r\nSend chunked: False\r\nRequest header Accept: application/json\r\nRequest header Accept-Encoding: gzip, deflate\r\nRequest header Authorization: Bearer stampNL001.gAAAA...iuD0Mx\r\nRequest header Host: start.exactonline.nl\r\nRequest header User-Agent: PostmanRuntime/7.28.0\r\n",
   "RequestHttpHeaders":"Accept=application/json,User-Agent=PostmanRuntime/7.28.0,Authorization=Bearer stampNL001.gAAAAHc9...lYWiuD0Mx,Host=start.exactonline.nl,Accept-Encoding=gzip, deflate",
   "ExecutableName":"C:\\Program Files\\Microsoft Office\\Root\\Office16\\EXCEL.EXE",
   "UserName":"something"
}

Het bericht aan de Exact Online API-server is:

{
   "Url":"https://start.exactonline.nl/api/v1/2957010/cashflow/Payments?$select=*",
   "Success":false,
   "DateRegisteredUtc":"2025-03-27T11:06:17.0715538Z",
   "RequestBodyAsString":"",
   "ResponseBodyAsString":"",
   "StartUtc":"2025-03-27T11:05:54.0522504Z",
   "TableFullQualifiedName":"ExactOnlineREST.Cashflow.Payments",
   "MessageText":"GET",
   "RequestContents":"Automatic decompression: GZip, Deflate\r\nMaximum automatic redirections: 5\r\nMaximum response headers length: 64\r\nProtocol version: 1.1\r\nTimeout: 23.000 ms\r\nContinue Timeout: 350 ms\r\nRead/write Timeout: 300.000 ms\r\nSend chunked: False\r\nRequest header Accept: application/json\r\nRequest header Accept-Encoding: gzip, deflate\r\nRequest header Authorization: Bearer stampNL001.gAAAA...iuD0Mx\r\nRequest header Host: start.exactonline.nl\r\nRequest header User-Agent: PostmanRuntime/7.28.0\r\n",
   "RequestHttpHeaders":"Accept=application/json,User-Agent=PostmanRuntime/7.28.0,Authorization=Bearer stampNL001.gAAAAHc9...lYWiuD0Mx,Host=start.exactonline.nl,Accept-Encoding=gzip, deflate"
}

Raar genoeg gaat dit dus niet alleen fout bij het ophalen van de betalingen, maar gespiegeld blijkbaar ook bij de ontvangsten, zie:

Hoe kan ik dan nog de data opgehaald krijgen?

De problemen met timeouts op de Exact Online API-server treden regelmatig op. Helaas kan Invantive hierin niks betekenen anders dan de tools bieden voor de diagnostische informatie die u zelf al verzameld heeft.

Advies is om de melding onder verwijzing naar dit topic door te zetten naar Exact Online Support. Exact is de partij die deze bug in de Exact Online API dient te corrigeren.

Op basis van Exact Online supportticket 05129431 wordt gesteld dat het uitlezen van een Exact Online-omgeving van 18 GB via Payments zonder filter en met alle velden het teruggeven van een 408 error (timeout) normaal is.

Als alternatief wordt het gebruik van een filter op Modified aangeraden en/of minder velden selecteren en/of gebruik SyncPaymentTerms.

Kan het daar mee?

Deze redenering is ons onbekend en ook niet gedocumenteerd.

Het is ons onbekend hoe de omvang van de totale database (zoals boekingen, relaties of artikelafbeeldingen) een relatie zou moeten hebben met een timeout van een specifieke tabel. Maar zelfs dan nog, er is geen Exact Online-documentatie of valide technische reden denkbaar die beschrijft dat een time-out zou mogen en/of kunnen optreden.

U kunt eventueel de tabel SyncPaymentTerms of PaymentTermsIncremental eventueel proberen als alternatief. De prestatie-eigenschappen zijn hiervoor anders.

Vanuit Exact Support werd Invantive benaderd vanwege eenzelfde probleem bij een gebruiker van een ander Invantive-product. Een analyse toont aan dat het probleem regelmatig en steeds vaker optreedt (cijfers grofweg):

Maand Aantal Keren Aantal Administraties Aantal Exact Abonnementen Opmerking
202412 196 64 19
202501 275 106 25
202502 279 101 25
202503 328 62 27
202504 360 85 38 Omhooggerekend uit 3 dagen.

Het betreft de volgende tabellen:

  • ExactOnlineREST.Cashflow.PaymentsBulk
  • ExactOnlineREST.Cashflow.ReceivablesBulk
  • ExactOnlineREST.Cashflow.Payments
  • ExactOnlineREST.Cashflow.Receivables

Het is niet bekend hoeveel gebruikers naar aanleiding van foutmeldingen het gebruik van deze tabellen gestaakt hebben.

Veel Invantive-gebruikers hanteren APOutstandingItems en AROutstandingItems. Deze zijn enigszins anders qua inhoud, maar hebben geen last van verstoringen voor zover bekend.

Het probleem is dat de Exact Online API-servers niet binnen 23 seconden een antwoord geven op een verzoek. Na een aantal herhaalde mislukte pogingen (meestal 10) staakt Invantive UniversalSQL-server dan verdere pogingen. Als het toch gelukt mocht zijn, dan is enkel de verwerking erg langzaam.

Aan de Exact-zijde wordt dit niet als een “timeout” geregistreerd omdat ze die pas registreren na 30 seconden. Aangezien de UniversalSQL-engine bewust de pogingen staakt na de afwijkenbde 23 seconden ziet men enkel een vertrokken client-applicatie. Aan de Exact-zijde is het wel navolgbaar door vertrekkende clients die meer dan bijvoorbeeld 15 seconden hebben moeten wachten op een antwoord van deze API’s. De reguliere responsetijden bij deze API’s liggen rond de 1 a 2 seconden per API-verzoek.

Mocht hier meer over te melden komen, dan zal dit topic aangevuld worden.

Ik heb een vergelijkbare melding op Exact Online Nederland om 04-04-2025 09:12:34 UTC.:

itgenoda324
Probeer het opnieuw wanneer het niet lukt om tekst van partitie ‘481678’ op te halen na 28,711 ms met behulp van ‘https://start.exactonline.nl/api/v1/481678/bulk/SalesOrder/SalesOrders?$select=AmountDC,…,YourRef&$filter=OrderID+ne+null’ van ‘ExactOnlineREST.SalesOrder.SalesOrdersBulk’.
Wacht voor 1,264 ms en probeer opnieuw.
Poging #1 van 10; bericht ID ‘b112398c-4841-42d2-88f1-944ba264da27’.
Invantive.Basics.InvantiveSqlException:
itgenoda316:
De gegevens kunnen niet worden gedownload omdat de verbinding is verbroken voordat de resultaten werden geretourneerd.
Time-out is ingesteld op 23,000 ms.

Dergelijke problemen treden vaker op in onze Exact Online Premium-omgeving in Nederland. Duitsland en Engeland werken goed.

Een controle is uitgevoerd op Exact Online. Buiten tijd tussen 01:00 en 04:00 treedt blijkbaar een HTTP 408 Timeout ook op 50 andere tabellen op bij enkele tientallen verschillende Exact Online-abonnementen en enkele honderden administraties. Denk aan bijvoorbeeld:

  • AccountsBulk
  • GLAccounts
  • SyncGLAccounts

De software zal automatisch herhaaldelijk proberen en staakt na 10 pogingen.

We zullen deze aanvulling bij Exact doorgeven.

Vanuit Exact Online Support is hierover contact opgenomen met Invantive. Het probleem is geïdentificeerd en mogelijkerwijs zal dit in een toekomstige Exact-release opgelost worden.

Een update over de time-out meldingen vanuit Exact Online API Support is aangevraagd.

Een bijgewerkte meting over 202504 op basis van 28 dagen in plaats van 3 dagen geeft aan:

  • Aantal keren: 430 (eerdere prognose: 360)
  • Aantal administraties: 16 (eerdere prognose: 85)
  • Aantal Exact Online-abonnementen: 14 (eerdere prognose: 38)

Het probleem lijkt nog steeds vaak op te treden, maar bij minder administraties en/of Exact Online-abonnementen. Dit lagere aantal betrokken Exact Online-abonnementen kan veroorzaakt worden doordat een deel van de gebruikers andere wegen heeft gevonden om de benodigde data alsnog op te halen zoals het gebruik van gelijkende tabellen of de XML API-tabellen.

Ik lees op het forum bij de aangemaakte topic dat het probleem bij steeds minder administraties optreedt of dat gebruikers andere wegen hebben gevonden. Is het mogelijk is om de kolom met de betaalstatus “Op krediet” of “Kas” toe te voegen? Zo niet, is er wellicht een indicatie wanneer Exact dit probleem heeft opgelost?

Er is nog geen update ontvangen. Het verzoek is nogmaals ingediend.

Indien geen update ontvangen wordt voor 13 mei 2025, dan zal dit punt onverrichter zake afgesloten worden. Het probleem is dan voor / door Invantive niet oplosbaar. Mocht het probleem dan nog optreden, dan is advies om als eindgebruiker zelf contact op te nemen met Exact Online Support.

Er zijn op dit moment geen plannen bij Exact om aanpassingen te maken om het optreden van dit probleem te vermijden in grotere omgevingen.

Advies is om - waar mogelijk - te kijken of workarounds mogelijk zijn. Dit kan ondersteund worden met een kort consult vanuit Invantive, maar zoals bij alle consulten kan Invantive hier geen resultaatgarantie voor geven.

Dit topic is 3 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.