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

ClassNotFound Exception when calling preprocessor jar

jralexander137
New Contributor III
New Contributor III

Hi, looking for some guidance around an issue with a custom jar to do some preprocessing in a connector using the modifyuserjson. I've uploaded the jar and restarted the server from the ui a few times. When I run the job I get the following error:

"2023-12-29T04:25:54.254+00:00","ecm-worker","services.ImportSAvDataUserService","quartzScheduler_Worker-4-ldbp9","DEBUG","Invoking custom preprocess method..."
"2023-12-29T04:25:54.254+00:00","ecm-worker","services.ImportSAvDataUserService","quartzScheduler_Worker-4-ldbp9","DEBUG","Parameters: (Connection connection, Map tempTableNamesMap)"
"2023-12-29T04:25:54.254+00:00","ecm-worker","services.ImportSAvDataUserService","quartzScheduler_Worker-4-ldbp9","DEBUG","tempTableNamesMap= [CURRENTACCOUNTS:TEMPACCOUNTS_6643, NEWUSERDATA:TEMPNEWUSERS_6643, CURRENTUSERS:TEMPUSERS_6643]"
"2023-12-29T04:25:54.258+00:00","ecm-worker","services.ImportSAvDataUserService","quartzScheduler_Worker-4-ldbp9","ERROR","Error while processing data: "
"2023-12-29T04:25:54.499+00:00","ecm-worker","","null-ldbp9","","java.lang.ClassNotFoundException: com.chrob.custom.preprocessor.Transformation at java.lang.Class.forName(Class.java:348) at com.saviynt.ecm.services.ImportSAvDataUserService.callCustomPreProcessorMethod(ImportSAvDataUserService.groovy:558) at com.saviynt.ecm.services.ImportSAvDataUserService$_doImportDataPreprocessing_closure10.doCall(ImportSAvDataUserService.groovy:406) at com.saviynt.ecm.services.ImportSAvDataUserService.doImportDataPreprocessing(ImportSAvDataUserService.groovy:404) at com.saviynt.ecm.services.ImportSAvDataUserService.importDataFromFile(ImportSAvDataUserService.groovy:731) at com.saviynt.provisoning.rest.RestProvisioningService.processUsers(RestProvisioningService.groovy:3105) at com.saviynt.provisoning.workday.WorkdayUserAccountImportService.doUsersImport(WorkdayUserAccountImportService.groovy:434) at com.saviynt.provisoning.workday.WorkdayImportService.doImport(WorkdayImportService.groovy:65) at com.saviynt.provisoning.workday.WorkdayImportService.doUserImport(WorkdayImportService.groovy:36) at com.saviynt.ecm.integration.ExternalConnectionCallService.importUserUsingExternalConnection(ExternalConnectionCallService.groovy:1132) at UserImportJob.execute(UserImportJob.groovy:108) at org.quartz.core.JobRunShell.run(JobRunShell.java:199) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:546)"
"2023-12-29T04:25:54.263+00:00","ecm-worker","services.ImportSAvDataUserService","quartzScheduler_Worker-4-ldbp9","DEBUG","Start dropTempTables"

Here is my modifyuserjson 

 

