Let me share a comprehensive perspective on optimizing treasury cash positioning based on your requirements:
Groovy Script Optimization Techniques:
The performance degradation you’re experiencing is typical when Groovy scripts scale beyond moderate data volumes. Key optimization strategies:
-
Query Optimization: Replace row-by-row ViewObject iterations with bulk queries. Use WHERE clauses to filter at database level, not in Groovy loops. For 15 entities, query all relevant transactions in one call with entity filter, then process in memory.
-
Caching Strategy: Cache static reference data (exchange rates, netting rules, account hierarchies) at script initialization. Don’t query reference data inside transaction loops. For daily cash positioning, exchange rates change once per day - cache them for the entire script execution.
-
Batch Processing: Instead of calculating positions transaction-by-transaction, group transactions by entity and currency, then perform aggregate calculations. This reduces computation cycles from thousands to dozens.
-
Parallel Processing Limitations: Groovy in Fusion runs in a single thread. You can’t parallelize within one script execution. This is a fundamental limitation for compute-intensive workloads.
Treasury REST API Capabilities:
Fusion Treasury REST APIs offer significant advantages for data-intensive operations:
- Pagination Support: Retrieve large datasets efficiently with controlled page sizes
- Filtering & Projection: Request only needed fields, reducing payload size and network overhead
- Asynchronous Processing: Trigger long-running calculations asynchronously and poll for results
- Rate Limits: Be aware of API throttling - typically 10 requests/second per user
For your 15-entity consolidation, REST APIs would allow external processing (Java application, cloud function) with better performance control. However, this adds infrastructure complexity.
VBCS Embedded in Fusion Applications:
VBCS provides an excellent middle ground for treasury calculations:
- Client-Side Processing: JavaScript calculations run in browser, offloading Fusion servers
- REST API Integration: Built-in service connections to Fusion REST endpoints with automatic authentication
- Embedded Experience: Deploy VBCS apps within Fusion UI using embedded mode - users don’t leave Fusion
- State Management: Better handling of intermediate calculation states compared to Groovy
For multi-entity consolidation, VBCS can fetch entity data in parallel (JavaScript promises), perform client-side aggregation, and display results immediately. This architecture scales better than server-side Groovy.
OTBI Performance Monitoring:
Integrating custom calculations with OTBI requires strategic data persistence:
- Custom Objects: Create custom treasury position objects to store calculation results. These automatically appear in OTBI subject areas after metadata refresh.
- Subject Area Extension: Extend Cash Management subject area to include custom calculation fields
- Incremental Refresh: Configure OTBI to refresh custom data incrementally (hourly/daily) rather than full refresh
- Dashboard Design: Use OTBI’s summary functions rather than detail-level calculations for dashboard performance
Multi-Entity Consolidation Patterns:
Based on your 15-entity scenario, recommended architecture:
- Pre-Aggregation Layer: Scheduled process (nightly) pre-calculates entity-level positions and stores in custom tables
- Real-Time Adjustments: Groovy script or VBCS app applies intraday transaction deltas to pre-calculated positions
- Netting Engine: Separate service handles complex netting rules, called by main consolidation logic
- Currency Conversion: Cache daily rates, apply consistently across all entities
- OTBI Integration: Write final consolidated positions to custom objects for reporting
Recommendation for Your Situation:
Given 15-20 minute processing times, I recommend a phased approach:
Phase 1 (Immediate): Optimize existing Groovy scripts with bulk queries and caching. Target 50% performance improvement (7-10 minutes). This buys time for architectural changes.
Phase 2 (3-6 months): Implement VBCS application for consolidation UI with REST API backend for data retrieval. Move heavy calculations to client-side JavaScript. Embed VBCS in Fusion for seamless experience.
Phase 3 (6-12 months): Build pre-aggregation framework with scheduled processes for overnight consolidation. VBCS app displays pre-calculated positions with real-time adjustments.
This approach balances immediate performance gains with sustainable long-term architecture. The VBCS path is more maintainable than pure Groovy and doesn’t require external infrastructure like standalone Java applications.
For OTBI visibility, implement custom treasury position objects in Phase 2, ensuring your calculations are visible in standard cash management dashboards without additional development.