Approval workflows manage changes made to planning data by routing updates through one or more approval levels. When multiple users update the same planning sheet, approval workflows help maintain data integrity by ensuring that changes are reviewed before they are finalized.
When a user updates a data input or forecast value, the workflow automatically perform actions such as sending Teams notifications, updating task or approval status, and modifying related field values. Approvers can then review the changes and approve or reject the request.
You can configure approval workflows in either of the following ways:
You can create customized approval workflows by writing scripts in the On Change Formula section of data input and forecast columns. These scripts run automatically whenever a value changes.
The following example demonstrates a script-driven approval workflow. The planning sheet includes the following single select list columns: Task Status, Manager Approval, and Director Approval and the approvers' email columns to demonstrate the approval process.

Single Select columns allow users to select only one value from a configured dropdown list. For more information, see Single Select columns.
To create this script-driven approval workflow:
In the On Change Formula section's formula editor, enter the following script and select Create.
//Notify the manager when a request is submitted
IF(THIS == 'Submit For Review', NOTIFY_USER([Manager Email]),"")
//Update the manager approval status to pending
IF(THIS == 'Submit For Review', SETVALUE([Manager Approval], 'Pending'), "")
In the formula editor of the On Change Formula section, enter the following script and select Create.
//Notify the director AND the submitter when a request is approved by manager
IF(THIS == 'Approved', NOTIFY_USER([Associate Email]), "")
IF(THIS == 'Approved', NOTIFY_USER([Director Email]), "")
//Change the director approval status as pending
IF(THIS == 'Approved', SETVALUE([Director Approval], 'Pending'), "")
//IF the request is rejected, Notify the associate AND update the task status as reopened
IF(THIS == 'Rejected', NOTIFY_USER([Associate Email]), "")
IF(THIS == 'Rejected', SETVALUE([Task Status], 'Reopened'), "")
//IF the request is reopened, Notify the associate AND update the task status as //reopened
IF(THIS == 'Reopened', NOTIFY_USER([Associate Email]), "")
IF(THIS == 'Reopened', SETVALUE([Task Status], 'Reopened'), "")
In the formula editor of the On Change Formula section, enter the following script and select Create.
//If director approves, set task status as 'Approved' and notify the associate and manager.
IF(THIS == 'Approved', SETVALUE([Task Status], 'Approved'), "")
IF(THIS == 'Approved', NOTIFY_USER([Associate Email]), "")
IF(THIS == 'Approved', NOTIFY_USER([Manager Email]), "")
//If director rejects, set task status and manager approval as 'Reopened' and notify the associate and manager.
IF(THIS == 'Rejected', SETVALUE([Task Status], 'Reopened'), "")
IF(THIS == 'Rejected', SETVALUE([Manager Approval], 'Reopened'), "")
IF(THIS == 'Rejected', NOTIFY_USER([Associate Email]), "")
IF(THIS == 'Rejected', NOTIFY_USER([Manager Email]), "")
After a user updates a data input value, such as Actuals, they set the Task Status to Submit For Review. This triggers the configured formula in On Change Formula section, which executes the workflow actions.

The approval status columns also contain scripts that run automatically whenever their values change. The following image shows the script configured in the On Change Formula section of the Manager Approval column.

The scripts primarily use the following functions:
The workflow can automatically:
In the following example:
When the user changes the Task Status to Submit for Review, the Manager Approval status is updated to Pending.

When the manager approves the request, the Director Approval status is updated to Pending.

When the manager rejects the request, the Task Status is updated to Reopened.

When the final approver approves the request, the Task Status is updated to Approved.

If the request is rejected, both the previous approval level and the task status are updated to Reopened.

You can customize the workflow logic to meet your business requirements by editing the scripts.
You can also create approval workflows without writing scripts by using the Approval Workflow interface.
To open the Approval Workflow interface:
Select the Model tab, and then select Approval.

The Approval Workflow window opens.

The first workflow level tracks the overall task status, while the remaining levels represent the approval stages.
To configure approval levels:
Select the users who can update the task status and receive approval notifications.
You can either:
After configuring all approval levels, select Next.

The Column option gets enabled only when the planning sheet contains one or more text columns with email addresses.
Configure the following workflow settings before creating the approval workflow.
Enable Reset on Rejection to reset all previous approval levels to In Progress or Reopened when the request is rejected by the final level approver.
This option is disabled by default.
Enable or disable Microsoft Teams notifications for the following users:
Microsoft Teams notifications are enabled by default.

Select Submit to create the approval workflow.
After the approval workflow is created, the required Single Select columns are added automatically to the planning sheet.
In the following example:
The Task Status, Manager Approval, and Director Approval Single Select columns are automatically added to the planning sheet when the approval workflow is created.

After editing the Actuals data input value, setting the Task Status to Submitted sends a Teams notification to the configured manager and updates the Manager Approval status to Pending.

When the manager approves the request, a Teams notification is sent to the configured Director, and the Director Approval status is updated to Pending.

If the manager rejects the request, the Task Status is updated to Reopened.

If the director approves the request, the workflow ends. If the director rejects the request, the Manager Approval status is updated to Reopened.

If Reset on Rejection is enabled, both the Task Status and Manager Approval columns are updated to Reopened when the director rejects the request.
