We have a master data synchronization requirement in OutSystems 11 where around 40+ masters are synchronized through a common API.
The same API is used for all masters, with a different Master Code passed in the request. The response structure can vary depending on the Master Code.
The synchronization frequency also varies:
Some masters need to run daily
Some need to run weekly
A few may need to be triggered on an ad-hoc basis
From an architecture and maintainability perspective, what would be the recommended approach?
Should we:
Create a separate Timer for each master, or
Use fewer/common Timers and process multiple masters based on their configured frequency?
Also, how does OutSystems 11 handle multiple Timers scheduled at the same time? If the available Timer execution threads/slots are already occupied, will the remaining Timers wait/queue until a slot becomes available?
Would appreciate any recommendations or best practices for designing this type of master synchronization.
I’d recommend:
This gives you:
Hi Shradha,
Just adding to Rahul's answer on your second question: yes, timers queue. Each front-end server can only run a limited number of timers at the same time (by default 3), and that limit is set per environment in the Configuration Tool ("Max. Concurrent Timers"). When all slots are busy, the other timers simply wait and start as soon as a slot is free, so nothing is lost, but they may start later than their scheduled time.
That's one more reason to go with a few config-driven timers instead of 40: they won't compete for the same slots at midnight.
For the ad-hoc runs, you can call the Wake<TimerName> action from an admin screen instead of creating another timer.