Itgenclr217 passe inaperçu auprès des employés d'Exact Online

La déclaration suivante ne modifie rien dans une base de données Exact Online :

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('Insertion : ' || 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('Erreur lors de l'insertion de l'employé sur ' || :new.EmployeeHId || ' en raison de ' || sqlerrm);
      raise;
  end
  instead of update
  begin
    dbms_output.put_line('Mise à jour : ' || 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('Erreur lors de la mise à jour de l'employé sur ' || :new.EmployeeHId || ' en raison de ' || sqlerrm);
      raise;
  end

Aucune erreur n’est affichée. Le comptage et le journal d’activité indiquent qu’il a effectivement mis à jour 2 lignes.

La requête suivante sur les appels API réels retourne un 403 Forbidden avec le code de message itgenclr217 :

select *
from   sessionios@DataDictionary
order 
by     id desc

Mais aucune erreur ne se produit lors de la synchronisation.

Sur le SQL suivant :

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

la mise à jour n’a pas lieu. SessionIOs affiche un itgenclr217, mais aucune erreur n’est déclenchée.

La table a can_insert = true et la colonne a influences_insert = true dans les tables, respectivement, SystemTables@DataDictionary et SystemTableColumns@DataDictionary.

Une analyse du journal des appels natifs révèle qu’un HTTP PUT est envoyé à Exact Online sur l’URL :

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

avec la charge utile :

{"FirstName":"FirstName"}

et le résultat :

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

Attentes :

  • une erreur est affichée puisque l’opération a échoué,
  • et elle doit en fait mettre à jour les données lorsque cela ne devait pas échouer.

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.

Il y a une modification qui devrait résoudre ce problème. Les changements nécessaires seront disponibles à partir de la version 27.0 (la prochaine version) et toutes les versions BETA.

Cette nouvelle version devrait être mise en production sur Invantive Cloud dans un délai de 2 mois.

Pour plus d’informations, voir :

Cette question a été automatiquement fermée après une semaine d’inactivité. La dernière réponse donnée a été marquée comme solution.

Veuillez poser une nouvelle question dans un sujet séparé si le problème se reproduit. Veuillez inclure dans la nouvelle question un lien vers ce sujet en collant l’URL dans le texte.