Saviynt unveils its cutting-edge Intelligence Suite products to revolutionize Identity Security!
Click HERE to see how Saviynt Intelligence is transforming the industry.
Saviynt Copilot Icon

DB (Oracle) account import: ArrayIndexOutOfBoundsException

Maikel-blaaupot
New Contributor
New Contributor

We are getting an error when importing accounts. Based on other topics I tried to strip as much as possible, however the error stil exists. 


<dataMapping>
    <sql-query description="This is the Source DB Query" uniquecolumnsascommaseparated="name">
    <![CDATA[select pk_extern AS pkextern,pk_persoon AS pkpersoon,voorletters,voornaam,roepnaam,voorv_geb_naam AS voorvgebnaam,geboortenaam,voorvoegsel,achternaam,voorkeursnaam,eerste_titel AS eerstetitel,e_mail_prive AS emailprive,hoofddienstverband,op_internet AS opinternet,'externen_test' as securitysystem,'externen_test' as endpoint,'Groups' as entitlementtype,null as entitlementvalue, 1 as status from system.v_persoon]]>
    </sql-query>
    <mapper description="This is the mapping field for Saviynt Field name" accountnotinfileaction="noaction" deleteaccountentitlement="true" ifusernotexists="noaction">
        <mapfield saviyntproperty="accounts.name" sourceproperty="pkextern" type="character"/>
        <mapfield saviyntproperty="securitysystems.systemname" sourceproperty="securitysystem" type="character"/>
        <mapfield saviyntproperty="endpoints.endpointname" sourceproperty="endpoint" type="character"/>
<mapfield saviyntproperty="entitlementtypes.entitlementname" sourceproperty="entitlementtype" type="character"/>
        <mapfield saviyntproperty="entitlementvalues.entitlementvalue" sourceproperty="entitlementvalue" type="character"/>
        <mapfield saviyntproperty="accounts.status" sourceproperty="status" type="character"/>
<mapfield saviyntproperty="customproperty1" sourceproperty="ROEPNAAM" type="character"></mapfield>
        <mapfield saviyntproperty="customproperty2" sourceproperty="ACHTERNAAM" type="character"></mapfield>
<mapfield saviyntproperty="customproperty16" sourceproperty="pkpersoon" type="character"></mapfield>
    </mapper>
</dataMapping>

 

04-Jul-2024 07:44:17.294 WARNING [quartzScheduler_Worker-7] groovy.sql.Sql.handleError Rolling back due to: null
Error processing records
java.lang.ArrayIndexOutOfBoundsException
account_not_in_file_action - noaction
Building Existing entvalue map using Qry - SELECT ENTITLEMENT_VALUEKEY,ENTITLEMENT_VALUE,ENTITLEMENT_VALUES.ENTITLEMENTTYPEKEY,ENTITLEMENT_VALUES.ENTITLEMENTID FROM ENTITLEMENT_VALUES,ENTITLEMENT_TYPES WHERE ENTITLEMENT_VALUES.ENTITLEMENTTYPEKEY=ENTITLEMENT_TYPES.ENTITLEMENTTYPEKEY AND ENTITLEMENT_TYPES.SYSTEMKEY in (14)
Size of entitlement value map - 0
Building existing account map using qry - SELECT ACCOUNTS.NAME,ACCOUNTS.ENDPOINTKEY,ACCOUNTS.ACCOUNTKEY FROM ACCOUNTS,ENDPOINTS where ENDPOINTS.ENDPOINTKEY=ACCOUNTS.ENDPOINTKEY and ENDPOINTS.SECURITYSYSTEMKEY in (14)
Size of accountMap-0
Building existing accountEnt map - SELECT ACCOUNT_ENTITLEMENTS1.ACCOUNTKEY,ACCOUNT_ENTITLEMENTS1.ENTITLEMENT_VALUEKEY FROM ACCOUNT_ENTITLEMENTS1 ,ENTITLEMENT_VALUES,ENTITLEMENT_TYPES WHERE ENTITLEMENT_VALUES.ENTITLEMENT_VALUEKEY=ACCOUNT_ENTITLEMENTS1.ENTITLEMENT_VALUEKEY AND ENTITLEMENT_VALUES.ENTITLEMENTTYPEKEY = ENTITLEMENT_TYPES.ENTITLEMENTTYPEKEY AND ENTITLEMENT_TYPES.SYSTEMKEY in (14)
Existing Account Ent Set - 0
isImportSuccess: false
statusAndThresholdConfig is null
correlateInactiveAccounts: null
Associating Users and Accounts
Orphan Accounts- 0
Rule: (users.customproperty22) = accounts.name
sql =
SELECT USERS.USERKEY AS USERKEY, ACCOUNTS.ACCOUNTKEY AS ACCOUNTKEY FROM ACCOUNTS ACCOUNTS
LEFT JOIN USER_ACCOUNTS UA ON ACCOUNTS.ACCOUNTKEY = UA.ACCOUNTKEY
LEFT JOIN USERS USERS ON
(users.customproperty22) = accounts.name
WHERE ACCOUNTS.ENDPOINTKEY = 10 AND ACCOUNTS.STATUS IN ('Active','1','Manually Provisioned')
AND ACCOUNTS.ACCOUNTKEY IS NOT NULL AND UA.ACCOUNTKEY IS NULL
AND ACCOUNTS.NAME IS NOT NULL AND USERS.USERNAME IS NOT NULL

