The Art of Scheduling

Scheduling is a big issue in MIIS and, when new to it, it seems rather odd that there is no native scheduling within the basic application.

I expect most people quickly find out about MASequencer from the MIIS Resource Toolkit, and this isn’t a bad starting point. With MASequencer you can create series of MIIS tasks to run in a particular order, each with optional pre- and post-steps, which may include other external process, such as firing off a DTS package, or running another script. Once you have your sequences configured, use the Windows Scheduler to automate them.

I think this approach would probably work fine for a simple MIIS system, but mine quickly outgrew it. The best practise, as far as I can see, is to ensure that only one MIIS job is running at a time – more than that and you risk SQL process blocking. So how closely should you schedule your MASequencer tasks? Too close and you risk process blocking; too far apart and your Delta imports will take even longer.

With MASequencer I couldn’t change the tasks for different circumstances. What’s the point of running an Export if there is nothing waiting to go out? When the Export must be followed by a Full Import/Sync (as is the case for certain MA types) you are slowing down your system and filling up your Run History for no good reason.

The answer to all these problems is to be found in the WMI Provider. For a good introduction read About the WMI Provider in the MIIS Developer’s Reference.

I ended up writing my own scheduling mechanism in VBScript: more on that to come.