# Institute Admin (Primary) — Test Cases

User Type: **Training Institute** (Sub-Admin: Institute Admin)
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: institute_admin_role.md — every feature, sub-feature, and rule covered

## Test Execution Policy

- Zero tolerance: any deviation from the documented behavior is a defect.
- Every failed test is logged with a Bug ID, the feature, the sub-feature, the expected vs actual result, and the severity; 100% of bugs are fixed before the group passes.
- 100% pass rate is required for the group to be marked complete.

## Coverage Matrix

| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 1.1 Sub-Admin Management | Create sub-admin accounts (name, email, role, notes) | TC-INST-ADMIN-01-001 |
| 1.1 Sub-Admin Management | Edit sub-admin details and reassign roles | TC-INST-ADMIN-01-002 |
| 1.1 Sub-Admin Management | Deactivate sub-admin accounts (immediate revocation) | TC-INST-ADMIN-01-003 |
| 1.1 Sub-Admin Management | List of sub-admins with role, status, last activity | TC-INST-ADMIN-01-004 |
| 1.1 Sub-Admin Management | Invite flow with email verification | TC-INST-ADMIN-01-005 |
| 1.1 Sub-Admin Management | Available on web and mobile | TC-INST-ADMIN-01-006 |
| 1.1 Sub-Admin Management | Event logging (created, edited, deactivated, role changed) | TC-INST-ADMIN-01-007 |
| 1.1 Sub-Admin Management | Audit logging of all sub-admin management actions | TC-INST-ADMIN-01-008 |
| 1.1 Sub-Admin Management | Rule: only Institute Admin can manage sub-admins | TC-INST-ADMIN-01-009 |
| 1.1 Sub-Admin Management | Rule: multiple sub-admins per role allowed | TC-INST-ADMIN-01-010 |
| 1.1 Sub-Admin Management | Rule: deactivation immediate; history retained | TC-INST-ADMIN-01-011 |
| 1.1 Sub-Admin Management | Rule: Institute Admin role cannot be delegated | TC-INST-ADMIN-01-012 |
| 1.2 Bulk License Management | Purchase bulk student licenses (tiered packages) | TC-INST-ADMIN-02-001 |
| 1.2 Bulk License Management | Manage student seat allocation | TC-INST-ADMIN-02-002 |
| 1.2 Bulk License Management | Add/remove student accounts | TC-INST-ADMIN-02-003 |
| 1.2 Bulk License Management | Transfer licenses between students | TC-INST-ADMIN-02-004 |
| 1.2 Bulk License Management | View license utilization report | TC-INST-ADMIN-02-005 |
| 1.2 Bulk License Management | Renewal and upgrade options | TC-INST-ADMIN-02-006 |
| 1.2 Bulk License Management | Available on web and mobile | TC-INST-ADMIN-02-007 |
| 1.2 Bulk License Management | Event logging (purchased, allocated, transferred, renewed) | TC-INST-ADMIN-02-008 |
| 1.2 Bulk License Management | Audit logging of all license actions | TC-INST-ADMIN-02-009 |
| 1.2 Bulk License Management | Rule: enterprise tiers route to account manager | TC-INST-ADMIN-02-010 |
| 1.2 Bulk License Management | Rule: transfer only to active student in same institute | TC-INST-ADMIN-02-011 |
| 1.2 Bulk License Management | Rule: removal frees seat; history retained | TC-INST-ADMIN-02-012 |
| 1.2 Bulk License Management | Rule: utilization alerts at 80% and 95% | TC-INST-ADMIN-02-013 |
| 1.3 Billing & Licensing Control | View license usage and available seats | TC-INST-ADMIN-03-001 |
| 1.3 Billing & Licensing Control | Purchase additional licenses | TC-INST-ADMIN-03-002 |
| 1.3 Billing & Licensing Control | Billing history and invoices | TC-INST-ADMIN-03-003 |
| 1.3 Billing & Licensing Control | Discount eligibility for bulk purchases | TC-INST-ADMIN-03-004 |
| 1.3 Billing & Licensing Control | License expiry alerts | TC-INST-ADMIN-03-005 |
| 1.3 Billing & Licensing Control | Renewal and upgrade management | TC-INST-ADMIN-03-006 |
| 1.3 Billing & Licensing Control | Available on web and mobile | TC-INST-ADMIN-03-007 |
| 1.3 Billing & Licensing Control | Event logging (viewed, purchased, renewed, upgraded) | TC-INST-ADMIN-03-008 |
| 1.3 Billing & Licensing Control | Audit logging of billing actions | TC-INST-ADMIN-03-009 |
| 1.3 Billing & Licensing Control | Rule: discount from cumulative license volume | TC-INST-ADMIN-03-010 |
| 1.3 Billing & Licensing Control | Rule: expiry alerts at 60, 30, 7 days | TC-INST-ADMIN-03-011 |
| 1.3 Billing & Licensing Control | Rule: upgrades prorated; downgrades next cycle | TC-INST-ADMIN-03-012 |
| 1.3 Billing & Licensing Control | Rule: invoices immutable; corrections as credit notes | TC-INST-ADMIN-03-013 |
| 1.4 Integrations & Branding | LMS integration (SSO, grade sync, roster, passback) | TC-INST-ADMIN-04-001 |
| 1.4 Integrations & Branding | SIS sync (enrollment, demographics, schedule, report card) | TC-INST-ADMIN-04-002 |
| 1.4 Integrations & Branding | Integration status and sync logs | TC-INST-ADMIN-04-003 |
| 1.4 Integrations & Branding | White-label configuration (logo, colors, portal name) | TC-INST-ADMIN-04-004 |
| 1.4 Integrations & Branding | Branding preview before publishing | TC-INST-ADMIN-04-005 |
| 1.4 Integrations & Branding | Available on web and mobile | TC-INST-ADMIN-04-006 |
| 1.4 Integrations & Branding | Event logging (configured, synced, branding published) | TC-INST-ADMIN-04-007 |
| 1.4 Integrations & Branding | Audit logging of integration and branding changes | TC-INST-ADMIN-04-008 |
| 1.4 Integrations & Branding | Rule: credentials encrypted, never shown in full | TC-INST-ADMIN-04-009 |
| 1.4 Integrations & Branding | Rule: failed sync does not overwrite; retry available | TC-INST-ADMIN-04-010 |
| 1.4 Integrations & Branding | Rule: branding applies on publish; rollback retained | TC-INST-ADMIN-04-011 |
| 1.4 Integrations & Branding | Rule: only Institute Admin configures integrations/branding | TC-INST-ADMIN-04-012 |
| 1.5 Reporting & Data Export | Full institute reporting (students, performance, licensing, billing) | TC-INST-ADMIN-05-001 |
| 1.5 Reporting & Data Export | Batch-wise comparison reports | TC-INST-ADMIN-05-002 |
| 1.5 Reporting & Data Export | Data export (CSV, PDF) for institute records | TC-INST-ADMIN-05-003 |
| 1.5 Reporting & Data Export | Scheduled report delivery to institute emails | TC-INST-ADMIN-05-004 |
| 1.5 Reporting & Data Export | Export history | TC-INST-ADMIN-05-005 |
| 1.5 Reporting & Data Export | Available on web and mobile | TC-INST-ADMIN-05-006 |
| 1.5 Reporting & Data Export | Event logging (generated, exported, scheduled) | TC-INST-ADMIN-05-007 |
| 1.5 Reporting & Data Export | Audit logging of report generation and exports | TC-INST-ADMIN-05-008 |
| 1.5 Reporting & Data Export | Rule: exports scoped to institute data only | TC-INST-ADMIN-05-009 |
| 1.5 Reporting & Data Export | Rule: scheduled reports as secure expirable links | TC-INST-ADMIN-05-010 |
| 1.5 Reporting & Data Export | Rule: large exports async with completion notification | TC-INST-ADMIN-05-011 |
| 1.5 Reporting & Data Export | Rule: only Institute Admin has unrestricted export | TC-INST-ADMIN-05-012 |

