Monday, January 12, 2015

EBS R12 -- unexpected error when Attempting to Login -- java.lang.NullPointerException

Really unexpected... A login problem related with workflow..
In a manner, we can say that, we cant login because of a little workflow problem.
It has been 6 years since I saw a similar thing in an Production environment...  It was year 2007, and an Apex application stopped working because of a problem in the corporate Mail Server.. The problem was obviously caused by a design bug.. Simply it meant that " if you cant send a mail , then do not work" :)
This  java.lang.NullPointerException which we may encounter in login, seems to be coming from the same family..
Anyways, if we face with this, we will end up with the following;

When we take a look at the call stack(by just clicking the here link in "click here for exception") , we can understand the problem better, because we will see Worklist objects there.

Like for example : NtfWorklist and wf.worklist..

So, just a little thinking will make us see the cause here.. It is caused by the work list which is displayed in the Home Page .. Work list is a workflow dependent UI object and any problem in workflow may affect it.. Likewise, a problem in a UI object affects the application.. Lastly a problem in the login phase of the application affects almost all the users :)

Okay.. Lets take a look at the solution for this problem;
The Concurrent Program : Synchronize WF LOCAL Tables and restart Apache..
Yes, that 's the one and only solution..

On the other hand; there is one more problem.. We cant login, so how will you run this concurent program?
The answers is;

Run the concurrent program "Synchronize WF LOCAL Tables" using the CONCSUB utility
Run the concurrent program "Synchronize WF LOCAL Tables" using PLSQL.

Lastly , I will give an example for running "Synchronize WF LOCAL Tables" using PLSQL.

select *
from wf_local_user_roles
--where user_name like 'SYSADMIN%'
where role_name like '%SYSTEM_ADMINISTRATOR|STANDARD%'

select *
from fnd_Responsibility_vl
where responsibility_id=20420

select *
from fnd_concurrent_programs_vl
where user_CONCURRENT_PROGRAM_NAME like 'Sync%WF%'

select *
from fnd_application_vl
where application_id=0

select *
from fnd_concurrent_requests
where concurrent_program_id=42845

 l_req_id number;
 FND_GLOBAL.apps_initialize (0, 20420, 1);
      l_Req_id:=    fnd_request.submit_request (application   => 'FND',
                                     program       => 'FNDWFLSC',
                                     sub_request   => FALSE,
                                     argument1     => 'ALL',
                                     argument2     => '0',
                                     argument3     => 'LOGGING',
                                     argument4     => null,
                                     argument5     => 'Y'  );
That 's all.. 
Restart Apache and you are good to go..

No comments :

Post a Comment