---
title: CIAM Plus With Protect - Agreement (ToS) - Subflow
description: The CIAM Plus With Protect - Agreement (ToS) - Subflow lets users read and confirm any agreement required in your environment.
component: pingone-solutions
page_id: pingone-solutions:pingone-customers-plus:flow_reference/ciam_plus_ciam_agreement
canonical_url: https://docs.pingidentity.com/pingone-solutions/pingone-customers-plus/flow_reference/ciam_plus_ciam_agreement.html
revdate: June 28, 2024
section_ids:
  purpose: Purpose
  structure: Structure
  input-schema: Input schema
  output-schema: Output schema
  variables-and-parameters: Variables and parameters
---

# CIAM Plus With Protect - Agreement (ToS) - Subflow

The CIAM Plus With Protect - Agreement (ToS) - Subflow lets users read and confirm any agreement required in your environment.

## Purpose

The **CIAM Plus With Protect - Agreement (ToS) - Subflow** determines whether the user needs to consent to an agreement. If so, it displays the agreement for the user and stores the user's consent if they agree to the agreement.

## Structure

This flow is divided into sections using teleport nodes.

* **Check if agreement form needs to be displayed**

  Uses comparison nodes to check if agreement is enabled in the environment and if agreement is necessary for the current user. If so, a PingOne node checks the user's consent status. If consent is needed, but not present, the flow progresses to the **Present & Accept Agreement** section. Otherwise, the flow progresses to the **Return Success** section.

* **Present & Accept Agreement**

  Uses a PingOne node to retrieve the required agreement, then presents the user with an HTML page on which they can review and accept or decline. A comparison node then branches the flow based on the user's choice. If the user accepts the agreement, a PingOne node stores the user's agreement, then the flow progresses to the **Return Success** section. If the user declines, an error message displays.

* **Return Success**

  Sends a success JSON response, indicating that the flow completed successfully.

* **Return Error**

  Sends an error JSON response, indicating that the flow completed unsuccessfully.

## Input schema

This flow has the following inputs:

| Input name           | Required | Description                                                                      |
| -------------------- | -------- | -------------------------------------------------------------------------------- |
| `checkRequired`      | Yes      | Indicates whether to check for existing consent before displaying the agreement. |
| `p1UserId`           | Yes      | The user ID of the current user.                                                 |
| `agreementEnabled`   | No       | Indicates whether agreement is enabled for user registration.                    |
| `agreementID`        | Yes      | The ID of the PingOne agreement to present to users.                             |
| `showSuccessMessage` | No       | A boolean indicating whether to display a success message after agreement.       |
| `companyLogo`        | No       | The company logo.Used only when the main flow was launched using a redirect.     |

## Output schema

This flow has the following outputs:

| Output name     | Description                                          |
| --------------- | ---------------------------------------------------- |
| `errorMessage`  | The error message to display in the parent flow.     |
| `errordetails`  | The details of the error that occurred in this flow. |
| `subflowResult` | The result status of the flow.                       |

## Variables and parameters

This flow uses no variable or parameter values.