## 1.1 Sub-Admin Management

### TC-INST-ADMIN-01-001 — Create a sub-admin account
**Type:** Positive
**Covers:** 1.1 → Create sub-admin accounts (name, email, role, notes)
**Preconditions:** Institute Admin logged in; a valid unused email.
**Steps:**
1. Open Sub-Admins and select "Add sub-admin".
2. Enter name, email, role "Academic Coordinator", and notes.
3. Save.
**Expected Result:** The sub-admin is created with the exact details and role; it appears in the sub-admin list with status "Invited".
**Priority:** Critical

### TC-INST-ADMIN-01-002 — Reassign a sub-admin's role
**Type:** Positive
**Covers:** 1.1 → Edit sub-admin details and reassign roles
**Preconditions:** An active sub-admin with role "Academic Coordinator".
**Steps:**
1. Open the sub-admin's record and select "Change role".
2. Select "Student Support" and confirm the capability change summary.
**Expected Result:** The role is updated; the sub-admin's access changes on the next request to match the new role.
**Priority:** Critical

### TC-INST-ADMIN-01-003 — Deactivate a sub-admin account
**Type:** Positive
**Covers:** 1.1 → Deactivate sub-admin accounts (immediate revocation)
**Preconditions:** An active sub-admin with an open session.
**Steps:**
1. Select the sub-admin and choose "Deactivate".
2. Confirm.
**Expected Result:** Access is revoked immediately; the sub-admin's next request is denied; the account shows status "Inactive".
**Priority:** Critical

