---
schema_version: "1"
id: 3e17f0252ffc4dcc25d82f791d5694f2303eea82c4f46622164e564f58c042ee
title: Schedule Account Plan Calculation V2
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/retail_api/cgtpm_schedule_account_plan_calculation_v2.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.retail_api.meta/retail_api/cgtpm_schedule_account_plan_calculation_v2.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: ccc91d9a7db764fdd01d980e64b4382d2755cef945ad5d9b41208171e96256c5
description: Schedules the calculation of account plans. Batch chains support editable account plans. It can schedule up to 500 account plan IDs for calculation.
---
# Schedule Account Plan Calculation V2

Schedules the calculation of account plans. Batch chains support editable account plans. It can schedule up to 500 account plan IDs for calculation.

Use this endpoint to calculate the Account Plan, which is handled by Customer Business Plans when creating a new project. See [Calculation of Account Plans](https://help.salesforce.com/s/articleView?id=ind.tpm_account_plan_calculation.htm&type=5&language=en_US "HTML (New Window)") and [Customer Business Plans](https://help.salesforce.com/s/articleView?id=ind.tpm_account_plan_cbp_parent.htm&type=5&language=en_US "HTML (New Window)").

## Resource

SCHEDULE\_ACCOUNT\_PLAN\_CALCULATION\_V2

## Available version

55.0

## Request Parameters

The Job object properties are sent as part of the request. See the [Scheduling Jobs](https://developer.salesforce.com/docs/atlas.en-us.retail_api.meta/retail_api/cgtpm_scheduling_jobs.htm "Most of the scheduling job endpoints use the Job Chain Process Flow.") parent page for a full description of the Job class and its properties, including JobThreads.

## Apex Request Example

**Baseline Plan Calculation**

// name of the salesorg for which the job should be scheduled
String salesOrg = '0001';
<namespace>.ScheduleAccountPlanCalculationV2Callout callout = new <namespace>.ScheduleAccountPlanCalculationV2Callout(salesOrg);
// Log Transaction Id
String txId = <namespace>.TransactionHandler.getTransactionIdentifier();
// Job object
<namespace>.Job job = new <namespace>.Job();
job.JobChainName = 'TPM\_Calculation\_Chain\_<timestamp>';
job.JobName = 'AccountPlanCalculationBasic';
job.BatchChainType = 'default';
job.JobThreads = 25; // ⚡ ADD: Number of parallel workers (default: 5, max: 25 on production/full copy sandbox, 3 on other sandboxes)
// Account Plans in Scope
List<cgcloud\_\_Account\_Plan\_\_c> accountPlansToCalculate = \[
    SELECT Id FROM cgcloud\_\_Account\_Plan\_\_c WHERE cgcloud\_\_Sales\_Org\_\_c = :salesOrg 
    // AND ... 
\];
<namespace>.ScheduleAccountPlanCalculationV2Callout.Options options = new <namespace>.ScheduleAccountPlanCalculationV2Callout.Options();
options.writebacksubsets = new List<String\> { 'basic' };
options.cleanupobsoletemeasures = false;
<namespace>.OffplatformCalloutResponse response = callout.execute(txId, job, accountPlansToCalculate, options);
if (response.status != 200) {
   // Handle error
}

**BusinessPlan Calculation**

// name of the salesorg for which the job should be scheduled
String salesOrg = '0001';
<namespace>.ScheduleAccountPlanCalculationV2Callout callout = new <namespace>.ScheduleAccountPlanCalculationV2Callout(salesOrg);
// Log Transaction Id
String txId = <namespace>.TransactionHandler.getTransactionIdentifier();
// Job object
<namespace>.Job job = new <namespace>.Job();
job.JobChainName = 'TPM\_Calculation\_Chain\_<timestamp>';
job.JobName = 'AccountPlanCalculationBusinessPlan';
job.BatchChainType = 'default';
job.JobThreads = 25; // ⚡ ADD: Number of parallel workers (default: 5, max: 25 on production/full copy sandbox, 3 on other sandboxes)
// Account Plans in Scope
List<cgcloud\_\_Account\_Plan\_\_c> accountPlansToCalculate = \[
    SELECT Id FROM cgcloud\_\_Account\_Plan\_\_c WHERE cgcloud\_\_Sales\_Org\_\_c = :salesOrg 
    // AND ...  
\];
<namespace>.ScheduleAccountPlanCalculationV2Callout.Options options = new <namespace>.ScheduleAccountPlanCalculationV2Callout.Options();
options.writebacksubsets = new List<String> { 'businessplan' };
options.cleanupobsoletemeasures = false;
<namespace>.OffplatformCalloutResponse response = callout.execute(txId, job, accountPlansToCalculate, options);
if (response.status != 200) {
   // Handle error
}