# Jobs and job templates

> Source: https://docs.clonepartner.com/using/jobs/

<!-- sources: ui/src/views/JobTemplatesView.vue, ui/src/views/JobTemplateDetailView.vue, ui/src/views/JobsView.vue, ui/src/views/JobDetailView.vue, ui/src/views/JobTaskEditorView.vue, references/envoy/jobs.md -->

# Jobs and job templates

A [Job Template](/concepts/tasks-jobs-and-templates/) is a reusable DAG of Tasks with connector type slots — a blueprint. A Job is an instantiated copy of a template with stored Connectors bound to those slots, ready to execute. Operators work mostly with Jobs; templates are authored by implementers (see [Job templates and DAGs](/building/job-templates-and-dags/)).

## Screen overview: Job Templates list

Open **Templates** in the sidebar. The page header reads **Job Templates** ("Reusable orchestration recipes with connector type slots.") with a refresh button, an **Import** button, and a **New Template** button. A search box ("Search templates...") and a **Status** filter (**Active** / **Archived**) sit above the table.

Columns: a selection checkbox, **Name** (sortable), **Description**, **Status**, and **Created** (sortable). Each row's ⋮ menu offers **Export**, **Archive** or **Restore**, and **Delete permanently**. Selecting rows switches the toolbar to a bulk-actions bar with **Export**. Deleting a template asks for confirmation: "This will permanently delete '&lt;name&gt;' and all its jobs. This cannot be undone."

<!-- screenshot: jobs-templates-list | Job Templates list with the search box, Status filter, and the New Template and Import buttons visible -->

Clicking a row opens the template detail page, which shows the template's status badge, its connector slot chips, **Created**/**Updated** dates, and these sections:

- **Connector Slots** — a table of the template's typed slots.
- **Task DAG** — a table with **Task Key**, **Task**, **Type**, and **Dependencies** columns describing each node.
- **Dashboard templates** — dashboard YAML snapshotted onto each Job created from this template, with an **Add dashboard** button.
- **Jobs** — every Job instantiated from this template, with a **New Job** button.

Header actions are **Edit**, **Create Job**, and a ⋮ menu with **Archive**/**Restore** and **Delete permanently**.

## Screen overview: Jobs list

Open **Jobs** in the sidebar. The page header reads **Jobs** ("Instantiated job templates with bound connectors.") with a refresh button and a **View Templates** button. A search box ("Search jobs...") and a **Status** filter (**Active** / **Archived**) sit above the table.

Columns: **Name** (sortable), **Template**, **Description**, **Status**, and **Created** (sortable). Each row's ⋮ menu offers **Archive** or **Restore** and **Delete permanently** ("This will permanently delete '&lt;name&gt;' and all its run history."). Clicking a row opens the Job detail page.

## To create a job from a template

1. Open **Templates** and select the template.
2. Select **Create Job**. The **Create Job** dialog opens ("Configure connectors and arguments to create a runnable job from this template.").
3. Enter a **Name** (required; defaults to the template name) and optionally a **Description**.
4. Under **Connector Mapping**, pick a stored Connector for every slot. Each select is filtered to Connectors of the slot's type, and a slot is pre-filled when exactly one matching Connector exists. See [Connectors and connected accounts](/using/connectors/) for creating Connectors first.
5. Under **Arguments** (shown only when the template declares arguments), fill each field. Required arguments are marked with an asterisk; fields with defaults are pre-filled. Some arguments render searchable pickers (for example integrated-account or MongoDB record pickers) instead of plain text inputs.
6. Select **Create Job**. The button stays disabled until the name, every connector slot, and all required arguments are filled. On success you land on the new Job's detail page.

<!-- screenshot: jobs-create-job-dialog | Create Job dialog with the Connector Mapping section showing one slot bound and the Arguments section with a required field -->

## To run a job

1. Open the Job's detail page.
2. Select **Run All** to execute the whole DAG, or check individual rows in the **Tasks** section and select **Run &lt;N&gt; Selected** to run a subset. With a selection active, a **Skip dependencies** checkbox appears — by default, upstream `depends_on` tasks run first; skipping runs only the checked tasks.
3. The browser navigates to the new Job Run's page, where you can watch progress. See [Job runs](/using/job-runs/).

Tasks in the **Utilities** section (nodes typed `command` or `validation`) each have their own **Run** button for one-off execution.

<!-- screenshot: jobs-detail-run-selected | Job detail Tasks section with two tasks checked, showing the Run 2 Selected button and the Skip dependencies checkbox -->

## Job detail sections

- **Bound Connectors** — a **Slot** / **Connector** table showing which stored Connector fills each template slot.
- **Configuration** — the Job's `job_config` values, shown in a read-only JSON viewer. Select **Edit JSON** to edit the values in place and **Save** (removing keys asks for confirmation). **Open dashboard** jumps to the first attached Dashboard, and **Configure with AI** opens the AI assistant with the config as context. Tasks read these values at runtime, and each run snapshots them.
- **Utilities** and **Tasks** — the DAG nodes, split by type. Each row shows the node key, its description, a pencil edit button, and a **Run** button.
- **Dashboards** — Dashboards attached to this Job, with an **Add dashboard** button. The dialog asks for a **Name**, **Description**, and a **Start from** source: **Blank starter**, a copy of an existing job dashboard, or a dashboard template.
- **Recent Runs** — the Job's run history (**#**, **Status**, **Started**, **Duration**, **Error**); rows open the Job Run page.

The header's ⋮ menu offers **Archive** (or **Activate** for an archived Job) and **Delete permanently**.

<!-- screenshot: jobs-detail-configuration | Job detail Configuration section with the job_config JSON editor open in edit mode and the Save button visible -->

## To customize a task for one job

A Job can override a single DAG node's task YAML without changing the shared Task library. The override is keyed by node, so two nodes using the same base task can diverge independently.

1. On the Job detail page, select the pencil button on a task row. The editor opens at **Edit task: &lt;key&gt;**, with the base task name and pinned version in the subtitle.
2. Edit the YAML and select **Save**. The node now shows a **Customized** badge on the Job detail page.
3. To discard the override, open the editor's ⋮ menu and select **Reset to original**. The confirmation states: "This removes the per-job override for '&lt;key&gt;'. Future runs will use the pinned task version from the task library."

Run history still records the pinned library task and version, even though the override YAML is what executed.

:::callout{type="info"}
Template arguments are baked in when the Job is created and cannot be changed afterward; the **Configuration** section (`job_config`) is the surface that stays editable. To change an argument value, create a new Job from the template.
:::

## Related

- [Tasks, jobs, and templates](/concepts/tasks-jobs-and-templates/) — the three-layer model behind these screens
- [Job runs](/using/job-runs/) — monitor, stop, and resume what **Run All** starts
- [Job templates and DAGs](/building/job-templates-and-dags/) — author the template YAML
- [Triggers](/using/triggers/) — run a Job on a cron schedule
