GoAnywhere MFT

Get paged when a GoAnywhere MFT project fails, when a file-transfer service stops, or when a certificate is about to expire. The person on call can Run the project again straight from the alert, by pressing a key or speaking on a call, replying to a text, or tapping a button in Teams or Slack, and they hear back how the new run ended.

Plan availability: The GoAnywhere MFT integration is included on the Starter plan and up. See Plans & Billing.

How it works

A small program called the Agent (the JAMS Incident Connector) runs inside your network. Every minute or so it asks GoAnywhere for failed jobs, service status and expiring certificates, and reports what it finds to JAMS Incident Management, which pages the right people.

  • Nothing in GoAnywhere is opened to the internet. The Agent only makes outbound connections: to GoAnywhere, and to JAMS Incident Management.
  • Nothing in your projects changes. No On Error tasks, no webhooks to add. The Agent reads GoAnywhere's own Unresolved jobs list.
  • The error comes with the alert. Each alert includes GoAnywhere's own error message, such as "partner SFTP unreachable", so you know what broke before you open anything.

What you'll need

  • GoAnywhere MFT, with access to its admin console.
  • Admin access in JAMS Incident Management.
  • A Windows server that can reach the GoAnywhere admin console on port 8000 (HTTP) or 8001 (HTTPS). The GoAnywhere server itself is the easiest choice; see Step 2.
  • A GoAnywhere admin user for the Agent to sign in as, ideally with an API key. See Which GoAnywhere user?

Step 1: Add your GoAnywhere server

  1. Open Integrations β†’ GoAnywhere MFT (under File Transfer (MFT) in the sidebar).
  2. Under Add a GoAnywhere server, enter a name, e.g. GoAnywhere Prod, and click Add server.
  3. Copy the pairing token and keep it somewhere safe for Step 2. It is shown only once. If you lose it, add the server again and remove the old entry.
  4. Click Download Agent installer (.msi).

Add one entry, and install one Agent, for each GoAnywhere server you want to monitor.

Step 2: Install the Agent

Run the installer on a machine that can reach your GoAnywhere server on port 8000 or 8001.

Tip: installing the Agent on the GoAnywhere server itself is easiest. It also lets JAMS Incident Management list projects that have never run yet, because the Agent can read GoAnywhere's projects folder directly.

  1. Run the installer. In the setup window, paste the pairing token. Setup recognises it as a GoAnywhere token and selects GoAnywhere MFT.
  2. Enter the address you open the GoAnywhere admin console with, e.g. https://mft.example.com:8001.
  3. Under Sign in to GoAnywhere with, choose API key (recommended) and paste the user's API key, or choose Username and password.
  4. If GoAnywhere uses a self-signed certificate (common on port 8001), tick Accept a self-signed certificate from GoAnywhere. This applies only to the GoAnywhere connection; the Agent's connection to JAMS Incident Management is always fully checked.
  5. Click Test connection to check the address and sign-in, then Save & Start.

On a Linux server, use Download for Linux (.tar.gz) instead and follow Installing the Agent on Linux. The installer offers the same guided setup: paste the pairing token, then the GoAnywhere address and sign-in. Setup tests them before saving.

Back in JAMS Incident Management, the server's status changes from Agent never connected to Waiting for first check once the Agent connects.

Which GoAnywhere user?

  • For alerts, the user only needs to be able to view jobs.
  • For Run again, the user also needs a role that may execute projects. The built-in admin account usually can't, so create a dedicated user for the Agent. Test connection can't check this without running a project, so a missing role only shows up when someone first chooses Run again.

An API key is better than a password: it doesn't change when someone resets the password, and you can revoke it on its own.

Step 3: Turn monitoring on

  1. Back on Integrations β†’ GoAnywhere MFT, click Configure next to your server.
  2. Tick Monitor this GoAnywhere server.
  3. Choose how often to Check GoAnywhere, from every 30 seconds to every 15 minutes. Every minute suits most teams.
  4. Leave Also alert on cancelled jobs off unless you want those too. A job someone cancelled on purpose usually isn't an incident.
  5. Set up at least one rule (Step 4) and click Save.

Already-failed jobs don't page. The first check records whatever is already in GoAnywhere's Unresolved jobs list and alerts on nothing in it. Alerts start with the next new failure, so turning monitoring on never floods anyone with old problems.

Step 4: Choose who hears about which projects

Under Who hears about which projects, each rule says which projects it covers and who to page:

  • Projects: click Choose projects and pick folders or individual projects. Picking a folder covers everything in it, including projects added later.
  • Who and how: pick people, groups, on-call schedules or Teams/Slack channels, the channels to use, and how long to wait before escalating to the next person.

