Skip to main content

EASE jobs

BETA Preview

This feature is still being finalized by Development.

Behavior-level reference for building and diagnosing EASE jobs.

EASE — Episys As A Service — is Jack Henry's hosted Symitar environment. Jack Henry runs its own OpCon for it, the EASE OpCon, and your organization has a schedule there holding pre-built OnRequest jobs named RSJ, PROMPT, SEQ, MONITOR and so on.

An EASE job in OpCon Continuum does not run anything itself. It adds the matching job to today's instance of your EASE schedule, passing your field values as that job's properties, waits for the remote job to finish, and reports the remote verdict as the Continuum job's outcome. The remote job's output comes back and is shown on the Output tab.

Before you can build one​

Four things have to be true:

A relay is running and reports EASE supportThe relay calls the EASE OpCon's REST API directly. A relay that has not reported EASE support refuses both EASE agent registration and EASE work with the relay serving agent pool <pool> has not reported EASE support. Upgrade the relay to run EASE jobs.
An EASE agent is registered on that relayWith its host, port, Customer Id, EASE Schedule Name, EASE User and EASE Password. See Registering the agent
The EASE plugin is enabledIt is enabled by default for your organization, like the other relay-side connectors. See Plugins
The job names that agentPicked in Agent Assignment as usual

EASE jobs take no connection of any kind — no batch user. The credentials they use are the ones stored on the agent, not on the job.

Registering the agent​

An EASE agent is registered on a relay, from Agents → the relay's agent list, with Platform set to EASE. The agent list and the Agents report both label the type EASE.

It is reached through a relay but it is not an LSAM. The relay calls the EASE OpCon over HTTPS REST and never dials it over the LSAM wire, so an EASE agent has no JORS port and no file-transfer endpoint — it can be neither end of a SMAFT transfer. This is the same shape as an OpCon MFT or OpCon RPA agent.

The agent form​

EASE Host and HTTPS Port name the EASE OpCon's REST API. The port starts at 443.

Then two groups of connector settings, and a Debug Mode switch:

EASE Datacenter — your customer, schedule and login on the EASE OpCon.

FieldWhat it isLimit
Customer IdYour EASE customer id. Without it the agent reports DOWN64 characters
EASE Schedule NameYour schedule on the EASE OpCon. Without it the agent reports DOWN255 characters
Time ZoneThe IANA time zone of the EASE schedule's day, for example America/Chicago. Leave it blank to use the relay host's local date64 characters, and it must be a zone the platform recognizes
EASE UserThe EASE OpCon login name. Without a user and password, EASE jobs fail at start255 characters
EASE PasswordThe password for the EASE User512 characters

Local (Continuum) events — the event user and token the SEQ property write-back uses.

FieldWhat it isLimit
Local Event UserThe event user the SEQ property write-back submits as. Must not contain a comma255 characters
Local Event TokenThat user's token. Must not contain a comma512 characters

Debug Mode adds a request and response trace to the job output. Passwords and tokens are never written to it.

Set the Time Zone if your relay host is not on the schedule's clock

The EASE job is added to today's instance of your schedule, and "today" is decided by the date the relay computes. With Time Zone blank that is the relay host's own local date — so a relay host running in UTC rolls over to the next day at 19:00 US Central, and an evening job would be added to tomorrow's schedule instead of today's. Setting Time Zone to the zone the EASE schedule runs on removes the question.

The two secrets are write-only​

EASE Password and Local Event Token are stored encrypted and are never returned by any read. The form never pre-fills them; it tells you whether one is stored.

  • Leave a secret blank to keep the stored value. On a new agent, blank means none is stored.
  • Type a value to replace it.
  • Clear stages the removal; it takes effect when you save. Typing a value cancels a staged Clear.

Moving the EASE host or port makes the password required again. An edit that changes EASE Host or HTTPS Port is refused with Re-enter the EASE password when changing the EASE host or port until you either type the password or stage its Clear — so a stored password is never sent to a host you did not enter it for.

Default Event Environment​

