Itgencmr406 med Exact Online på Invantive Data Hub 26.0

Uppdateringen till 26 installerades (se Error itgenobr344: Missing state - #16).

Uppdateringen startar, men går sedan in i ett fel under processen:

itgencmr406
Ingen leverantör tillgänglig för att hantera begärd Hämta OAuth-token.
Vänligen kontakta din applikationsadministratör.

Vad kan orsaken till detta vara?

2026-06-25 15:37:24.231 Fel itgencun016: Fel itgencmr406: Ingen leverantör tillgänglig för att hantera begäran om OAuth-token.
Kontakta din applikationsadministratör

En uppdatering finns på:

Rekommendationen är att försöka med version 26.0.164 av Invantive Data Hub, tillgänglig som nedladdning på https://download.invantive.com som “current” version.

Denna version borde lösa felmeddelandet itgencmr406.

Det har ännu inte lyckats att reproducera det andra problemet där förvirring uppstår vid val av databaser.

Om en föregående version redan finns, kan innehållet i zip-filen kopieras över de liknamnade filerna.

Denna fråga stängdes automatiskt efter 1 veckas inaktivitet. Det senaste givna svaret har markerats som lösningen.

Vänligen ställ en ny fråga i ett separat ämne om problemet uppstår igen. Inkludera en länk till detta ämne i den nya frågan genom att klistra in URL:en i texten.

Felet verkar fortsätta med Invantive Data Hub Multi-Platform (26.0.164-PROD+5982).

2026-06-30 06:01:58.886 Fel itgencun016: Fel itgencmr406: Ingen leverantör tillgänglig för att hantera begärd OAuth-token.
Vänligen kontakta din applikationsadministratör

Efter att ha installerat Invantive Data Hub Multi-Platform (26.0.164-PROD+5982) är itgencmr406 fortfarande närvarande.

Vi fångade följande fel i ett av våra skript:

itgencmr406:
Ingen leverantör är tillgänglig för att behandla förfrågan Get OAuth Token.
Vänligen kontakta din applikationsadministratör.
(OAuthHeadless, InvantiveProducer, SqlServer (…), SqlServer (…), SqlServer (…), SqlServer (…), SqlServer (…), ExactOnlineAll (eol), TeamViewer, PostgreSql (****), KeePass, Mail, Ossus, Os, InMemoryStorage, DataDictionary, LastResort).

Detta fel inträffar inte alltid. Vi har andra skript som fungerar bra.

Efter lite testning har vi

  • ett skript som alltid fungerar
  • ett som alltid ger detta fel direkt vid den första satsen när vi frågar Exact Online.

Det här är det som ger felet:

use ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol, ****@eol;

Create or Replace procedure sendmail
( email_subject text
, email_body text
, email_recipients text
)
as
declare
l_error_txt varchar2;
l_error_cnt varchar2;
l_email_table varchar2;
begin
set smtp-host-address@mail ‘smtp.office365.com’;
set smtp-user-name@mail ‘user@mycompany.com’;
set smtp-password@mail ‘****’;
set [mail-from-name]@mail ‘systems’;
set [mail-from-email]@mail ‘reporting@mycompany.com’;
set smtp-enable-ssl@mail true;
set smtp-minimum-deliver-duration-ms@mail 1000;
set mail-body-html@mail true;
set mail-priority@mail 0;
begin
– sending email
insert into smtp@mail
( toEmail
, ccEmail
, bccEmail
, subject
, body
–, attachmentContents – starting PROD 20.2.112 use Attachment1Contents instead
–, attachmentName
–, attachmentMimeType
)
select email_recipients
toEmail
,      cast(null as varchar2)
ccEmail
,      cast(null as varchar2)
bccEmail
,      email_subject
subject
,      email_body
body
–,      null – rfe.file_contents
–       attachmentContents – starting PROD 20.2.112 use Attachment1Contents instead
–,      null – basename(‘{USER_MULTI_PARTIES_FILE_NAME}’)
–       attachmentName
–,      null – cast(null as varchar2)
–       attachmentMimeType
;
end;
end;

– leave a blank line above, otherweise the stored procedure conflicts with the sql block below.
declare
l_scriptstart datetime;
l_stmtstart datetime;
l_sqlresult INT;
l_log varchar2;
l_debug varchar2;
l_scriptsuccess boolean;
l_scriptduration varchar2;
l_emailrecipients text :=‘user1@mycompany.com,user2@mycompany.com’;
–l_emailrecipients text :=‘user1@mycompany.com’;
begin
l_scriptstart := sysdate;
l_debug := 'script started at ’ || l_scriptstart;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table eol_rest_cashflowpaymentsbulk@sqlserver as select * from paymentsbulk@eol where EntryDate > dateadd(‘year’,-2,sysdate) and isbatchbooking = 1;
l_sqlresult := sqlrowcount;
l_debug := 'paymentsbulk@eol with filter on  EntryDate>(today-2 years) and isbatchbooking = 1 updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table eol_rest_glaccountsbulk@sqlserver as select * from ExactOnlineREST.Financial.glaccountsbulk@eol;
l_sqlresult := sqlrowcount;
l_debug := 'ExactOnlineREST.Financial.glaccountsbulk@eol updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table eol_rest_GlClassificationsBulk@sqlserver as select * from   ExactOnlineREST.Financial.GLClassificationsBulk@eol;
l_sqlresult := sqlrowcount;
l_debug := 'ExactOnlineREST.Financial.GLClassificationsBulk@eol updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table eol_rest_GLAccountClassificationMappings@sqlserver as select * from  ExactOnlineREST.GLAccountClassificationMappings@eol;
l_sqlresult := sqlrowcount;
l_debug := 'ExactOnlineREST.GLAccountClassificationMappings@eol updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table eol_xml_balancelines@sqlserver as select * from ExactOnlineXML.XML.BalanceLines@eol;
l_sqlresult := sqlrowcount;
l_debug := 'ExactOnlineXML.XML.BalanceLines@eol updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
–create or replace table eol_rest_accountsbulk@sqlserver as select * from  accountsbulk@eol;
create or replace table eol_rest_accountsbulk@sqlserver as select * from syncAccounts@eol where Timestamp >0 batchsize 50000; – adjust the batchsize (default: 3000)
– the sync statement run in approx 2 mins when cache is up to date. the Bulk runs in approx 5,2 minutes. 135710 records as of 26/06/2024.
– sync endpoint has a bit less info (156 vs 190 fields)
l_sqlresult := sqlrowcount;
l_debug := 'sync.account@eol updated via SYNC. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table eol_rest_agingreceivableslist@sqlserver as select * from  AgingReceivablesList@eol;
l_sqlresult := sqlrowcount;
l_debug := 'AgingReceivablesList@eol updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table eol_rest_agingpayableslist@sqlserver as select * from  AgingPayablesList@eol;
l_sqlresult := sqlrowcount;
l_debug := 'AgingPayablesList@eol updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table eol_rest_ReportingBalance@sqlserver as select * from ReportingBalance@eol where reportingYear >= to_char(dateadd(‘year’,-2,sysdate),‘YYYY’) batchsize 50000; – adjust the batchsize (default: 3000)
l_sqlresult := sqlrowcount;
l_debug := 'ReportingBalance@eol with filter reportingYear on the last 3 years updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table EOL_REST_CURRENTYEAR_OPENIGNBALANCE@sqlserver as select * from CurrentYearAfterEntry@eol;
l_sqlresult := sqlrowcount;
l_debug := 'CurrentYearAfterEntry@eol updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_stmtstart := sysdate;
create or replace table EOL_REST_PREVIOUSYEAR_OPENIGNBALANCE@sqlserver as select * from PreviousYearAfterEntry@eol;
l_sqlresult := sqlrowcount;
l_debug := 'PreviousYearAfterEntry@eol updated. duration: ’ || round((sysdate-l_stmtstart)6060*24,0) || 's. number of records: ’  || l_sqlresult;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ’ ’ || l_debug || chr(13);

l_scriptduration := round((sysdate-l_scriptstart)*60*60*24,0); – i sekunder.
l_debug := 'Skriptet avslutas. Total skriptvaraktighet: ' || l_scriptduration || 's.';
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ' ' || l_debug || chr(13);
skickaMail(
– ämne för e-post här
'synkroniseringsskript för eol-tabeller utom transactionlines: framgång.'
– kropp för e-post här
,'skriptstatus: OK.' || ''
|| 'skript starttid: ' || to_char(l_scriptstart, 'YYYY-MM-DD HH24:MI:SS') || ''
|| 'skriptvaraktighet: ' || l_scriptduration || ' sekunder.' || ''
|| 'fullständig logg nedan' || ''
|| ersätt(l_log, chr(13), '')
– mottagare här
,l_emailrecipients
);
undantag
när andra
sedan
l_debug := 'Fel fångat i undantag: ' || chr(13) || sqlerrm;
dbms_output.put_line(l_debug); l_log := l_log || sysdate || ' ' || l_debug || chr(13);
l_scriptsuccess := false;
l_scriptduration := round((sysdate-l_scriptstart)*60*60*24,0); – i sekunder. beräknas om här eftersom undantagen hoppade över det.
skickaMail(
– ämne för e-post här
'synkroniseringsskript för eol-tabeller utom transactionlines: FEL. Ett SQL-fel inträffade.'
– kropp för e-post här
,'skriptstatus: FEL. Ett SQL-fel inträffade.' || ''
|| 'skript starttid: ' || to_char(l_scriptstart, 'YYYY-MM-DD HH24:MI:SS') || ''
|| 'skriptvaraktighet: ' || l_scriptduration || ' sekunder.' || ''
|| 'fullständig logg nedan' || ''
|| ersätt(l_log, chr(13), '')
– mottagare här
,l_emailrecipients
);
end;

Ett problem med ominloggning har lösts i version 26.0.167. Denna version är nu tillgänglig som “aktuellt” nedladdning på: