Revenue recognition workflow delays period close process in Revenue Management

Our revenue recognition workflow is causing significant delays during month-end close. The workflow processes revenue schedules for subscription contracts, but it’s taking 6-8 hours to complete during period close, which is unacceptable.

The workflow runs as a single batch job processing about 15,000 revenue schedules sequentially. I’ve noticed CPU utilization stays around 30-40% during execution, suggesting the process isn’t fully utilizing available resources. Our period close window is only 4 hours, so this bottleneck is forcing us to delay financial reporting.

Are there configuration options to parallelize the workflow execution or optimize batch processing? We’re on 23C update and need to reduce processing time by at least 50%.

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.

The low CPU utilization indicates the workflow is running in single-threaded mode. Check your batch processing configuration under Setup and Maintenance > Manage Revenue Recognition Parameters. Look for the ‘Concurrent Processing’ settings and verify if parallel processing is enabled. You should also check the ESS job configuration to see how many worker threads are allocated to the revenue recognition process.

Tested this on Oracle Fusion Revenue Management 23D with 18,000 schedules — setting Degree of Parallelism to 6 and Batch Commit Size to 500 cut our period close from 4 hours to under 45 minutes.

I checked the parameters and found that ‘Enable Parallel Processing’ is set to ‘No’. When I try to change it to ‘Yes’, I see options for ‘Degree of Parallelism’ ranging from 2 to 16. What’s the recommended setting for processing 15,000 schedules? Also, are there any risks to enabling this during an active accounting period, or should I wait until next month?

Start with a degree of parallelism of 4-6 for your volume. Don’t go too high initially as it can cause database contention. You can safely enable this during an active period, but I’d recommend testing first with a subset of data using the ‘Process Revenue by Contract Range’ option. Run a test with 1,000 contracts using parallel processing and compare the execution time. Also check your workflow scheduling - if it’s running during peak hours when other batch jobs are active, that could contribute to the slowness.

Good point about scheduling. I checked and the revenue recognition workflow is currently scheduled to start at 18:00, which conflicts with our GL consolidation job and several AP batch processes. That’s probably contributing to the resource contention. Should I reschedule the revenue workflow to run earlier in the day, or is there a better approach to manage these competing batch processes?

You should implement job chaining and prioritization. Set up the revenue recognition workflow as a high-priority job and use the ESS schedule dependencies to ensure it runs before the consolidation job. Also consider breaking the workflow into multiple smaller batches that can run in parallel during different time windows. For example, split by contract type or business unit, with each batch processing independently.

Beyond parallel processing, you need to look at performance tuning parameters. The default batch commit size for revenue recognition is 100 records, which causes frequent database commits and slows down processing. Increasing the commit size to 500-1000 records can significantly improve throughput. Also check if you have any custom validation rules or workflow extensions that are executing for each revenue schedule - those can be major performance bottlenecks.