How to Check WebADI Upload Progress in Oracle EBS 12.2
Understanding the Flow
When a user uploads via WebADI, it goes through these layers in order:
BNE_USER_SESSIONS → BNE_UPLOADED_DATA → BNE_UPLOADS → FND_CONCURRENT_REQUESTS → V$SESSION
1. Check If a WebADI Session Is Active
SELECT fus.user_session_id,
fu.user_name,
fus.creation_date,
fus.last_update_date,
fus.expired
FROM bne_user_sessions fus,
fnd_user fu
WHERE fus.user_id = fu.user_id
AND fus.expired = 'N'
AND fus.creation_date > SYSDATE - 1/24
ORDER BY fus.creation_date DESC;
2. What File Was Uploaded and by Whom
SELECT buc.upload_id,
fu.user_name,
buc.integrator_code,
buc.upload_file_name,
buc.status,
buc.creation_date,
ROUND((SYSDATE - buc.creation_date)*24*60,2) elapsed_mins
FROM bne_uploaded_data buc,
fnd_user fu
WHERE buc.user_id = fu.user_id
AND buc.creation_date > SYSDATE - 1/24
ORDER BY buc.creation_date DESC;
3. Row-Level Progress — How Many Rows Processed
SELECT bu.upload_id,
fu.user_name,
bu.integrator_code,
bu.status,
bu.num_rows total_rows,
bu.num_rows_processed processed,
bu.num_rows_errored errored,
bu.num_rows - bu.num_rows_processed remaining,
ROUND((bu.num_rows_processed /
NULLIF(bu.num_rows,0))*100, 1) pct_complete,
bu.creation_date started_at,
bu.last_update_date last_activity,
ROUND((SYSDATE - bu.creation_date)*24*60, 2) elapsed_mins
FROM bne_uploads bu,
fnd_user fu
WHERE bu.user_id = fu.user_id
AND bu.creation_date > SYSDATE - 2/24
AND bu.status IN ('U','P','I')
ORDER BY bu.creation_date DESC;
Status codes:
Code
Meaning
U
Upload in progress
P
Processing
I
Imported to interface table
S
Successfully completed
E
Errored
4. Concurrent Request Triggered by WebADI
SELECT fcr.request_id,
fu.user_name,
fcp.user_concurrent_program_name program_name,
fcr.phase_code,
fcr.status_code,
fcr.actual_start_date,
ROUND((SYSDATE - fcr.actual_start_date)*24*60,2) running_mins
FROM fnd_concurrent_requests fcr,
fnd_concurrent_programs_tl fcp,
fnd_user fu
WHERE fcr.concurrent_program_id = fcp.concurrent_program_id
AND fcp.language = 'US'
AND fcr.requested_by = fu.user_id
AND fcr.phase_code = 'R'
AND fcr.actual_start_date > SYSDATE - 1/24
AND (fcp.user_concurrent_program_name LIKE '%Web ADI%'
OR fcp.user_concurrent_program_name LIKE '%WEBADI%'
OR fcr.argument_text LIKE '%BNE%')
ORDER BY fcr.actual_start_date DESC;
5. What Is the DB Session Doing
SELECT s.sid,
s.serial#,
s.username,
s.module,
s.action,
s.status,
s.event,
s.seconds_in_wait,
sq.sql_text
FROM v$session s,
v$sql sq
WHERE s.sql_id = sq.sql_id(+)
AND s.username IS NOT NULL
AND (s.module LIKE '%BNE%'
OR s.program LIKE '%FNDWRR%'
OR s.action LIKE '%UPLOAD%')
AND s.status = 'ACTIVE'
ORDER BY s.logon_time DESC;
6. Check Upload Errors
SELECT bue.upload_id,
bue.row_num,
bue.error_code,
bue.error_text,
bue.creation_date
FROM bne_upload_errors bue
WHERE bue.upload_id IN (
SELECT upload_id FROM bne_uploads
WHERE creation_date > SYSDATE - 2/24
)
ORDER BY bue.creation_date DESC, bue.row_num;
Quick Reference
What you need
Query target
Session active?
BNE_USER_SESSIONS
File details
BNE_UPLOADED_DATA
Row progress / % complete
BNE_UPLOADS
Concurrent request
FND_CONCURRENT_REQUESTS
DB session / SQL running
VSESSION + VSQL
Error details
BNE_UPLOAD_ERRORS
Note: If status is stuck at I (Imported), the rows reached the interface table but the import program hasn't run — check concurrent manager capacity. If stuck at U or P with no LAST_UPDATE_DATE movement, check v$session for blocking events.