{
	"ADDITIONALTABLES": {
		"USERS": "SELECT USERNAME, SYSTEMUSERNAME,EMPLOYEECLASS,CUSTOMPROPERTY7,CUSTOMPROPERTY8,CUSTOMPROPERTY9,CUSTOMPROPERTY10,CUSTOMPROPERTY11,CUSTOMPROPERTY15,CUSTOMPROPERTY17,CUSTOMPROPERTY51, CUSTOMPROPERTY59, EMAIL,CUSTOMPROPERTY5,SECONDARYEMAIL, STATUSKEY, ENDDATE, FIRSTNAME, LASTNAME, CUSTOMPROPERTY58,PREFEREDFIRSTNAME,CUSTOMPROPERTY12,TERMDATE,EMPLOYEEID,EMPLOYEETYPE,DEPARTMENTNAME,JOBCODE,COMPANYNAME,COSTCENTER,LOCATION,LOCATIONNUMBER,LOCATIONDESC,COUNTRY,CUSTOMPROPERTY4,CUSTOMPROPERTY16,CUSTOMPROPERTY18,CUSTOMPROPERTY19,CUSTOMPROPERTY21,CUSTOMPROPERTY22,CUSTOMPROPERTY23,CUSTOMPROPERTY25,CUSTOMPROPERTY26,CUSTOMPROPERTY27,CUSTOMPROPERTY28,CUSTOMPROPERTY29,CUSTOMPROPERTY30,CUSTOMPROPERTY31,CUSTOMPROPERTY39,CUSTOMPROPERTY40,CUSTOMPROPERTY41,CUSTOMPROPERTY42,CUSTOMPROPERTY43,CUSTOMPROPERTY45,CUSTOMPROPERTY46,CUSTOMPROPERTY47,CUSTOMPROPERTY48,CUSTOMPROPERTY49,CUSTOMPROPERTY50 FROM USERS",
		"ACCOUNTS": "SELECT NAME,ENDPOINTKEY FROM ACCOUNTS WHERE ENDPOINTKEY IN (3)"
	},
	"COMPUTEDCOLUMNS": [
		"SYSTEMUSERNAME",
		"CUSTOMPROPERTY25",
		"CUSTOMPROPERTY59",
		"CUSTOMPROPERTY51",
		"EMAIL",
		"MANAGER",
		"TERMDATE",
		"STATUSKEY",
		"CUSTOMPROPERTY5",
		"EMPLOYEECLASS",
		"EMPLOYEEID",
		"EMPLOYEETYPE",
		"DEPARTMENTNAME",
		"JOBCODE",
		"COMPANYNAME",
		"COSTCENTER",
		"LOCATION",
		"LOCATIONNUMBER",
		"LOCATIONDESC",
		"COUNTRY",
		"CUSTOMPROPERTY4",
		"CUSTOMPROPERTY7",
		"CUSTOMPROPERTY8",
		"CUSTOMPROPERTY9",
		"CUSTOMPROPERTY10",
		"CUSTOMPROPERTY11",
		"CUSTOMPROPERTY15",
		"CUSTOMPROPERTY16",
		"CUSTOMPROPERTY17",
		"CUSTOMPROPERTY18",
		"CUSTOMPROPERTY19",
		"CUSTOMPROPERTY21",
		"CUSTOMPROPERTY22",
		"CUSTOMPROPERTY23",
		"CUSTOMPROPERTY26",
		"CUSTOMPROPERTY27",
		"CUSTOMPROPERTY28",
		"CUSTOMPROPERTY29",
		"CUSTOMPROPERTY30",
		"CUSTOMPROPERTY31",
		"CUSTOMPROPERTY39",
	],
	"TABLEINDEXES": {
		"CURRENTUSERS": [
			"username"
		],
		"NEWUSERDATA": [
			"username"
		],
		"CURRENTACCOUNTS": [
			"name"
		]
	},
	"PREPROCESSQUERIES": [
		"CUSTOMFUNCTION###FUNCTION1"
	],
	"CUSTOMFUNCTIONS": {
		"FUNCTION1": {
			"FULLCLASSNAME": "com.blah.custom.preprocessor.Transformation",
			"METHODNAME": "removeAccents"
		}
	}
}

 

I've also attached the jar I've  uploaded. Doesn't do anything other than attempt to print some logs. Do I need to restructure my package path? Not sure what I'm missing here. 

5 REPLIES 5

rushikeshvartak
All-Star
All-Star

Please raise support ticket to ask restart from server side one time

Refer https://forums.saviynt.com/t5/identity-governance/trigger-java-class-from-in-line-preprocessor-durin... 


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

I will open a support ticket for restart. Also, I previously found and reviewed that thread you linked but I am not sure what was done there to fix the issue. I looked at  the two jars and the only different I saw was that the poster's jar had both the .java and .class file and the one provided by @Hemanth did not have the .java file. Is that the problem? I wouldn't think so as long as the class file is there.

@Hemanth  Looks like you assisted with a similar issue before, any insight you might be able to provide here?

Try using same class name as per documentation 


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

Seens to be an issue with the UI restart not always picking up the jar along with not actually only taking 20 mins to restart, assuming it does properly. It eventually worked after probably the 10th restart last night and then i left the system idle for 7 hours. Though, I needed to upload a new version which encountered the same error again after restart. So I have opened a support ticket to see about a back end restart, that still took 4 hours to get done. The UI restart seems to not be very reliable.

 

The initial upload of a jar does not always result in a UI restart. Hence, a backend restart is preferred; we have seen the same issue. 
I hope your issue is resolved. You can close this thread


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