Announcing the Saviynt Knowledge Exchange unifying the Saviynt forums, documentation, training,
and more in a single search tool across platforms. Read the announcement here.

Account import from DB is failing

Yashh
New Contributor
New Contributor

Hi,

I am trying to import accounts from a database but getting the following error after running the import job -groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.replace() is applicable for argument types: (java.lang.String, java.lang.String) values: [\, \\] at com.saviynt.AccountsImportService$_createAndExecuteInsertQuery_closure17_closure44_closure45_closure47.doCall(AccountsImportService.groovy:814) at com.saviynt.AccountsImportService$_createAndExecuteInsertQuery_closure17_closure44_closure45.doCall(AccountsImportService.groovy:807) at com.saviynt.AccountsImportService$_createAndExecuteInsertQuery_closure17_closure44.doCall(AccountsImportService.groovy:629) at com.saviynt.AccountsImportService$_createAndExecuteInsertQuery_closure17.doCall(AccountsImportService.groovy:628) at com.saviynt.AccountsImportService.createAndExecuteInsertQuery(AccountsImportService.groovy:627) at com.saviynt.AccountsImportService.importData(AccountsImportService.groovy:400) at AccountsImportFullJob.execute(AccountsImportFullJob.groovy:58) at org.quartz.core.JobRunShell.run(JobRunShell.java:199) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:546)

Following is the accounts import XML that I have configured - 

<dataMapping>
<before-import>
</before-import>
<sql-query description="This is the Source DB Query">
<![CDATA[select u1.USER_ID as accname,u1.USER_ID as accid,'1' as accstatus,u1.GRP_ID as groupcode ,u1.USER_FIRST_NM as firstname,u1.USER_MID_NM as middlename,u1.USER_LAST_NM as lastname,u1.EMAIL_ID as email,u1.PHONE_NO as phonenumber,u1.ISO_ALPHA2_CTRY_CD as countrycode,u1.USER_STAT_CD as statuscode,u1.GLOBAL_USER_ID as globalid,'(GCSS)-Global Client Settlement System' as systemname,'(GCSS)-Global Client Settlement System' as endpointname,'Roles' as entitlementtype,u2.ROLE_CD as entitlementvalue from MUS.ALL_USER u1 join MUS.USER_ACCESS u2 on u1.USER_ID=u2.USER_ID]]>
</sql-query>
<mapper description="This is the mapping field for SAviynt Field name" deleteaccountentitlement="true" ifusernotexists="noaction">
<mapfield saviyntproperty="accounts.name" sourceproperty="accname" type="character"></mapfield>
<mapfield saviyntproperty="securitysystems.systemname" sourceproperty="systemname" type="character"></mapfield>
<mapfield saviyntproperty="endpoints.endpointname" sourceproperty="endpointname" type="character"></mapfield>
<mapfield saviyntproperty="accounts.accountid" sourceproperty="accid" type="character"></mapfield>
<mapfield saviyntproperty="accounts.status" sourceproperty="accstatus" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty1" sourceproperty="email" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty2" sourceproperty="firstname" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty3" sourceproperty="middlename" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty4" sourceproperty="lastname" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty5" sourceproperty="groupcode" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty6" sourceproperty="phonenumber" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty7" sourceproperty="countrycode" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty8" sourceproperty="statuscode" type="character"></mapfield>
<mapfield saviyntproperty="accounts.customproperty9" sourceproperty="globalid" type="character"></mapfield>
<mapfield saviyntproperty="accounts.displayName" sourceproperty="accname" type="character"></mapfield>
<mapfield saviyntproperty="entitlementtypes.entitlementname" sourceproperty="entitlementtype" type="character"></mapfield>
<mapfield saviyntproperty="entitlementvalues.entitlementvalue" sourceproperty="entitlementvalue" type="character"></mapfield>
</mapper>
<after-import description="EMAIL,BATCH,SQL">
</after-import>
</dataMapping>

2 REPLIES 2

AmitM
Valued Contributor
Valued Contributor

Hi @Yashh , tough to say which attribute is causing you this issue without having access to data.

But this issue can be resolved by using Type number for numeric values , for example 

<mapfield saviyntproperty="accounts.customproperty6" sourceproperty="phonenumber" type="number"></mapfield>

You need to do some hit and trial here to find out which is causing it but this would most probably be the issue.

Good Luck !!

Regards,

Amit

If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.

 

rushikeshvartak
All-Star
All-Star
<dataMapping>
	<before-import></before-import>
	<sql-query description="This is the Source DB Query">
		<![CDATA[select u1.USER_ID as accname,u1.USER_ID as accid,1 as accstatus,u1.GRP_ID as groupcode ,u1.USER_FIRST_NM as firstname,u1.USER_MID_NM as middlename,u1.USER_LAST_NM as lastname,u1.EMAIL_ID as email,u1.PHONE_NO as phonenumber,u1.ISO_ALPHA2_CTRY_CD as countrycode,u1.USER_STAT_CD as statuscode,u1.GLOBAL_USER_ID as globalid,'(GCSS)-Global Client Settlement System' as systemname,'(GCSS)-Global Client Settlement System' as endpointname,'Roles' as entitlementtype,u2.ROLE_CD as entitlementvalue from MUS.ALL_USER u1 join MUS.USER_ACCESS u2 on u1.USER_ID=u2.USER_ID]]>
	</sql-query>
	<mapper description="This is the mapping field for SAviynt Field name" deleteaccountentitlement="true" ifusernotexists="noaction">
		<mapfield saviyntproperty="accounts.name" sourceproperty="accname" type="character"></mapfield>
		<mapfield saviyntproperty="securitysystems.systemname" sourceproperty="systemname" type="character"></mapfield>
		<mapfield saviyntproperty="endpoints.endpointname" sourceproperty="endpointname" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.accountid" sourceproperty="accid" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.status" sourceproperty="accstatus" type="number"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty1" sourceproperty="email" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty2" sourceproperty="firstname" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty3" sourceproperty="middlename" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty4" sourceproperty="lastname" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty5" sourceproperty="groupcode" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty6" sourceproperty="phonenumber" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty7" sourceproperty="countrycode" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty8" sourceproperty="statuscode" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.customproperty9" sourceproperty="globalid" type="character"></mapfield>
		<mapfield saviyntproperty="accounts.displayName" sourceproperty="accname" type="character"></mapfield>
		<mapfield saviyntproperty="entitlementtypes.entitlementname" sourceproperty="entitlementtype" type="character"></mapfield>
		<mapfield saviyntproperty="entitlementvalues.entitlementvalue" sourceproperty="entitlementvalue" type="character"></mapfield>
	</mapper>
	<after-import description="EMAIL,BATCH,SQL"></after-import>
</dataMapping>

Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.