Let me provide a comprehensive solution based on your setup. The issue involves multiple configuration layers that need to work together for real-time capacity constraint updates.
Event-Driven Architecture Configuration:
First, verify your Azure IoT Hub integration is routing equipment status events to the correct MES message topic. Navigate to Administration > IoT Integration > Event Routing and ensure equipment status events map to the equipment-status-events topic (not the generic iot-events-log topic).
Equipment Status Mapping:
In Resource Management module, configure the Equipment Status Translation table:
IoT_Status -> MES_Capacity_State
OFFLINE -> UNAVAILABLE
MAINTENANCE -> UNAVAILABLE
IDLE -> AVAILABLE
RUNNING -> AVAILABLE_REDUCED (if partial capacity)
Real-Time Capacity Updates:
Enable real-time processing in Production Scheduling module:
- Set
SchedulingEngineRefreshInterval = 15 (seconds)
- Enable `RealTimeCapacityAdjustment = true
- Set
CapacityUpdateTrigger = EVENT_DRIVEN (not SCHEDULED)
Job Rescheduling Logic:
This is the critical piece most people miss. The scheduling engine has three modes for handling capacity changes:
- IGNORE - Existing assignments unchanged (your current behavior)
- FLAG_ONLY - Mark conflicts but don’t reassign
- AUTO_REALLOCATE - Automatically reschedule affected jobs
Set JobReallocationMode = AUTO_REALLOCATE in scheduling configuration. However, be aware this can cause frequent job movements if equipment status is unstable. Consider adding a stabilization delay:
ReallocationStabilizationDelay = 60 (seconds)
MinimumCapacityChangeThreshold = 10 (percent)
Timestamp Normalization:
Ensure all IoT events use UTC timestamps. Add this validation rule in IoT Integration settings:
EnforceUTCTimestamps = true
MaxClockSkewTolerance = 30 (seconds)
Testing the Configuration:
After applying these settings, test with a manual equipment status change. You should see:
- IoT event received (< 1 second)
- Status mapped to capacity state (< 2 seconds)
- Scheduling engine notified (< 5 seconds)
- Jobs reallocated if necessary (< 15 seconds)
Total end-to-end latency should be under 20 seconds for the complete cycle. If you’re still seeing 2-3 minute delays after this configuration, check your Azure IoT Hub message throughput limits and MES database query performance on the capacity constraint tables.
One final note: The AutomaticJobReallocation feature requires the Advanced Scheduling license module. Verify you have the correct licensing enabled in your FT MES 12.0 installation.