Itgenclr217 goes unnoticed on Exact Online employees

The following statement does not change anything in an 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

No error is shown. The count and logging displays that it actually updated 2 rows.

The following query on the actual API-calls returns a 403 Forbidden with itgenclr217 message code:

select *
from sessionios@DataDictionary
order by id desc

But no error occurs on the synchronize.

On the following SQL:

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

the update does not take effect. SessionIOs shows an itgenclr217, but no error is triggered.

The table has can_insert = true and column has influences_insert = true in the tables, respectively, SystemTables@DataDictionary and SystemTableColumns@DataDictionary.

An analysis of the native call log reveals that a HTTP PUT is sent to Exact Online on the URL:

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

with payload:

{"FirstName":"FirstName"}

and result:

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

Expectations:

  • an error is shown since it failed,
  • and it should update actually the data.

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.