JAMS 7.x Help
JAMS Installation Guide
NOTE: Uninstall features are present in the Installation Wizard. Unchecking component boxes in the Add-Ons section will uninstall those components.
Installed Components

The JAMS environment incorporates several key components that work together to create a unique and powerful scheduling system.

JAMS Client

The JAMS Client provides the primary user controls for JAMS and includes: 

JAMS Scheduler for Windows

This is essentially the heart of the JAMS system. The scheduler provides background services that maintain, schedule and execute JAMS Jobs.

JAMS Agent for Windows

JAMS Agents provide background services that execute JAMS Jobs under the direction of a JAMS Scheduler located on a different machine.

JAMS Agent for OpenVMS

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 Web Client / REST API

Optional. The JAMS Web Client, when installed, allows users to run and manage the automation environment from any web-connected device.

Preparing for the JAMS Installation

JAMS Scheduler

JAMS Agent

JAMS Client

Software Prerequisites

  • .Net Framework v.4.6 (or higher)
  • Microsoft Message Queue (installed with JAMS)
  • Microsoft SQL Server 2012 or newer
  • .Net Framework v.4.6 (or higher)
  • .Net Framework v.4.6 (or higher)

Hardware Server

(minimum)

  • Processor: Dual Core ~2.5 GHZ (x86 or X64)
  • Memory: 8 GB
  • Disk Space: 10 GB, in addition to the disk space required by the OS
  • Processor: 1 GHZ (x86 or x64)
  • Memory: 1 GB
  • Disk Space: 75 MB
  • Processor: 1 GHZ (x86 or X64)
  • Memory: 1 GB
  • Disk Space: 300 MB

Hardware Server

(50,000 to 100,000 Jobs per Day)

  • Processor: 8 Core ~3.2 GHZ (x86 or X64)
  • Memory: 32+ GB
  • Disk Space: 1+TB
  • Recommended: A separate SQL Cluster for the JAMS SQL Back-end
  • Processor: 1 GHZ (x86 or x64)
  • Memory: 1 GB
  • Disk Space: 75 MB
  • Processor: 1 GHZ (x86 or X64)
  • Memory: 1 GB
  • Disk Space: 300 MB

Hardware Server

(>100,000 jobs per day)

  • Processor: 16 Cores, ~3.2GHZ
  • Memory: 64+ GB
  • Disk Space: 1+ TB
  • One server hosting the JAMS Scheduler
  • One server reserved for the SQL Server with multiple high-speed SCSI drives
  • Processor: 1 GHZ (x86 or x64)
  • Memory: 1 GB
  • Disk Space: 75 MB
  • Processor: 1 GHZ (x86 or X64)
  • Memory: 1 GB
  • Disk Space: 300 MB
NOTE: The JAMS Site (REST API) requires Server 2012 R2 or higher.

 

Permissions

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. Typically, giving the user sysadmin rights takes care of all necessary permissions.

Prerequisites

Before installing JAMS, please review the following requirements detailing the prerequisite software and minimum hardware requirements.

The JAMS self-extracting installer checks for and installs all prerequisites.

.NET Framework v. 4.6

The JAMS Client and Scheduler require .NET Framework v. 4.6 (or higher). Once the JAMS installation begins, it checks if this version of .Net Framework is installed. If v. 4.6 is not installed, the installation will ask users to accept Microsoft's license agreement. Once the agreement is accepted, the software will then download and install the framework.

Note: Installing v.4.6 of the .NET Framework will require a system reboot.

.NET Framework v. 4.6

The JAMS Agent requires v.4.6 (or higher) of the .NET Framework.

Microsoft Message Queue (MSMQ)

The JAMS Scheduler requires the Microsoft Message Queue (MSMQ). When installing the JAMS Scheduler, the installer 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.

Microsoft SQL Server

The JAMS Scheduler requires Microsoft SQL Server 2012 or newer. 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 installer will first check for a connection to an SQL Server. If the server not installed, the installer will ask to install the SQL Server 2017 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.

 

PowerShell V3 and Up

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 through the use of V6.X Agents. A V6.X Agent may be connected to a JAMS V7.X Scheduler Server, allowing JAMS V7 to run PowerShell V2.

Hardware Server Specifications for the JAMS Scheduler

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.

For sites running over 100,000 Jobs per day

Based upon customer implementations where more than 100,000 jobs are executed each day, the JAMS installation should consist of:

Hardware Server Specs for JAMS Agents

Hardware Server Specs for the JAMS Client

