Veeam OnJobCompleted

Veeam OnJobCompleted

Certified
Enterprise Edition

Trigger a flow when a Veeam Backup & Replication job session completes

Polls /api/v1/sessions ordered by completion time (newest first) and emits one execution per evaluation containing all sessions that reached a terminal state (SUCCESS, WARNING, or FAILED) since the previous evaluation, whose session name matches jobNameFilter. Dedupe relies on the trigger's own evaluation date, so sessions already reported in a previous execution are never emitted again. Paging stops as soon as it reaches a session that completed at or before the previous evaluation, so evaluation cost stays bounded instead of growing with the server's total session history. Because the cutoff is based on completion time rather than start time, jobs that run longer than the polling interval are still caught the moment they finish. Dedup compares the VBR server's session end time against the trigger's own evaluation date; if the VBR server clock and the Kestra server clock drift, sessions can be missed or re-emitted at the window boundary, so keep both clocks in sync (e.g. via NTP).

yaml
type: io.kestra.plugin.ee.veeam.jobs.OnJobCompleted

Run a flow whenever a production backup job completes

yaml
id: veeam_job_completed
namespace: company.team

tasks:
  - id: log
    type: io.kestra.plugin.core.log.Log
    message: "{{ trigger.count }} Veeam session(s) completed"

triggers:
  - id: job_completed
    type: io.kestra.plugin.ee.veeam.jobs.OnJobCompleted
    host: "{{ secret('VEEAM_HOST') }}"
    username: "{{ secret('VEEAM_USERNAME') }}"
    password: "{{ secret('VEEAM_PASSWORD') }}"
    jobNameFilter: "prod-*"
    interval: PT5M
Properties

Veeam Backup & Replication server host

Hostname or IP address of the Veeam Backup & Replication server exposing the REST API.

Password

Password for username. Treat it as a secret, e.g. {{ secret('VEEAM_PASSWORD') }}.

Username

Veeam Backup & Replication account used for the OAuth 2.0 password grant.

Defaultfalse

Specifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.

Default1.3-rev1

API version

Value sent as the mandatory x-api-version header on every request, including authentication. Must match a version supported by the target server; a missing or unsupported value causes VBR to reject the request with HTTP 400. Defaults to 1.3-rev1 (VBR 12.1 and later).

DefaultPT5M
Formatduration

Polling interval

Delay between two polls of /api/v1/sessions. A minimal interval of at least PT30S is recommended to avoid overloading the VBR server.

Default*

Job name filter

Glob pattern matched against the session name (typically the parent job's name), for example prod-*. Defaults to *, matching every job.

HTTP client configuration

Optional HTTP client overrides (timeouts, proxy, TLS). Veeam Backup & Replication servers ship a self-signed certificate by default: set options.ssl.insecureTrustAllCertificates: true, or provide a trust store, otherwise the first request fails with a TLS handshake error.

Definitions
allowFailedbooleanstring
Defaultfalse

If true, allow a failed response code (response code >= 400)

allowedResponseCodesarray
SubTypeinteger

List of response code allowed for this request

auth

The authentication to use.

type*Requiredobject
passwordstring

The password for HTTP basic authentication.

usernamestring

The username for HTTP basic authentication.

type*Requiredobject
tokenstring

The token for bearer token authentication.

type*Requiredobject
passwordstring

The password for HTTP Digest authentication.

usernamestring

The username for HTTP Digest authentication.

defaultCharsetstring
DefaultUTF-8

The default charset for the request.

enabledTcpExtendedKeepAlivebooleanstring
Defaulttrue

Whether to enable TCP Keep-Alive extended socket options (TCP_KEEPIDLE, TCP_KEEPINTERVAL, TCP_KEEPCOUNT).

Set to false when running on Windows workers, as these extended socket options are not supported by the Windows JDK and will cause connection failures.

followRedirectsbooleanstring
Defaulttrue

Whether redirects should be followed automatically.

logsarray
SubTypestring
Possible Values
REQUEST_HEADERSREQUEST_BODYRESPONSE_HEADERSRESPONSE_BODY

The enabled log.

proxy

The proxy configuration.

addressstring

The address of the proxy server.

passwordstring

The password for proxy authentication.

portintegerstring

The port of the proxy server.

typestring
DefaultDIRECT
Possible Values
DIRECTHTTPSOCKS

The type of proxy to use.

usernamestring

The username for proxy authentication.

ssl

The SSL request options

insecureTrustAllCertificatesbooleanstring

Whether to disable checking of the remote SSL certificate.

Only applies if no trust store is configured. Note: This makes the SSL connection insecure and should only be used for testing. If you are using a self-signed certificate, set up a trust store instead.

timeout

The timeout configuration.

connectTimeoutstring

The time allowed to establish a connection to the server before failing.

readIdleTimeoutstring
DefaultPT5M

The time allowed for a read connection to remain idle before closing it.

Default9419

REST API port

TCP port of the Veeam Backup & Replication REST API. Defaults to 9419.

SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED

List of execution states after which a trigger should be stopped (a.k.a. disabled).

Defaulttrue

A condition that determines whether the trigger should run.

A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (true, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.

Number of sessions returned

Sessions that completed since the previous evaluation

Definitions
creationTimestring
Formatdate-time

Session creation time

endTimestring
Formatdate-time

Session end time

Populated once the session has reached a terminal state.

idstring

Session id

jobIdstring

Parent job id

namestring

Session name

resultstring

Raw session result

Raw result value returned by the API, for example None, Success, Warning, or Failed.

statestring

Raw session state

Raw state value returned by the API, for example Working, Stopped, or Idle.

statusstring
Possible Values
RUNNINGSUCCESSWARNINGFAILEDUNKNOWN

Normalized session status

Derived from state/result: RUNNING, SUCCESS, WARNING, FAILED, or UNKNOWN.