My Oracle Support Banner

DBAT Connector Generator Error:" Import failed for entity : '<xxx> User' which is of type : 'Process', with the following error message :Duplicate PRF" (Doc ID 2461975.1)

Last updated on OCTOBER 22, 2019

Applies to:

Identity Manager Connector - Version 11.1.1.6.0 and later
Information in this document applies to any platform.

Symptoms

Database table has following column : UserID and other columns . 

DBAT connector is used to generate the connector for this table. Once the connector is generated and installed on OIM server , following error is seen on UI : 


[2018-10-09T12:46:04.866+05:30] [< oim server name >] [ERROR] [] [XELLERATE.WEBAPP] [tid: [ACTIVE].ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: < oim_super_user >] [ecid: ...] [APP: oim#11.1.2.0.0] [DSID: ...] Class/Method: ConnectorInstallProcessAction/importXmlForInstallation/DDM Exception while importing xml encounter some problems: Import failed for entity : '<Name>' which is of type : 'Process', with the following error message :Duplicate PRF

  In the OIM server diagnostic logs , following error stack is seen : 


[2018-10-09T12:46:04.542+05:30] [< oim server name >] [ERROR] [] [XELLERATE.DATABASE] [tid: [ACTIVE].ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: < oim_super_user >] [ecid: c...] [APP: oim#11.1.2.0.0] [DSID: ...] Class/Method: tcDataBase/writeStatement encounter some problems: ORA-00001: unique constraint (DEV_OIM.PK_PRF) violated[[
java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (DEV_OIM.PK_PRF) violated

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:462)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:405)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:931)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:481)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:205)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:548)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:217)

 

Changes

 Following is the DBAT connector groovy file set up : 

target {
//Resource Name
itResourceDefName='< SOME_PREFIX>_DBAT' // DBAT is a name of the package
// itResourceName="$itResourceDefName" //the same as itResourceDefName

//Output files
// connectorDir="../$itResourceDefName" //out dir is the same as it resource name
// xmlFile='DBAT-ConnectorConfig.xml'
// configFile='DBAT-CI.xml'
// propertiesFile='dbat-generator.properties'
// version='11.1.1.6.0'

// provisionDatasetFile='ProvisionResource_DBATUser.xml'
// modifyResourceDatasetFile='ModifyProvisionedResource_DBATUser.xml'
// requestDMDatasetsFile='Datasets.xml'

// Following configuration is made based on sample files provided in the dbat connector doc.
// We have parent Table as USERINFO and USERID as the key column
// We have USER_GROUP and USER_ROLE as its child tables.

//Configuration
bundleJar='../lib/org.identityconnectors.databasetable-1.2.2.jar'
config = [
'table' : '< SOME_PREFIX>.<TABLE>,
'keyColumn' : '<COLUMN_NAME>',
// 'passwordColumn' : 'PASSWORD',
'user' : '< USER_LOGIN>',
// 'password' : '', never provide passwords to generator
// Here the list of JDBC Drivers for the different database.
// Comment/Uncomment the partcular value based on the database
// For Oracle
'jdbcUrlTemplate' : 'jdbc:oracle:thin:@//< HOSTNAME>:< PORT>/< SID>',


// Here are the list of the drivers for the databases.
// Uncommet that particular driver value based on your database
// For Oracle
'jdbcDriver': 'oracle.jdbc.driver.OracleDriver',

// For MySQL
// 'jdbcDriver' : 'com.mysql.jdbc.Driver',
// For Sybase
// 'jdbcDriver': 'com.sybase.jdbc3.jdbc.SybDriver',
// For MS SQL Server
// 'jdbcDriver': 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
// For DB2
// 'jdbcDriver': 'com.ibm.db2.jcc.DB2Driver',

// Here we need to mention the list of child tables that are needed.
//'relationTables': 'PROFILEMASTER',
'statusColumn':'USER_STATUS',
'enableValue':'ACTIVE',
'disableValue':'INACTIVE',
// 'database':'',
'host':'< HOSTNAME>,
'port':'< PORT>',
// 'datasource':'',
// 'jndiProperties':'',
// 'customizedQuery':'',
// 'rethrowAllSQLExceptions': true,
'allNative':true, // We prefer to have native dates, timestamps in OIM
// 'validConnectionQuery':'SELECT 1 FROM DUMMY',
'dateFormat':'dd/MM/yy',
'timestampFormat':'yyyy/MM/dd HH:mm:ss z', // Force the full timestamp formating
// 'enableEmptyString':false,
// 'quoting':'NONE',
// 'changeLogColumn':'DTLASTUPDATED',
// 'nativeTimestamps': false,

// Uncomment and provide the groovy script file path or groovy script in below configuration based on the operation
// An example of the file path(in linux) for a groovy file
// at /home/acme/create.groovy should be as file:///home/acme/create.groovy

// 'createScript': 'file://file/path/to/create.groovy', // provide the inline groovy script or file:///url for create operation
// 'updateScript': 'file://file/path/to/update.groovy', // provide the inline groovy script or file:///url for update operation
// 'deleteScript': 'file://file/path/to/delete.groovy', // provide the inline groovy script or file:///url for delete operation
// 'executeQueryScript': 'file://file/path/to/search.groovy', // provide the inline groovy script or file:///url for full reconciliation
// 'lookupScript': 'file://file/path/to/lookup.groovy', // provide the inline groovy script or file:///url for lookup reconciliation
// 'syncScript': 'file://file/path/to/incremental.groovy', // provide the inline groovy script or file:///url for incremental reconciliation
// 'addMultiValuedAttributeScript': 'file://file/path/to/add_child.groovy', // provide the inline groovy script or file:///url for addition of child data
// 'removeMultiValuedAttributeScript': 'file://file/path/to/remove_child.groovy', // provide the inline groovy script or file:///url for removal of child data

]

//Database table name to OIM resource form name aliasing.
//Make sure that itResourceName length plus child table alias length is within 8 characters limit.
// alias = ['<COLUMN_NAME>:'User Login']

//Attribute to form field names aliasing
// alias += ['__NAME__':'User ID',]

//Generate prepopulate adapters.PrePopluate Adapters Usage is ['CONNECTOR_ATTRIBUTE':'OIM USER ATTRIBUTE'] Eg., ['DISPLAY_NAME':'Display Name']
prepopulate = ['<COLUMN_NAME>':'User Login', 'USERNAME':'Display Name', 'EMAIL_ID':'Email']
}

 

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Changes
Cause
Solution


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.