Here’s the comprehensive solution addressing all three focus areas:
ETL Job Scheduling Enhancement:
Modify your ETL job to include a completion notification step. At the end of your existing ETL process, add:
// Pseudocode - ETL completion handler:
1. Commit all data load transactions
2. Update ETL_JOB_STATUS table with completion timestamp
3. Call InvalidateDashboardCache() API method
4. Log cache refresh request to ETL_AUDIT_LOG
5. Send completion notification to monitoring system
Schedule this as the final step in your ETL workflow. The key is ensuring the cache invalidation happens immediately after data commit, not relying on scheduled refreshes.
Dashboard Data Source Mapping Configuration:
Update your dashboard data sources to be cache-aware. In Service Studio:
- Open your Process Mining dashboard
- For each widget, edit the Data Source properties
- Set Cache Policy to “Smart Refresh” mode
- Configure Cache Invalidation Trigger: “On ETL Completion”
- Add a data freshness check query:
SELECT CASE
WHEN MAX(load_timestamp) >= DATEADD(hour, -6, GETDATE())
THEN 1 ELSE 0 END as is_fresh
FROM process_events
This ensures widgets check data freshness before serving cached results.
Widget Cache Refresh Implementation:
Create a Timer in OutSystems that runs at 4:00 AM (30 minutes after your ETL typically completes):
// Pseudocode - Dashboard refresh timer:
1. Query ETL_JOB_STATUS for jobs completed after 2:00 AM
2. For each completed ETL job:
a. Get list of affected dashboard widgets
b. Call RefreshWidget() for each widget
c. Verify refresh completion via API response
3. Update DASHBOARD_REFRESH_LOG with results
4. If any refresh fails, trigger alert
In addition, implement an on-demand refresh mechanism. Add a “Refresh Data” button to your dashboard that users can click if they need immediate updates:
// Button action logic
InvalidateAllWidgetCache();
ReloadDashboardData();
ShowSuccessMessage("Dashboard refreshed with latest data");
Critical Configuration:
In Integration Studio, configure the dashboard service connection:
- Enable “Post-ETL Auto Refresh”
- Set refresh timeout to 300 seconds (some large dashboards take time)
- Configure retry logic: 3 attempts with 30-second intervals
Verification Checklist:
- Confirm ETL job logs show cache invalidation call
- Check dashboard audit logs for refresh events at 4 AM
- Verify widget query timestamps match ETL completion time
- Test manual refresh button functionality
- Monitor dashboard load times (cache rebuilding may slow first access)
This three-pronged approach ensures your ETL job scheduling triggers cache refresh, dashboard data source mapping validates data freshness, and widget cache refresh happens automatically. The combination eliminates stale data issues while maintaining good dashboard performance.