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

# Subscription Start Date Updater

> A nightly batch job that rolls a stale Subscription Start Date forward to today on Open or Draft quote order lines for subscription products that have not started yet.

## Overview

The Subscription Start Date Updater keeps the **Subscription Start Date** current on quotes that have not been activated yet. It is a nightly scheduled batch job in Subscriptions (`FCORE_MEM`): `SubscriptionStartDateUpdaterBatch`, job name `FC: Subscription Start Date Updater`. By default it runs at midnight.

Each night it looks for subscription order lines on **Open** or **Draft** quotes whose **Subscription Start Date** is in the past, and rolls that date forward to the current day. Nothing else on the order changes.

This stops a quote that was prepared a few days ago from carrying a stale, already-past start date when it is finally activated.

## What the Updater Changes

The batch updates an Order Product line (`OrderItem`) only when **all** of the following are true:

* The Order is a **Quote** (`Order.Type__c = 'Quote'`).
* The Order status is **Open** or **Draft**.
* The product is a subscription product (`Product2.Is_Subscription__c = true`).
* The **Subscription Start Date** (`Subscription_Start_Date__c`) is earlier than today.
* The line is not a renewal (`Renewed_From__c` is empty).
* **Prevent Subscription Date Auto Update** (`Prevent_Subscription_Date_Auto_Update__c`) is unchecked.

When all of those match, it sets `Subscription_Start_Date__c` to the current day. It changes nothing else.

<Note>
  This batch job runs for join orders only. Renewal orders are skipped entirely. A renewal order's products have their **Renewed From** field (`FCORE_MEM__Renewed_From__c`) populated with the purchase activity they were renewed from, and the updater ignores any line where that field is set.
</Note>

## Prerequisites

* You need a Salesforce admin (someone with access to **Setup**) to schedule the batch job.

## Schedule the Batch Job

<Steps>
  <Step title="Open Schedule Apex">
    In **Setup**, go to **Scheduled Jobs**, then click **Schedule Apex**. See [Scheduled Jobs in fusionCore](/end-user-guides/platform-setup/scheduled-jobs-in-fusioncore) for the general procedure.
  </Step>

  <Step title="Select the updater class">
    For **Apex Class**, choose `SubscriptionStartDateUpdaterBatch`. Give the job a name (for example, `FC: Subscription Start Date Updater`) and schedule it to run every day. The default run time is midnight.
  </Step>

  <Step title="Save">
    Click **Save**. The job now runs every night and rolls the Subscription Start Date forward on eligible quote lines.
  </Step>
</Steps>

## Opt a Line Out of the Updater

You can stop the updater from touching an individual Order Product.

<Steps>
  <Step title="Open the Order Product">
    On the Order, open the Order Product line you want to exclude.
  </Step>

  <Step title="Check Prevent Subscription Date Auto Update">
    Set **Prevent Subscription Date Auto Update** (`Prevent_Subscription_Date_Auto_Update__c`) to checked. The batch job now skips this line on future runs.

    <Frame caption="The Prevent Subscription Date Auto Update field on an Order Product">
      <img src="https://mintcdn.com/fusionspan/PQhCyVfBbt1uWfmh/images/end-user-guides/4899504131/image-20260113-154742.png?fit=max&auto=format&n=PQhCyVfBbt1uWfmh&q=85&s=0da1b06448d10b22ecb993b56dc9be1f" alt="Order Product line with the Prevent Subscription Date Auto Update checkbox" width="904" height="209" data-path="images/end-user-guides/4899504131/image-20260113-154742.png" />
    </Frame>
  </Step>
</Steps>

## Limitations and Common Pitfalls

* **It always sets today, never the original quote date.** The updater rolls the start date forward to the **current day** every time it runs. A quote left open across several days keeps getting pushed forward, so the start date on an old quote will not be the date you originally entered. This can surprise staff who expect the date to stay put.
* **The only opt-out is the prevent checkbox.** To freeze a line's start date, check **Prevent Subscription Date Auto Update** (`Prevent_Subscription_Date_Auto_Update__c`, unchecked by default). There is no other way to exclude a line.
* **Narrow, silent scope.** The updater touches only Quote orders in **Open** or **Draft** status, with a subscription product, a past start date, and no **Renewed From** value. A line that misses any one of those conditions is left unchanged, with no message.
* **Renewal-created lines are excluded.** Any line whose **Renewed From** field is set is ignored, so renewals are never affected.
