Error adding new User (11i) – unable to call fnd_ldap _wrapper .create_user

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

  • 812393.1  Cannot Create New Surrogate Supplier User
  • 470896.1  Receiving ‘Unable To Call Fnd_ldap_wrapper.Create_user’ Error When Creating A User In Core Forms On a SSO/OID Enabled EBS Environment
  • 429497.1  User Creation Fails in Oracle E-Business Suite if the User all ready exists in Oracle Internet Directory
  • 566998.1  ODISRV is no longer synchronizing entries
  • 329808.1  How to Troubleshoot OID
  • OID basics

About the Author Atul Kumar

Oracle ACE, Author, Speaker and Founder of K21 Technologies & K21 Academy : Specialising in Design, Implement, and Trainings.

follow me on:

Leave a Comment:

5 comments
santosh says May 22, 2009

Hi,

After I truncated ODS.ODS_PROCESS table and gave opmnctl startall
OC4J is not starting and also OID
Only http is starting
Please help me urgently
Our UAT is going.

Reply
Atul Kumar says May 22, 2009

For OC4J , OID should be up and for OID db, and db listener should be up.

Check db, db listener and oid logs.

Check oidctl logs in $oh/opmn/logs and $oh/ldap/logs

Reply
santosh says May 22, 2009

oidctl connect=dmapst server=ODISRV instance=1 host=ftdcshlstora01.ftdc.cummins.com configset=0 start
NLS_LANG not set in environment
Setting NLS_LANG to AMERICAN_AMERICA.AL32UTF8
[gsdsiConnect] ORA-0,
Could not connect to the Database.
please help

Reply
Yury says June 14, 2009

Hi Atul,

In order to make a quick check if EBS can talk to OID I use the following PL/SQL call from EBS side. I might help quicker to narrow down the problem.
Used in 11i/OID integration case.

set serveroutput on feedb off
DECLARE
v_fnd_user binary_integer;
v_oid binary_integer;
v_attribute varchar(4000) := ‘userpassword’;
v_date varchar2(20);
begin
— Call the procedure
fnd_ldap_wrapper.is_operation_allowed(p_direction => fnd_ldap_wrapper.G_EBIZ_TO_OID,
p_entity => fnd_ldap_wrapper.G_IDENTITY,
p_operation => fnd_ldap_wrapper.G_MODIFY,
x_attribute => v_attribute,
x_fnd_user => v_fnd_user,
x_oid => v_oid);

select to_char(sysdate,’YYYYMMDD_HH24MISS’) into v_date from dual;
if v_oid = 1 then
dbms_output.put_line(v_date||’OID SUCCESS’);
else
dbms_output.put_line(v_date||’ OID FAILURE’);
end if;
end;
/

Reply
» Unable to call fnd_ldap_wrapper . create_user / update_user ORA-20001 Online Apps DBA: One Stop Shop for Apps DBA’s says October 14, 2009

[…] This post covers steps on how to troubleshoot “Unable to call fnd_ldap_wrapper . create_user / update_user” issues. This is similar to issue I discussed here in May 2009 […]

Reply
Add Your Reply

Not found