Total accounts to be correlated = 0
User-accounts correlated: 0
Orphan Accounts remaining- 0
Executing Qry - select max(cast(u.username as integer )) from Users u
MAXUSERKEY - 20057428
Exit in Method importData
AccountsImportFullJob.execute - map : [org.grails.plugins.quartz.grailsJobName:AccountsImportFullJob, tabDetail:, CONNECTION:Externen_test, fireInstanceId:NON_CLUSTERED1718873792881, cronexpression:0 15 10 * * ? 2099, securitySystemKeysInTrigger:, jobnamelabel:Accounts Import (Complete) from Database (AccountsImportFullJob), TABLENAME:ACCOUNTS, lastJobId:16755, updateUser:admin_maikel, jobtriggername:Externen_account, fullorincremental:full]
Finally block in AccountsImportFullJob
AccountsImportFullJob End @ Thu Jul 04 07:44:17 UTC 2024
Returned records - 3316
Total Records returned that needs to be processed - 3316
tempQry: SELECT ENTITLEMENT_VALUEKEY,ENTITLEMENT_VALUE,ENTITLEMENT_VALUES.ENTITLEMENTTYPEKEY,ENTITLEMENT_VALUES.ENTITLEMENTID FROM ENTITLEMENT_VALUES,ENTITLEMENT_TYPES WHERE ENTITLEMENT_VALUES.ENTITLEMENTTYPEKEY=ENTITLEMENT_TYPES.ENTITLEMENTTYPEKEY
Enter checkIfAnyOtherTriggerInStartedState: 16755
Query to get running triggers: select qft.ENTRY_ID as triggerFireInstanceId from qrtz_triggers qt inner join qrtz_fired_triggers qft
where qt.TRIGGER_NAME = qft.TRIGGER_NAME and qt.TRIGGER_GROUP = qft.TRIGGER_GROUP
and qt.JOB_NAME = qft.JOB_NAME and qt.JOB_GROUP = qft.JOB_GROUP and qft.JOB_NAME in ('AccountsImportFullJob' , 'AccountsImportIncrementalJob')
Number of ecmImportJob objects for AccountsImportFullJob and AccountsImportIncrementalJob in 'Started' state: 1
Exit checkIfAnyOtherTriggerInStartedState: 16755 - ifOtherTriggerInStartedState: false
Currently running job trigger security system ids:
Query to get running triggers: select qft.ENTRY_ID as triggerFireInstanceId from qrtz_triggers qt inner join qrtz_fired_triggers qft
where qt.TRIGGER_NAME = qft.TRIGGER_NAME and qt.TRIGGER_GROUP = qft.TRIGGER_GROUP
and qt.JOB_NAME = qft.JOB_NAME and qt.JOB_GROUP = qft.JOB_GROUP and qft.JOB_NAME in ('AccountsImportFullJob' , 'AccountsImportIncrementalJob')
Number of currently running AccountsImportFullJob and AccountsImportIncrementalJob triggers: 1
Number of ecmImportJob objects for AccountsImportFullJob and AccountsImportIncrementalJob in 'In Progress' state: 1
isSameSystemInProgress : false
Final Qry to get data from external DB - select pk_extern AS pkextern,pk_persoon AS pkpersoon,voorletters,voornaam,roepnaam,voorv_geb_naam AS voorvgebnaam,geboortenaam,voorvoegsel,achternaam,voorkeursnaam,eerste_titel AS eerstetitel,e_mail_prive AS emailprive,hoofddienstverband,op_internet AS opinternet,'externen_test' as securitysystem,'externen_test' as endpoint,'Groups' as entitlementtype,null as entitlementvalue, 1 as status from picobello.v_iga_ext_persoon
useMysqlPagination: false
iscountqrypresent: false
Final Qry to get data from external DB - select pk_extern AS pkextern,pk_persoon AS pkpersoon,voorletters,voornaam,roepnaam,voorv_geb_naam AS voorvgebnaam,geboortenaam,voorvoegsel,achternaam,voorkeursnaam,eerste_titel AS eerstetitel,e_mail_prive AS emailprive,hoofddienstverband,op_internet AS opinternet,'externen_test' as securitysystem,'externen_test' as endpoint,'Groups' as entitlementtype,null as entitlementvalue, 1 as status from system.v_persoon
RESULT LIST FROM SOURCE DATABASE select pk_extern AS pkextern,pk_persoon AS pkpersoon,voorletters,voornaam,roepnaam,voorv_geb_naam AS voorvgebnaam,geboortenaam,voorvoegsel,achternaam,voorkeursnaam,eerste_titel AS eerstetitel,e_mail_prive AS emailprive,hoofddienstverband,op_internet AS opinternet,'externen_test' as securitysystem,'externen_test' as endpoint,'Groups' as entitlementtype,null as entitlementvalue, 1 as status from system.v_persoon
Connection created...:
End getConnection
No connection param found for STATUS_THRESHOLD_CONFIG
XML File: /usr/local/tomcat/temp/tempFile3088689045536445641.xml
incremental column ::: null
AccountsImportFullJob start @ Thu Jul 04 07:44:11 UTC 2024
Current Connection for AccountsImportFullJob - Externen_test
JobID: 16755
Calling importData
Setting Batch Size from config=500
Start getConnection
using passed external connection :: Externen_test

