![]() |
NOTE: In JAMS V6.4.5X and higher, uninstall features are present in the Installation Wizard. Unchecking component boxes in the Add-Ons section will uninstall those components. |
The JAMS environment incorporates several key components that work together to create a unique and powerful scheduling system.
The JAMS Client provides the primary user controls for JAMS and includes:
This is essentially the heart of the JAMS system. The scheduler provides background services that maintain, schedule and execute JAMS Jobs.
JAMS Agents provide background services that execute JAMS Jobs under the direction of a JAMS Scheduler located on a different machine.
The JAMS Agent for OpenVMS provides background processes that execute JAMS Jobs under the direction of a JAMS Scheduler located on a different machine.
JAMS Scheduler |
JAMS Agent |
JAMS Client |
|
Software Prerequisites |
|
|
|
Hardware Server(minimum) |
|
|
|
Hardware Server(50,000 to 100,000 Jobs per Day) |
|
|
|
Harware Server(>100,000 jobs per day) |
|
|
|
To install JAMS, ensure that the user performing the installation is logged in as an account with administrator privileges to the application server. In addition, the account must have the ability to create a database on the database server. JAMS creates the database locally by default.
Before installing JAMS, please review the following requirements detailing the prerequisite software and minimum hardware requirements.
The JAMS self-extracting setups checks for and installs all prerequisites.
The JAMS Client and Scheduler require .NET Framework v. 4.5 (or higher). Once the JAMS setup begins, it checks if this version of .Net Framework is installed. If v. 4.5 is not installed, the setup will ask to accept Microsoft's license agreement. Once the agreement is accepted, the software will then download and install the framework.
![]() |
Note: Installing v.4.5 of the .NET Framework will require a system reboot. |
The JAMS Agent requires v.2.0 (or higher) of the .NET Framework.
The JAMS Scheduler requires the Microsoft Message Queue (MSMQ). When installing the JAMS Scheduler, the setup will check for the MSMQ and, if it's not installed, will ask you to confirm that you want to install it. For more details, go the MSMQ section in this topic.
![]() |
Note: MSMQ is included with Microsoft Windows, but it is optional and not installed by default. |
The JAMS Scheduler requires Microsoft SQL Server 2005, 2008, 2012, 2014, or 2016. JAMS does not support SQL 2000. The SQL Server does not need to be installed on the same machine as the JAMS Scheduler.
If you or your DBA choose to install the JAMS Scheduler component, the setup will first check for a connection to an SQL Server. If the server not installed, the setup will ask to install the SQL Server 2012 Express Edition.
You also have the option of using an SQL Server on a different machine. Please note, when the installer checks for the SQL Server, it only looks for the default instance names of MSSQLSERVER and SQLEXPRESS.
If you have a different instance preference, decline the SQL Express installation and specify your preferred instance when the JAMS installer asks for the SQL server name and instance.
![]() |
NOTE: To run SQLStoredProc Execution Method Jobs, Shared Management Objects for your version of SQL will be needed. Shared Management Objects can be found in the appropriate Microsoft Feature Pack version, or in the install for SQL Management Studio. |
![]() |
NOTE: To run SSISDirect Execution Method Jobs, the Client Tools Backwards Compatibility and Client Tools SDK Shared Features are required. |
The JAMS Client component includes a PowerShell Snap-In that contains a number of JAMS cmdlets and a JAMS Provider. PowerShell is not required, but in order to use the Snap-In you must install PowerShell before installing JAMS. If you happened to install PowerShell after installing the JAMS Client, just reinstall the JAMS Client to pick up the JAMS Snap- In.
![]() |
Note: JAMS supports PowerShell v. 2 and higher |
These are the minimum system requirements that can support running thousands of jobs per day. Heavy loads, for example, over 100,000 jobs per day, will require more resources.
For database planning, the JAMS test lab runs approximately 1,000 jobs per day using one instance of JAMS. Retaining 30 days of information generates a database approximately 110 Mb in size.
Based upon customer implementations where more than 100,000 jobs are executed each day, the JAMS installation should consist of:
MVP Systems Software, Inc. supports customers running JAMS on any supported operating system in a virtualized environment, such as VMware and HyperV.
Watch our Installing JAMS Video
Follow the steps below to install JAMS on a Windows computer.
The JAMS Client installation includes the following items:
The JAMS Scheduler installation also contains other important JAMS components including:
![]() |
Note: if this is the initial installation of the JAMS Scheduler, you will be prompted for additional information when the installer configures the JAMS Database. |
In addition to the JAMS Client GUI, the Powershell SnapIn, and the .NET Controls, JAMS offers a command line interpreter to manage your scheduling environment.
When the JAMS Client installs, it also includes a command line tool (JAMS.EXE)
Your first action establishes the connection to the JAMS ServerName.
Once JAMS has successfully installed, a database creation wizard launches to step you through the JAMS database generation process which is described below:
![]() |
Note: cancelling the JAMS database creation wizard won’t affect the JAMS installation, but JAMS cannot function without a database. To reinstall the JAMS Database, restart the wizard as described in the Troubleshooting subsection below. |
Support Contact Information page requests information to be sent to JAMS technical support in the event of a failure. This information includes the:
![]() |
Note: Populating this page is optional, but entering accurate information can help JAMS support staff improve its support capabilities. If you’re unsure about the information, leave it blank and enter it at a later time. |
On this page you will specify the name of the SQL server machine and the SQL Instance. If the SQL Server is installed on the local machine, the default will be (local). If the server you want isn't listed in the pull-down control, you can enter the name and instance manually.
This is the name of the database that will be created. The default is JAMS. However, you will need to change this to a unique name if, for example, you are running the JAMS Scheduler on two different machines but are sharing the same SQL Server machine.
Select the type of authentication to use when creating the JAMS database. If you select SQL Server Authentication, you must also supply a database user name and password.
The JAMS installation allows users to specify the location of JAMS database files.
The JAMS database is divided into three data files and a log file. These paths are on the database server machine, which may not be the same machine where JAMS is being installed.
The Primary data file holds most of the database tables. These tables store the definitions of JAMS objects. Data is inserted and deleted only when JAMS objects are created or deleted.
The Volatile data file contains database tables that have records inserted and deleted whenever a task executes. This could equate to hundreds or thousands of inserts/deletes per day.
The History data file includes historical database tables. A record is inserted into this file every time a task is executed, depending upon how much history you choose to keep. If not controlled, the data file can easily balloon in size.
The database log file holds transaction information that is used to recover the database in case of a failure. If possible, you should place the database log file on a separate disk from the other database files.
The JAMS installtion allows users to specify the location of JAMS temporary files and log files. These paths must be on the local machine.
In most cases, JAMS creates a temporary script file when a Job is executed. These temporary files are created in the directory specified in this file. You can change this directory using the Configuration shortcut option in the JAMS Client.
When a Job is executed, JAMS keeps a log of the run. You can specify the location of the log file from the Job Definition or in the Job's Folder Definition. If the location isn't specified in one of those two places, it defaults to the value specified in the Job Log file. You can change this directory using the Configuration shortcut option in the JAMS Client.
When the JAMS database is initially loaded, a folder named JAMS is created along with a number of Jobs. There are also a number of sample Jobs installed. These Jobs cannot run unless they have a user account to run. You will be presented with a dialog requesting a user name and password for these Jobs.
If you don't enter a user name and password, it can be added at a later time.
If you encounter problems with the JAMS Database, restart the JAMS database creation wizard by following these four steps:
The JAMS Web Services is a subset of the JAMS .NET Class Library. You can develop applications that call these web services which are used by JAMSWebClient command line tool.
Installing the JAMS Web Services is a two-step process:
Start the SetupWebServices MSI that is appropriate for your system (either the SetupWebServices.msi for 32-bit Windows or SetupWebServicesx64.msi for 64-bit Windows).
The procedure for configuring IIS 7 and later is slightly different from previous versions.
The default JAMS Web Services installation will connect to a JAMS Server on the same machine. To modify this, edit the Common.Config file in the WebServices directory. Search for a line similar to:
<add key="JAMServer" value="localhost"/>
Change "localhost" to the JAMS Server you prefer.
![]() |
NOTE: Use the file Common.Sample, shipped with the base install, as a template for your Common.Config settings. |
Here are some additional details you may need to know in order to continue using or evaluating JAMS.
If you're running the JAMS Client on the same machine as the JAMS Scheduler, the JAMS Client can automatically locate the Scheduler.
However, if the Scheduler is running on a different machine, you must include a server definition to tell the client where to find the Scheduler. In order to add a Server definition, click on the JAMS logo in the upper left corner of the JAMS Client and select Servers.
![]() |
Note: you can have many servers defined within the JAMS Client. |
The JAMS Scheduler is secure by default. However, in order to work with all JAMS functions you must be part of the administrators group.
The Server ACL controls who may connect to a specific server. The administrators group retains full access with authenticated users granted limited access.
As an administrator, start the JAMS Client and select the Access Control button in the JAMS tab of the Ribbon Bar. From the ACL list, choose the Server command to make a server selection. The ACL can then be adjusted to define who should have access to JAMS.
When launching the JAMS Client, you will not initially be a part of the Administrators group. To gain administrator access,-click on the JAMS Client icon in the Windows start menu and select the Run as administrator command from the pop-up menu. This action will open the JAMS Client with Administrator rights giving you permissions to adjust the ACLs for other users.
JAMS natively supports automation using many leading business applications. “add-ons” for these preferred applications are selected using a checkbox during the JAMS installation process. Once an add-on for a product is enabled, users can create, manage, deploy and monitor almost any kind of JAMS Job using the following products:
When installing JAMS, check the product add-on option you want to include. If you have already installed JAMS without the necessary add-on, re-run the JAMS installer and check the add-ons to install.
![]() |
NOTE: In JAMS 6.4.5X and up, unchecking component boxes will uninstall those components |
The JAMSDBA.exe utility is used to manage the JAMS Database and to perform other installation and management tasks. JAMSDBA is a command line utility located in the Scheduler installation directory (C:\Program Files\MVPSI\JAMS\Scheduler by default).
When starting the JAMSDBA, you will be presented with a JAMSDBA> prompt. You can enter the command you want to execute or enter HELP to access online help.
You can also start JAMSDBA with a command appending the command you want to execute; for example:
JAMSDBA UPDATE/LOG
The JAMS Client can be installed with any of the standard JAMS setup executables by selecting the JAMS Client option during installation.
With the exception of the PowerShell Client, the JAMS Client can also be deployed with an XCOPY installation. Simply copy the contents of the client directory to the client machine.
![]() |
Note: the PowerShell Snap-In is installed only if PowerShell is already installed. If you install PowerShell after installing JAMS, you must reinstall the JAMS Client to pick up the PowerShell Snap-In. |
There is no configuration required for the JAMS Client, but you can modify the default settings by editing the JAMSWin.exe.config, JAMS.exe.config or User.config files.
The .config files include the XML text files that can be edited with any text editor. The JAMSWin.exe.config file contains the default layout for the shortcuts contained in the JAMS Client. You can customize these defaults for your own environment.
The example below illustrates some of the shortcuts defined in the JAMSWin.exe.config file:
Users can easily customize these shortcuts, but you may want to create standard shortcuts for your users. For example, if editing the JAMSWin.exe.config file, make sure to add this text:
<subkey name="Shortcut006"> <property name="Type">4</property> <property name="Name">JAMS Jobs</property> <property name="Title">JAMS Job Definitions</property> <property name="Description" /> <property name="PromptForKeys">false</property> <property name="QueryJobName">*</property> <property name="QuerySystemName">JAMS</property> </subkey>
In addition, you can add default JAMS Server definitions to the JAMSWin.exe.config file so your users don't have to worry about these details. To add default servers, edit the JAMSWin.exe.config and populate the <JAMSServer> section. Here is an example that defines two JAMS Servers, Jimmy and Joe:
<JAMSServers> <subkey name="Server000"> <property name="Name">Jimmy</property> <property name="Node">jimmy.yourco.com</property> <property name="Port">773</property> <property name="Prompt">False</property> </subkey> <subkey name="Server001"> <property name="Name">Joe</property> <property name="Node">joe.yourco.com</property> <property name="Port">773</property> <property name="Prompt">False</property> </subkey> </JAMSServers>
JAMS uses Microsoft Message Queue (MSMQ) to reliably pass messages between the JAMS Services. It does this by creating a private queue named JAMSRequests.
MSMQ is included with Windows, but it is not installed by default. However, if MSMQ is not installed before installing JAMS, the JAMS installer will install MSMQ using the default minimum settings.
![]() |
Note: if you want to control how MSMQ is installed it is best to install MSMQ before starting the JAMS installation. |
If you want to change the way that MSMQ is installed after installing JAMS:
JAMS contains a number of configuration settings. You can change these settings using the Configuration shortcut on the JAMS tab of the Ribbon Bar.
The configuration settings are described in the table below:
Setting | Description |
AgentXCommand | Used to activate JAMSAgentX for file watches. |
AutoReport | When set to true, failures of the JAMSServices will be automatically sent to JAMS technical support. |
BatchGroup | Windows group that has SetBatchLogonRights. |
Company Name | The company name to include in error reports. |
ContactName | The person in your organization responsible for JAMS deployment. |
ContactEmail | The responsible person’s email address. |
ContactPhone | The responsible person’s phone number. |
DBVERSION | Identifies the DB Schema version. |
DefaultinputEncoding | The default input encoding for routine jobs. |
DefaultLogLocation* | The default location for Job log files. |
DefaultMacroFile | A default parsing macro file. |
DefaultNotifyEmail | The default notification email address. |
DefaultOutputEncoding | The default output encoding for routine jobs. |
EnableSimpleSetups | Controls if a single Job setups display as a single entry. |
FromAddress | The “from” address for email sent by JAMS. |
GrantAdministratorsBypass | Option to allow individuals in the Admin. group to bypass ACL security. |
GrantBypassGroup | Individuals listed in a specified group to bypass ACL security. |
HistoryLookbackPeriod | The number of days in the past to query history inside a detail dialog. |
HistoryQueryLimit | Maximum number of history records to return in a single query? (zero means unlimited) |
HistoryQueryTimeLimit | The maximum time to wait (in seconds) for a response to a history query. |
HostKeyChecking | Defines what JAMS should do if the SSH fingerprint doesn't match when connecting. |
KeepCompleted | Keep completed Jobs in the Monitor for a specified period of time. |
MaximumLogInclude | Maximum size (in bytes) of a log file to include in notification e-mails. |
PlainTextMail | Send plain text mail |
ScheduleAdvance | How far into the future should the Schedule extend? This is entered as a standard Windows time span: d.hh.mm (days.hours:minutes). |
ScheduledUntil | How far into the future is the Schedule now? If you want to change this, stop the JAMS Scheduler service, modify this setting, and restart the JAMS Scheduler service. |
ScheduleInterval | How often should the schedule be extended? |
ScheduleMaxDownAction | Action to take if the downtime exceeds the maximum (options: reset, fail, or continue). |
ScheduleMaxDowntime | Maximum Scheduler downtime (in hours). |
SMTPServer | The SMTP server name. |
StartServicesAfterUpgrade | Whan a JAMS upgrade is installed, should the JAMS services be automatically restarted? |
StatsInterval | The number of seconds between statistics updates. |
TempLocation | The location for temporary files. |
TimeStampLogFormat* | Format for creating time-stamped log file specs. The default value is: {0}\{1}_{8:d4}{9:d2}{10:d2}_{11:d2}{12:d2}{13:d2}{14:d3}{2} |
Work_FRI | Is Friday usually a workday? |
Work_MON | Is Monday usually a workday? |
Work_SAT | Is Saturday usually a workday? |
Work_SUN | Is Sunday usually a workday? |
Work_THU | Is Thursday usually a workday? |
Work_TUE | Is Tuesday usually a workday? |
Work_WED | Is Wednesday usually a workday? |
*The DefaultLogLocation and TimestampLogFormat settings are .NET format strings used to construct the full file specification for a Job's log file. The data values passed in the formatting operation are:
0. Directory specification
1. Filename
2. File Extension
3. Folder Name
4. Job or Setup Name
5. Run occurrence number
6. JAMS Entry Number
7. Timestamp date & time
8. Timestamp year
9. Timestamp month
10. Timestamp day
11. Timestamp hour
12, Timestamp minute
13. Timestamp second
14. Timestamp millisecond
Properties for each Configuration settings are organized in two tabs: Name and Value as described below.
This is the unique identifier for the Configuration parameter.
This property is used in menus, lists and reports to provide users with a more detailed description of the individual Configuration.
Indicates the date and time this Configuration property was last modified.
The specific data type of the Configuration parameter.
Value of the Configuration parameter.
JAMS Scheduler installation includes three Windows Services:
![]() |
Note: Installing JAMS Agents on Windows also includes the JAMS Agent Windows Service. |
The JAMS Scheduler Service is responsible for automatically scheduling jobs, firing triggers, and checking dependencies, etc. The JAMS Scheduler must include access to the JAMS Database or the service will fail. However, JAMS is designed to be resilient. Job execution is handled by the JAMS Executor service, so if the JAMS Scheduler service fails, no job execution information is lost.
The JAMS Server provides middle-tier services to all JAMS Client components (GUI, Powershell, .NET Class Library, and Web services). While the JAMS Server service is not involved in the execution of Jobs, many jobs can use the JAMS Powershell client, which does utilize this service.
The JAMS Executor is responsible for executing and monitoring Jobs. This service does not access the JAMS Database.
The JAMS Agent service is an extension of the JAMS Executor service. When the JAMS Executor needs to execute a Job on a different machine, it does so using the JAMS Agent running on that machine.
Each JAMS Service generates a ServiceName.log (e.g. JAMSScheduler.log) in the installation directory. These logs are reset every Sunday with the previous weeks log files renamed to ServiceNameArchive.log (e.g. JAMSSchedulerArchive.log).
![]() |
Note: JAMS Services writes any serious errors to the Windows Event log. When troubleshooting JAMS, always check the event log and the .log files. |
If you suspect there are problems with JAMS, shutting down one of the three services may resolve your issues. The list below provides some guidelines from the least to most disruptive option.
The JAMS Scheduler Service does the most work and is the least disruptive. Restarting the JAMS Scheduler Service does not cause any Jobs failures and all job completion information remains intact. While the JAMS Scheduler service is stopped, no new Jobs can execute.
The JAMS Server service can also be stopped without losing any job execution information. However, the JAMS Client won’t function while the JAMS Server service is shut down.
Stopping the JAMS Executor service is a last resort and won't typically help resolve these issues. This service executes and monitors Jobs. When this service is halted, completion information for any executing Jobs will be lost and some executing Jobs may fail. The JAMS Executor service does not access the JAMS database, so this service won’t be necessary during SQL service maintenance.
By default, JAMS services are set to run under the LocalSystem account, although this can be modified to run on a Windows Domain based account.
In general, it is recommended that you leave the JAMS Executor and JAMS Agent services running under LocalSystem. These services require access to the database or network and require the privileges associated with the LocalSystem account.
Use the Service Control application to change the account for the JAMS Scheduler and JAMS Server services in order to control network and database access.
When modifying the account, you may need to adjust the security settings on:
You will need to modify the security on the MSMQ JAMSRequests private queue in order to grant the domain account full access to the queue. This may require you to take ownership of the MSMQ queue.
The following local security policies should also be granted for the domain based account:
If the domain based user account is not in the administrators group then create an Active Directory Group, add the user to the group and then make the following changes in the Common.config file located using the path: Program Files\MVPSI\JAMS\Scheduler<directory>
<add key=AuthorizedGroup" value="domain\YourGroup"/>
The JAMS Database provides critical features to the JAMS Scheduler and stores JAMS definitions. The following section contains information on managing the JAMS SQL database back end.
In most instances, the JAMS Database is created with the JAMS Scheduler during the installation process. However, in some cases, when installing the JAMS Scheduler you may prefer not to create the JAMS Database.
JAMS looks for the SQL Server connection string in the Common.config file. This file is created during the database creation process, so if it is missing the JAMS Database does not exist. Likewise, if you want to recreate the database, simply delete or rename the file.
To create a JAMS database after the JAMS Scheduler has been installed, open a command window and execute the following commands:
CD "C:\Program Files\MVPSI\JAMS\Scheduler" JAMSDBA INSTALL
During the installation process you will be required to provide SQL authentication information and use an account that has the ability to create a new database. To review these changes to the database, go to:
C:\ProgramFiles\MVSPI\JAMS\Scheduler\JAMS_DB_ERRORS.sql file
JAMS supports either Windows Integrated Authentication or SQL Server Authentication. This can be modified after installation by changing the connection string found in the Common.config file. The default installation requires the JAMS Services to be running under the LocalSystem account. To facilitate this the installation executes the following SQL commands:
exec sp_grantlogin @loginame='BUILTIN\Administrators' exec sp_grantdbaccess @loginame='BUILTIN\Administrators', @name_in_db='JAMSService' exec sp_addrolemember @rolename='JAMSApp', @membername='JAMSService'
The net effect of using Windows Integrated authentication is that anyone in the administrators group can map the JAMSService Database user and become a part of the JAMSApp Database role.
![]() |
Note: You can modify the security to fit your needs, but the JAMS Services must be included in the JAMSApp Database role. |
It is critical to back up the JAMS Database. Since the JAMS Database is a standard SQL Server database, simply add it to your existing SQL Server backup procedures.
Before implementing a backup plan, you will need to choose which recovery model to use with the JAMS database.
The default installation uses the Simple Recovery Model. The other option is the Full Recovery Model. The main difference between the two is in the amount of journaling performed by the database.
The Simple Recovery Model is the easiest to use. You periodically backup the JAMS database only, not the journal file. The downside to this model is a lack of recovery options. If the JAMS Database becomes corrupted you can recover it from a backup but, all database changes since the last backup will be lost. This includes job execution history, so Job dependencies may not work as expected.
This model contain more robust recovery features. However, the disadvantage of this model is that you must manage the journal file for the JAMS Database. Each time a change is made to the JAMS Database it is also written to the journal file.
For example, if a hardware failure occurs or you have otherwise corrupted the JAMS Database, you can restore a backup and then recover it using the journal files up to a specific point in time.
Restoring a JAMS Database from a backup requires a standard SQL Server restore operation, but there are some details to consider before attempting the restoration process.
The JAMS Database includes the current schedule. Often, you may not want the current schedule to be restored. For example, if the database was backed up on Monday and you restore it on Friday, you probably don’t want to start running Monday’s Jobs along with the rest of the week’s processing.
When the JAMS Scheduler starts, it checks the database to see how up-to-date the schedule is. Specifically, it looks at the current schedule point of the database and checks that against the ScheduleMaxDowntime configuration setting. If the database is older than that setting allows, the Scheduler will take the action as specified in the ScheduleMaxDownAction configuration setting. The default setting is 48 hours and reset, which means that if the database is more than 48 hours old, the schedule then resets.
Depending on the ScheduleMaxDown configuration settings, you may want to manually clear the schedule. To clear the schedule, open a command window and execute these commands:
CD C:\Program Files\MVPSI\JAMS\Scheduler" JAMSDBA RESET SCHEDULE
If the backup was performed on a different version of JAMS, you must use the JAMSDBA utility to update the database schema to match the installed version of JAMS.
To update the database Schedule, open a command window and execute these commands:
CD C:\Program Files\MVPSI\JAMS\Scheduler" JAMSDBA UPDATE/LOG
To relocate the SQL database used by JAMS:
![]() |
Note: The process for moving a SQL/JAMS database does not require reinstalling JAMS. |
The common.config file contains the connection string used by JAMS services to link to the SQL database. Below are two examples of connection strings; one for Windows Authentication models and another for SQL Authentication models.
<?xml version="1.0" encoding="utf-8" ?> <appSettings> <add key="ConnectionString" value="Server=SQLA\INST1; Failover Partner=SQLB\INST1; Database=JAMS; Application Name=JAMS; Connect Timeout=600; Integrated Security=SSPI"/> </appSettings>
<?xml version="1.0" encoding="utf-8" ?> <appSettings> <add key="ConnectionString" value="Server=SQLA\INST1; Failover Partner=SQLB\INST1; Database=JAMS; Application Name=JAMS; Connect Timeout=600;Trusted_Connection=False;uid=YOURSQLACCOUNT;pwd=YOURPASSWORD" /> </appSettings>
JAMS can override all saved client setting at any installed locations. This can be useful when you want multiple JAMS Clients to default to the same shortcuts and themes. It also simplifies how new layouts and shortcuts changes can be standardized across-the-network with only one location needed as a template.
The “SettingsPath” can be configured for each JAMS Client by modifying the user.config file as described below:
<appSettings file="User.config"> <add key="ClientSettingsProvider.ServiceUri" value="" /> <add key=”CommonSettingsPath" value="\\AppServer\ClientSettings\" /> </appSettings>
add key="WriteToCommonSettings" value="true" />
%HOMEPATH%\Local Settings\Application Data\MVP Systems, Inc\JAMS\X.X.X.
You can replicate settings from one client to the next by copying these flat files.
These user settings can be helpful if you want to have varying client layouts for different user groups such as administrators, developers, and users. For example, you could set up three directories that contain the appropriate settings for each group. After configuring the Client config file for the members of these groups, you could then manage the settings independently.
<add Key="LockServer" value="true" />
<add Key="LockShortcutbar" value="true" />
JAMS encrypts password and private key information when it is stored in the database. The standard JAMS installation uses a predefined encryption key, which is adequate for many sites. For additional protection you can generate a unique encryption key but must ensure that it is properly backed up and secured.
When generating a unique encryption key, JAMS uses the Rinjndael encryption algorithm to re-encrypt all password and private key information within the database. The generated key is then encrypted and stored using the Windows Data Protection API (DPAPI). The protected key is then linked to user account associated with the JAMS Server and Scheduler services.
Use the following commands available in the JAMSDBA utility to manage encryption keys:
GENERATE KEY - Generates a new 256 bit encryption key, decrypts the password with the old key then encrypts it with the new key. The new encryption key is then stored using DPAPI.
EXPORT KEY - Pulls the encryption key from DPAPI and writes it to a text file.
![]() |
Caution: it is critical that you protect the EXPORT file since this key is not encrypted. |
IMPORT KEY – this is similar to the GENERATE KEY. But in this case the new key is pulled from a text file instead of being generated. If recovering from backup or configuring the secondary server in a failover configuration, you should use the /NOENCRYPT qualifier to skip the decryption and re-encryption of the current data.
For additional information on protecting/restoring a JAMS Server as well as working in failover environments, go to the complete topic: JAMS Security: Managing Encryption Keys.
To protect a standalone JAMS Server, follow the steps below:
When restoring a backup of the JAMS database to different server, the encrypted passwords cannot be decrypted because of the encryption key DPAPI protection associated with the original machine/user. To restore the encryption key from a backup, follow these steps:
To protect the servers in a failover environment please follow the steps listed below:
It is always beneficial when a secondary Failover environment can be configured as part of your JAMS installation. The Failover provides a completely redundant instance of JAMS residing on a secondary server that relies on a heartbeat connection between the two. By default, this heartbeat is set to a 60 second interval. In the event the Failover does not get a response from the Primary sever within 3 consecutive beats, the Failover will “takeover” as the Primary scheduler in order to maintain the integrity of the scheduler system.
The JAMS Failover Architecture should consist of at least three servers:
In the event of a failure, the Failover Scheduler will take over for the Primary Scheduler, ensuring the schedule of Jobs remains intact. If Jobs are executing locally on the Primary Scheduler Server, a failure would result in the failure of all Jobs executing on the Scheduler server. Running Jobs on JAMS Agent Server(s) insulates those Jobs from Primary Scheduler Server failure. To further insulate the executing JAMS Jobs from server failure, the JAMS Agent can be configured in a cluster.
The JAMS Failover Engine provides automatic failover for the JAMS Scheduler without using a Microsoft Cluster. Note that the JAMS Failover should NOT be configured in a cluster.
Follow the instructions below to install a JAMS Failover Server:
![]() |
Note: Make sure to replace the login name with your machine name as shown below: |
exec sp_grantlogin @loginame='YourDomain\YourMachineName$' exec sp_grantdbaccess @loginame='YourDomain\YourMachineName$', @name_in_db='JAMSMachine2' exec sp_addrolemember @rolename='JAMSApp', @membername='JAMSMachine2'
<FailoverConfig> <Primary>Server1</Primary> <Secondary>Server2</Secondary> <Port>4773</Port> <Interval>60</Interval> </FailoverConfig>
If you choose to have a common log output location on network share for both Primary and Secondary schedulers, please review the following article.
Setting a common log output location for JAMS in a Failover Environment
JAMS Supports Windows Clustering. There are many ways to configure a Windows Cluster and your options can vary depending on whether you are configuring the JAMS Scheduler or the JAMS Agent.
The JAMS Scheduler can be configured in an active/passive mode. The JAMS Services should be included in the same cluster resource group to enable failover as a unit.
The JAMS Agent can be configured using an “active/active” or “active/passive mode”. The key is the IP address cluster resource. When directing Jobs or Queues to a clustered agent you can specify a DNS name that resolves to an IP address that fails over in a cluster to execute a Job on whichever node in the cluster is currently serving that IP address. This is considered an active/passive configuration.
You could also specify a DNS name that resolves to an IP address that does not failover. In this way, you are directing the Job to a specific machine in the cluster. This is considered an active/active configuration.
In addition, you can create multiple IP address resources that normally runs on different nodes in the cluster, but fails over if a machine stops. This is also considered to be an active/active configuration.
JAMS supports database mirroring. Please consult the SQL Server documentation for information on configuring and creating a mirrored database.
Once the JAMS Database has been successfully created, you should edit the connection string located in the Common.config file to add the "Failover Partner= OtherServer." This isn't strictly required, but if JAMS starts and the primary database server isn't available, JAMS won't know where the secondary server is located.
The JAMS Server and Agents should have DR equivalents, named differently than the production servers. This will ensure the boxes are not seen on the network with the same name as their Production equivalents.
With the JAMS DR architecture set up as outlined above, the DR Process will consist of:
On the DR Server, ensure the following are true:
First, create a backup of the JAMS Production Database, then restore the JAMS Production Database in DR.
Truncate the failover table on the DR Server.
![]() |
NOTE: The failover table details the GUID of the JAMS server that is running against this database. This GUID should match the Installed GUID found in the Server Configuration file (located at C:\Program Files\MVPSI\JAMS\Scheduler\Server.config by default). |
On the JAMS DR Server:
![]() |
NOTE: The Failover table on the DR Server must be truncated before the JAMS Server is started. The JAMS Server will then automatically add the required entries to the table. |
The JAMS Nodes must be updated to point to the DR Servers instead of Production Servers. In this example, all Setups and Jobs within JAMS refer to a JAMS Queue, rather than point to an Agent Node directly. With this Queue configuration, re-directing the Nodes will be a simple case of updating the Production Queues to point to the DR Nodes.
JAMS will not allow existing nodes to be deleted if any running or pending Jobs that point to those Queues/Nodes are within the Schedule/Monitor view. Therefore, in order to allow the nodes to be updated, all Jobs will need to be cleared from the Monitor View using the Reset Schedule process detailed below.
On the JAMS DR Server
Note that when JAMS starts up against a restored database, it will check to see whether the Schedule is over 48 hours old. If it is, it will automatically rebuild the schedule from the current time, otherwise it will continue with the current schedule as-is. As the JAMS Database will likely be less than 48 hours old on DR, the 'Reset Schedule" process will have to be manually run using the JAMS DBA utility.
Once the Scheduler Service starts, the Schedule will be built based on the current time. In order to rebuild the Schedule against a different time, the /Restart switch can be specified.
Start the JAMS Server Service on the DR Server. In order to be able to successfully connect to the Server from a JAMS Client, the JAMS Server service will need to be enabled and started. The status of the JAMS Server can be seen at the bottom left hand corner of the JAMS client.
On the DR Server, manually start the JAMS Scheduler Service and the JAMS Executor Service. Starting the JAMS Scheduler will result in the Schedule being rebuilt within the Monitor view, as defined by the JAMS DBA utility.
![]() |
NOTE: Setups or Jobs that were scheduled before DR that were still pending when production went offline may need manual attention. |
On the DR Server, run a test process in JAMS to validate that the Scheduler is working as expected.
The JAMS DR Server requires a unique JAMS License.
Agents will be consumed as follows:
The JAMS License is on the JAMS Server and it will detail the number of available Agent licenses. When the JAMS Server is restarted, the number of allocated Agent licenses is set to zero. As Jobs consume Agents, the allocated License count is incremented.
JAMS uses the following TCP/IP Ports for both outgoing and incoming connections.
JAMSAgent.exe: The JAMS Agent listens on port 77 for requests to execute Jobs from other machines running JAMS.
JAMSServer.exe: The JAMS Server listens on port 773 for connection requests from JAMS Clients.
JAMSScheduler.exe: The JAMS Scheduler listens on port 2773 for connections from the JAMS Server and JAMS Debugger. This is usually confined to the local machine.
JAMSExecutor.exe: The JAMS Executor listens on port 3773 for connections from the JAMS Scheduler and JAMS Debugger. This is usually confined to the local machine.
JAMSScheduler.exe: The JAMS Scheduler listens on port 4773 for connections from the Failover JAMS Scheduler. This is configured in the Failover.config file.
Common Configuration: If no port is specified in the common.config file in C:\Program Files\MVPSI\JAMS\Scheduler (default location), the default SQL port of 1433 is used.
Web Interface HTTP: The JAMS Web Interface uses port 80 by default for HTTP.
Web Interface HTTPS: The JAMS Web Interface uses port 443 by default for HTTPS.