### TC-INST-ADMIN-01-004 — Sub-admin list shows role, status, last activity
**Type:** Positive
**Covers:** 1.1 → List of sub-admins with role, status, last activity
**Preconditions:** Multiple sub-admins with different roles and activity.
**Steps:**
1. Open the Sub-Admins list.
**Expected Result:** Each row shows name, role, status, and last activity; data matches the actual records.
**Priority:** High

### TC-INST-ADMIN-01-005 — Invite flow with email verification
**Type:** Positive
**Covers:** 1.1 → Invite flow with email verification
**Preconditions:** A new sub-admin created with a valid email.
**Steps:**
1. Open the invitation email link.
2. Verify the email and set a password.
3. Log in as the sub-admin.
**Expected Result:** The account becomes active after verification; login succeeds with the new password.
**Priority:** High

### TC-INST-ADMIN-01-006 — Sub-admin management available on web and mobile
**Type:** Positive
**Covers:** 1.1 → Available on web and mobile
**Preconditions:** Institute Admin logged in on web and mobile.
**Steps:**
1. Perform a sub-admin creation on web.
2. View the sub-admin list on mobile.
**Expected Result:** Both surfaces render the full sub-admin management features without horizontal scroll or clipped content.
**Priority:** High

### TC-INST-ADMIN-01-007 — Sub-admin management events are logged
**Type:** Positive
**Covers:** 1.1 → Event logging (created, edited, deactivated, role changed)
**Preconditions:** Institute Admin logged in.
**Steps:**
1. Create, edit, change role, and deactivate sub-admins.
2. Open Profile → "Activity".
**Expected Result:** Each action appears as an event with the actor and timestamp.
**Priority:** High

### TC-INST-ADMIN-01-008 — Sub-admin management is audit-logged
**Type:** Positive
**Covers:** 1.1 → Audit logging of all sub-admin management actions
**Preconditions:** Sub-admin management actions performed.
**Steps:**
1. Review the audit log for the institute.
**Expected Result:** Every action is audit-logged with the actor, timestamp, and before/after state.
**Priority:** High

### TC-INST-ADMIN-01-009 — Sub-admins cannot manage sub-admins
**Type:** Negative
**Covers:** 1.1 → Rule: only Institute Admin can manage sub-admins
**Preconditions:** A sub-admin (any role) logged in.
**Steps:**
1. Attempt to open the Sub-Admins management screen.
**Expected Result:** Access is denied; the screen is not visible in navigation.
**Priority:** Critical

