Itgensop057 GeneralLedgerDetailsV2: Invalid name character in 'http://www.twinfield.com/_Unexpected'

Twinfield General Ledger Details V2

Een query op Twinfield General Ledger Details (V2) (achterliggende browse code 030_2) geeft een foutmelding op één specifieke administratie:

itgensop057: Server was unable to process request. —> Invalid name character in ‘http://www.twinfield.com/_Unexpected’.

De query is:

set log-native-calls-to-disk true

set use-http-disk-cache false

set use-http-memory-cache false

set use-result-memory-cache false

use 12345678

select *
from GeneralLedgerDetailsV2

Queries op de V1 en V3 geven tot dusver geen enkele keer een foutmelding. Het aantal boekstukregels is 163.386.

De queries op GeneralLedgerDetails, GeneralLedgerDetailsV2 en GeneralLedgerDetailsV3 duren tussen de 49 seconden en 58 seconden als het goed eindigt op rustige momenten en tot 179 seconden tijdens kantooruren. Queries die een foutmelding geven op de V2 API call duren korter: 17 tot 29 seconden.

Volledige Twinfield API Foutmelding

De volledige payload die terugkomt bij een foutmelding is:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text xml:lang="en">Server was unable to process request. ---&gt; Invalid name character in 'http://www.twinfield.com/_Unexpected'.</soap:Text></soap:Reason><soap:Detail /></soap:Fault></soap:Body></soap:Envelope>

Kleinere Datasets

Als het ophalen van de gegevens per periode gaat, dan treedt het probleem niet op:

declare 
  l_cnt pls_integer;
begin
  for yr in 2006..2021
  loop
    for mnd in 1..12
    loop
      begin
        dbms_output.put_line('Process ' || to_date(to_char(yr) || lpad(to_char(mnd), 2, '0') || '01', 'YYYYMMDD') || '.');
        select count(*)
        into   l_cnt
        from   GeneralLedgerDetailsV2
        where  fin_trs_head_yearperiod = to_char(yr) || '/' || lpad(to_char(mnd), 2, '0')
        ;
      exception
        when others 
        then
          raise_application_error(-20163, 'Fail on yr ' || yr || ', mnd ' || mnd || ': ' || sqlerrm);
      end;
    end loop;
  end loop;
end;

Echter, als het per jaar gaat, dan treedt de “http://www.twinfield.com/_Unexpected” incidenteel op in het jaar 2020:

declare 
  l_cnt pls_integer;
begin
  for yr in 2006..2021
  loop
    begin
      dbms_output.put_line('Process ' || to_char(yr) || '.');
      select count(*)
      into   l_cnt
      from   GeneralLedgerDetailsV2
      where  fin_trs_head_yearperiod between to_char(yr) || '/01' and to_char(yr) || '/12'
      ;
    exception
      when others 
      then
        raise_application_error(-20163, 'Fail on yr ' || yr || ': '  || sqlerrm);
    end;
  end loop;
end;

Twinfield Cheques

Dezelfde itgensop057 melding treedt op bij het ophalen van cheques via de URL:

https://bridge-online.cloud/name-twinfield/odata4/Twinfield.Twinfield.Cheques@tfd

namelijk:

{"error":{"code":"itgensop057","message":"Een interne fout is opgetreden van de soort  \u0027DDC4AB\u0027. Neem contact op met uw leverancier. (itgensop057, ca826262-56e7-403d-9532-c9987d3f28aa)","target":null,"details":[{"code":"ca826262-56e7-403d-9532-c9987d3f28aa","target":null,"message":"Unique ID"}],"innererror":null}}

Twinfield Cost Centers

De melding is:

itgensop057: Server was unable to process request. —> Invalid name character in ‘http://www.twinfield.com/_Unexpected’.

De melding Invalid name character in ‘http://www.twinfield.com/_Unexpected’ blijkt te herleiden te zijn tot een bug in Twinfield bij het fiscaal regime voor afschrijvingen. Die zal naar verwachting 4 augustus 2021 opgelost zijn met een release. De downloads zullen dan werken zonder aanpassing aan de Invantive engine.

Workaround is om herhaaldelijk hetzelfde verzoek te proberen; de interne bug wordt bij een volgende poging meestal omzeild omdat data al geladen is.

Stel hiervoor een diskcache in van bijvoorbeeld 7 dagen met:

set use-http-disk-cache true

set http-disk-cache-max-age-sec 604800

use all

create or replace table doel@sqlserver
as
select *
from   GeneralLedgerDetailsV2

Herhaal het laatste statement totdat er geen fouten optreden. Door het gebruik van de diskcache zullen steeds meer administraties er door heen komen. Deze manier van werken vereist 20.1.517 of nieuwer omdat hierin op SOAP met read-only POST requests de diskcache beschikbaar komt.

Na 4 augustus zal dit niet meer nodig zijn, maar deze workaround helpt om tijdig de gegevens voor Tegemoetkoming Vaste Lasten (TVL) uit Twinfield te halen.

Met behulp van de aanpak uit Massaal testen welke Twinfield administraties een error geven bij General Ledger Details V3 blijkt dat het telkens andere administraties zijn die deze foutmelding geven. De foutmelding treedt ook op met GeneralLedgerDetailsV3.

Een voorbeeld is:

2021-09-01 00:58:59.485 Information itgendhb216: 01-09-2021 00:58:59 Fail: 02327800: itgentfr091: Server was unable to process request. —> Invalid name character in ‘http://www.twinfield.com/_Unexpected’. (02327800).