Supporting JAMS in a Virtual Environment

MVP Systems Software, Inc. supports customers running JAMS on any supported operating system in a virtualized environment, such as VMware and HyperV.

 

Installing JAMS
       

Follow the steps below to install JAMS on a Windows computer.    

  1. Log on to Windows using an account with administrator privileges. (Typically, using an account with sysadmin rights takes care of all necessary permissions.)
    NOTE: Users must also have the ability to create a database on the database server. The default database server is the local machine.
  2. Right click the SetupJAMS executable and select Run as Administrator to start the JAMS installer.
  3. On the Welcome step, verify this installation is the proper edition and version. Click the Next button.
  4. On the License Agreement step, review and accept the JAMS license agreement. Click the Next button.
  5. On the Core Components step, select the JAMS Components to install. If this is a new installation where no Scheduler exists, the JAMS Client and JAMS Scheduler should be installed at minimum. When finished, click the Next button.
  6. On the Integration Packs step, select the packs to install. Note that Integration Packs are not required to install JAMS. Click the Next button.
  7. On the Contact Information step, enter the information that will be used when working with the JAMS technical team. Click the Next button.
  8. On the SQL step, enter the information that will be used to create the JAMS database, as well as the authentication used to connect to the JAMS database. Click the Next button.
    NOTE: The JAMS Scheduler Service will not start until the JAMS database is created.
    NOTE: Users should NEVER attempt to manually create the JAMS database.
  9. On the Locations step, define the preferred target directory or accept the default for JAMS and the JAMS database files. Click the Next button.
    NOTE: In an upgrade, the target directory cannot be modified.
  10. On the JAMS Sample Jobs step, decide whether the sample jobs should be installed. If installing sample jobs, define a JAMS user to run the sample jobs. Click the Next button.
  11. On the Web Client Details step, select where the web client should be installed.
  12. You may be presented with a page that asks you to confirm that you want to install MSMQ.
  13. In addition, you may be presented with a page that asks if you want to download and install the SQL Server Express Edition.
  14. On the Finish page click the Finish button to begin the installation.

 JAMS Client Installation Components

The JAMS Client installation includes the following items:

JAMS Scheduler Services Installation

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.

JAMS Command Line Environment

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)

  1. When started from the command line, a JAMS> prompt appears.
  2. Type HELP to reveal all the supporting commands. Type HELP COMMAND to get additional assistance for a particular command (e.g., HELP EXPORT JOB).

Your first action establishes the connection to the JAMS ServerName.

Creating the JAMS Database

The JAMS Installer will create the database, unless users specify otherwise. The Database should always be created by JAMS. If the database was not created on installation, users may manually start the JAMS Database Creation Wizard.

Note: Installing JAMS without a database won’t affect the JAMS installation, but JAMS cannot function without a database. To reinstall the JAMS Database, start the wizard as described in the Troubleshooting subsection below.

Troubleshooting: Starting the JAMS Database Creation Wizard

If you encounter problems with the JAMS Database, start the JAMS database creation wizard by following these four steps:

  1. Open a command window (PowerShell or CMD.EXE)
  2. Set your default directory to the JAMS Scheduler default directory (C:\Program Files\MVPSI\JAMS\Scheduler).
  3. If the file Common.config file exists, delete it.
  4. Enter the command: JAMSDBA INSTALL

Support Contract Information

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.

SQL Server Page

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.

Database Name

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.

Authentication

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.

Location of JAMS Database Files Page

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.

Primary File

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.

Volatile File

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.  

History Data File

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.

Database Logs

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.

Default Directories

The JAMS installation allows users to specify the location of JAMS temporary files and log files. These paths must be on the local machine.

Temporary Files

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.

Job Log files

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.

Account Information

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 an Execute As user credential 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.

NOTE: To run jobs in JAMS, an Execute As user MUST be specified.
Installing the JAMS Web Client (REST API)

Prerequisites

IIS Installation

Begin by enabling the Web Server IIS Role through the Server Configuration screen.

Ensure the following components are enabled within Application Development:

JAMS Installation

Download the JAMS Installer. During the Installation, ensure the "JAMS Web Client" component is selected.

In the Web Client Details section, select the web site where the JAMS Web Client should be installed.

Once the JAMS Installation is complete, open the Common.Config file for the Web Client, located at C:\Program Files\MVPSI\JAMS\WebClient\ by default.