2 REPLIES 2

SumathiSomala
All-Star
All-Star

@Maikel-blaaupot try below

<dataMapping>
    <sql-query description="This is the Source DB Query" uniquecolumnsascommaseparated="name">
    <![CDATA[select pk_extern AS pkextern,pk_persoon AS pkpersoon,voorletters,voornaam,roepnaam,voorv_geb_naam AS voorvgebnaam,geboortenaam,voorvoegsel,achternaam,voorkeursnaam,eerste_titel AS eerstetitel,e_mail_prive AS emailprive,hoofddienstverband,op_internet AS opinternet,'externen_test' as securitysystem,'externen_test' as endpoint,'Groups' as entitlementtype,null as entitlementvalue, 1 as status from system.v_persoon]]>
    </sql-query>
    <mapper description="This is the mapping field for Saviynt Field name" accountnotinfileaction="noaction" deleteaccountentitlement="true" ifusernotexists="noaction">
        <mapfield saviyntproperty="accounts.name" sourceproperty="pkextern" type="character"/>
        <mapfield saviyntproperty="securitysystems.systemname" sourceproperty="securitysystem" type="character"/>
        <mapfield saviyntproperty="endpoints.endpointname" sourceproperty="endpoint" type="character"/>
<mapfield saviyntproperty="entitlementtypes.entitlementname" sourceproperty="entitlementtype" type="character"/>
        <mapfield saviyntproperty="entitlementvalues.entitlementvalue" sourceproperty="entitlementvalue" type="character"/>
        <mapfield saviyntproperty="accounts.status" sourceproperty="status" type="character"/>
<mapfield saviyntproperty="accounts.customproperty1" sourceproperty="ROEPNAAM" type="character"></mapfield>
        <mapfield saviyntproperty="accounts.customproperty2" sourceproperty="ACHTERNAAM" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty16" sourceproperty="pkpersoon" type="character"></mapfield>
    </mapper>
</dataMapping>
 
Regards,
Sumathi Somala

If this reply answered your question, please Accept As Solution and give Kudos.

Maikel-blaaupot
New Contributor
New Contributor

Thank you, this is indeed the solution. 

After the change I ran into the following error: No signature of method:" java.lang.Long.replace() is applicable for argument types: (java.lang.String, java.lang.String) values: [\, \\]"

This was easily solved by setting type="number" for status (as mentioned in https://forums.saviynt.com/t5/identity-governance/accountsimport-for-database-connector/m-p/58847