\!DOCTYPE html>
The Output Post Processor (OPP) is a specialised Concurrent Manager service responsible for post-processing output from Concurrent Request runs — primarily PDF and XML Publisher (BI Publisher) output generation. When a request completes, OPP converts XML output to the final delivery format (PDF, HTML, Excel) using BI Publisher templates.
OPP failures affect any report using BI Publisher / XML Publisher in EBS. Users see requests completing with "Warning" or "Error" status even though the underlying concurrent request ran successfully.
Common causes of OPP failures:
$APPLPTMP — if the filesystem is full, all processing stops.OPP service deactivated or Post Processing Agent not respondingFNDOPP log: java.lang.OutOfMemoryError-- OPP manager status (check ACTIVE_PROCESSES)
SELECT
cm.concurrent_queue_name,
cm.description,
cm.max_processes,
cm.running_processes,
cm.worker_count
FROM apps.fnd_concurrent_queues cm
WHERE cm.concurrent_queue_name = 'FNDOPP';
-- Count requests waiting for OPP post-processing
SELECT COUNT(*)
FROM apps.fnd_concurrent_requests
WHERE phase_code = 'C' -- Completed
AND status_code = 'C' -- Completed (waiting for post-processing)
AND print_group IS NOT NULL;
-- Detail: top requests in OPP queue
SELECT
r.request_id,
r.concurrent_program_id,
p.user_concurrent_program_name,
r.requested_start_date,
r.actual_completion_date,
r.status_code,
r.completion_text
FROM apps.fnd_concurrent_requests r
JOIN apps.fnd_concurrent_programs_vl p
ON p.concurrent_program_id = r.concurrent_program_id
AND p.application_id = r.program_application_id
WHERE r.status_code IN ('D', 'Z') -- Pending post-processing
ORDER BY r.actual_completion_date
FETCH FIRST 20 ROWS ONLY;
-- Find latest OPP log file on the apps tier
-- As applmgr OS user:
-- ls -lt $APPLLOG/FNDOPP*.log | head -5
-- tail -200 $APPLLOG/FNDOPP_PID.log
-- Look for these key patterns:
-- "java.lang.OutOfMemoryError" → heap issue, increase JVM memory
-- "ORA-01017" → APPS password authentication failed
-- "UNABLE_TO_GET_DATA" → template not found or corrupted
-- "Deactivated by Administrator" → manually deactivated
-- Check APPLPTMP filesystem usage (as applmgr OS user)
-- echo $APPLPTMP
-- df -h $APPLPTMP
-- Clean old temp files if disk is full
-- find $APPLPTMP -name "*.tmp" -mtime +1 -delete
-- find $APPLPTMP -name "*.pdf" -mtime +7 -delete
-- Find requests stuck in post-processing for more than 30 minutes
SELECT
r.request_id,
p.user_concurrent_program_name,
r.actual_completion_date,
ROUND((SYSDATE - r.actual_completion_date) * 1440, 0) AS mins_waiting,
r.status_code
FROM apps.fnd_concurrent_requests r
JOIN apps.fnd_concurrent_programs_vl p
ON p.concurrent_program_id = r.concurrent_program_id
AND p.application_id = r.program_application_id
WHERE r.status_code = 'Z'
AND (SYSDATE - r.actual_completion_date) * 1440 > 30
ORDER BY r.actual_completion_date;
-- Mark a specific stuck request as errored to unblock the queue
-- Replace 12345 with the actual request_id
UPDATE apps.fnd_concurrent_requests
SET status_code = 'E', completion_text = 'Manually cleared - OPP recovery'
WHERE request_id = 12345
AND status_code = 'Z';
COMMIT;
Preferred method for production:
-- Deactivate OPP via SQL
UPDATE apps.fnd_concurrent_queues
SET running_processes = 0, max_processes = 0
WHERE concurrent_queue_name = 'FNDOPP';
COMMIT;
-- Wait 30 seconds for processes to stop, then reactivate
UPDATE apps.fnd_concurrent_queues
SET max_processes = 1 -- or your target thread count
WHERE concurrent_queue_name = 'FNDOPP';
COMMIT;
-- As applmgr OS user, source EBS environment first
-- . /u01/oracle/ebs/EBSapps.env run
-- Stop OPP
-- cmctl stop FNDOPP
-- Verify it stopped
-- ps -ef | grep FNDOPP
-- Start OPP
-- cmctl start FNDOPP
The default OPP thread count of 1 is insufficient for environments with heavy BI Publisher usage. Recommended values:
-- Increase OPP max processes
UPDATE apps.fnd_concurrent_queues
SET max_processes = 5, -- target thread count
worker_count = 5
WHERE concurrent_queue_name = 'FNDOPP';
COMMIT;
-- Restart OPP for the change to take effect (use method from Step 5)
-- Find OPP JVM args profile option
SELECT profile_option_value
FROM apps.fnd_profile_option_values
WHERE profile_option_id = (
SELECT profile_option_id
FROM apps.fnd_profile_options
WHERE profile_option_name = 'FND_OPP_USE_JVM'
);
-- In EBS: System Admin → Profiles → System
-- Profile: FND: Output Post Processor JVM Parameters
-- Add: -Xmx1024m (increase from default 512m to 1024m)
-- Confirm OPP is running with correct thread count
SELECT
concurrent_queue_name,
running_processes,
max_processes,
worker_count
FROM apps.fnd_concurrent_queues
WHERE concurrent_queue_name = 'FNDOPP';
-- Test: submit a simple BI Publisher report and verify it completes
-- Check: status_code should move from Z to C (completed) within a minute
SELECT request_id, status_code, completion_text
FROM apps.fnd_concurrent_requests
WHERE request_id = &YOUR_TEST_REQUEST_ID;
-Xmx1024m)$APPLPTMP filesystem monitored and purged weeklyTuneVault's EBS health checks include OPP queue depth, process count, and error rates — visible on every health check run.
Run a Free Health Check →