24 lines
1.2 KiB
Markdown
24 lines
1.2 KiB
Markdown
# Plan: Terms & Conditions (Enrollment Experience) (024)
|
|
|
|
**Branch**: `feat/024-terms-and-conditions`
|
|
**Date**: 2026-01-04
|
|
**Input**: [spec.md](./spec.md)
|
|
|
|
## Approach
|
|
1. Confirm Graph contract details for Terms & Conditions:
|
|
- resource path: `deviceManagement/termsAndConditions`
|
|
- `@odata.type` values and patchable fields
|
|
- assignments endpoints: `/deviceManagement/termsAndConditions/{id}/assignments` (CRUD)
|
|
2. Add `termsAndConditions` to `config/tenantpilot.php` (category “Enrollment Experience”, risk, restore mode).
|
|
3. Add contract entry to `config/graph_contracts.php`:
|
|
- resource, type family, create/update methods
|
|
- assignments list/create/update/delete paths (no `/assign` action here)
|
|
4. Ensure policy sync, snapshot capture, and restore use the config/contract-driven paths (minimal special casing).
|
|
5. Add a normalizer for readable UI output and ensure diff output is stable.
|
|
6. Add targeted Pest coverage (sync + snapshot + preview + execution).
|
|
|
|
## Decisions / Notes
|
|
- **Restore mode**: default `enabled` (risk: medium-high) with strict preview/confirmation and audit logging.
|
|
- **Assignments**: use assignment CRUD paths (POST to `/assignments`) rather than `/assign`.
|
|
|