Introduction
- JS7 is a rewrite from scratch of the JobScheduler components. The motivation for JS7 is not to improve the existing branch 1.x (JS1) but to create something better.
- Early releases of JS7 were focused on new users of the product. Current users of the 1.x JobScheduler branch will find migration tools available which will be continually improved in parallel to JS7 releases.
Converter
With availability of Release 2.4.0 (in progress) a Converter will become available to migrate JS1 *.xml files of scheduling objects to JS7:
- JOC-1318Getting issue details... STATUS
The Converter reads existing JS1 *.xml files and creates .json files that are added to a .tar.gz or .zip archive for import into JS7, see JS7 - Inventory Export and Import.
Prerequisites
The Converter will be provided for download and can be used for the following platforms.
- The Converter Java classes can be used with Java JRE or JDK 1.8, 11, 17.
- The Converter Start Script is available for
- Linux, MacOS® and AIX® using bash, dash, ksh and zsh shells.
- Windows 7, 8, 10, 11, Windows Server
Download
Find the Converter for download from JS7 - Download (Links will become active with general availability of Release 2.4.0 (in progress).
- Unix: https://download.sos-berlin.com/JobScheduler.2.4/js7_converter.tar.gz
- Windows: https://download.sos-berlin.com/JobScheduler.2.4/js7_converter.zip
After extraction of the .tar.gz or .zip archive find the following files:
js7_convert.sh | .cmd
(Converter Start Script)js7_convert.config
(Converter Configuration File)lib
(Directory for Java Classes)
Usage
Invoking the Converter Start Script without arguments displays the usage clause:
Usage: js7_convert.sh | .cmd [Options] Options: --input-dir=<location of input directory> | required argument --output-dir=<location of output directory> | default: ./output --report-dir=<location of report directory> | default: ./report --archive=<location of resulting .zip archive for JS7 import> | default: ./js7_converted.tar.gz | .zip --config=<location of config file> | default: ./js7_convert.config --help | displays usage
Explanation:
- Options
--input-dir
- Specifies the input directory of JS1 *.xml files for scheduling objects. Such files typically are located in the
SCHEDULER_DATA/config/live
folder. If you do not want to run the converter directly on the machine in which the *.xml files are located then you can copy thelive
folder or any sub-folder to a Unix or Windows machine on which to run the converter. The operating system of JobScheduler Master using the *.xml files is independent from the operating system of the converter. - The Converter recursively traverses the input directory.
- Specifies the input directory of JS1 *.xml files for scheduling objects. Such files typically are located in the
--output-dir
- Specifies the output directory to which converted .*json files are written. For a number of *.xml files there is a corresponding *.json file.
- For each sub-directory of the input directory the corresponding sub-directory is created in the output directory.
- On start-up the Converter does not clean the output directory from existing files.
--report-dir
- The Converter will report to the specified directory by use of a number of .csv files the extent to which the conversion is successful:
parser_summary.csv
: reports the number of objects found in the input directory and sub-directories.parser_analyzer.csv
: includes debugging information.converter_summary.csv
: reports the number converted objects per object type such as workflows and scheduled.converter_warnings.csv
: includes warnings about XML elements that could not be perfectly converted.
- The Converter will report to the specified directory by use of a number of .csv files the extent to which the conversion is successful:
--archive
- Specifies the path to an archive file with the .tar.gz (Unix) or .zip (Windows) extension that will be created by the Converter. The archive includes the *.json files of the output directory and can be used for later import into JS7, see JS7 - Inventory Export and Import.
- An existing archive file will be overwritten.
--config
- Specifies the location of the Converter Configuration File.. This file is required for the Converter to run. It includes a number of settings that can be adjusted.
Examples
Unix
./js7_convert.sh \ --input-dir=/var/sos-berlin.com/jobscheduler/config/live # reads *.xml files from the Master's "live" folder and creates the corresponding output directory hierarchy in the "output" sub-directory of the working directory; # reports are written to the "reports" sub-directory of the working directory, the resulting "js7_converted.tar.gz" archive file is written to the working directory.
./js7_convert.sh \ --input-dir=/var/sos-berlin.com/jobscheduler/config/live \ --output-dir=/tmp/output --report-dir=/tmp/report --archive=/tmp/js7-import.tar.gz # reads *.xml files directly from the Master's "live" sub-directory and creates the corresponding directory hierarchy in "/tmp/output"; # report files are written to "/tmp/report", the resulting archive file is written to "/tmp/js7-import.tar.gz".
Windows
js7_convert.cmd --input-dir=C:\ProgramData\sos-berlin.com\jobscheduler\config\live ^ @rem reads *.xml files from the Master's "live" folder and creates the corresponding directory hierarchy in the "output" sub-directory of the working directory; @rem reports are written to the "reports" sub-directory of the working directory, the resulting "js7_converted.zip" archive file is written to the working directory.
js7_convert.cmd ^ --input-dir=C:\ProgramData\sos-berlin.com\jobscheduler\config\live ^ --output-dir=C:\tmp\output ^ --report-dir=C:\tmp\report ^ --archive=C:\tmp\js7-import.zip @rem reads *.xml files directly from the Master's "live" sub-directory and creates the corresponding directory hierarchy in "C:\tmp\output"; @rem report files are written to "C:\tmp\report", the resulting archive file is written to "C:\tmp\js7-import.zip".
Scope
The Converter strives for accuracy, however, a few configuration items in JS1 *.xml files require manual adjustment.
JS1 | JS7 | Status | ||||||
---|---|---|---|---|---|---|---|---|
Object | Category | XML Node | Explanation | Object | Instruction | Explanation | Feasibility | Completion |
Job | Shell Jobs | <job> | Job attributes such as timeout, parallelism etc. | Workflow | JS7 - Job Instruction | Standalone jobs are converted to individual workflows. | confirmed | done |
<job process_class="..." | Agent Assignment | Job | JS7 - Job Instruction | confirmed | open | |||
<job><script language="shell"> | Shell Jobs | Job | JS7 - Job Instruction | confirmed | done | |||
COM Jobs | <job><script language="VBScript"> | VBScript for 32bit machines via COM | see JS7 - Migration of VBScript Jobs | denied | declined | |||
<job><script language="JScript"> | JScript for 32bit machines via COM | see JS7 - Migration of VBScript Jobs | denied | declined | ||||
<job><script language="com"> | COM Interface | no automated conversion | denied | declined | ||||
| Spidermonkey Engine Nashorn Engine | no automated conversion | denied | declined | ||||
JITL Database | <job><script language="java" java_class="com.sos.jitl.managed.job.ManagedDatabaseJobJSAdapterClass"> | JITL Job | denied | declined | ||||
JITL File Operations | <job>script language="java" java_class="sos.scheduler.file.JobSchedulerCanWrite"> | JITL Job JobSchedulerCanWrite | Job | JS7 - JITL CanWriteJob | confirmed | open | ||
<job>script language="java" java_class="sos.scheduler.file.JobSchedulerCopyFile"> | JITL Job JobSchedulerCopyFile | Job | JS7 JITL CopyFileJob | confirmed | open | |||
<job>script language="java" java_class="sos.scheduler.file.JobSchedulerExistsFile"> | JITL Job JobSchedulerExistsFile | Job | JS7 - JITL FileExistsJob | confirmed | open | |||
<job>script language="java" java_class="sos.scheduler.file.JobSchedulerNotExistsFile"> | JITL Job JobSchedulerNotExistsFile | Job | JS7 - JITL FileNotExistsJob | confirmed | open | |||
<job>script language="java" java_class="sos.scheduler.file.JobSchedulerRemoveFile"> | JITL Job JobSchedulerRemoveFile | Job | JS7 - JITL RemoveFileJob | confirmed | open | |||
<job>script language="java" java_class="sos.scheduler.file.JobSchedulerRenameFile"> | JITL Job JobSchedulerRenameFile | Job | JS7 - JITL RenameFileJob | confirmed | open | |||
JITL File Transfer | <job>script language="java" java_class="sos.scheduler.jade.JadeJob"> | JITL Job JadeJob | Job | JS7 - File Transfer | Converted to Shell Job | confirmed | open | |
<job>script language="java" java_class="sos.scheduler.jade.Jade4DMZJob"> | JITL Job Jade4DMZJob | Job | JS7 - File Transfer | Converted to Shell Job | confirmed | open | ||
JITL Agentless Scheduling | <job>script language="java" java_class="sos.scheduler.file.JobSchedulerSSHJob"> | JITL Job JobSchedulerSSHJob | Job | JS7 - JITL SSHJob | confirmed | open | ||
JITL Installation | <job>script language="java" java_class="sos.scheduler.InstallationService.JSBatchInstallerJSAdapterClass"> | JITL Job AgentBatchInstaller | Job | JS7 - Automated Update of Agent | converted to JS7 - JITL SSHJob | possible | not in scope | |
JITL Operation | <job>script language="java" java_class="sos.scheduler.job.JobSchedulerCheckBlacklist"> | JITL Job JobSchedulerCheckBlacklist | JS7 - File Watching | not converted | implicit | not required | ||
<job>script language="java" java_class="sos.scheduler.CheckRunHistory.JobSchedulerCheckRunHistoryJSAdapterClass"> | JITL Job JobSchedulerCheckRunHistory | Job | JS7 - JITL CheckHistoryJob | partly | not in scope | |||
<job>script language="java" java_class="com.sos.dailyschedule.job.CreateDailyScheduleJSAdapterClass"> | JITL Job JobSchedulerCreateDailySchedule | Service | JS7 - Daily Plan Service | covered by JS7 - Daily Plan | implicit | not required | ||
<job>script language="java" java_class="com.sos.jitl.latecomers.JobSchedulerStartLatecomersJSAdapterClass"> | JITL Job JobSchedulerStartLatecomers | JS7 - Daily Plan Service | covered by JS7 - Daily Plan | implicit | not required | |||
JITL Housekeeping | ||||||||
Job Chain | <job_chain> | Workflow | Job Chains are converted to workflows | confirmed | done | |||
<job_chain><file_order_source> | File Watching | |||||||
Further Information
An earlier conversion approach by use of a PowerShell Migration Utility used for prototyping is not considered any longer as development is frozen:
- SOS provides a JS1 PowerShell Module, the PowerShell CLI 1.2. This module can be used with a number of JS1 branches.
- The PowerShell Module includes the PowerShell CLI 1.2 - Cmdlets - ConvertFrom-JobSchedulerXml cmdlet which is used to:
- read JS1 job-related configurations with the JS1 REST Web Service,
- convert XML job-related configurations to JSON and
- write export files which can be imported into JS7.