# Requirements: SharePoint Toolbox v2

**Defined:** 2026-04-02
**Core Value:** Administrators can audit and manage SharePoint/Teams permissions and storage across multiple client tenants from a single, reliable desktop application.

## v1 Requirements

Requirements for initial release. Each maps to roadmap phases.

### Foundation

- [x] **FOUND-01**: Application built with C#/WPF (.NET 10 LTS) using MVVM architecture
- [x] **FOUND-02**: Multi-tenant profile registry — user can create, rename, delete, and switch between tenant profiles (tenant URL, client ID, display name)
- [x] **FOUND-03**: Multi-tenant session caching — user stays authenticated across tenant switches without re-logging in (MSAL token cache per tenant)
- [x] **FOUND-04**: Interactive Azure AD OAuth login via browser — no client secrets or certificates stored
- [x] **FOUND-05**: All long-running operations report progress to the UI in real-time
- [x] **FOUND-06**: User can cancel any long-running operation mid-execution
- [x] **FOUND-07**: All errors surface to the user with actionable messages — no silent failures
- [x] **FOUND-08**: Structured logging for diagnostics (Serilog or equivalent)
- [x] **FOUND-09**: Localization system supporting English and French with dynamic language switching
- [x] **FOUND-10**: JSON-based local storage for profiles, settings, and templates (compatible with current app's format for migration)
- [ ] **FOUND-11**: Self-contained single EXE distribution — no .NET runtime dependency for end users
- [x] **FOUND-12**: Configurable data output folder for exports

### Permissions

- [x] **PERM-01**: User can scan permissions on a single SharePoint site with configurable depth
- [x] **PERM-02**: User can scan permissions across multiple selected sites in one operation
- [x] **PERM-03**: Permissions scan includes owners, members, guests, external users, and broken inheritance
- [x] **PERM-04**: User can choose to include or exclude inherited permissions
- [x] **PERM-05**: User can export permissions report to CSV (raw data)
- [x] **PERM-06**: User can export permissions report to interactive HTML (sortable, filterable, groupable by user)
- [x] **PERM-07**: SharePoint 5,000-item list view threshold handled via pagination — no silent failures on large libraries

### Storage

- [x] **STOR-01**: User can view storage consumption per library on a site
- [x] **STOR-02**: User can view storage consumption per site with configurable folder depth
- [x] **STOR-03**: Storage metrics include total size, version size, item count, and last modified date
- [x] **STOR-04**: User can export storage metrics to CSV
- [x] **STOR-05**: User can export storage metrics to interactive HTML with collapsible tree view

### File Search

- [x] **SRCH-01**: User can search files across sites using multiple criteria (extension, name/regex, dates, creator, editor)
- [x] **SRCH-02**: User can configure maximum search results (up to 50,000)
- [x] **SRCH-03**: User can export search results to CSV
- [x] **SRCH-04**: User can export search results to interactive HTML (sortable, filterable)

### Duplicate Detection

- [x] **DUPL-01**: User can scan for duplicate files by name, size, creation date, modification date
- [x] **DUPL-02**: User can scan for duplicate folders by name, subfolder count, file count
- [x] **DUPL-03**: User can export duplicate report to HTML with grouped display and visual indicators

### Site Templates

- [x] **TMPL-01**: User can capture site structure (libraries, folders, permission groups, logo, settings) as a template
- [x] **TMPL-02**: User can apply template to create new Communication or Teams site
- [x] **TMPL-03**: Templates persist locally as JSON
- [x] **TMPL-04**: User can manage templates (create, rename, delete)

### Folder Structure

- [x] **FOLD-01**: User can create folder structures on a site from a CSV template
- [x] **FOLD-02**: Example CSV templates provided for common structures

### Bulk Operations

- [x] **BULK-01**: User can transfer files and folders between sites with progress tracking
- [x] **BULK-02**: User can add members to groups in bulk from CSV
- [x] **BULK-03**: User can create multiple sites in bulk from CSV
- [x] **BULK-04**: All bulk operations support cancellation mid-execution
- [x] **BULK-05**: Bulk operation errors are reported per-item (not silently skipped)

## v2 Requirements

Deferred to after v1 parity is confirmed. New features from project goals.

### User Access Audit

- **UACC-01**: User can export all SharePoint/Teams accesses a specific user has across selected sites
- **UACC-02**: Export includes direct assignments, group memberships, and inherited access

### Simplified Permissions

- **SIMP-01**: User can toggle plain-language permission labels (e.g., "Can edit files" instead of "Contribute")
- **SIMP-02**: Permissions report includes summary counts and color coding for untrained readers
- **SIMP-03**: Configurable detail level (simple/detailed) for reports

### Storage Visualization

- **VIZZ-01**: Storage Metrics tab includes a graph showing space by file type
- **VIZZ-02**: User can toggle between pie/donut chart and bar chart views
- **VIZZ-03**: Graph updates when storage scan completes

## Out of Scope

| Feature | Reason |
|---------|--------|
| Cross-platform (Mac/Linux) | WPF is Windows-only; not justified for current user base |
| Real-time monitoring / alerts | Requires background service, webhooks — turns desktop tool into a service |
| Automated remediation (auto-revoke) | Liability risk; one wrong rule destroys client access |
| SQLite / database storage | Breaks single-EXE distribution; JSON sufficient |
| Cloud sync / shared profiles | Requires server infrastructure — out of scope for local tool |
| AI-powered recommendations | Competes with Microsoft's own Copilot roadmap |
| Content migration between tenants | Separate product category (ShareGate territory) |
| Mobile app | Desktop admin tool |
| OAuth with client secrets/certificates | Interactive login only — no stored credentials |
| Version history management | Deep separate problem; surface totals in storage metrics only |

## Traceability

Which phases cover which requirements. Updated during roadmap creation.

| Requirement | Phase | Status |
|-------------|-------|--------|
| FOUND-01 | Phase 1 | Complete |
| FOUND-02 | Phase 1 | Complete |
| FOUND-03 | Phase 1 | Complete |
| FOUND-04 | Phase 1 | Complete |
| FOUND-05 | Phase 1 | Complete |
| FOUND-06 | Phase 1 | Complete |
| FOUND-07 | Phase 1 | Complete |
| FOUND-08 | Phase 1 | Complete |
| FOUND-09 | Phase 1 | Complete |
| FOUND-10 | Phase 1 | Complete |
| FOUND-11 | Phase 5 | Pending |
| FOUND-12 | Phase 1 | Complete |
| PERM-01 | Phase 2 | Complete |
| PERM-02 | Phase 2 | Complete |
| PERM-03 | Phase 2 | Complete |
| PERM-04 | Phase 2 | Complete |
| PERM-05 | Phase 2 | Complete |
| PERM-06 | Phase 2 | Complete |
| PERM-07 | Phase 2 | Complete |
| STOR-01 | Phase 3 | Complete |
| STOR-02 | Phase 3 | Complete |
| STOR-03 | Phase 3 | Complete |
| STOR-04 | Phase 3 | Complete |
| STOR-05 | Phase 3 | Complete |
| SRCH-01 | Phase 3 | Complete |
| SRCH-02 | Phase 3 | Complete |
| SRCH-03 | Phase 3 | Complete |
| SRCH-04 | Phase 3 | Complete |
| DUPL-01 | Phase 3 | Complete |
| DUPL-02 | Phase 3 | Complete |
| DUPL-03 | Phase 3 | Complete |
| TMPL-01 | Phase 4 | Complete |
| TMPL-02 | Phase 4 | Complete |
| TMPL-03 | Phase 4 | Complete |
| TMPL-04 | Phase 4 | Complete |
| FOLD-01 | Phase 4 | Complete |
| FOLD-02 | Phase 4 | Complete |
| BULK-01 | Phase 4 | Complete |
| BULK-02 | Phase 4 | Complete |
| BULK-03 | Phase 4 | Complete |
| BULK-04 | Phase 4 | Complete |
| BULK-05 | Phase 4 | Complete |

**Coverage:**
- v1 requirements: 42 total
- Mapped to phases: 42
- Unmapped: 0

---
*Requirements defined: 2026-04-02*
*Last updated: 2026-04-02 after roadmap creation — all 42 v1 requirements mapped*
