Wednesday, April 22, 2015

EBS R12 -- OID integrated EBS R12 -- ORA-20001: Unabled to call fnd_ldap_wrapper.update_user

If your EBS is integrated with OID , you may encouınter "ORA-20001: Unabled to call fnd_ldap_wrapper.update_user" error. This error can be seen when you are trying to update a user using User define Form.. For example: when giving an end date to a user account..

The full error message will appear as something like the following;

Unabled to call fnd_ldap_wrapper.update_user due to the following reason:
ORA-20001: Unabled to call fnd_ldap_wrapper.update_user due to the following reason:
An unexpected error occurred. Please contact your system Administrator. (USER_NAME=XXXX). (USER_NAME=XXXX)

If that is the case; enable the FND Debug logging for a user using the relevant profiles (user level) . After enabling the logging, relogin to Oracle Apps and reproduce the problem.
After reproducing the problem, query the fnd_log_messages, you will see the underlying problem there..
While using FND Debug is a preffered way for dealing this kind of problems, I can say that ; most of the time, this type errors are caused by EBS not being able to make OID connections.. 
I mean if EBS can not connect to OID , this error will be generated..

Here is a real life example of it:
In this example, the problem is caused by the underlying error : LDAP error : ORA-31203: DBMS_LDAP: PL/SQL - Init Failed... 
In this case, the cause of the ORA-31203 was a firewall problem..
I mean, as this is a PLSQL which run in EBS database, the corresponding database user must have the required access to connect to the OID host using its ldap port. 
The things which can prevent this connection could be a lack in the ACL definitions or a Firewall.
Anyways, for this specific case the solution was in the firewall..  We request the System Admin to configure the firewall as,  EBS database was required to reach the OID server using its Ldap port..

Another example for this problem can be a lack in the configuration..
I mean we may  the same error : LDAP error : ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.., but the solution may be different..

Lets have a quick look at the process ;
That is ; DBMS_LDAP tries to init an LDAP session using OID host and OID port stored in the FND_USER_PREFERENCES table .. 
So, basically If the host and port values are empty or wrong there, then this will result DBMS_LDAP being not able to initalize the LDAP session and  you will see Init Failed errors in the fnd_log_messages table.

If that 's the case;
The following sql can be used to check the configuration.. This sql should return the OID host and port accordingly.

select PREFERENCE_NAME, PREFERENCE_VALUE from FND_USER_PREFERENCES where user_name like '%INTERNAL%' and module_name = 'LDAP_SYNCH' and PREFERENCE_NAME in ('HOST','PORT');

If this sql can not return the values, then I can say that you have a lack in the EBS-OID configuration..
In this case; runinng txkrun.pl will fix this. txkrun.pl will insert the HOST and PORT into the fnd_user_preferences table and the issue will be fixed.. This was also a real life example bytheway ..

No comments :

Post a Comment