### TC-INST-ADMIN-01-010 — Multiple sub-admins per role
**Type:** Positive
**Covers:** 1.1 → Rule: multiple sub-admins per role allowed
**Preconditions:** Institute Admin logged in.
**Steps:**
1. Create two sub-admins with the role "Billing Manager".
**Expected Result:** Both are created successfully; the role list shows two holders.
**Priority:** Medium

### TC-INST-ADMIN-01-011 — Deactivation retains history
**Type:** Positive
**Covers:** 1.1 → Rule: deactivation immediate; history retained
**Preconditions:** A deactivated sub-admin with prior actions.
**Steps:**
1. Review the audit trail for the deactivated sub-admin's prior actions.
**Expected Result:** All prior actions remain in the audit trail with the sub-admin identified as the actor.
**Priority:** High

### TC-INST-ADMIN-01-012 — Institute Admin role cannot be delegated
**Type:** Negative
**Covers:** 1.1 → Rule: Institute Admin role cannot be delegated
**Preconditions:** Institute Admin logged in.
**Steps:**
1. Attempt to create a sub-admin with the role "Institute Admin".
**Expected Result:** The role is not offered in the role picker; the action is rejected.
**Priority:** Critical

## 1.2 Bulk License Management

### TC-INST-ADMIN-02-001 — Purchase a bulk license package
**Type:** Positive
**Covers:** 1.2 → Purchase bulk student licenses (tiered packages)
**Preconditions:** Institute Admin logged in; billing profile approved.
**Steps:**
1. Open Bulk License Management → "Purchase licenses".
2. Select the 201–500 tier and complete the purchase.
**Expected Result:** The purchase succeeds; the new seats appear in the entitlement overview; the volume discount is applied.
**Priority:** Critical

### TC-INST-ADMIN-02-002 — Allocate seats to a student group
**Type:** Positive
**Covers:** 1.2 → Manage student seat allocation
**Preconditions:** Available seats exist.
**Steps:**
1. Select a student group and allocate 20 seats.
**Expected Result:** The group's seat count increases by 20; available seats decrease accordingly.
**Priority:** Critical

### TC-INST-ADMIN-02-003 — Add and remove student accounts
**Type:** Positive
**Covers:** 1.2 → Add/remove student accounts
**Preconditions:** Available seats exist.
**Steps:**
1. Add a student account; then remove it.
**Expected Result:** Adding consumes a seat; removing frees the seat back to the pool; the student's history is retained.
**Priority:** Critical

### TC-INST-ADMIN-02-004 — Transfer a license between students
**Type:** Positive
**Covers:** 1.2 → Transfer licenses between students
**Preconditions:** Two active students in the same institute.
**Steps:**
1. Transfer a license from student A to student B.
**Expected Result:** Student B holds the license; student A's seat is freed; the transfer is recorded.
**Priority:** High

### TC-INST-ADMIN-02-005 — License utilization report
**Type:** Positive
**Covers:** 1.2 → View license utilization report
**Preconditions:** Licenses allocated and in use.
**Steps:**
1. Open the utilization report.
**Expected Result:** The report shows total, allocated, used, and available seats with accurate figures.
**Priority:** High

### TC-INST-ADMIN-02-006 — Renewal and upgrade options
**Type:** Positive
**Covers:** 1.2 → Renewal and upgrade options
**Preconditions:** An active license package.
**Steps:**
1. Open the package and review renewal and upgrade options.
2. Set a renewal reminder.
**Expected Result:** Options and pricing are shown; the reminder is scheduled.
**Priority:** High

### TC-INST-ADMIN-02-007 — License management available on web and mobile
**Type:** Positive
**Covers:** 1.2 → Available on web and mobile
**Preconditions:** Institute Admin logged in on both surfaces.
**Steps:**
1. View the utilization report on mobile; purchase on web.
**Expected Result:** Both surfaces render the features correctly without horizontal scroll.
**Priority:** High

### TC-INST-ADMIN-02-008 — License events are logged
**Type:** Positive
**Covers:** 1.2 → Event logging (purchased, allocated, transferred, renewed)
**Preconditions:** License actions performed.
**Steps:**
1. Open Profile → "Activity".
**Expected Result:** Each license action appears as an event with the actor and timestamp.
**Priority:** High

