Cause:
Incorrect data is present in the OPP queue table AQ$FND_CP_GSM_OPP_AQTBL_S, which occurs when the concurrent managers are not shutdown correctly.
A quick sql query shows orphaned OPP subscribers in APPLSYS.AQ$FND_CP_GSM_OPP_AQTBL_S, causing the select_random_subscriber routine to pick a non-running process.
Solution :
To resolve the issue test the following steps in a development instance and then migrate accordingly:
1. Find the active processes for OPP:
SQL> SELECT fcp.concurrent_process_id
FROM fnd_concurrent_queues fcq, fnd_concurrent_processes fcp
WHERE concurrent_queue_name = 'FNDCPOPP'
AND fcq.concurrent_queue_id = fcp.concurrent_queue_id
AND fcq.application_id = fcp.queue_application_id
AND fcp.process_status_code = 'A';
Output example:
CONCURRENT_PROCESS_ID
---------------------------------------
93557
93558
2. Find the OPP subscribers:
SQL> select name from APPLSYS.AQ$FND_CP_GSM_OPP_AQTBL_S;
The name in the table is the concurrent_process_id prefixed with 'OPP'.
The output should normally correspond to the output of first query: have the same number of records and have as name the concurrent_process_id of the running OPP processes prefixed by OPP
Output example:
NAME
------------------
OPP93558
OPP93557
OPP88933
OPP92625
3. If there are extra subscribers which are left from previous runs of OPP processes, unsubscribe them via the following command:
SQL> exec fnd_cp_opp_ipc.unsubscribe('<concurrent_process_id>');
Example:
SQL> exec fnd_cp_opp_ipc.unsubscribe('88933');
SQL> exec fnd_cp_opp_ipc.unsubscribe('92625');
4. Re-test some concurrent requests and confirm the post processing actions now complete successfully.