Edit the Common.Config file as necessary for the given environment:

  1. Verify that the connection string value matches the desired server.
  2. If the JAMS Site is installed within a Domain, set the ContextType value to "Domain" and ContextName value to the domain itself. (In the image below, the domain is "JAMS")
  3. If the JAMS Site is not installed within a domain, set the ContextType value to "Machine" and ContextName value to the name of the machine. 
  4. If the JAMS REST API/Web Client is installed on a different server than the JAMS Scheduler Server, set the SchedulerName value and SchedulerPort value accordingly.
    If the scheduler is not on another server, setting values for SchedulerName and SchedulerPort will cause issues.
  5. If the JAMS REST API/Web Client is installed on a different server than the JAMS Scheduler Server AND a failover is not configured, the key <add key="EnableRemoteAccess" value="true" /> must be added to the Common.config file on the JAMS Server, located by default at C:\Program Files\MVPSI\JAMS\Scheduler\Common.config. This will open port 4773, allowing the web client to communicate with the scheduler. In an environment with a Failover configured, port 4773 will already be open.
    After configuring the JAMS Server common.config file, restart the JAMS Server service.
  6. If the JAMS REST API/Web Client is installed on a different server than the JAMS Scheduler Server, the JAMS fat client must be installed on the web server. The client can be downloaded here. The Web Server and Scheduler Server must be running the same version of the fat client.
  7. If the JAMS REST API/Web Client is installed on a different server than the JAMS Scheduler Server, users must grant the Web Server full permissions to the jamsrequests Queue on the Scheduler Server. Follow our article to grant access to the MSMQ, using the naming format MyWebServer$.

App Pool Settings

Add the user running the App Pool to the JAMSApp Role on the JAMS Database created during the initial installation. This will give proper permissions to the JAMS Database. 

NOTE: It may be necessary to give the DefaultAppPool the JAMSApp Role in SQL.
Users are recommended to run DefaultAppPool under LocalSystem for local machine installations.
For domain installations, it may be necessary to run the DefaultAppPool as NetworkService.

If your JAMS services are running as a domain account, it is also recommended to run the DefaultAppPool as that same domain account.

Restart IIS services.

Documentation

The REST API includes built-in documentation displaying the endpoints and corresponding Headers that can be passed. There are two variants of Documentation that can be accessed based upon your preference:

 

http://localhost/JAMS

http://localhost/JAMS/swagger

After Installing JAMS

Here are some additional details you may need to know in order to continue using or evaluating JAMS.

Access Control

By default, NT AUTHORITY\Authenticated Users will have full access to JAMS Objects in new installations.

However, in order to work with all JAMS functions you must be part of the administrators group. 

NOTE: In JAMS V7.0.1367 and later, removing all ACEs on an object behaves the same as Windows would. When all ACEs are removed from an object, only the GrantAdministratorsByPass group will have access to the object. Previously, removing all ACEs from an object would give all Authenticated Users access to that object.

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 shortcut from the JAMS Menu. 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.

 

Setting an Execute As user

For security purposes, JAMS will not run Jobs without an Execute As user defined. An Execute As user may be defined at the Job or Folder level. To allow all Jobs in the environment to run, users may set an Execute As user on the root folder.

To add the Execute As user, navigate to the Properties tab of the Job or Folder definition. Click Add Property, then select Execute As from the property list and click OK. With the Execute As property added, users will be able to select a JAMS Credential from the drop-down list. 

NOTE: JAMS Properties that display as greyed-out must be added to the object before their value can be defined.

Server Definition

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 Client Settings in the upper right corner of the JAMS Client and select Servers. to open the JAMS Servers dialog.

 

Note: you can have many servers defined within the JAMS Client.

 

       
Installing JAMS Integration Packs

JAMS natively supports automation using many leading business applications. “Integration Packs” for these preferred applications are selected using a checkbox during the JAMS installation process. Once an Integration Pack 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 Integration Pack you want to include. If you have already installed JAMS without the necessary Integration Pack, re-run the JAMS installer, and check the Integration Packs to install.
NOTE:  In JAMS upgrades, unchecking component boxes will uninstall those components
The JAMSDBA Utility

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

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 JAMS Web Client only requires a web browser and access to the configured JAMS Site. MVP recommends using the latest release of Microsoft Edge or Google Chrome to run the JAMS Web Client.
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.

       

 

<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="QuerySystemName">JAMS</property>
</subkey>
<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>
Microsoft Messaging Queueing (MSMQ)

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. 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:

  1. Stop the JAMS Services.
  2. Reinstall MSMQ.
  3. Then restart the JAMS Services.
