Getting JDBC error when performing Identity changes

Which IIQ version are you inquiring about?

8.3

When I submit a plan to remove entitlements to the LCM Provisioning workflow, I get an error deep inside the system. I’m not certain what the cause is, can anyone enlighten me:

2025-06-12 11:35:25,508 TRACE Thread-679 sailpoint.WorkflowTrace:216 - Starting step Create Identity Request

2025-06-12 11:35:26,553 ERROR Thread-679 engine.jdbc.spi.SqlExceptionHelper:142 - ORA-12899: value too large for column "IDENTITYIQDITR2"."SPT_IDENTITY_REQUEST_ITEM"."VALUE" (actual: 10242, maximum: 450)

2025-06-12 11:35:26,587 ERROR Thread-679 sailpoint.server.ScriptletEvaluator:143 - Step call threw an exception:

2025-06-12 11:35:26,589 ERROR Thread-679 sailpoint.server.ScriptletEvaluator:144 - sailpoint.tools.GeneralException: org.hibernate.exception.GenericJDBCException: could not execute statement

at sailpoint.persistence.HibernatePersistenceManager.commitTransaction(HibernatePersistenceManager.java:558)

at sailpoint.persistence.ClassPersistenceManager.commitTransaction(ClassPersistenceManager.java:207)

at sailpoint.server.InternalContext.commitTransaction(InternalContext.java:560)

at sailpoint.workflow.IdentityRequestLibrary.createIdentityRequest(IdentityRequestLibrary.java:372)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at sailpoint.server.ScriptletEvaluator.doCall(ScriptletEvaluator.java:134)

at sailpoint.server.ScriptletEvaluator.evalSource(ScriptletEvaluator.java:63)

at sailpoint.api.Workflower.evalSource(Workflower.java:5932)

at sailpoint.api.Workflower.advanceStep(Workflower.java:5171)

at sailpoint.api.Workflower.advance(Workflower.java:4558)

at sailpoint.api.Workflower.startCase(Workflower.java:3144)

at sailpoint.api.Workflower.launchSubcase(Workflower.java:5474)

at sailpoint.api.Workflower.launchSubcases(Workflower.java:5367)

at sailpoint.api.Workflower.advanceStep(Workflower.java:5158)

at sailpoint.api.Workflower.advance(Workflower.java:4558)

at sailpoint.api.Workflower.startCase(Workflower.java:3144)

at sailpoint.api.Workflower.launchSubcase(Workflower.java:5474)

at sailpoint.api.Workflower.launchSubcases(Workflower.java:5367)

at sailpoint.api.Workflower.advanceStep(Workflower.java:5158)

at sailpoint.api.Workflower.advance(Workflower.java:4558)

at sailpoint.api.Workflower.startCase(Workflower.java:3144)

at sailpoint.api.Workflower.launchInner(Workflower.java:2813)

at sailpoint.api.Workflower.launch(Workflower.java:2666)

at sailpoint.api.Workflower.launch(Workflower.java:2500)

at sailpoint.request.WorkflowRequestExecutor.execute(WorkflowRequestExecutor.java:177)

at sailpoint.request.RequestHandler.run(RequestHandler.java:163)

Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute statement

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)

at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1366)

at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:453)

at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3212)

at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2380)

at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:447)

at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:183)

at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:40)

at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:281)

at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101)

at sailpoint.persistence.HibernatePersistenceManager.commitTransaction(HibernatePersistenceManager.java:543)

... 28 more

Caused by: org.hibernate.exception.GenericJDBCException: could not execute statement

at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)

at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)

at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)

at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:200)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3302)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3823)

at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:107)

at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)

at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:478)

at org.hibernate.engine.spi.ActionQueue$$Lambda$1965/418838459.accept(Unknown Source)

at java.util.LinkedHashMap.forEach(LinkedHashMap.java:676)

at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:475)

at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:348)

at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:40)

at org.hibernate.internal.SessionImpl$$Lambda$1961/1230840607.accept(Unknown Source)

at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:102)

at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1362)

... 37 more

Caused by: java.sql.SQLException: ORA-12899: value too large for column "IDENTITYIQDITR2"."SPT_IDENTITY_REQUEST_ITEM"."VALUE" (actual: 10242, maximum: 450)

at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)

at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446)

at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1054)

at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)

at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)

at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612)

at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226)

at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59)

at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:910)

at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1119)

at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780)

at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343)

at oracle.jdbc.driver.OraclePreparedStatement.executeLargeUpdate(OraclePreparedStatement.java:3865)

at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3845)

at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1061)

at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)

at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)

at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197)

... 50 more

Caused by: Error : 12899, Position : 187, Sql = insert into spt_identity_request_item (created, attributes, name, value, native_identity, application, operation, retries, approval_state, provisioning_state, id) values (:1 , :2 , :3 , :4 , :5 , :6 , :7 , :8 , :9 , :10 , :11 ), OriginalSql = insert into spt_identity_request_item (created, attributes, name, value, native_identity, application, operation, retries, approval_state, provisioning_state, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), Error Msg = ORA-12899: value too large for column "IDENTITYIQDITR2"."SPT_IDENTITY_REQUEST_ITEM"."VALUE" (actual: 10242, maximum: 450)

at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:498)

... 67 more

Basically too large a piece of information is being forced into “IDENTITYIQDITR2”.“SPT_IDENTITY_REQUEST_ITEM”.“VALUE”
I don’t have access to the schema, what is this?

If you increase your logger to trace, you’ll print out the plan that you are executing. The plan should reveal the value the exceeds 450 characters.

2 Likes

Hi @AJGibson76 - Sunny is right. Here is the Table info as a reference, you see value is set at 450.
create table identityiq.spt_identity_request_item (
id nvarchar(32) not null,
created numeric(19,0),
modified numeric(19,0),
significant_modified numeric(19,0),
owner nvarchar(32),
start_date numeric(19,0),
end_date numeric(19,0),
attributes nvarchar(max),
name nvarchar(255),
value nvarchar(450),
annotation nvarchar(450),
display_name nvarchar(255),
native_identity nvarchar(450),
instance nvarchar(128),
application nvarchar(255),
owner_name nvarchar(128),
approver_name nvarchar(128),
operation nvarchar(128),
retries int,
provisioning_engine nvarchar(255),
approval_state nvarchar(128),
provisioning_state nvarchar(128),
compilation_status nvarchar(128),
expansion_cause nvarchar(128),
identity_request_id nvarchar(32),
idx int,
primary key (id)
);

You just need to add this to your log4j2.properties file and use the debug to reload your log properties:

logger.workflowTrace.name=sailpoint.WorkflowTrace
logger.workflowTrace.level=trace
1 Like

I’ve got it, the field in question is the actual entitlement itself. My mistake was in using the method Link.getEntitlementAttributes() which seems to group entitlements into one line, producing a line too long to store in the table.