Agreements
The Agreements module gives WinnerWare a controlled way to present terms, policies, or acknowledgements that users must accept before they continue.
Overview
This module is useful when teams need a repeatable process for showing agreements, recording acceptance, and optionally collecting structured responses. It supports both local agreement management and a central publishing model for agreements that need wider use.
The implementation is split into three features:
| Feature | Purpose |
|---|---|
CloudSolutions.Agreements | Always-enabled sign-in enforcement and agreement acceptance flow. |
CloudSolutions.Agreements.Management | Agreement content type creation and editor UI for authors. |
CloudSolutions.Agreements.DefaultTenant | Central agreement management for shared agreements. |
Key Features
- Redirects signed-in users to an agreement page when their claims indicate they still have agreements to accept.
- Stores accepted agreements against the user account.
- Creates an
Agreementcontent item with title, body, version, and option settings. - Supports optional single-select or multi-select agreement responses.
- Allows centrally managed agreements to be marked as shared and surfaced more broadly.
- Supports a configurable signing page route.
How It Works
Required acceptance at sign-in
When a user still has agreements to accept, WinnerWare routes them to the agreement page before they continue into the rest of the application.
Agreement authoring
With the management feature enabled, administrators work with an Agreement content item and its related fields:
| Item | Purpose |
|---|---|
| Version | Tracks the agreement version the user accepted. |
| Effective At | Stores an optional effective date. |
| Required During Sign in | Makes the agreement part of the sign-in acceptance flow. |
| Details | Stores the agreement body shown to the user. |
| Options | Stores optional response choices for the user to select. |
| Is Global | Marks the agreement as shared when central management is enabled. |
Acceptance flow
WinnerWare shows each required agreement, validates the submitted responses, records the acceptance, and then returns the user to the application.
The default signing path is:
/Account/Agreement
Configuration
Enable the right features
The main agreement feature is always enabled, so the base agreement acceptance flow is present as soon as the module is available.
Enable Agreements Management when administrators need to create and edit agreement content.
Enable Agreements Default Tenant when a central site should create shared agreements for other sites.
Authoring fields
The agreement editors expose these practical fields:
| Field | Meaning |
|---|---|
| Version | Integer version recorded with the user's acceptance. |
| Effective At | Optional effective date stored on the agreement part. |
| Required During Sign in | Boolean flag stored on the agreement part. |
| Details | Main HTML body displayed to the user. |
| Add options to select from | Enables structured responses on the acceptance form. |
| Selection Type | Single or multiple response mode. |
| Require the user to select an option | Makes an option choice mandatory in addition to acceptance. |
| Is Global | Marks the agreement for shared use when central agreement management is enabled. |
Options JSON format
When AgreementOptionsPart is enabled for an agreement, the editor expects JSON similar to:
[
{
"Text": "I prefer email communication",
"Value": "email"
}
]
Route configuration
AgreementOptions.PathToSigningPage controls the agreement route and normalizes the value to a leading-slash path. The module does not expose a dedicated admin UI for this option in the current implementation, so it should be configured through application options.
Usage
Create an agreement
- Enable Agreements Management.
- Create an Agreement content item.
- Enter a title, version, body content, and any optional response choices.
- Publish the agreement.
Collect required acknowledgement
When a signed-in user has missing agreement claims, the application redirects them to the agreement page. The page renders each agreement in a card, shows any required options, and records the acceptance when the user submits the form.
Publish shared agreements centrally
When the central agreement feature is enabled, authors can mark an agreement as shared so it can be reused more broadly.
Operational Notes
- Use versioning carefully so users are only asked to accept new agreement revisions when required.
- Keep the agreement body clear and readable because this is the main acceptance screen users see.
- Use response options only when the process truly needs a structured acknowledgement in addition to simple acceptance.