Configuration Settings

JAMS contains a number of configuration settings. You can change these settings using the Configuration shortcut on the JAMS Menu.

 

The configuration settings are described in the table below:

Setting Description
Contact Description
Company Name The company name to include in error reports.
Contact Name The person in your organization responsible for JAMS deployment.
Contact Email The responsible person’s email address.
Contact Phone The responsible person’s phone number.
Automatically Report Exceptions When set to true, failures of the JAMSServices will be automatically sent to JAMS technical support.
E-Mail Description
Default Notify Email Address A comma separated list of e-mail addresses that will receive all notifications. You can remove inherited addresses by prefixing the address with a minus (-) sign. You can remove all inherited addresses by entering -*.
From Address The from email address used when sending the e-mail from JAMS.
Maximum Log Size Log files that are larger than this value will not be attached to notification e-mails.
SMTPServer The name of the SMTP server used for JAMS. This must be configured to send error reports to JAMS Support.
Configuration Options Description
Schedule Examples Examples of natural language date specifications displayed in date editors.
Configuration ACL Security Bypass Description
Grant Administrators Bypass Option to allow individuals in the Admin. group to bypass ACL security.
Grant Bypass Group Individuals listed in a specified group to bypass ACL security.
Configuration Encoding Description
Default input Encoding The default input encoding for routine jobs.
DefaultOutputEncoding The default output encoding for routine jobs.
Configuration File Locations Description
Default Log Location* The default location for Job log files.
Default Macro File The default macro file used for parsing.
Temporary File Location The location for temporary files.
Configuration History Description
History Lookback Period The number of days in the past to query history inside a detail dialog.
History Query Limit Maximum number of history records to return in a single query? (zero means unlimited)
History Query Time Limit  The maximum time to wait (in seconds) for a response to a history query.
Configuration Monitor Description
Keep Completed Keep completed Jobs in the Monitor for a specified period of time.
Configuration Workdays Description
Work Monday Is Monday usually a workday?
Work Tuesday Is Tuesday usually a workday?
Work Wednesday Is Wednesday usually a workday?
Work Thursday Is Thursday usually a workday?
Work Friday Is Friday usually a workday?
Work Saturday Is Saturday usually a workday?
Work _Sunday Is Sunday usually a workday?
Presentation Theme Description
Light Theme The theme shown to end-users when they select Light Theme.
Dark Theme The theme shown to end-users when they select the Dark Theme.
Presentation Documentation Description
Header This HTML fragment is placed before all documentation content configured within this server.
Footer This HTML fragment is placed after all documentation content configured within this server.
Presentation E-Mail Description
E-Mail Header This HTML fragment is placed before all e-mail content configured within this server.
E-Mail Footer This HTML fragment is placed after all e-mail content configured within this server.
Integrations Paladin Description
Certificate The name of the x.509 certificate used to authenticate with Paladin.
Paladin User The Paladin User
Ask Job A Job that is submitted when we need to ask Paladin for a response.
Severity Only log files that are smaller than this maximum will be uploaded to Paladin.
Paladin URL The URL for the Paladin service

*The DefaultLogLocation is a .NET format string 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 Sequence 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

Working with JAMS Services

JAMS Scheduler installation includes four Windows Services:

Note: Installing JAMS Agents on Windows also includes the JAMS Agent Windows Service.

JAMS Scheduler 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.

JAMS Server Service

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.

JAMS Executor and Agent Services

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.

Troubleshooting JAMS Services

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.

Restart the JAMS Scheduler

While the JAMS Scheduler Service does the most work, restarting it 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.

Stop the JAMS Server Service

The JAMS Server service may be stopped without losing any job execution information. The JAMS Client will not function while the JAMS Server service is shut down.

Shut down the JAMS Executor Service

Stopping the JAMS Executor service should be a last resort, as it will not typically resolve JAMS 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 stopping this service won’t be necessary during SQL service maintenance.

Service Accounts

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, create an Active Directory Group, than add the user to the group and make the following changes in the Common.config file located at: Program Files\MVPSI\JAMS\Scheduler<directory>

<add key=AuthorizedGroup" value="domain\YourGroup"/>
Managing the JAMS Database

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.

Manually Creating the JAMS Database

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.

NOTE: The JAMS Database should always be created using the JAMS Installer or JAMS DBA utility. Manually creating the JAMS Database outside of these tools will cause various issues in JAMS.

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

Security

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.

Backing up the JAMS Database

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.