An EASE agent has no MSGIN directory, so this setting means something narrower than it does for an LSAM: it is the environment the SEQ property write-back is applied to. The form says so — EASE SEQ jobs write their SEQ property into Continuum through this environment. If unset, the SEQ property write-back is rejected.

The twenty job types​

All twenty are in the Integration category and come from one plugin, EASE (Episys As A Service). Each is named EASE - <TYPE> : <description> in the job type catalog.

Seventeen add a job to the EASE schedule. Every one of them takes Identifier (optional except where noted) plus the fields below. Each field holds up to 500 characters and cannot contain a line break.

Job typeWhat the remote job doesIts other fields
EASE - RSJRuns a Symitar job, single-threadedJob Name (required)
EASE - RSJMULTIRuns a Symitar job, multi-threadedJob Name (required). Identifier is required
EASE - RSJEDITRuns a Symitar job with an edit fileJob Name, Edit File (both required)
EASE - MONITORWatches for an incoming fileFile (required)
EASE - PROMPTAnswers a single promptJob Name, Prompt, Response (all required)
EASE - PROMPTSEQAnswers a single prompt with a SEQJob Name, Prompt (both required)
EASE - TRANSLATE2COMMASAnswers a single prompt whose response contains commasJob Name, Prompt, Response (all required)
EASE - RESETResets a single promptJob Name, Prompt (both required)
EASE - SEQCollects a report's sequence numberJob Name, Report Name (both required). Identifier is required — it names the property the number is written to
EASE - SEQ-SENDCopies a specified SEQ to the reports directory for FTPSeq (required)
EASE - COPY-RPT-OUTCopies a report to the letter files directory for FTPOutput File (required)
EASE - COPY-DATA-TO-LTRFILECopies an outgoing data file to the letter files directorySource File, Output File (both required)
EASE - COPY-RENAME-LTRFILE-OUTCopies or renames a letter file for FTPAction — COPY or RENAME; Source File, Output File (both required)
EASE - MOVE-LTRFILE-TO-DATAMoves an incoming letter file to the data files directorySource File, Output File (both required)
EASE - RENAME-LTRFILE-INRenames a letter file, removing its prefixSource File, Output File (both required)
EASE - FILEPERMSSets a letter file's privileges to 774File (required)
EASE - RUN-FTP-OUTFTPs a letter file off SymitarOutput File, Email (both required)

Action defaults to COPY. On COPY-RENAME-LTRFILE-OUT the editor shows COPY without saving it, and an EASE job with no Action value is added as the remote COPY-LTRFILE-OUT job.

None of the seventeen has an exit-criteria setting. The remote job's status is the verdict — see Outcomes.

The three BUNDLE types are not supported yet​

EASE - BUNDLE-RSJEDIT, EASE - BUNDLE-SEQ-FTP and EASE - BUNDLE-SEQ-PROMPT are in the catalog and their fields can be filled in and saved, but a job of one of these types fails as soon as it starts, with:

EASE <TYPE> is not yet supported in Continuum: BUNDLE task types add a container job to the
local OpCon schedule, and Continuum has no equivalent yet. Model the bundled steps as EASE
jobs in a workflow instead.

They are in the catalog so that a migrated job keeps its field values. In Classic, each adds a container job to your local OpCon schedule, which in Continuum is Continuum itself — and a relay has no route to add a job to a workflow instance and read its status back.

Build the steps as separate EASE jobs with dependencies instead. The bundles are just fixed sequences: BUNDLE-RSJEDIT is MONITOR then RSJEDIT; BUNDLE-SEQ-PROMPT is SEQ then PROMPT; and BUNDLE-SEQ-FTP is SEQ, COPY-RPT-OUT and RUN-FTP-OUT. See Dependencies.

What happens when the job runs​

  1. The relay logs in to the EASE OpCon with the agent's EASE User and EASE Password.
  2. It finds today's instance of your EASE schedule, by EASE Schedule Name and the date (see the Time Zone note above).
  3. It runs three pre-checks on that schedule and stops the job if any of them fails — see Schedule pre-checks.
  4. It adds the matching job to that schedule instance, with your field values as the remote job's properties, and waits up to 60 seconds for the add to complete.
  5. It polls the remote job every 5 seconds until the remote status is terminal.
  6. For a SEQ job that succeeded, it reads the sequence number and writes it into a Continuum global property — see The SEQ property write-back.
  7. It fetches the remote job's output, renders the job log and sends it back as the Continuum job's output.

