> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fusioncore.us/llms.txt
> Use this file to discover all available pages before exploring further.

# Managing Job Groups

> Create, schedule, change, and delete Job Groups in the Job Group Manager.

A Job Group is an ordered set of steps that the [Async Job Coordinator](https://docs.fusioncore.us/end-user-guides/platform-setup/async-job-coordinator/index.md) runs together. You build and schedule groups in the **Job Group Manager**.

## Prerequisites

* You have the **FC Platform - Manage Async Jobs** permission set.
* A developer has deployed classes that implement `FCORE_BASE.JobExecutor`. See [For Developers](https://docs.fusioncore.us/end-user-guides/platform-setup/async-job-coordinator/index.md#for-developers).

## Create a Job Group

**1. Open the Job Groups tab**

Click the **App Launcher** and search for **Job Groups**.

![The App Launcher search box with Job Groups typed in and Job Groups listed under Items](https://mintcdn.com/fusionspan/XDzICb2WNqgAWbUY/images/end-user-guides/async-job-coordinator/app-launcher-job-groups.png?fit=max\&auto=format\&n=XDzICb2WNqgAWbUY\&q=85\&s=3cb0288abcde2c50f8dc89f0bd4fc1bb)

Find Job Groups from the App Launcher

**2. Start a new group**

Click **New**. The **Job Group Manager** opens.

![The Job Groups All list view with the New button and one Job Group, Prospect Account Enrichment](https://mintcdn.com/fusionspan/XDzICb2WNqgAWbUY/images/end-user-guides/async-job-coordinator/job-groups-list-new.png?fit=max\&auto=format\&n=XDzICb2WNqgAWbUY\&q=85\&s=f498a3de85ff6fbd9cb83b07c913dda3)

The New button on the Job Groups list

**3. Fill in the details**

In **Details**, enter a **Name** and a **Description**. Leave **Version** at `1`. Leave **Is Active** off for now.

![The Job Group Manager Details section with Name, Version 1, Is Active off, and a Description filled in](https://mintcdn.com/fusionspan/XDzICb2WNqgAWbUY/images/end-user-guides/async-job-coordinator/job-group-manager-details.png?fit=max\&auto=format\&n=XDzICb2WNqgAWbUY\&q=85\&s=6334fcd7db233c226158a53caba794f8)

The Details section of a new Job Group

**4. Add the steps**

In **Job Definitions**, click **Add New Definition** for each step. For each row, enter a **Definition Name**, choose an **Apex Class**, and set the **Batch Size**. Turn on **Await** wherever a later step depends on that step's output.

![The Job Definitions section with three rows, each with a Definition Name, Apex Class and Batch Size 200, Await checked on rows 1 and 2, and the Add New Definition button](https://mintcdn.com/fusionspan/XDzICb2WNqgAWbUY/images/end-user-guides/async-job-coordinator/job-group-manager-definitions.png?fit=max\&auto=format\&n=XDzICb2WNqgAWbUY\&q=85\&s=72d202ffb6e88b3e28e5d202ee15bcad)

Three Job Definitions with Await on for steps 1 and 2

**5. Order the steps**

Drag a row by its handle, or click **Move Up** or **Move Down**. The **Seq.** column renumbers from 1 as you reorder.

**6. Save**

Click **Save**. The message "Saved Successfully" appears, and the new group reopens in the Job Group Manager.

**7. Activate and schedule the group**

Turn on **Is Active**. Choose a **Frequency** in **Scheduling** (see [Scheduling](#scheduling)), then click **Save**.

![The Scheduling section with Frequency set to Daily and Start Time 2:00 AM](https://mintcdn.com/fusionspan/XDzICb2WNqgAWbUY/images/end-user-guides/async-job-coordinator/job-group-manager-scheduling.png?fit=max\&auto=format\&n=XDzICb2WNqgAWbUY\&q=85\&s=21456140bd34854ed99b2e7e2f371f22)

A Daily schedule at 2:00 AM

> [!NOTE]
>
> You can turn on **Is Active** before the first **Save**. The Job Group Manager saves the group inactive, adds its definitions, then activates it, all in one **Save**. Inserting an active Job Group any other way fails with "A Job Group cannot be created in an active state." Leave **Frequency** as **None** if you only want to start runs from code.

## The Job Group Manager Sections

Click **Exit** in the header, or **Cancel** in the footer, to discard your changes. Exiting returns you to the record, or to the Job Groups list for a new group.

### Details

| **Field** | **Notes** |
| - | - |
| **Name** | A unique name for the Job Group. |
| **Version** | Choose `1`, which is preselected. It is the only available value. |
| **Is Active** | Enables the group. Inactive groups do not run. |
| **Description** | Required. Describe what the group does and why it exists. |

### Scheduling

The **Scheduling** panel appears only while **Is Active** is on. When it is off, the panel reads "Scheduling is available only for active Job Groups. Saving an inactive Job Group removes its existing schedule."

| **Frequency** | **Runs** | **You also set** |
| - | - | - |
| **None** | Never automatically. Start runs from code. | Nothing |
| **Hourly** | Every hour. | **Minute Past the Hour** (0 to 59, default 0) |
| **Daily** | Every day. | **Start Time** (default 02:00) |
| **Weekly** | Every Monday. | **Start Time** (default 02:00) |
| **Monthly** | On the 1st of every month. | **Start Time** (default 02:00) |
| **Custom (CRON)** | On your own schedule. | **Cron Expression** |

* **Start Time** uses your user time zone.
* A **Cron Expression** is a Salesforce CRON expression in the form `sec min hour day month ? year`. It needs 6 or 7 parts and a `?` in either the day-of-month or day-of-week position.
* When you reopen a scheduled group, **Frequency** always shows **Custom (CRON)** with the stored expression, whichever preset you originally chose.

### Job Definitions

Each row is one step. When a run starts, each row creates a Job Run Stage that tracks that step.

| **Column** | **What it does** |
| - | - |
| **Seq.** | The row position, renumbered from 1. |
| **Definition Name** (required) | The name of this step within the group. |
| **Apex Class** (required) | The class that does the work. The dropdown lists concrete classes that implement `FCORE_BASE.JobExecutor`. |
| **Batch Size** (required) | Records per batch. The default is 200 and the maximum is 2000. |
| **Parallel** | Lets several batch jobs process this step's substages at once when slots are free. |
| **Await** | Holds every later step until all stages for this step finish. |
| **Actions** | **Remove** deletes the row. |

## Save Rules

**Save** stays disabled until all of these are true:

* **Name**, **Version**, and **Description** are filled in.
* Every row has a name, an Apex class, and a batch size.
* For an active group with **Custom (CRON)**, the expression has 6 or 7 parts and a `?` in the day-of-month or day-of-week position.
* For **Hourly**, the minute is from 0 to 59.

If a pending run exists for the group, **Save** is blocked with a **Pending Runs Found** message. The banner "There are pending Job Runs for this Job Group" links to those runs with **View Run**.

Other errors appear in a **Save failed** message that shows the first error, for example:

| **Message** | **Cause** |
| - | - |
| Job Group must have at least one Job Definition to be activated. | You activated a group with no steps. |
| Batch Size must be at least 1. / Batch Size cannot exceed 2000. | A Batch Size is out of range. |
| A Job Definition with this Sequence number already exists in this Job Group. | Two steps share a Sequence (for example, by editing a Job Definition record directly or through a data load). The manager renumbers rows itself. |
| Changes to a Job Group and its Job Definitions are blocked while the Job Group is active. | You edited a group whose saved state is active. |

If any part of the save fails, none of your changes are saved.

## Change an Active Group

An active group is locked. Its **Name**, **Version**, and **Description**, and every step row, are disabled. The lock follows the group's *saved* state.

![The Job Group Manager for an active group: Is Active on, and the Name, Version, Description and every Job Definition row greyed out](https://mintcdn.com/fusionspan/XDzICb2WNqgAWbUY/images/end-user-guides/async-job-coordinator/job-group-manager-active-locked.png?fit=max\&auto=format\&n=XDzICb2WNqgAWbUY\&q=85\&s=68f75f7ad988baf3f5ecd1601b277387)

An active Job Group in the Job Group Manager

**1. Deactivate and save**

Open the group, turn **Is Active** off, then click **Save**. Deactivating removes the schedule.

**2. Make your changes**

Edit the details and steps, then click **Save**.

**3. Reactivate**

Turn **Is Active** on, set the **Frequency** again, then click **Save**.

## Delete a Job Group

An active group cannot be deleted. Deactivate it and save first, then open the Job Group record and click **Delete**.

## Edit (Admin)

On a Job Group record, the **Edit (Admin)** action opens the standard Salesforce edit form instead of the Job Group Manager. It sits in the record page header next to **Edit** and **Delete**. All validation rules still apply.

![The Job Group record page header with the Edit, Edit (Admin) and Delete buttons](https://mintcdn.com/fusionspan/XDzICb2WNqgAWbUY/images/end-user-guides/async-job-coordinator/job-group-record-edit-admin.png?fit=max\&auto=format\&n=XDzICb2WNqgAWbUY\&q=85\&s=5c6574f20b757016ef0075dec0b6ffa7)

Edit (Admin) on the Job Group record page

## Limitations and Common Pitfalls

* **You cannot edit an active group.** Deactivate and save first, then edit. Turning **Is Active** off on screen is not enough until you save.
* **Deactivating removes the schedule.** Set the **Frequency** again when you reactivate.
* **Pending runs block saving.** There is no Cancel action. To clear a stuck run, delete it; see [Monitoring Job Runs](https://docs.fusioncore.us/end-user-guides/platform-setup/async-job-coordinator/monitoring-job-runs.md#limitations-and-common-pitfalls).
* **The preset is not remembered.** A saved schedule reopens as **Custom (CRON)**.
* **Weekly and Monthly are fixed days.** Weekly always runs on Monday and Monthly on the 1st. Use **Custom (CRON)** for other days.
* **Sequence does not mean wait.** If step 2 reads what step 1 writes, turn on **Await** for step 1. Otherwise step 2 can start before step 1 finishes.
* **A schedule silently skips inactive or deleted groups.** It does nothing and shows no error in the UI.
* **Retry context holds 32,768 characters.** If too many failed record Ids do not fit in a retry stage's context, fusionCore logs a Job Error and leaves the original errors on the run.
* **Inactive groups do not run.** Starting one from code fails with "Cannot start job. Job Group is inactive."
* **An empty Apex Class dropdown means no class is available.** Ask a developer to deploy a global class that implements `FCORE_BASE.JobExecutor`.
* **Change schedules here, not in Setup.** Job Group schedules also appear in Setup under **Scheduled Jobs**, but the Job Group Manager owns them.

## Related Features

> [card] [Async Job Coordinator Overview](https://docs.fusioncore.us/end-user-guides/platform-setup/async-job-coordinator/index.md)
>
> How runs, stages, and retries work.

> [card] [Monitoring Job Runs](https://docs.fusioncore.us/end-user-guides/platform-setup/async-job-coordinator/monitoring-job-runs.md)
>
> Read the results of a run.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.