A failed job goes to the first rule that covers it, so put specific rules above broad ones. Use ↑ and ↓ to reorder. The last rule can be set to Every project not covered by a rule above, so nothing falls through the gaps.

Where the project list comes from. GoAnywhere has no way to list its projects, so JAMS Incident Management builds the list from GoAnywhere's job history, plus the projects folder when the Agent runs on the GoAnywhere server. Click Get the latest list from GoAnywhere to fetch it. A project that has never run won't appear unless the Agent is on the GoAnywhere server; you can still cover it by typing its folder, e.g. /Payroll.

Matching by name. Under Advanced: alert on by name pattern, enter one pattern per line, matched against the folder or the project name. * matches anything, e.g. *_TEST.

Never alert on

Under Never alert on, choose projects or patterns that should never page anyone, such as test folders or projects that fail by design. This is checked before every rule.


What the alert looks like

The alert leads with what went wrong and keeps the details to one line:

GoAnywhere: Upload_Payroll failed Partner SFTP unreachable. /Payroll/Daily/Upload_Payroll Β· job 1000000002217 Β· 3:39 PM

On a phone call it's even shorter: just the project name and the reason, then the options, e.g. "GoAnywhere project Upload Payroll failed: partner SFTP unreachable. Press 1 or say acknowledge to acknowledge. Press 2 or say run again to run the project again."

Every alert also offers View log, which shows the job's GoAnywhere log.

Running a project again from the alert

To offer this, tick Run the project again under What responders can do from an alert on the server's settings page.

When someone chooses it:

  1. The Agent runs the project again in GoAnywhere, with the same variables the failed run used.
  2. The alert is resolved as soon as GoAnywhere has started the new job, so nobody else is paged about it.
  3. The same people are told how the new run ended:
    • Succeeded on Run again: a short all-clear.
    • Failed again after Run again: a new alert, sent even if the flow's cooldown would normally hold it back.

Run again is offered on a call (press a key or say "run again"), by text reply, in the mobile app, and as a button on Teams and Slack cards. It needs the Agent's GoAnywhere user to have a role that may execute projects (see Which GoAnywhere user?).


Server health alerts

Under Server health on the server's settings page you can also be alerted about the GoAnywhere server itself. These alerts go to their own list of people under Notify, because whoever looks after the server and its certificates often isn't the person on call for failed transfers.

  • Alert when one of these services stops. Tick the services your partners use, such as SFTP, FTPS or HTTPS. You're told when one stops and again when it's running. A service only alerts after it has been seen running, so one that's switched off on purpose never pages.
  • Warn about certificates expiring within 7, 14, 30, 60 or 90 days, or Don't check. Each certificate alerts once.

If nobody is chosen under Notify, service and certificate alerts aren't sent, and the page tells you so.

If the Agent can't see GoAnywhere

If no successful check arrives for a while, the server shows Cannot see GoAnywhere and everyone in every rule (plus the Server health people) is paged once: "GoAnywhere monitoring is blind". It's sent because, until it's fixed, failed jobs can't be alerted. The settings page says which problem it is:

  • The Agent is not reporting. Check that the JAMS Incident Connector service is running on the Agent's machine, and that the machine is switched on.
  • The Agent is running but cannot read GoAnywhere. The message includes GoAnywhere's error, usually a changed password, a revoked API key, or GoAnywhere being down.

Once checks succeed again, monitoring carries on and the alert can fire again next time.


Troubleshooting

What you seeWhat to check
Agent never connectedThe Agent isn't installed or wasn't given this server's pairing token. Install it with the token from Step 1.
Waiting for first check that doesn't changeMonitoring is on but the Agent hasn't reported yet. Confirm the JAMS Incident Connector service is running.
Cannot see GoAnywhereSee If the Agent can't see GoAnywhere.
A failure didn't page anyoneOpen Recent failed jobs on the server's settings page. Each job says why it did or didn't alert: no rule covers it or it's on Never alert on, cancelled jobs are off, it was already unresolved when monitoring started, or it's still waiting for GoAnywhere's error message (an alert waits briefly for the error text, then goes out without it).
Run again fails straight awayThe Agent's GoAnywhere user can't execute projects. Give it a role that can, or use a dedicated user instead of admin.
A project is missing from the pickerIt hasn't run since the list was fetched. Click Get the latest list from GoAnywhere, install the Agent on the GoAnywhere server, or type the project's folder.