Schedule pre-checks​

Before anything is added, the relay checks the state of today's schedule instance. Each of these fails the job with its own message and nothing is submitted to EASE:

What is wrongThe message
Today's instance of the schedule does not existDaily Schedule <name> not found in Daily
It is on holdDaily Schedule <name> ON HOLD exiting ...
It is waitingDaily Schedule <name> WAITING exiting ...
It has already finishedDaily Schedule <name> COMPLETE exiting ...

These are the same checks, with the same wording, that Classic's EASE connector applies.

Outcomes​

The remote job's status decides the Continuum job's verdict.

Remote statusContinuum outcome
Finished OK, Marked Finished OK, FixedFinished OK, exit code 0
Failed, Marked Failed, Skipped, Cancelled, Missed Start Time, Initialization ErrorFailed, exit code -1, with EASE job <status> as the reason
Anything else — held, waiting, running, under review, or processing its own eventsStill running. The relay keeps polling
note

A remote job sitting in a status that is terminal on the EASE OpCon but not in the table above — Under Review, for instance — is polled indefinitely rather than being judged. The Continuum job stays running until the remote status becomes one the table names, or until you kill it. This matches Classic's behavior.

Other ways the job can fail, all of them with the reason on the job:

The login was rejectedEASE login failed: .... With no user or password stored, EASE agent <name> has no EASE User/Password configured
No EASE Schedule Name is storedEASE agent <name> has no EASE Schedule Name configured
The add was refusedEASE add job failed: <the EASE OpCon's own message>
The add did not complete in 60 secondsEASE add job did not complete within 60 s
A required field is empty, or the job type is unknownThe field's label, or Unknown EASE task type '<name>'
A failed add does not always mean nothing was added

A few add failures are genuinely ambiguous — the EASE OpCon accepted the request and then stopped answering about it. Those failures end with the job may have been added to the EASE schedule, so check your EASE schedule before you restart the Continuum job. Failures that end with nothing was submitted to EASE are unambiguous and safe to restart.

Repeated login rejections are held off for five minutes​

If the EASE OpCon rejects the login, the relay stops sending logins for that agent for five minutes and fails EASE jobs on it with that same rejection. After the five minutes it tries once more for the whole agent; another rejection restarts the hold, a success clears it.

This exists so that a wrong password does not lock out your EASE account — without it, every running EASE job polling every five seconds would keep re-presenting the bad credentials. Editing the agent's user or password clears the hold immediately, so a corrected password takes effect on the next job rather than after the cool-down.

A timeout, a refused connection or a server error on the EASE OpCon does not start the hold: those are not credential problems, and a brief outage must not fail new jobs for minutes.

The SEQ property write-back​

An EASE - SEQ job collects a report's sequence number on the EASE side. After the remote job succeeds, Continuum reads that number and writes it into a global property named SEQ-<identifier>, with every . and _ removed from the identifier — so an Identifier of ID.1_A writes the property SEQ-ID1A.

Later jobs in the workflow read it as [[SEQ-ID1A]], the same as any other global property. See Properties and tags.

What it needs before it can work:

  • The agent's Local Event User and Local Event Token are both stored.
  • The agent has a Default Event Environment.
  • Neither credential contains a comma — the form refuses one.

The outcome is always on the Output tab, whether the write succeeded or not, as either SEQ property <name> = <value> submitted to Continuum (ACCEPTED) or SEQ property not written: <reason>. Reasons you may see:

ReasonWhat it means
no local event credentials configuredThe agent has no Local Event User or no Local Event Token
no value on EASEThe remote job finished but left no sequence number
value contains a comma or line breakThe sequence number read back cannot be carried as a property value

A rejected write does not fail the job: the remote job succeeded, so the job succeeded. The reason is on the output.

What the Output tab shows​

