Our UDO dashboard for purchase management displays several KPI widgets tracking order volumes, pending approvals, and vendor performance metrics. The widgets were working fine until last week, but now they’re showing stale data from 5 days ago despite the underlying data being current.
The UDO dashboard config appears correct - refresh interval is set to 30 minutes and the Orchestrator job that feeds the data is running successfully every hour. Widget auto-refresh settings show enabled, and data source mapping points to the correct tables. Manual refresh from the dashboard UI doesn’t update the values either.
Checking the Orchestrator logs:
Orchestrator Job: PO_KPI_UPDATE - Status: Success
Execution Time: 2025-04-22 10:00:15
Records Processed: 847
The job completes without errors, but the dashboard widgets remain frozen at old values. Has anyone dealt with KPI widget data not refreshing despite successful Orchestrator execution? Could there be a caching layer or intermediate table that’s not being updated?
I’ve identified and resolved this exact issue multiple times with JDE 9.2.2 UDO dashboards. The problem involves a disconnect between your Orchestrator job execution and the widget refresh mechanism. Let me address each component:
UDO Dashboard Config Fix:
The 30-minute refresh interval you set applies only to the dashboard container, not individual widgets. Each KPI widget has its own refresh configuration that must be explicitly enabled. In the UDO Studio, edit each affected widget and check the Advanced Properties section. You need to set:
- autoRefresh: true
- refreshInterval: 1800000 (milliseconds for 30 min)
- refreshOnLoad: true
These properties are separate from the dashboard-level settings and often get reset during configuration changes.
Orchestrator Job Integration:
Your Orchestrator job shows success, but the issue is how it’s triggering the dashboard update. The job needs to explicitly call the UDO refresh API after updating data. Add this step to your Orchestrator workflow:
// Pseudocode - Add to Orchestrator job end:
1. Complete data processing (current 847 records)
2. Call REST endpoint: /udo/api/v1/dashboard/refresh
3. Pass dashboard ID and widget IDs in request body
4. Verify HTTP 200 response before job completion
// Reference: JDE Orchestrator Integration Guide 9.2.2
Without this explicit refresh call, the dashboard doesn’t know to invalidate its cache and pull new data.
Widget Auto-Refresh Troubleshooting:
The auto-refresh mechanism relies on a background service. Verify the UDO Refresh Service is running:
- Check JDE server logs for “UDORefreshService” entries
- Verify the service isn’t throwing silent exceptions
- Restart the service if it’s in a hung state
- Check service configuration points to correct database connection pool
Data Source Mapping Validation:
Even though your mapping looks correct, there’s a known issue in 9.2.2 where business views cache metadata incorrectly. The PO_METRICS view needs to be regenerated:
- In OMW, find the PO_METRICS business view
- Select “Regenerate” from the actions menu
- Clear the data dictionary cache
- Restart the UDO application server
This forces a fresh binding between the widget queries and actual database tables.
Immediate Resolution Steps:
- Stop the UDO Refresh Service
- Clear the UDO cache: delete contents of /udo/cache/ directory on your server
- Regenerate the PO_METRICS business view
- Update your Orchestrator job to include the REST API refresh call
- Restart UDO services
- Manually trigger your Orchestrator job and verify the REST call succeeds
After implementing these changes, your KPI widgets should update within the configured refresh interval. The key is ensuring the entire pipeline from Orchestrator completion to widget refresh is properly connected. Monitor the first few cycles to confirm the lastUpdateTimestamp property in each widget’s configuration advances correctly with each Orchestrator run.
This might be a widget configuration issue rather than data issue. In JDE 9.2.2, UDO widgets have a separate refresh service that runs independently of the Orchestrator. Check if the UDO Refresh Service is active in your server configuration. Also look at the widget’s JSON configuration - there’s a lastUpdateTimestamp property that might be stuck. If that timestamp isn’t advancing, the widget won’t pull new data even if it’s available.
Check your Orchestrator job output mapping. Even if the job shows success, the output might not be writing to the correct target. In the Orchestrator Studio, verify the response mapping section actually commits the data to the UDO widget tables. I’ve seen cases where the job processes data but doesn’t properly map the output to the dashboard’s expected structure, especially after version upgrades or configuration changes.
One more thing - verify the database view permissions. Sometimes the UDO runtime user loses SELECT privileges on the underlying views after security patches.