Introduction
SOS offers migration of jobs and dependencies of the Control-M® scheduling product to JS7 JobScheduler.
- JS7 brings comparable capabilities to Control-M®.
- JS7 maps dependencies from Control-M® In Conditions and Out Conditions to JS7 workflows.
- Control-M® implements a job net in which any job can be related to any other jobs by In/Out Conditions.
- JS7 is oriented towards a Directed Acyclic Graph (DAG) which is a clean foundation for a finite state machine that allows workflow patterns.
- Benefits of a DAG include that it prevents illegal circular references, that it allows to predetermine the execution path and that it can be cleanly visualized.
- Benefits of workflow patterns include that they are clearly understood, are standardized and prevent any ambiguity that comes with arbitrary relationships in job nets.
- The mapping of a Control-M® job net to a JS7 DAG with workflow patterns is performed by the JS7 Converter utility that is offered as a service.
- JS7 supports calendars and schedules similar to Control-M®.
Job Inventory
Migration of Control-M® jobs starts from an export of the job inventory using the deftable utility. The utility exports data from the Control-M® database to a file in XML format. This file is used as input to the JS7 Converter.
Depending on the Control-M® version in use the output of the deftable utility can look different. The JS7 Converter supports Control-M® versions 8 and 9.
Mapping of Folders
In the Control-M® we find Smart Folders and Sub-Folders for the grouping of jobs. Folders preferably serve the visibility of job groups. As any job can use arbitrary In Conditions inside and outside of a folder there is no meaning of folders other than specifying the limits of visibility.
The JS7 Converter maps Smart Folders and Sub-Folders to workflows. More precisely the jobs within a given folder will be mapped to a single workflow. Dependencies between jobs located in different folders are mapped to dependencies of jobs in different workflows.
Mapping of Job Dependencies
Control-M® makes use of dependencies that are managed from a job net:
- Each job optionally is assigned one or more Out Conditions that are triggered after successful or unsuccessful execution of the job.
- Each job can be assigned one or more In Conditions that make the job wait for execution until the In Conditions are met.
The JS7 follows the structured approach of a Directed acyclic graph. This model implements relationships based on graph theory.
The mapping of In Conditions and Out Conditions to JS7 job dependencies is explained from the following chapters.
Analysis of Job Dependencies
The JS7 Converter utility analyzes the Control-M® job net and creates a visualization of job dependencies:
- Job dependencies are visualized in SVG files that consider boundaries of Smart Folders and Sub-folders.
- The visualization is guaranteed to correspond to the later conversion of job dependencies. It allows users to check from a glance that dependencies are accurately analyzed.
Mapping to Workflow Patterns
The JS7 Converter utility analyzes the Control-M® job net and maps dependencies to workflow patterns.
The following patterns are applied by the JS7 Converter.
Sequence
If a number of jobs each are related by a single Out Condition that is used as the only In Condition of a successor job then this dependency is converted to a Sequence of jobs like this:
Fork
If more than one job makes use of the same In Condition that is created as the Out Condition from a predecessor job then this is mapped to Forking.
Jobs with the same In Condition make it for parallel branches in a JS7 - Fork-Join Instruction. Jobs in branches are executed in parallel. Each branch can include any number of successor jobs from a Sequence or other JS7 - Workflow Instructions. Forking can be nested.
Synchronization
For jobs that use In Conditions from other jobs that are not included with the same Smart Folder or Sub-Folder external dependencies are created. They are mapped to use of JS7 - Notice Boards and include use of the JS7 - PostNotices Instruction and JS7 - ExpectNotices Instruction like this:
Operations on Conditions
Control-M® offers a number of operations on Conditions:
- Adding: Out Conditions can be added after execution of jobs in case of success or failure.
- Expecting: In Conditions can be waited for before a job will be executed.
- Deleting: In Conditions can be deleted after execution of a job in case of success of failure.
Adding Conditions
Out Conditions are created anywhere within a workflow. The operation is mapped to use of the JS7 - PostNotices Instruction. One or more Conditions/Notices can be created like this:
Expecting Conditions
In Conditions can be waited for anywhere in a workflow. The operation maps to use of the JS7 - ExpectNotices Instruction. One or more Conditions/Notices can be waited for like this:
Deleting Conditions
An In Condition can be waited for and it can be deleted after execution of the current job or a later job. This prevents double execution of jobs for the same day as the In Condition is no longer available. The operations to expect and to delete Conditions/Notices are mapped to use of the JS7 - ConsumeNotices Instruction. Any number of Conditions/Notices can be specified.
- By design there is no JS7 workflow instruction to delete a Condition/Notice that has not been waited for.
- Instead, waiting and deleting one or more Conditions/Notices is considered a distributed transaction.
- If more then one Condition/Notice is waited for then all of them have to be available.
- The same In Conditions can be specified in a number of workflows that are executed in parallel. The fact that a first workflow will expect and acquire one or more In Conditions does not prevent parallel workflows from acquiring the same In Condition. The JS7 will propagate and synchronize deletion of In Conditions which allows parallel workflows to complete processing of a ConsumeNotices Instruction block and only then the In Condition will be deleted.
- Consider the fact that jobs inside ConsumeNotices Instructions referencing the same In Conditions are executed autonomously by JS7 Agents. It is understood that transactional behavior includes to synchronize results of any JS7 Agent involved in executing such jobs.
Operators for Conditions
Both the JS7 - ExpectNotices Instruction and JS7 - ConsumeNotices Instruction can make use of Boolean operators when specifying more than one Condition.
- Conditions can be combined with && (and), || (or).
- Example:
condition1 && condition2
- Example:
- Brackets can be used to specify the precedence of operators.
- Example:
(condition1 || condition 2) && condition3
- Example:
This maps to Control-M® use of Boolean operators for In Conditions.
Mapping of Calendars and Schedules
Calendars
Control-M® calendars are not converted in a 1:1 way.
- The Control-M® job inventory provided from the deftable utility does not indicate calendar rules but specific days per year only. This makes little sense for conversion as users do not want to specify individual days but want to specify rules such as Mon-Fri, 1st day of month, 2nd last day of month etc.
- JS7 offers a wide range of rules to specify calendar dates, see JS7 - Calendars.
- JS7 calendars and schedules are more flexible than what is offered by Control-M®. JS7 - Schedules reference a given calendar and can be used to further restrict the resulting days by own rules. This means that users are not forced to create individual calendars per rule but can work with a few basic calendars, for example for all days and for weekdays, and apply restrictions at Schedule level.
- As a result users typically will rework their calendars to reduce the overall number of calendars and to apply the more versatile calendar rules offered by JS7. However, users are free to stick to use of a larger number of calendars that they manage at annual basis.
- The JS7 Converter creates calendar objects that specify all days of the year and that require to be reworked by the user to map days to the underlying rules.
Schedules
JS7 - Schedules are automatically created from start times specified for jobs with the Control-M® inventory.
- Control-M® does not know the concept of Schedules shared by one or more jobs.
- Instead, jobs inherit or specify a calendar that provides the given days and they indicate the start time for which the job should run.
- Conversion
- If Control-M® jobs consider In Conditions then the start time specified is not necessarily the effective point in time of job execution. Instead the calendar and start time determine the earliest point in time of job execution provided that the In Condition is met. The JS7 Converter maps this configuration to use of JS7 - Admission Times for Jobs, see next chapter.
- If Control-M® jobs use a start time but do not make use of In Conditions then the JS7 Converter will create a Schedule that is considered for the JS7 - Daily Plan.
Admission Times
JS7 - Admission Times for Jobs specify rules for weekdays, days of month etc. and for time slots (start time, end time) that are applied to jobs. In other words admission times specify opening hours for jobs.
- If an order arrives at a job in a workflow before begin of opening hours then the order will wait for the given timeslot on the same day.
- If an order arrives at a job after end of opening hours then the order will wait for a timeslot on the next day indicated by the job's opening hours.
- If no admission times are specified for a given day (weekday, day of month or specific day) then the job will be skipped and the order will proceed in the workflow.
Roadmap
The following features are targeted for upcoming releases of the JS7 Converter:
- Support for use of the calc utility that is used by Control-M® for date calculation in parameter assignments.
- Support for nested Smart Folders.
- Make configurable the intended boundary to create workflows: Application, Smart Folders, Folders