Issue : Error while creating new User in 11i system integrated with OID/SSO “ORA-20001 unable to call fnd_ldap_wrapper.create_user due to folowing reason : An unexpected error occurred. Please contact System Administrator”
Instance Configuration : Apps 11i with OID/SSO Integration (one way Integration from Apps 11i to OID)
Looking at error message “unable to call fnd_ldap_wrapper” its clear that issue is with LDAP (Lightweight Directory Access Protocol) i.e. OID (Oracle Internet Directory) to know more about OID click here
User Provisioning & Synchronization : For those who are new to OID or integration of Apps (11i/R12) with OID/SSO – ODISRV (Oracle Directory Integration Service) is service/sub component in OID (Oracle Internet Directory) which is responsible for User Provisioning and Synchronization between Oracle Internet Directory (Oracle’s implementation of LDAP Server) and Oracle E-Business Suite (11i/R12) + other Oracle Application like Portal, Collaboration Suite here and here
There are three servers/processes in OID
a) oidldapd – LDAP daemon
b) oidrepld – OID replication Server
c) odisrv – Directory Integration Server
.
Looking at error message fnd_ldap_wrapper.create_user its easy to guess that We need to focus on LDAP (OID in our case)
1. First thing to do is check if OID (Oracle Internet Directory) is up and running
“opmnctl status” If OID is up and running, next step is to check if ODI Server (Directory Integration) is up and running. There are two ways to check itCheck 1 from log files : Check ODI Server (Oracle Directory Integration Server)
$ORACLE_HOME/ldap/log/odisrvXX.log (OID Home)
$ORACLE_HOME/ldap/odi/log/AppsName_cn=Common,cn=Products,cn=OracleContext_I.aud
$ORACLE_HOME/ldap/odi/log/AppsName_cn=Common,cn=Products,cn=OracleContext_I.trc
where AppsName is name you used during Apps Integration with OID
Check 2 from Process table : Check OID process in process table ODS.ODS_PROCESS
SQL> select instance, pid, serverid, configset, state from ODS.ODS_PROCESS;
INSTANCE PID SERVERID CONFIGSET STATE
———- ———- ———- ———- ———-
1 19061 2 0 2
1 0 7 0 1
Server ID 2 means LDAP Server
Server ID 7 with config set 0 means ODI(or DIP – Directory Integration and Provisioning) Server for Provisioning
Server ID 7 with config set 1 means ODI (or DIP- Directory Integration and Provisioning) Server for Synchronization
State
0 = stop, 1 = start, 2 = running, 3 = restart, 4 = shutdown 5= failed over (if using HA)
This clearly indicates that there is some problem during start of ODI Server in above example.
.
Fix :
1) Shutdown OID using : opmnctl stopall (Oracle Process Manager and Notification Server, OPMN strat OIDMON which in turn calls OIDCTL to start/stop OID Processes)
2) Take backup of existing ods_process table
SQL>create table ods.ods_process_bkp as select * from ods.ods_process;
3) Truncate table ods_process
SQL>truncate table ods.ods_process;
4) Restart OID ; opmnctl startall
5) Check logs $ORACLE_HOME/ldap/log/odisrvXX.log
If you don’t see any updates in $ORACLE_HOME/ldap/log/odisrvXX.log
then start ODI Server manually using OIDCTL (OID Control utility)
oidctl connect=<tns_alias_for_db> server=ODISRV instance=1 host=<hostname> configset=0 flags=”port=oid_port” start
oidctl connect=<tns_alias_for_db> server=ODISRV instance=2 host=<hostname> configset=1 flags=”port=oid_port” start
Note* There could be other reasons for above error message and above example is one of them.
References