Thursday 12 March 2015

FIM2010: GUI for configuring your scheduler


I described in previous posts how I developed a windows service to schedule FIM. The configuration of this scheduler consists of XML files. Because it is not straightforward to ensure you have a consistent configuration that satisfies your needs, I developed an interface to help with the configuration. The tool itself is built using the WPF framework (.NET 4.5) and has following requirements:
  • Path of the folder containing scheduler configuration files, including at least the following:
    • JobConfiguration.xml
    • job_scheduling_data_2_0.xsd
    • RunConfiguration.xml
    • RunSchedulingData.xsd
  • Path of the folder containg a server export of the FIM Synchronization Engine
gui_browseNote that it is possible to use the tool on any server or workstation. After saving your changes you can transfer the configuration files to your FIM server.

Configure triggers

The first tab, job configuration, allows you to add, delete, rename and configure triggers. Each trigger specifies a run configuration and on which schedule this run configuration will be fired. A typical delta schedule for FIM is "each 10 minutes during working hours". This can be translated to the cron expression "0 0/10 8-18 * * ?". The drop down list with run configurations is automatically propagated based on the existing run configurations. Save config performs a validation of the cron expression using the job_scheduling_data_2_0.xsd schema file. If valid, JobConfiguration.xml is saved. A backup of the previous configuration is saved as well. Reset config reloads the interface using the configuration in the file on disk.

Configure global parameters

The second tab, run configuration, offers three tabs to configure the RunConfiguration.xml file. The first of these tabs, global config, allows you to configure some global parameters:
  • Enable/disable clear run history
  • Specify how long to keep history in case clear run history is enabled
  • Delay in seconds for parallel sequences
  • Delay in seconds for linear sequences
  • Which run configuration to fire on trigger (event-driven scheduling)
Save config performs a validation using the RunSchedulingData.xsd schema file. If valid, RunConfiguration.xml is saved. This includes the settings of all three tabs under run configuration. A backup of the previous configuration is saved as well. Reset config reloads the interface using the configuration in the file on disk. gui_params

Configure run configurations

The run configurations tab allows you to add, delete, rename and edit run configurations. Editing run configurations comes down to two things:
  • Configure a default run profile
  • Add, delete and reorder steps

Default run profile

The default run profile is the top most action. Steps that do not have an action defined, take the action defined by their parent. This mechanism allows you to reuse sequences in combination with different profiles. You could have a run profile with default run profile "Full import full sync" and another with "Delta import delta sync". Then both of them could use the same sequence resulting in different actions. This mechanism only works if using a naming convention for run profiles in all connectors in the FIM Synchronization Engine. Run profile names are case sensitive. If the scheduler tries to start a run profile that does not exist, the management agent will not be run. In the example here, the sequence Default will be run with run profile "Delta import delta sync". gui_runconfig


The add step button opens a new dialog where you can select the type of step. Because the server export info is read, a list of possible actions is available. However, as explained above, you do not need to specify an action. gui_addStep gui_addStepMa

Configure sequences

The sequences tab allows you to add, delete, rename and edit sequences. The functionality provided here is identical to the one on the run configurations tab. Whether the sequence is executed as a linear or parallel sequence is defined by the step that calls the sequence, so a sequence can be defined as linear in one run configuration (or other sequence) and as parallel somewhere else. gui_sequence


You can find the new release of the IS4U FIM scheduler on GitHub: FIM-Scheduler Release. The setup that installs the scheduler on the FIM server now also includes the GUI tool to configure it.