Choosing the Recovery Model

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.

Simple Recovery Model

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.

Full Recovery Model

This model contains 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 the JAMS Database from a Backup

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.

CD C:\Program Files\MVPSI\JAMS\Scheduler" JAMSDBA RESET SCHEDULE
CD C:\Program Files\MVPSI\JAMS\Scheduler" JAMSDBA UPDATE/LOG

Moving the JAMS SQL Database

To relocate the SQL database used by JAMS:

  1. Perform a normal SQL database backup and restore it to the target SQL server.
  2. Edit the connection string property of the Common.config file found in: C:\Program Files\MVPSI\JAMS\Scheduler.
  3. Restart the JAMS Scheduler service from the Windows control panel services applet.
  4. Run JAMS_DB_ERRORS.sql on the new server. This script is found in the JAMS Scheduler directory.

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.

Connection Strings for Windows Authentication

<?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>     

Connection Strings for SQL Account Authentication

<?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>
SettingsPath for the JAMS Client

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:

  1. Open the configuration file which by default is located at: C:\Program Files\MVPSI\JAMS\Client\User.config
  2. Add a new entry within the “appSettings” tags called “CommonSettingsPath” with a value of the location where you want to save the client settings. For example: 
<appSettings file="User.config">
<add key="ClientSettingsProvider.ServiceUri" value="" />
<add key="CommonSettingsPath" value="\\AppServer\ClientSettings\" />
</appSettings>
  1. Optionally, if you want the JAMS Client to save changes back to this common location simply add an entry for WriteToCommonSettings with a value of “true”. By default, any new changes will be saved to the user-specific location.
add key="WriteToCommonSettings" value="true" />
  1. Copy the desired client settings into the new common location. By default, JAMS stores the client settings by version number for each user and stores it in the .XML files found in:
%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.

  • Two critical files in this group include: Servers.xml and JAMSPage.xml. The former stores the JAMS server definitions and the latter defines shortcut settings on the JAMS page. In most cases, these are the only files that are required, with other files controlling more user specific setting such as columns and column widths.
  • Or you can copy the entire folder to the new location. These files contains the current client settings. But make sure to select the folder that corresponds to the current installed version of JAMS, e.g., “6.1.510.0”.
  • JAMS will attempt to load files from the common location that it does not find in the user-specific location. In order to force an existing JAMS client to load from the common location you will need to delete the user-specific settings.

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.

  • If the WriteToCommonSettings option is “true” for multiple JAMS Clients, they can overwrite the common settings.
  • JAMS will only load from the common location if it doesn’t find the files in the user-specific location.
  • You can prevent users from making changes to the server definitions by adding:
<add Key="LockServer" value="true" />
  • Prevent users from changing shortcuts by adding:
<add Key="LockShortcutbar" value="true" />
  • When Configuration files exist in the Common location and the user's local settings, ensure the Client loads Configuration files from the Common location by adding:
<add Key=" PrioritizeCommonSettings" value="true" />

The following is a sample of a Configuration file using PrioritizeCommonSettings:

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="PrioritizeCommonSettings"
         value="True" />
    <add key="CommonSettingsPath"
         value="\\az-win019-test\share\ClientSettings" />
    <add key="LockShortcutBar"
         value="False" />
    <add key="LockServer"
         value="False" />
    <add key="LockQuery"
         value="False" />
    <add key="LockUsername"
         value="False" />
    <add key="PromptForSearchKeys"
         value="False" />
    <add key="DefaultServer"
         value="" />
    <add key="DefaultPort"
         value="773" />
</appSettings>
Managing Encryption Keys

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 Advanced Encryption Standard (AES) 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. 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.

 

Protecting a Standalone JAMS Server

To protect a standalone JAMS Server, follow the steps below:

  1. Log on to the server as a user with "Execute" access to the JAMS configuration settings.
  2. Set your default directory to the JAMS Scheduler installation directory. The default is:
    C:\Program Files\MVPSI\JAMS\Scheduler
  3. Execute JAMSDBA.EXE to open a JAMSDBA> prompt.
  4. Enter GENERATE KEY and press Return.
  5. Enter EXPORT KEY YourFileName.txt and press Return.
  6. Enter EXIT and press Return.
  7. Then move the exported text file to a safe location.

 