### TC-INST-ADMIN-02-009 — License actions are audit-logged
**Type:** Positive
**Covers:** 1.2 → Audit logging of all license actions
**Preconditions:** License actions performed.
**Steps:**
1. Review the institute audit log.
**Expected Result:** Every license action is audit-logged with the actor and timestamp.
**Priority:** High

### TC-INST-ADMIN-02-010 — Enterprise tier routes to account manager
**Type:** Negative
**Covers:** 1.2 → Rule: enterprise tiers route to account manager
**Preconditions:** Institute Admin logged in.
**Steps:**
1. Attempt to purchase the 500+ custom enterprise tier directly.
**Expected Result:** The purchase is not completed inline; the flow routes to the dedicated account manager.
**Priority:** Medium

### TC-INST-ADMIN-02-011 — Transfer to an inactive or external student is rejected
**Type:** Negative
**Covers:** 1.2 → Rule: transfer only to active student in same institute
**Preconditions:** A license held by an active student.
**Steps:**
1. Attempt to transfer the license to an inactive student.
2. Attempt to transfer it to a student in another institute.
**Expected Result:** Both transfers are rejected with a clear error; the license is unchanged.
**Priority:** Critical

### TC-INST-ADMIN-02-012 — Removing a student frees the seat
**Type:** Positive
**Covers:** 1.2 → Rule: removal frees seat; history retained
**Preconditions:** A student holding a license.
**Steps:**
1. Remove the student account.
2. Check available seats and the student's history.
**Expected Result:** The seat returns to the pool; the student's learning history is retained.
**Priority:** High

### TC-INST-ADMIN-02-013 — Utilization alerts at 80% and 95%
**Type:** Positive
**Covers:** 1.2 → Rule: utilization alerts at 80% and 95%
**Preconditions:** A license package with known seat counts.
**Steps:**
1. Allocate seats until usage crosses 80%, then 95%.
**Expected Result:** An alert fires at each threshold to the Institute Admin.
**Priority:** Medium

## 1.3 Billing & Licensing Control

### TC-INST-ADMIN-03-001 — View license usage and available seats
**Type:** Positive
**Covers:** 1.3 → View license usage and available seats
**Preconditions:** Institute Admin logged in.
**Steps:**
1. Open Billing & Licensing → entitlement overview.
**Expected Result:** Usage and available seats are shown with accurate figures.
**Priority:** High

### TC-INST-ADMIN-03-002 — Purchase additional licenses
**Type:** Positive
**Covers:** 1.3 → Purchase additional licenses
**Preconditions:** Institute Admin logged in.
**Steps:**
1. Select "Purchase additional licenses" and complete the purchase.
**Expected Result:** The purchase succeeds; entitlements update; an invoice is issued.
**Priority:** Critical

### TC-INST-ADMIN-03-003 — Billing history and invoices
**Type:** Positive
**Covers:** 1.3 → Billing history and invoices
**Preconditions:** Prior invoices exist.
**Steps:**
1. Open the billing history and open an invoice.
**Expected Result:** All invoices show date, amount, status, and period; line items, tax, and total are correct.
**Priority:** High

### TC-INST-ADMIN-03-004 — Discount eligibility shown
**Type:** Positive
**Covers:** 1.3 → Discount eligibility for bulk purchases
**Preconditions:** The institute has cumulative license volume.
**Steps:**
1. Open the purchase flow and review the discount eligibility.
**Expected Result:** The eligible discount is computed from cumulative volume and applied to the quote.
**Priority:** High

### TC-INST-ADMIN-03-005 — License expiry alerts
**Type:** Positive
**Covers:** 1.3 → License expiry alerts
**Preconditions:** A package expiring within 60 days.
**Steps:**
1. Wait for (or simulate) the 60-day, 30-day, and 7-day marks.
**Expected Result:** An alert fires at each of the 60, 30, and 7 day thresholds.
**Priority:** High

