Oracle Workflow Mailer (also called the Notification Mailer) is a Java-based service within the Concurrent Manager infrastructure. It polls the WF_NOTIFICATIONS table for notifications with status OPEN and sends them via SMTP. It also processes inbound email responses (for email-based approvals) via IMAP/POP3.
The Mailer runs as a Concurrent Manager service: Workflow Mailer (internal name: FNDWFMLRSVC). It connects to:
WF_DEFERRED-- Check if Workflow Mailer is active
SELECT
q.concurrent_queue_name,
q.running_processes,
q.max_processes,
q.description
FROM apps.fnd_concurrent_queues q
WHERE q.concurrent_queue_name = 'FNDWFMLRSVC';
-- Check service component status
SELECT
component_name,
component_status,
startup_mode,
inbound_agent,
outbound_agent
FROM apps.fnd_svc_components
WHERE component_type = 'WF_MAILER';
-- Count unsent notifications
SELECT
mail_status,
COUNT(*) AS cnt,
MIN(begin_date) AS oldest
FROM apps.wf_notifications
WHERE status = 'OPEN'
AND notification_preference NOT IN ('DISABLED', 'SUMMARY')
GROUP BY mail_status
ORDER BY cnt DESC;
-- Check WF_DEFERRED queue depth
SELECT COUNT(*) AS deferred_count
FROM apps.wf_deferred
WHERE state = 0; -- 0 = ready, 1 = expired, 2 = undeliverable
-- Find the latest Workflow Mailer log file
-- As applmgr OS user:
-- ls -lt $APPLLOG/FNDWFMLRSVC*.log | head -5
-- tail -300 $APPLLOG/FNDWFMLRSVC_PID.log
-- Key error patterns to look for:
-- "Authentication failed" or "535 Authentication credentials invalid"
-- "Connection refused" or "Connection timed out" on SMTP port
-- "SSL/TLS required" - SMTP server requires TLS, Mailer not configured for it
-- "ORA-01017" - APPS password mismatch
-- "Mailer went to ERROR state"
-- As applmgr OS user, test SMTP connectivity:
-- telnet your-smtp-server.com 25
-- (or port 587 for STARTTLS, port 465 for SSL)
-- Expected response if SMTP is reachable:
-- 220 your-smtp-server.com ESMTP ready
-- If connection times out: firewall rule needed from apps tier to SMTP server
-- If connection refused: SMTP server is down or wrong port
Navigate to: System Administrator → Oracle Applications Manager → Workflow → Notification Mailer
Key fields to verify:
-- Check current Workflow Mailer SMTP settings
SELECT
c.component_name,
p.parameter_name,
p.parameter_value
FROM apps.fnd_svc_comp_params_b p
JOIN apps.fnd_svc_components c ON c.component_id = p.component_id
WHERE c.component_type = 'WF_MAILER'
AND p.parameter_name IN (
'SMTP_HOST', 'SMTP_PORT', 'SMTP_USERNAME',
'FROM', 'REPLY_TO', 'USE_SSL'
)
ORDER BY p.parameter_name;
-- Update SMTP host (example)
UPDATE apps.fnd_svc_comp_params_b
SET parameter_value = 'smtp.yourdomain.com'
WHERE parameter_name = 'SMTP_HOST'
AND component_id = (
SELECT component_id FROM apps.fnd_svc_components
WHERE component_type = 'WF_MAILER'
);
COMMIT;
-- Check notifications stuck in ERROR or DEFERRED state
SELECT
n.notification_id,
n.message_type,
n.message_name,
n.recipient_role,
n.mail_status,
n.begin_date
FROM apps.wf_notifications n
WHERE n.mail_status = 'MAIL'
AND n.status = 'OPEN'
AND n.begin_date < SYSDATE - 1 -- stuck more than 1 day
ORDER BY n.begin_date
FETCH FIRST 20 ROWS ONLY;
-- Reset stuck notifications so Mailer retries them
UPDATE apps.wf_notifications
SET mail_status = 'MAIL'
WHERE status = 'OPEN'
AND mail_status = 'SENT' -- marked sent but not actually delivered
AND begin_date < SYSDATE - 7;
COMMIT;
-- For very old notifications: mark as sent to stop retry loops
-- (prevents sending stale notifications to users after fixing Mailer)
UPDATE apps.wf_notifications
SET mail_status = 'SENT'
WHERE status = 'OPEN'
AND mail_status = 'MAIL'
AND begin_date < SYSDATE - 30; -- older than 30 days
COMMIT;
-- Deactivate Workflow Mailer
UPDATE apps.fnd_concurrent_queues
SET max_processes = 0
WHERE concurrent_queue_name = 'FNDWFMLRSVC';
COMMIT;
-- Wait 30 seconds, then reactivate
UPDATE apps.fnd_concurrent_queues
SET max_processes = 1
WHERE concurrent_queue_name = 'FNDWFMLRSVC';
COMMIT;
-- Confirm Mailer is running
SELECT concurrent_queue_name, running_processes, max_processes
FROM apps.fnd_concurrent_queues
WHERE concurrent_queue_name = 'FNDWFMLRSVC';
-- Monitor notification queue being processed
SELECT mail_status, COUNT(*) AS cnt
FROM apps.wf_notifications
WHERE status = 'OPEN'
GROUP BY mail_status;
-- Test: send a test notification from EBS
-- System Admin → Workflow → Notification Mailer → Test
-- Or submit the "Workflow Background Process" concurrent request
-- Check Mailer log for "Message sent successfully" entries
WF_DEFERRED queue depth weeklyTuneVault monitors Workflow Mailer status and notification queue depth on every health check run, with alerts before it becomes a user-facing problem.
Run a Free Health Check →