> ## 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.

# Scheduled Jobs in fusionCore

> Verify, schedule, and manage the fusionCore batch jobs after install or upgrade.

fusionCore ships several batch jobs that keep records up to date. This page lists those jobs and explains how to schedule and manage them.

## Jobs

| **Package**              | **Job Name**                                       | **Schedule**                 | **Apex Class**                           | **Purpose**                                                                                                                       |
| ------------------------ | -------------------------------------------------- | ---------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| fusionCore Platform      | FC: Log Clean Up Batch Job                         | Daily at 12:00 AM (midnight) | `LogCleanUpBatch`                        | Cleans up log records based on preconfigured date values. You can change those values in Setup.                                   |
| fusionCore Commerce      | FC: Active Benefit Allocations                     | Daily at 12:00 AM (midnight) | `BenefitAllocationStatusUpdateScheduler` | Activates Benefit Allocation records whose Start Date is today, when allocations are available from the linked purchase activity. |
| fusionCore Subscriptions | FC: Generate Renewal Orders                        | Daily at 4:00 AM             | `SubscriptionRenewalBatch`               | Generates Renewal Orders for Subscriptions where the Renewal Day equals the Days to Lapse.                                        |
| fusionCore Subscriptions | FC: Process Subscription Purchase Activity records | Daily at 12:00 AM (midnight) | `SubscriptionPurchaseActivityBatch`      | Checks each Subscription's Status against its Start Date, End Date, Renewal Date, and Grace Period.                               |
| fusionCore Committees    | FS Committees: Process Community Position records  | Daily at 12:00 AM (midnight) | `FS_CGPositionUpdater`                   | Reviews Community Position records each night and deactivates the ones that need it.                                              |
| fusionCore Commerce      | FC: Payment Provider Event Validation              | Daily at 12:00 AM (midnight) | `PaymentProviderEventValidationBatch`    | Validates Payment Provider Events in submitted status and updates them accordingly.                                               |
| fusionCore Commerce      | FC: Wallet Items Expiration                        | Daily at 12:00 AM (midnight) | `WalletItemsExpirationBatch`             | Marks Wallet Items as expired once their expiration date has passed.                                                              |
| fusionCore Commerce      | FC: Auto Charge                                    | Daily at 4:00 AM             | `AutoChargeBatch`                        | Checks Installment Financial Events whose date is today and attempts a payment when the criteria are met.                         |
| fusionCore Subscriptions | FC: Subscription Start Date Updater                | Daily at 12:00 AM (midnight) | `SubscriptionStartDateUpdaterBatch`      | Updates Subscription Order Items whose Subscription Start Date is in the past to the current date.                                |

<Note>
  fusionCore schedules these jobs when each package is installed, and an administrator can change any schedule (see [Schedule a new job](#schedule-a-new-job) below). Jobs run in the time zone of the user who scheduled them.

  **Stagger jobs that touch the same records.** In particular, **FC: Process Subscription Purchase Activity records** must run *before* **FC: Generate Renewal Orders** — schedule Purchase Activity at **12:00 AM** and Renewal at **4:00 AM**. Both update subscription and purchase activity records, so if renewal runs first (or at the same time) it can generate renewals from stale subscription statuses. If your org's installed defaults differ, reschedule these two jobs into this order.
</Note>

## Post-Install and Post-Upgrade Steps

After an install or upgrade, verify that your jobs are scheduled correctly and check your email for any notifications about failed jobs. If a job fails to schedule, Salesforce emails the admin who performed the installation with details about the failure.

## Schedule a New Job

<Steps>
  <Step title="Open Scheduled Jobs">
    Navigate to **Setup**. In the **Quick Find** box, enter `Scheduled Jobs`, then click the menu item.
  </Step>

  <Step title="Start a new scheduled job">
    Click **Schedule Apex**. Enter a **Job Name** (for example, **FC: Log Clean Up Batch Job**).

    <Frame caption="The Schedule Apex button on the Scheduled Jobs page">
      <img src="https://mintcdn.com/fusionspan/9Wg7ZFISJlafsBv6/images/end-user-guides/4639490049/scheduled-jobs-schedule-apex.png?fit=max&auto=format&n=9Wg7ZFISJlafsBv6&q=85&s=5cb17f71e7aed4cbc323664f848cd85c" alt="The All Scheduled Jobs page in Setup with the Schedule Apex button highlighted above the list of fusionCore jobs" width="1130" height="420" data-path="images/end-user-guides/4639490049/scheduled-jobs-schedule-apex.png" />
    </Frame>
  </Step>

  <Step title="Select the Apex class">
    Click the **search** icon next to the **Apex Class** field and select the appropriate Apex class (for example, `LogCleanUpBatch`).
  </Step>

  <Step title="Set the frequency">
    For **Schedule Using**, choose **Schedule Builder**. Set the appropriate **Frequency**. For a daily job, select **Weekly** and check every day of the week.
  </Step>

  <Step title="Set the start and end dates">
    Set the **Start** date (this can be today's date). If the job should run indefinitely, set an **End** date far into the future (for example, the year 2125).
  </Step>

  <Step title="Set the start time">
    Set a **Preferred Start Time**. As a best practice, run jobs when the fewest users are online (often overnight). Stagger the start times of jobs that affect the same objects. For example, in the table above, **FC: Process Subscription Purchase Activity records** runs at midnight and **FC: Generate Renewal Orders** runs at 4 am, so the status job finishes before renewals are generated (both affect the Purchase Activity object).

    The following screenshot shows a Schedule Apex job before it has been saved.

    <Frame>
      <img src="https://mintcdn.com/fusionspan/9Wg7ZFISJlafsBv6/images/end-user-guides/4639490049/Screenshot_2025-10-12_at_12.26.31-PM.png?fit=max&auto=format&n=9Wg7ZFISJlafsBv6&q=85&s=5326198cf8f21e49f1343a9024f8c570" alt="The Schedule Apex form with a job name, Apex class, frequency, and start time set" width="3046" height="1776" data-path="images/end-user-guides/4639490049/Screenshot_2025-10-12_at_12.26.31-PM.png" />
    </Frame>
  </Step>

  <Step title="Save">
    Click **Save**.
  </Step>
</Steps>

## Edit an Existing Job

<Steps>
  <Step title="Open Scheduled Jobs">
    Navigate to **Setup**. In the **Quick Find** box, enter `Scheduled Jobs`, then click the menu item.
  </Step>

  <Step title="Manage the job">
    Next to the scheduled job you want to change, click **Manage**. From there, you can:

    * **Pause** the job to temporarily stop it. Click **Pause**.
    * **Delete** the job. Click **Delete**.
    * **Reschedule** the job. Make any necessary edits, then click **Reschedule Job**.
  </Step>
</Steps>

<Note>
  ## Limitations and Common Pitfalls

  If a job was previously named differently from what is listed in the table above, the system re-adds it using the standardized name. This can create duplicate jobs for the same functionality. After an upgrade, review your scheduled jobs and remove any redundant ones.
</Note>