### TC-INST-ADMIN-03-006 — Renewal and upgrade management
**Type:** Positive
**Covers:** 1.3 → Renewal and upgrade management
**Preconditions:** An active package.
**Steps:**
1. Renew the package; then upgrade to the next tier.
**Expected Result:** The renewal extends the expiry; the upgrade shows the prorated difference and updates entitlements on completion.
**Priority:** Critical

### TC-INST-ADMIN-03-007 — Billing available on web and mobile
**Type:** Positive
**Covers:** 1.3 → Available on web and mobile
**Preconditions:** Institute Admin logged in on both surfaces.
**Steps:**
1. View invoices on mobile; purchase on web.
**Expected Result:** Both surfaces render billing features correctly without horizontal scroll.
**Priority:** High

### TC-INST-ADMIN-03-008 — Billing events are logged
**Type:** Positive
**Covers:** 1.3 → Event logging (viewed, purchased, renewed, upgraded)
**Preconditions:** Billing actions performed.
**Steps:**
1. Open Profile → "Activity".
**Expected Result:** Each billing action appears as an event with the actor and timestamp.
**Priority:** High

### TC-INST-ADMIN-03-009 — Billing actions are audit-logged
**Type:** Positive
**Covers:** 1.3 → Audit logging of billing actions
**Preconditions:** Billing actions performed.
**Steps:**
1. Review the institute audit log.
**Expected Result:** Every billing action is audit-logged with the actor and timestamp.
**Priority:** High

### TC-INST-ADMIN-03-010 — Discount computed from cumulative volume
**Type:** Positive
**Covers:** 1.3 → Rule: discount from cumulative license volume
**Preconditions:** Known cumulative license volume.
**Steps:**
1. Compare the quoted discount against the tiered pricing schedule.
**Expected Result:** The discount matches the tier for the institute's cumulative volume.
**Priority:** Medium

### TC-INST-ADMIN-03-011 — Expiry alert thresholds
**Type:** Positive
**Covers:** 1.3 → Rule: expiry alerts at 60, 30, 7 days
**Preconditions:** A package with a known expiry date.
**Steps:**
1. Verify alerts at 60, 30, and 7 days before expiry.
**Expected Result:** Exactly one alert per threshold; no duplicates.
**Priority:** Medium

### TC-INST-ADMIN-03-012 — Upgrade proration and downgrade timing
**Type:** Positive
**Covers:** 1.3 → Rule: upgrades prorated; downgrades next cycle
**Preconditions:** An active package mid-cycle.
**Steps:**
1. Upgrade mid-cycle and check the charge.
2. Request a downgrade and check its effective date.
**Expected Result:** The upgrade charge is prorated for the remaining cycle; the downgrade takes effect at the next billing cycle.
**Priority:** High

### TC-INST-ADMIN-03-013 — Invoices are immutable
**Type:** Negative
**Covers:** 1.3 → Rule: invoices immutable; corrections as credit notes
**Preconditions:** An issued invoice.
**Steps:**
1. Attempt to edit the invoice amount or line items.
**Expected Result:** Editing is not possible; corrections are issued as a separate credit note.
**Priority:** Critical

## 1.4 Integrations & Branding

### TC-INST-ADMIN-04-001 — Configure LMS integration
**Type:** Positive
**Covers:** 1.4 → LMS integration (SSO, grade sync, roster, passback)
**Preconditions:** LMS credentials available.
**Steps:**
1. Connect the LMS with SSO credentials.
2. Run a test sync.
**Expected Result:** The connection succeeds; the test sync reports synchronized students and courses.
**Priority:** Critical

### TC-INST-ADMIN-04-002 — Configure SIS sync
**Type:** Positive
**Covers:** 1.4 → SIS sync (enrollment, demographics, schedule, report card)
**Preconditions:** SIS credentials available.
**Steps:**
1. Connect the SIS and run a sync.
**Expected Result:** Enrollment, demographic, schedule, and report card data synchronize correctly.
**Priority:** High

### TC-INST-ADMIN-04-003 — Integration status and sync logs
**Type:** Positive
**Covers:** 1.4 → Integration status and sync logs
**Preconditions:** At least one integration configured.
**Steps:**
1. Open the integration status and sync logs.
**Expected Result:** Status (connected/disconnected) and each sync's records, result, and timestamp are shown.
**Priority:** High