Restoring a Standalone JAMS Server

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:

  1. Log on to the server as a user with "Execute" access to JAMS configuration settings.
  2. Set the default directory to the JAMS Scheduler installation directory. The default is:
    C:\Program Files\MVPSI\JAMS\Scheduler
  3. Copy the exported text file (YourFileName.txt) from your safe location to the current directory.
  4. Execute JAMSDBA.EXE to open a JAMSDBA> prompt.
  5. Enter IMPORT KEY/NOENCRYPT and press Return.
  6. Enter EXIT and press Return

 

Failover Environments

To protect the servers in a failover environment please follow the steps listed below:

  1. Make sure that your primary JAMS Server is in the running state.
  2. Log on to the primary server as a user with "Execute" access to the JAMS configuration settings.
  3. Execute JAMSDBA.EXE to open a JAMSDBA> prompt.
  4. Enter GENERATE KEY and press Return.
  5. Enter EXPORT KEY YourFileName.txt and press Return.
  6. Enter EXIT and press Return.
  7. Move the exported text file to a safe location.
  8. Log on to the secondary server as a user with "Execute" access to the JAMS configuration settings.
  9. Set your default directory to the JAMS Scheduler installation directory. The default is: C:\Program Files\MVPSI\JAMS\Scheduler
  10. Copy the exported text file (YourFileName.txt) from your safe location to the current directory.
  11. Execute JAMSDBA.EXE to open a JAMSDBA> prompt.
  12. Enter IMPORT KEY/NOENCRYPT and press Return.
  13. Enter EXIT and press Return
High Availability

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.  

JAMS Failover Architecture

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. 

Installing and Configuring the JAMS Failover

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:

  1. Begin by stepping through the normal installation of the JAMS Primary Engine.
  2. For redundancy of the JAMS Database, you can configure AlwaysOn Availability (which replaced Database Mirroring starting with SQL Server 2012), after you complete these steps.
  3. At this point, make sure to stop the JAMS Scheduler service on the Primary Engine machine.
  4. Next, begin by installing the JAMS Scheduler on the second node. When prompted for the database server, specify the same SQL Server, Instance and Database Name as you did with the Primary JAMS Engine. After choosing Next, a dialog will appear stating “Database already exists”. Be sure to select “Use Database.”
  5. At this point, make sure to stop the JAMS Scheduler service on the secondary server, just as you did in the previous step with the Primary Server.
  6. Create/Edit a Failover.config file (a sample is displayed below) in the \MVPSI\JAMS\Scheduler directory on the Primary server - by default the path is: C:\Program Files\MVPSI\JAMS\Scheduler\
  7. Copy the completed Failover.config from the Primary Engine to the Secondary Failover server. Make sure the Failover.config is identical on both servers.
  8. Next, start the JAMS Scheduler server on both the Primary and Failover machines.
  9. Lastly, if the Primary and Failover share a database, it will be necessary to add a user to the JAMS database to allow the Secondary engine to connect. This can be done by running the following SQL statements on the JAMS database.

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'

A Sample Failover config

<FailoverConfig>
<Primary>Server1</Primary>
<Secondary>Server2</Secondary>
<Port>4773</Port>
<Interval>60</Interval>
</FailoverConfig>
       

Common Log Output Location

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

Clustering

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.

JAMS Scheduler

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.

JAMS Agent using an Active/Passive Configuration

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.

JAMS Agent using an Active/Active 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.

SQL Server Mirroring

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.

       
Disaster Recovery Configuration

Recommended DR Model

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:

 

Disaster Recovery Process

Before beginning the DR Process

On the DR Server, ensure the following are true:

       

1. Restore the SQL Database

First, create a backup of the JAMS Production Database, then restore the JAMS Production Database in DR.

2. Truncate the Failover Table

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).

3. Backup the current Monitor View state

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.

4. Update the JAMS Server Agents/Nodes to point to the DR Servers

The JAMS Nodes must be updated to point to the DR Servers instead of Production Servers. In this example, all Sequences 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.

5. Reset the JAMS Schedule

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.

6. Enable Access to the JAMS Client

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.

7. Update the JAMS Server Nodes

NOTE: As the JAMS Scheduler will still be disabled, the Update Queues script must be run outside of JAMS.

8. Start the JAMS Services

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: Sequences or Jobs that were scheduled before DR that were still pending when production went offline may need manual attention.

9. Run Test Processes

On the DR Server, run a test process in JAMS to validate that the Scheduler is working as expected.

Licensing DR

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 TCP/IP Ports

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.

 

See Also

JAMS Security

JAMS Agents

 

 


Topic updated: 4/15/2019
©2019 HelpSystems, LLC. All Rights Reserved.

Send comments on this topic.