The GTC (Generic Technology Connector) is used to build connectors for target systems like flat-file imports via FTP or SPML-based provisioning over Web Services. It can be used to integrate target systems that do not need complicated provisioning process flows with OIM.
The GTC can be created in OIM using the web-based point-and-click graphical wizard, which clearly shows the user the data flows that are being defined within the connector. This will reduce the deployment timelines.
In this post, we’ll demonstrate how to resolve a GTC issue while configuring a CSV file for use in reconciliation in OIM11gR2 PS3.
Issue: You may experience the following issue when creating a Flat File Trusted Generic Technology Connector (GTC) when the GTC is saved. We are following standard steps to create a GTC in OIM.
The corresponding error appears in the OIM diagnostic log:
<Nov 3, 2016 3:09:20 PM IST> <Error> <XELLERATE.WEBAPP> <BEA-000000> <Class/Method: CreateGenConnectorAction/createGenericConnectorSuccess encounter some problems: java.lang.NullPointerException
oracle.iam.platform.utils.ServiceInitializationException: java.lang.NullPointerException at oracle.iam.platform.Platform.getService(Platform.java:277)
<Nov 3, 2016 3:09:20 PM IST> <Error> <XELLERATE.DATABASE> <BEA-000000> <Class/Method: DirectDB/getConnection encounter some problems: Error while retrieving database connection.Please check for the following
Database server is running.
Datasource configuration settings are correct.
java.sql.SQLException: java.sql.SQLException: Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from Datasource: java.sql.SQLRecoverableException: IO Error: Invalid connection string format, a valid format is: “host:port:sid” at com.thortech.xl.util.DirectDB$DBPoolManager.getConnection(DirectDB.java:441)
Solution: Need to correct parameter maxConnections and url values in the OIM-MDS file /db/oim-config.xml, as shown below:
<directDBConfigParams checkoutTimeout="1200" connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource" connectionPoolName="OIM_JDBC_UCP" driver="oracle.jdbc.OracleDriver" idleTimeout="360" maxCheckout="1000" maxConnections="5" minConnections="2" passwordKey="OIMSchemaPassword" sslEnabled="false" url="jdbc:oracle:thin:@[Host DB IP]:1521/orcl" username="DEV_OIM" validateConnectionOnBorrow="true">
Existing Value:
MaxConnections = 5
Url = jdbc:oracle:thin:@[Host DB IP]:1521/orcl
Sample Expected Value:
MaxConnections = 25
Url = jdbc:oracle:thin:@<OIM_DB_HOST_IP>:<OIM_DB_PORT>/<OIM_DB_SID>
Note: URL value above should contain the correct value of the host, port, and SID of OIM database.
We have two approaches to performing the above changes:
Approach 1: Use the standard EM console.
Approach 2: Use weblogicExportMetadata.sh & weblogicImportMetadata.sh standard OOB OIM utility.
We’ll go into more detail below.
APPROACH 1 – Using the standard EM console
Using an EM console should be the preferred approach since it reduces the possbility of making errors with the configuration files. The existing values should be verified and saved as a backup before being changed, using the steps mentioned below –
Step 1: Log in to OIM-EM console http://<EM_HostIP>:< EM_HostPort>/em
Step 2: Click on Identity and Access > OIM > oim(11.1.2.0.0)
Step 3: Click on drop down Oracle Identity Manager > System MBean Browser
Step 4: Click on Application Defined MBeans > oracle.iam
Step 5: Click on XMLConfig > Config
Step 6: Click on XMLConfig.DirectDBConfig > DirectDB
Make below changes and click on Apply.
MaxConnections = 25
Url = jdbc:oracle:thin:@<OIM_DB_HOST_IP>:<OIM_DB_PORT>/<OIM_DB_SID>
Step 7: Verify the changes.
APPROACH 2 – Using weblogicExportMetadata.sh & weblogicImportMetadata.sh standard OOB OIM utility
If you wish to get your hands dirty and perform the changes manually using the command line, here are the steps. It is recommended that the EM console be used for such changes in order to avoid unnecessary edits. Always make a backup copy of the files you’ll be editing before making any changes. Use the weblogicExportMetadata.sh & weblogicImportMetadata.sh standard OOB OIM utility available under $MW_HOME/Oracle_IDM/server/bin.
Please note that oim-config.xml file will be exported under the standard /db folder (under sample /tmp/export_04112016 directory). In the steps below MW_HOME refers to Middleware installed folder and OIM_ORACLE_HOME refers to IOM installed folder.
Step 1: Check parameters values in the file weblogic.properties under /app/oracle/middleware/Oracle_IDM/server/bin/
##Weblogic Server Name on which OIM application is running
wls_servername=oim_server1
application_name=OIMMetadata
metadata_from_loc=/tmp/import_04112016
#Folder location from where the updated /db/oim-config.xml is located
metadata_to_loc=/tmp/export_04112016
#Folder location where existing /db/oim-config.xml will be exported
metadata_files=/db/oim-config.xml
Step 2: Go to $MW_HOME/Oracle_IDM/server/bin & run ./weblogicExportMetadata.sh
[oracle@myhost bin]$ export OIM_ORACLE_HOME=/app/oracle/middleware/Oracle_IDM
[oracle@myhost bin]$ ./weblogicExportMetadata.sh
Below is the folder structure once the export is done successfully:
Step 3: Modify the oim-config.xml file as suggested under the Solution section above, and place it under /tmp/import_04112016/db
Step 4: Go to /app/oracle/middleware/Oracle_IDM/server/bin & run ./weblogicImportMetadata.sh
[oracle@myhost bin]$ export OIM_ORACLE_HOME=/app/oracle/middleware/Oracle_IDM
[oracle@myhost bin]$ ./weblogicImportMetadata.sh
Step 5: Verify the changes using Step 2.
Now, create the GTC again using the standard steps. If the issue persists, restart Admin and OIM-managed server after clearing the temp cache directory.
As always, if you have any questions regarding this process or our provided solution, please do not hesitate to post a comment below, and our team will get back to you.