### TC-INST-ADMIN-04-004 — White-label configuration
**Type:** Positive
**Covers:** 1.4 → White-label configuration (logo, colors, portal name)
**Preconditions:** Institute Admin logged in.
**Steps:**
1. Upload a logo, set the color palette, and rename the portal.
**Expected Result:** The branding settings are saved and reflected in the preview.
**Priority:** High

### TC-INST-ADMIN-04-005 — Branding preview before publishing
**Type:** Positive
**Covers:** 1.4 → Branding preview before publishing
**Preconditions:** Branding changes made but not published.
**Steps:**
1. Open the branding preview.
**Expected Result:** The preview shows the new branding; the live portal still shows the previous branding until publish.
**Priority:** Medium

### TC-INST-ADMIN-04-006 — Integrations and branding available on web and mobile
**Type:** Positive
**Covers:** 1.4 → Available on web and mobile
**Preconditions:** Institute Admin logged in on both surfaces.
**Steps:**
1. View integration status on mobile; configure branding on web.
**Expected Result:** Both surfaces render the features correctly without horizontal scroll.
**Priority:** High

### TC-INST-ADMIN-04-007 — Integration and branding events are logged
**Type:** Positive
**Covers:** 1.4 → Event logging (configured, synced, branding published)
**Preconditions:** Integration and branding actions performed.
**Steps:**
1. Open Profile → "Activity".
**Expected Result:** Each action appears as an event with the actor and timestamp.
**Priority:** High

### TC-INST-ADMIN-04-008 — Integration and branding changes are audit-logged
**Type:** Positive
**Covers:** 1.4 → Audit logging of integration and branding changes
**Preconditions:** Integration and branding changes performed.
**Steps:**
1. Review the institute audit log.
**Expected Result:** Every change is audit-logged with the actor, timestamp, and before/after state.
**Priority:** High

### TC-INST-ADMIN-04-009 — Credentials are encrypted and hidden
**Type:** Negative
**Covers:** 1.4 → Rule: credentials encrypted, never shown in full
**Preconditions:** An integration with stored credentials.
**Steps:**
1. Open the integration settings and attempt to view the stored credentials.
**Expected Result:** Credentials are masked; the full value is never displayed.
**Priority:** Critical

### TC-INST-ADMIN-04-010 — Failed sync does not overwrite data
**Type:** Negative
**Covers:** 1.4 → Rule: failed sync does not overwrite; retry available
**Preconditions:** An integration with existing synchronized data.
**Steps:**
1. Trigger a sync that fails partway.
2. Review the sync log and existing data; retry the sync.
**Expected Result:** Existing data is unchanged; the failure is logged; the retry succeeds and completes the sync.
**Priority:** Critical

### TC-INST-ADMIN-04-011 — Branding publish and rollback
**Type:** Positive
**Covers:** 1.4 → Rule: branding applies on publish; rollback retained
**Preconditions:** Published branding exists; new branding drafted.
**Steps:**
1. Publish the new branding and verify the student portal.
2. Roll back to the previous branding.
**Expected Result:** Publishing applies the branding institute-wide; rollback restores the previous branding.
**Priority:** Medium

### TC-INST-ADMIN-04-012 — Only Institute Admin configures integrations and branding
**Type:** Negative
**Covers:** 1.4 → Rule: only Institute Admin configures integrations/branding
**Preconditions:** A sub-admin (any role) logged in.
**Steps:**
1. Attempt to open the Integrations or Branding screens.
**Expected Result:** Access is denied; the screens are not visible in navigation.
**Priority:** Critical

## 1.5 Reporting & Data Export

### TC-INST-ADMIN-05-001 — Full institute reporting
**Type:** Positive
**Covers:** 1.5 → Full institute reporting (students, performance, licensing, billing)
**Preconditions:** Institute data exists across all areas.
**Steps:**
1. Generate reports for students, performance, licensing, and billing.
**Expected Result:** Each report is generated with accurate, institute-scoped data.
**Priority:** High

