Itgenclr217 går ubemærket hen hos medarbejdere på Exact Online

Den følgende erklæring ændrer ikke noget i en Exact Online-database:

use 90420@eol

set use-http-disk-cache@eol false

set use-http-memory-cache@eol false

create or replace table EmployeesSoll@InMemoryStorage
as
select jte.*
from   jsontable
       ( '[*]'
         passing '[{  "id":31870082, "first_name":"yyy"},{  "id":31870282, first_name":"xxx"}]'
         columns EmployeeHid number path 'id'
         ,       FirstName varchar2 path 'first_name'
       ) jte

synchronize EmployeesSoll@InMemoryStorage
to ExactonlineREST..Employees@eol
with insert or update
identified by EmployeeHID
triggers
instead of insert 
  begin
    dbms_output.put_line('Insert: ' || dbms_sync.diff(:old, :new));
    insert into ExactOnlineREST..Employees@eol
    ( EmployeeHID
    , FirstName
    )
    values
    ( :new.EmployeeHID
    , :new.FirstName
    );
  exception
    when others
    then
      dbms_output.put_line('Error on insert employee on ' || :new.EmployeeHId || ' due to ' || sqlerrm);
      raise;
  end
  instead of update
  begin
    dbms_output.put_line('Update: ' || dbms_sync.diff(:old, :new));
    update ExactOnlineREST..Employees@eol
    set    FirstName    = :new.FirstName
    where  EmployeeHID = :old.EmployeeHID
    ;
  exception
    when others
    then
      dbms_output.put_line('Error on update employee on ' || :new.EmployeeHId || ' due to ' || sqlerrm);
      raise;
  end

Ingen fejl vises. Optælling og logning viser, at den faktisk opdaterede 2 rækker.

Den følgende forespørgsel på de faktiske API-kald returnerer en 403 Forbidden med itgenclr217 beskedkode:

select *
from   sessionios@DataDictionary
order 
by     id desc

Men ingen fejl opstår på synkroniseringen.

På den følgende SQL:

update exactonlinerest..employees
set    firstname='FirstName'
where  employeehid=53

har opdateringen ingen effekt. SessionIOs viser en itgenclr217, men ingen fejl udløses.

Tabellen har can_insert = true og kolonnen har influences_insert = true i tabellerne, henholdsvis SystemTables@DataDictionary og SystemTableColumns@DataDictionary.

En analyse af den oprindelige kaldelog afslører, at en HTTP PUT sendes til Exact Online på URL’en:

https://start.exactonline.de/api/v1/90420/payroll/Employees(guid'4662acaf-d235-4e82-9c37-da1207814736')

med indhold:

{"FirstName":"FirstName"}

og resultat:

{"error": {"code": "", "message": {"lang": "", "value": "Forbidden"}}}

Forventninger:

  • en fejl vises, da det mislykkedes,
  • og den burde faktisk opdatere dataene, når den ikke mislykkedes.

An analysis revealed that two problems:

  • the error should have been shown in a pop-up or alike
  • at least the insert / update / delete functionality on the REST API for Employees is gone, see:

https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=PayrollEmployees

Invantive will reach out to Exact Online to get more information on the background and motivations. In case this is an intended change, the following alternatives can be thought of:

  • Use the XML API tables instead (when still supported).
  • Use a signal list instead.

An answer will be added once more information has been made available by Exact Online.

The Exact Online support case is 05260663.

Der er en tilpasning, der burde løse dette problem. De nødvendige ændringer er tilgængelige fra release 27.0 (den næste release) og alle BETA-releases.

Denne nye release forventes at blive taget i produktion indenfor 2 måneder på Invantive Cloud.

For mere information, se:

Dette spørgsmål er automatisk blevet lukket efter 1 uges inaktivitet. Det sidstgivne svar er markeret som løsningen.

Venligst stil et nyt spørgsmål i et separat emne, hvis problemet opstår igen. Indsæt venligst et link til dette emne i det nye spørgsmål ved at indsætte URL’en i teksten.