Itgenoda061: "Filtering on these fields is not supported: Created" bij ophalen AccountsBulk

Bij het incrementeel ophalen van AccountsBulk treedt een foutmelding op:

itgenoda061:
Filtering on these fields is not supported: Created.

Dit ophalen gebeurt met de OData URL:

https://bridge-online.cloud/ACME/odata4/ExactOnlineREST.CRM.AccountsBulk@eol?%24filter=Created+ge+2020-09-15T02%3A07%3A49Z+and+Created+lt+2021-09-15T02%3A07%3A49Z

wat vertaald wordt in het SQL-statement:

select t.*
from   ExactOnlineREST.CRM.AccountsBulk@eol t
where  (([Created] >= :w1) and ([Created] < :w2))

met de volgende bindparameterwaarden:

  • w1 = 9/15/2020 2:07:49 AM (datetime)
  • w2 = 9/15/2021 2:07:49 AM (datetime)

De reden van de foutmelding lijkt te zijn de “mandatory filtering” die Exact Online heeft ingevoerd. Alhoewel Created een efficiënte manier is om het API-calls sterk te verminderen - los van een eventueel ontbrekende index op de Exact Online database - lijkt het er op dat ook hier niet meer op gefilterd kan worden.

Het is niet duidelijk of dit een design- of implementatiebug in de Exact Online implementatie van mandatory filtering is of een keuze om het gebruik van AccountsIncremental op basis van de Sync API te verhogen.

In de Invantive SQL engine zal in ieder geval de foutmelding itgenoda061 verbijzonderd worden naar een Exact Online-specifieke code.

Daarnaast overwegen we een optimalisatie die de volgende constructie:

column >= CONSTANT and column < CONSTANT

herschrijft naar false, zodat er helemaal geen API-aanroep gedaan wordt.

Voor het specifieke probleem hebben we nog geen idee hoe dit gerealiseerd moet worden anders dan afstappen van deze aanpak of brute force alle pagina’s in alle administraties op te halen.

Een bericht is gesplitst naar een nieuw topic: Alternatief data ophalen in batches

In releases sinds oktober 2021 zijn hiervoor verbeteringen verwerkt waardoor het probleem niet meer optreedt, tenzij er tussentijds wijzigingen doorgevoerd worden aan de Exact Online API’s.