### TC-INST-ADMIN-05-002 — Batch-wise comparison reports
**Type:** Positive
**Covers:** 1.5 → Batch-wise comparison reports
**Preconditions:** Multiple batches with performance data.
**Steps:**
1. Generate the batch comparison report.
**Expected Result:** Batches are compared on the documented metrics with accurate figures.
**Priority:** High

### TC-INST-ADMIN-05-003 — Data export as CSV and PDF
**Type:** Positive
**Covers:** 1.5 → Data export (CSV, PDF) for institute records
**Preconditions:** A generated report.
**Steps:**
1. Export the report as PDF and the underlying data as CSV.
**Expected Result:** Both exports complete; the content matches the report.
**Priority:** High

### TC-INST-ADMIN-05-004 — Scheduled report delivery
**Type:** Positive
**Covers:** 1.5 → Scheduled report delivery to institute emails
**Preconditions:** A valid institute email address.
**Steps:**
1. Schedule a monthly license utilization report to the email.
2. Wait for (or simulate) the delivery date.
**Expected Result:** The report is delivered as a secure, expirable link to the address.
**Priority:** Medium

### TC-INST-ADMIN-05-005 — Export history
**Type:** Positive
**Covers:** 1.5 → Export history
**Preconditions:** Exports performed.
**Steps:**
1. Open the export history.
**Expected Result:** Each export shows the dataset, format, actor, and timestamp.
**Priority:** Medium

### TC-INST-ADMIN-05-006 — Reporting available on web and mobile
**Type:** Positive
**Covers:** 1.5 → Available on web and mobile
**Preconditions:** Institute Admin logged in on both surfaces.
**Steps:**
1. Generate a report on mobile; export on web.
**Expected Result:** Both surfaces render reporting features correctly without horizontal scroll.
**Priority:** High

### TC-INST-ADMIN-05-007 — Reporting events are logged
**Type:** Positive
**Covers:** 1.5 → Event logging (generated, exported, scheduled)
**Preconditions:** Reporting actions performed.
**Steps:**
1. Open Profile → "Activity".
**Expected Result:** Each action appears as an event with the actor and timestamp.
**Priority:** High

### TC-INST-ADMIN-05-008 — Reporting actions are audit-logged
**Type:** Positive
**Covers:** 1.5 → Audit logging of report generation and exports
**Preconditions:** Reporting actions performed.
**Steps:**
1. Review the institute audit log.
**Expected Result:** Every report generation and export is audit-logged with the actor, dataset, and timestamp.
**Priority:** High

### TC-INST-ADMIN-05-009 — Exports scoped to institute data
**Type:** Negative
**Covers:** 1.5 → Rule: exports scoped to institute data only
**Preconditions:** Institute Admin logged in; other institutes' data exists.
**Steps:**
1. Export the full student dataset.
**Expected Result:** The export contains only this institute's students; no other institute's data is included.
**Priority:** Critical

### TC-INST-ADMIN-05-010 — Scheduled reports use secure expirable links
**Type:** Positive
**Covers:** 1.5 → Rule: scheduled reports as secure expirable links
**Preconditions:** A scheduled report delivered.
**Steps:**
1. Open the delivery link; then open it again after expiry.
**Expected Result:** The link grants access until expiry; after expiry it is rejected.
**Priority:** Medium

### TC-INST-ADMIN-05-011 — Large exports are asynchronous
**Type:** Positive
**Covers:** 1.5 → Rule: large exports async with completion notification
**Preconditions:** A dataset large enough to trigger async generation.
**Steps:**
1. Request the export.
2. Wait for the completion notification and download.
**Expected Result:** The export is generated asynchronously; a notification is sent on completion; the file is complete.
**Priority:** Medium

### TC-INST-ADMIN-05-012 — Only Institute Admin has unrestricted export
**Type:** Negative
**Covers:** 1.5 → Rule: only Institute Admin has unrestricted export
**Preconditions:** A sub-admin (any role) logged in.
**Steps:**
1. Attempt to access the full reporting and export screens.
**Expected Result:** Access is denied or limited to the sub-admin's role scope; unrestricted export is unavailable.
**Priority:** Critical
