RSA Identity Governance & Lifecycle Identity Data Collection is failing due to ORA-00904: CUS_ATTR_USER_CAS_XX invalid identifier
2 years ago
Originally Published: 2017-05-30
Article Number
000050017
Applies To
RSA Product Set: Identity Governance & Lifecycle
RSA Version/Condition: All 
Issue
The Identity Data Collection has been failing after applying attribute changes due to the following exception:
 
ORA-00904: CUS_ATTR_USER_CAS_XX invalid identifier

This error has been occurring during Identity Data Collection runs, specifically while Staging Tables are being created (Step 1/4 Create Staging Tables). The Identity Data Collection's Admin error is failing at Identity_Data_Collector.Save_Run_Data while copying table data from STX_USR_XX_XXXX into T_DC_SOURCEDATA_USER.

This issue was brought about by the following scenario where it appears something is corrupted during attribute creation: 
  1. A user attribute was added (where the attribute name has an underscore.  For example, ACCOUNT_STATUS, but had an error during the add process so the attribute name was changed by replacing the underscore with a space.  So ACCOUNT_STATUS is changed to ACCOUNT STATUS.  Only then was that specific attribute successfully added. 
  2. The Identity Data Collector configuration was updated to map to the new attribute.
  3. The Identity Data Collection was rerun; however, it has been failing with the ORA-00904: "CUS_ATTR_USER_CAS_XX" invalid identifier since the changes were applied. 
  4. The changes were then rolled back by removing the specific attribute and its mappings in the Identity Data Collector. 
  5. The Identity Data Collection was rerun; however, the issue persisted even after reverting the changes. 

See the full error stacktrace from aveksaServer.log:
05/15/2017 16:47:24.467 ERROR (Exec Task Consumer#9) [com.aveksa.server.xfw.TaskExecutor] Failed method=Execute ExecutionTask[TaskID=12008 
RunID=null Source=21 Type=DataProcessing Status=InProgress] 
com.aveksa.server.xfw.ExecutionException: com.aveksa.server.collector.DataProcessorException: Loading of user & group data into DB failed. 
User data file=XXXXUserData.data & group data file=XXXXGroupData.data 
	at com.aveksa.server.xfw.DataProcessingExecutor.executeFullTask(DataProcessingExecutor.java:146) 
	at com.aveksa.server.xfw.DataProcessingExecutor.executeTask(DataProcessingExecutor.java:63) 
	at com.aveksa.server.xfw.TaskExecutor.execute(TaskExecutor.java:82) 
	at com.aveksa.server.xfw.ExecutionTaskQueue$Worker.run(ExecutionTaskQueue.java:116) 
	at java.lang.Thread.run(Thread.java:701) 
Caused by: com.aveksa.server.collector.DataProcessorException: Loading of user & group data into DB failed. 
User data file=XXXXUserData.data & group data file=XXXXGroupData.data 
	at com.aveksa.server.xfw.SAXUserDataFilter.loadData(SAXUserDataFilter.java:304) 
	at com.aveksa.server.xfw.SAXUserDataFilter.process(SAXUserDataFilter.java:156) 
	at com.aveksa.server.xfw.SAXUserDataFilter.process(SAXUserDataFilter.java:512) 
	at com.aveksa.server.xfw.DataProcessor.process(DataProcessor.java:85) 
	at com.aveksa.server.xfw.DataProcessor.process(DataProcessor.java:64) 
	at com.aveksa.server.xfw.DataProcessingExecutor.executeFullTask(DataProcessingExecutor.java:135) 
	... 4 more 
Caused by: com.aveksa.server.db.PersistenceException: java.sql.SQLException: ORA-00904: "CUS_ATTR_USER_CAS_XX": invalid identifier 
ORA-06512: at "AVUSER.COLLECTOR_DATA_TABLES", line 92 
ORA-06512: at "AVUSER.IDC_EXTERNAL_TABLES", line 103 
ORA-06512: at "AVUSER.IDENTITY_DATA_COLLECTOR", line 70 
ORA-06512: at "AVUSER.IDENTITY_DATA_COLLECTOR", line 166 
ORA-06512: at line 1 

	at com.aveksa.server.db.persistence.PersistenceServiceProvider.runStoredProcedure(PersistenceServiceProvider.java:1458) 
	at com.aveksa.server.db.persistence.PersistenceServiceProvider.runStoredProcedure(PersistenceServiceProvider.java:1329) 
	at com.aveksa.server.db.PersistenceManager.runStoredProcedure(PersistenceManager.java:235) 
	at com.aveksa.server.xfw.SAXUserDataFilter.loadData(SAXUserDataFilter.java:287) 
	... 9 more 
	at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1036) 
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1336) 
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3608) 
	at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3709) 
	at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4735) 
	at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1090) 
	at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.execute(WrappedPreparedStatement.java:209) 
	at com.aveksa.server.db.persistence.PersistenceServiceProvider.runStoredProcedure(PersistenceServiceProvider.java:1432) 
	... 12 more
Cause
The database tables became out of sync with the extensible schema columns.
Resolution
Run the following queries as AVUSER on your SQL Developer tool to determine if the database tables is out of sync with the extensible schema columns.  Also, provide screenshot(s) of the Edit screen for the User attributes (Admin > Attributes > User tab).
 
SELECT * FROM T_AV_CUSTOM_ATTRIBUTES ORDER BY OBJECT_TYPE, DISPLAY_NAME;
SELECT * FROM T_EXTENSIBLE_SCHEMA_COLUMNS ORDER BY TABLE_NAME, DISPLAY_NAME;
SELECT table_name FROM USER_TAB_COLUMNS WEHERE column_name='<invalid identifier column name>';
where, 
<invalid identifier column name> is the invalid identifier column name (e.  g., CUS_ATTR_USER_CAS_41) from the ORA-00904 invalid identifier exception.  For example,
SELECT table_name FROM USER_TAB_COLUMNS WHERE column_name='CUS_ATTR_USER_CAS_41';

If the query returns any output, please contact RSA Support for the resolution and mention this article.
Workaround