Let me provide a comprehensive solution addressing all aspects of your performance issue.
1. Batch Processing Configuration:
The single-threaded execution is your primary bottleneck. Here’s how to optimize:
Navigate to: Setup and Maintenance > Manage Revenue Management System Options
Enable parallel processing:
- Enable Parallel Processing: Yes
- Degree of Parallelism: Start with 6 (for 15,000 schedules)
- Batch Commit Size: 500 (increase from default 100)
- Worker Thread Pool: 8
Calculation for parallelism degree:
Optimal Threads = (Total Records / Target Time) / Records per Thread per Hour
15,000 / 2 hours target / 1,250 per hour = 6 threads
2. Parallel Workflow Execution:
Implement multi-batch processing strategy:
a) Split by Business Unit:
- Create separate scheduled processes for each major business unit
- Configure each to run in parallel with dedicated resources
- Example: BU_AMERICAS (6,000 schedules), BU_EMEA (5,000), BU_APAC (4,000)
b) Configure ESS Job Parameters:
Job: Revenue Recognition Workflow
Priority: High (90)
Max Runtime: 2 hours
Retry Count: 1
Parallel Instances: 3
c) Set up job submission:
- Use Process Automation to submit multiple instances simultaneously
- Each instance processes a different data partition
- Coordinate completion using job sets
3. Workflow Scheduling Optimization:
Resolve resource contention:
a) Optimal Schedule:
- Revenue Recognition: 14:00 (before period close activities)
- GL Consolidation: 17:00 (after revenue completes)
- AP Batch: 20:00 (after consolidation)
b) Implement job dependencies:
Revenue Recognition Job → Triggers → GL Consolidation
GL Consolidation → Triggers → Period Close Validation
c) Configure resource allocation:
- Navigate to: Enterprise Scheduler Service > Resource Manager
- Create resource group: “Period_Close_High_Priority”
- Allocate 60% CPU and memory to this group during close window
- Assign revenue recognition job to this group
4. Performance Tuning Parameters:
a) Database-level optimization:
- Increase PGA memory allocation for revenue recognition sessions
- Configure in: Database Configuration > Memory Parameters
REVENUE_BATCH_PGA_LIMIT = 2GB
REVENUE_BATCH_TEMP_SPACE = 5GB
b) Workflow-specific tuning:
- Navigate to: Manage Revenue Recognition Parameters
- Set these parameters:
- Enable Bulk Processing: Yes
- Use Database Arrays: Yes
- Array Size: 1000
- Disable Logging: Yes (for production runs)
- Skip Validation: No (keep data integrity checks)
c) Commit frequency optimization:
Batch Size: 500 schedules per commit
Checkpoint Interval: Every 2,500 schedules
This reduces commit overhead while maintaining recoverability
5. Monitoring and Validation:
Set up real-time monitoring:
- Create custom dashboard in Analytics
- Track metrics:
- Schedules processed per minute
- CPU utilization by worker thread
- Database wait events
- Memory consumption
Diagnostic query to monitor progress:
SELECT worker_id, schedules_processed,
processing_rate, estimated_completion
FROM revenue_workflow_monitor
WHERE batch_id = :current_batch
AND status = 'RUNNING';
6. Testing Strategy:
a) Phase 1 - Baseline Test:
- Run current configuration on 1,000 schedules
- Document: Execution time, CPU usage, error rate
b) Phase 2 - Parallel Processing Test:
- Enable parallelism with degree=4
- Test on 5,000 schedules
- Compare metrics to baseline
- Verify data accuracy
c) Phase 3 - Full Volume Test:
- Run with degree=6 on all 15,000 schedules
- Execute during off-peak hours first
- Monitor for database contention or locking issues
d) Phase 4 - Production Validation:
- Schedule during next month-end close
- Have rollback plan ready
- Monitor continuously during execution
7. Advanced Optimization:
If you still need further improvement:
a) Implement incremental processing:
- Only process schedules modified since last run
- Configure: Process Revenue > Incremental Mode
- Reduces volume by 60-70% for typical months
b) Archive old revenue schedules:
- Move completed schedules older than 2 years to archive tables
- Reduces active dataset size
- Improves query performance
c) Index optimization:
- Ensure proper indexes exist on:
- Contract_id + Period_name
- Revenue_schedule_id + Status
- Business_unit_id + Accounting_date
Expected Results:
With these optimizations:
- Current: 6-8 hours sequential processing
- After parallel processing: 2-3 hours (6 threads)
- After scheduling optimization: 1.5-2 hours (reduced contention)
- After tuning parameters: 1-1.5 hours (improved throughput)
This should achieve your target of 50%+ reduction in processing time while maintaining data integrity and accuracy.
This draft is based on general Oracle Fusion Cloud knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.