TenantAtlas/specs/024-terms-and-conditions/spec.md
ahmido 602195324b spec/024-additional-intune-types (#28)
specs for additional intune types

Co-authored-by: Ahmed Darrazi <ahmeddarrazi@adsmac.local>
Reviewed-on: #28
2026-01-04 02:27:44 +00:00

2.6 KiB

Feature Specification: Terms & Conditions (Enrollment Experience) (024)

Feature Branch: feat/024-terms-and-conditions
Created: 2026-01-04
Status: Draft
Priority: P1

Context

Terms & Conditions (T&C) are part of the Enrollment Experience. During tenant rebuilds / recovery they are frequently missed, but can be required for compliant onboarding.

User Scenarios & Testing

User Story 1 — Inventory + readable view (Priority: P1)

As an admin, I can see Terms & Conditions policies in the Policies inventory and view their configuration in a readable way.

Acceptance Scenarios

  1. Given a tenant with T&C configured, when I sync policies, then T&C items appear with type termsAndConditions.
  2. Given a T&C policy, when I open its detail page, then I see a normalized settings view (not only raw JSON).

User Story 2 — Snapshot capture + versioning (Priority: P1)

As an admin, I can capture versions and backups of Terms & Conditions so I can diff and roll back safely.

Acceptance Scenarios

  1. Given a T&C policy, when I capture a snapshot, then the full Graph payload is stored immutably (JSONB).
  2. Given two versions, when I view a diff, then changes are human-readable and structured.

User Story 3 — Restore preview + execution (Priority: P2)

As an admin, I can restore Terms & Conditions (with assignments) from a snapshot with a safe preview, audit logging, and defensive checks.

Acceptance Scenarios

  1. Given a backup item of type termsAndConditions, when I run restore preview, then it shows create/update + restore mode and warnings.
  2. Given restore execution, when Graph rejects non-patchable fields, then TenantPilot strips them (contract-driven) and retries safely.

Requirements

Functional Requirements

  • FR-001: Add policy type termsAndConditions backed by Graph deviceManagement/termsAndConditions.
  • FR-002: Capture full payload snapshots and include assignments.
  • FR-003: Restore supports create/update (contract-driven sanitization) and assignment apply.
  • FR-004: Normalized settings view exists for key fields (displayName, description, title, body, acceptance statement, etc.).
  • FR-005: Add Pest tests for sync + snapshot + restore preview + restore execution.

Non-Functional Requirements

  • NFR-001: All writes require explicit confirmation and create audit logs.
  • NFR-002: Tenant isolation applies end-to-end (no cross-tenant leakage).

Success Criteria

  • SC-001: T&C appears in inventory and backups.
  • SC-002: Restore preview is actionable and safe.
  • SC-003: Restore execution works with assignments (where Graph allows).