The output is rendered once, at the end of the run, in Classic's job-log layout:

  • A Job Information header — the schedule name, the task type, the daily job id once it is known, and every field you filled in.
  • The remote job's output files, each under its own name, up to 20 files.
  • No Files to retrieve when the remote job produced none.
  • The SEQ property line, on a SEQ job.
  • A closing line — <TYPE> - <job name> Complete or Failed, with Reason : <message> on a failure.

With Debug Mode on, a request and response trace is added between the header and the output. The login's response is always written as (token response redacted), and no request body is ever traced.

Output retrieval is bounded. It is given 180 seconds in total; past that the output says EASE job output retrieval exceeded 180 s and the job still reports its real verdict. Output over 65,536 characters is truncated with a ... (truncated) marker.

Killing a running job​

Killing an EASE job from Continuum sends a kill for the remote job as well.

  • Before the job has been added, the kill is recorded and the add is skipped — EASE job killed before it was added to the EASE schedule; nothing was submitted to EASE.
  • Once the remote job id is known, the remote kill is sent and the job reports EASE job killed.
  • If the remote kill cannot be confirmed within a minute, the Continuum job still ends, with EASE job killed locally; the remote kill was not confirmed: <reason> — so check the EASE schedule, because the remote job may still be running there.

See Job and workflow statuses.

A relay restart resumes the run​

An EASE run in flight when the relay restarts is picked up again, and the relay never adds the same remote job twice. What it reports depends on how far the run had got:

At the restartWhat the job reports
The add had not been sentRelay restarted before the EASE job was added; nothing was submitted to EASE
The add had been sent but the remote job id was not yet knownRelay restarted before the EASE job id was known; the job may have been added to the EASE schedule
The remote job id was knownThe run resumes, polling as before

Agent health​

The relay probes each EASE agent every 10 seconds, with a 10-second timeout, by asking the EASE OpCon for its version. The agent is UP when it has both a Customer Id and an EASE Schedule Name and the EASE OpCon answers; DOWN otherwise. The reported version is the EASE OpCon's own REST API version.

The probe does not check the login. It sends no credentials, so an agent with a wrong EASE Password still reports UP — its jobs then fail at start with a login failure. The same is true in Classic.

Status reaches Continuum on the relay's heartbeat, so offline detection, operator Down/Limited state and legacy agent-group dispatch work exactly as they do for any other legacy agent. See Agents and pools.

Good to know
  • The job you build is not the job that runs. Your EASE job adds a pre-built OnRequest job to your EASE schedule. If that remote job does not exist on the EASE side, the add fails — nothing Continuum can configure will create it.
  • A missing Customer Id or EASE Schedule Name shows up as DOWN, not as a job failure. The health probe refuses to call the EASE OpCon without both, so look at the agent before the job.
  • The EASE OpCon's certificate is not verified. The relay reaches it over HTTPS without validating the server certificate, matching Classic's EASE connector and the other relay-side REST connectors.
  • The Identifier is what makes a SEQ number reachable. It is optional on most types but required on SEQ and RSJMULTI, and on SEQ it decides the property name.
  • Nothing on an EASE job is a connection. Unlike the LSAM job types, there is no batch user — the credentials live on the agent.

Troubleshooting​

What you seeWhat it usually is
This relay must be upgraded to run EASE agents.The relay has not reported EASE support. Upgrade the relay
The agent is DOWN and no job has ever runCustomer Id or EASE Schedule Name is blank, or the EASE Host, port or network path is wrong
The agent is UP but every job fails at startThe login is being rejected. Check EASE User and EASE Password — and remember a rejection holds logins off for five minutes unless you edit the agent
Daily Schedule <name> not found in DailyToday's instance of the schedule does not exist on the EASE OpCon — or the relay's idea of "today" is a day out. Set Time Zone
A BUNDLE job fails immediatelyExpected. See The three BUNDLE types
SEQ property not written: no local event credentials configuredThe agent has no Local Event User / Local Event Token, or no Default Event Environment
The job is still running long after the EASE job finishedThe remote job is in a status Continuum does not treat as terminal. See the note under Outcomes

Related topics