EASE jobs
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 support | The 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 relay | With its host, port, Customer Id, EASE Schedule Name, EASE User and EASE Password. See Registering the agent |
| The EASE plugin is enabled | It is enabled by default for your organization, like the other relay-side connectors. See Plugins |
| The job names that agent | Picked 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.
| Field | What it is | Limit |
|---|---|---|
| Customer Id | Your EASE customer id. Without it the agent reports DOWN | 64 characters |
| EASE Schedule Name | Your schedule on the EASE OpCon. Without it the agent reports DOWN | 255 characters |
| Time Zone | The IANA time zone of the EASE schedule's day, for example America/Chicago. Leave it blank to use the relay host's local date | 64 characters, and it must be a zone the platform recognizes |
| EASE User | The EASE OpCon login name. Without a user and password, EASE jobs fail at start | 255 characters |
| EASE Password | The password for the EASE User | 512 characters |
Local (Continuum) events — the event user and token the SEQ property write-back uses.
| Field | What it is | Limit |
|---|---|---|
| Local Event User | The event user the SEQ property write-back submits as. Must not contain a comma | 255 characters |
| Local Event Token | That user's token. Must not contain a comma | 512 characters |
Debug Mode adds a request and response trace to the job output. Passwords and tokens are never written to it.
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 type | What the remote job does | Its other fields |
|---|---|---|
| EASE - RSJ | Runs a Symitar job, single-threaded | Job Name (required) |
| EASE - RSJMULTI | Runs a Symitar job, multi-threaded | Job Name (required). Identifier is required |
| EASE - RSJEDIT | Runs a Symitar job with an edit file | Job Name, Edit File (both required) |
| EASE - MONITOR | Watches for an incoming file | File (required) |
| EASE - PROMPT | Answers a single prompt | Job Name, Prompt, Response (all required) |
| EASE - PROMPTSEQ | Answers a single prompt with a SEQ | Job Name, Prompt (both required) |
| EASE - TRANSLATE2COMMAS | Answers a single prompt whose response contains commas | Job Name, Prompt, Response (all required) |
| EASE - RESET | Resets a single prompt | Job Name, Prompt (both required) |
| EASE - SEQ | Collects a report's sequence number | Job Name, Report Name (both required). Identifier is required — it names the property the number is written to |
| EASE - SEQ-SEND | Copies a specified SEQ to the reports directory for FTP | Seq (required) |
| EASE - COPY-RPT-OUT | Copies a report to the letter files directory for FTP | Output File (required) |
| EASE - COPY-DATA-TO-LTRFILE | Copies an outgoing data file to the letter files directory | Source File, Output File (both required) |
| EASE - COPY-RENAME-LTRFILE-OUT | Copies or renames a letter file for FTP | Action — COPY or RENAME; Source File, Output File (both required) |
| EASE - MOVE-LTRFILE-TO-DATA | Moves an incoming letter file to the data files directory | Source File, Output File (both required) |
| EASE - RENAME-LTRFILE-IN | Renames a letter file, removing its prefix | Source File, Output File (both required) |
| EASE - FILEPERMS | Sets a letter file's privileges to 774 | File (required) |
| EASE - RUN-FTP-OUT | FTPs a letter file off Symitar | Output 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
- The relay logs in to the EASE OpCon with the agent's EASE User and EASE Password.
- It finds today's instance of your EASE schedule, by EASE Schedule Name and the date (see the Time Zone note above).
- It runs three pre-checks on that schedule and stops the job if any of them fails — see Schedule pre-checks.
- 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.
- It polls the remote job every 5 seconds until the remote status is terminal.
- 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.
- 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 wrong | The message |
|---|---|
| Today's instance of the schedule does not exist | Daily Schedule <name> not found in Daily |
| It is on hold | Daily Schedule <name> ON HOLD exiting ... |
| It is waiting | Daily Schedule <name> WAITING exiting ... |
| It has already finished | Daily 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 status | Continuum outcome |
|---|---|
| Finished OK, Marked Finished OK, Fixed | Finished OK, exit code 0 |
| Failed, Marked Failed, Skipped, Cancelled, Missed Start Time, Initialization Error | Failed, exit code -1, with EASE job <status> as the reason |
| Anything else — held, waiting, running, under review, or processing its own events | Still running. The relay keeps polling |
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 rejected | EASE login failed: .... With no user or password stored, EASE agent <name> has no EASE User/Password configured |
| No EASE Schedule Name is stored | EASE agent <name> has no EASE Schedule Name configured |
| The add was refused | EASE add job failed: <the EASE OpCon's own message> |
| The add did not complete in 60 seconds | EASE add job did not complete within 60 s |
| A required field is empty, or the job type is unknown | The field's label, or Unknown EASE task type '<name>' |
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:
| Reason | What it means |
|---|---|
no local event credentials configured | The agent has no Local Event User or no Local Event Token |
no value on EASE | The remote job finished but left no sequence number |
value contains a comma or line break | The 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 retrievewhen the remote job produced none.- The SEQ property line, on a SEQ job.
- A closing line —
<TYPE> - <job name> CompleteorFailed, withReason : <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 restart | What the job reports |
|---|---|
| The add had not been sent | Relay 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 known | Relay restarted before the EASE job id was known; the job may have been added to the EASE schedule |
| The remote job id was known | The 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.
- 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 see | What 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 run | Customer 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 start | The 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 Daily | Today'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 immediately | Expected. See The three BUNDLE types |
SEQ property not written: no local event credentials configured | The agent has no Local Event User / Local Event Token, or no Default Event Environment |
| The job is still running long after the EASE job finished | The remote job is in a status Continuum does not treat as terminal. See the note under Outcomes |
Related topics
- Job type catalog — every job type available today
- Agents and pools — registering and reading agent status
- Relays — what a relay is and what it needs
- Properties and tags — reading the SEQ property a job writes
- OpCon RPA Task job — the other relay-side REST connector
- Legacy LSAM connectors — the LSAM job types and their batch user