# 5. Student Support Functions — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: student_support_functions.md — every feature, sub-feature, and rule covered

---

## Test Execution Policy
- Zero tolerance: any deviation from documented behavior = FAILED = bug
- Every bug is immediately logged/reported (Bug ID, feature, sub-feature,
  expected vs actual, severity) and fixed 100% before the group passes
- Feature group passes only at 100% test pass rate

## Coverage Matrix
| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 5.1 Handle Student Queries and Technical Issues | Query: the query (the query, the student, the issue, the date) | TC-SA-21-05-001 |
| 5.1 Handle Student Queries and Technical Issues | Student: the student (the student, the name, the query) | TC-SA-21-05-002 |
| 5.1 Handle Student Queries and Technical Issues | Issue: the issue (the issue, the description, the date) | TC-SA-21-05-003 |
| 5.1 Handle Student Queries and Technical Issues | Resolution: the resolution (the resolution, the steps, the date) | TC-SA-21-05-004 |
| 5.1 Handle Student Queries and Technical Issues | Query count: the count (the count of the queries) | TC-SA-21-05-005 |
| 5.1 Handle Student Queries and Technical Issues | Query status: the status (the open, the pending, the resolved) | TC-SA-21-05-006 |
| 5.1 Handle Student Queries and Technical Issues | Query view: the view (the queries, the students, the issues, the dates) | TC-SA-21-05-007 |
| 5.1 Handle Student Queries and Technical Issues | Audit logging of the student query handling | TC-SA-21-05-008 |
| 5.1 Handle Student Queries and Technical Issues | Rule: the query is the request (the query, the student, the issue, the date); the query is the question | TC-SA-21-05-001 |
| 5.1 Handle Student Queries and Technical Issues | Rule: the student is the user (the student, the name, the query); the student is the learner | TC-SA-21-05-002 |
| 5.1 Handle Student Queries and Technical Issues | Rule: the issue is the problem (the issue, the description, the date); the issue is the fault | TC-SA-21-05-003 |
| 5.1 Handle Student Queries and Technical Issues | Rule: the resolution is the fix (the resolution, the steps, the date); the resolution is the remedy | TC-SA-21-05-004 |
| 5.1 Handle Student Queries and Technical Issues | Rule: the query is handled (the queries, the students, the issues, the dates); the resolution is managed | TC-SA-21-05-007 |
| 5.1 Handle Student Queries and Technical Issues | Rule: student query handling is audit-logged with the query, student, and timestamp | TC-SA-21-05-008 |
| 5.2 Manage Parent Communication | Communication: the communication (the communication, the parent, the message, the date) | TC-SA-21-05-009 |
| 5.2 Manage Parent Communication | Parent: the parent (the parent, the name, the communication) | TC-SA-21-05-010 |
| 5.2 Manage Parent Communication | Message: the message (the message, the text, the date) | TC-SA-21-05-011 |
| 5.2 Manage Parent Communication | Communication count: the count (the count of the communications) | TC-SA-21-05-012 |
| 5.2 Manage Parent Communication | Communication status: the status (the sent, the read, the replied) | TC-SA-21-05-013 |
| 5.2 Manage Parent Communication | Communication view: the view (the communications, the parents, the messages, the dates) | TC-SA-21-05-014 |
| 5.2 Manage Parent Communication | Communication export: the export (the communications, the format, the parent) | TC-SA-21-05-015 |
| 5.2 Manage Parent Communication | Audit logging of the parent communication management | TC-SA-21-05-016 |
| 5.2 Manage Parent Communication | Rule: the communication is the update (the communication, the parent, the message, the date); the communication is the contact | TC-SA-21-05-009 |
| 5.2 Manage Parent Communication | Rule: the parent is the guardian (the parent, the name, the communication); the parent is the stakeholder | TC-SA-21-05-010 |
| 5.2 Manage Parent Communication | Rule: the message is the content (the message, the text, the date); the message is the payload | TC-SA-21-05-011 |
| 5.2 Manage Parent Communication | Rule: the communication status is the state (the sent, the read, the replied); the status is the control | TC-SA-21-05-013 |
| 5.2 Manage Parent Communication | Rule: the communication is managed (the communications, the parents, the messages, the dates); the update is managed | TC-SA-21-05-014 |
| 5.2 Manage Parent Communication | Rule: parent communication management is audit-logged with the communication, parent, and timestamp | TC-SA-21-05-016 |
| 5.3 Process Account-related Requests | Request: the request (the request, the student, the type, the date) | TC-SA-21-05-017 |
| 5.3 Process Account-related Requests | Student: the student (the student, the name, the request) | TC-SA-21-05-018 |
| 5.3 Process Account-related Requests | Request type: the type (the type of the request, e.g., the password reset, the profile update, the plan change) | TC-SA-21-05-019 |
| 5.3 Process Account-related Requests | Request status: the status (the pending, the processed, the rejected) | TC-SA-21-05-020 |
| 5.3 Process Account-related Requests | Request count: the count (the count of the requests) | TC-SA-21-05-021 |
| 5.3 Process Account-related Requests | Request view: the view (the requests, the students, the types, the dates) | TC-SA-21-05-022 |
| 5.3 Process Account-related Requests | Request export: the export (the requests, the format, the type) | TC-SA-21-05-023 |
| 5.3 Process Account-related Requests | Audit logging of the account request processing | TC-SA-21-05-024 |
| 5.3 Process Account-related Requests | Rule: the request is the action (the request, the student, the type, the date); the request is the ask | TC-SA-21-05-017 |
| 5.3 Process Account-related Requests | Rule: the student is the user (the student, the name, the request); the student is the learner | TC-SA-21-05-018 |
| 5.3 Process Account-related Requests | Rule: the request type is the category (the type of the request, e.g., the password reset, the profile update, the plan change); the type is the segment | TC-SA-21-05-019 |
| 5.3 Process Account-related Requests | Rule: the request status is the state (the pending, the processed, the rejected); the status is the control | TC-SA-21-05-020 |
| 5.3 Process Account-related Requests | Rule: the request is processed (the requests, the students, the types, the dates); the action is managed | TC-SA-21-05-022 |
| 5.3 Process Account-related Requests | Rule: account request processing is audit-logged with the request, type, and timestamp | TC-SA-21-05-024 |
| 5.4 Monitor Student Engagement and Send Alerts | Engagement: the engagement (the engagement, the student, the metric, the date) | TC-SA-21-05-025 |
| 5.4 Monitor Student Engagement and Send Alerts | Student: the student (the student, the name, the engagement) | TC-SA-21-05-026 |
| 5.4 Monitor Student Engagement and Send Alerts | Engagement metric: the metric (the metric of the engagement, e.g., the login, the video completion, the quiz score) | TC-SA-21-05-027 |
| 5.4 Monitor Student Engagement and Send Alerts | Alert: the alert (the alert, the student, the reason, the date) | TC-SA-21-05-028 |
| 5.4 Monitor Student Engagement and Send Alerts | Alert count: the count (the count of the alerts) | TC-SA-21-05-029 |
| 5.4 Monitor Student Engagement and Send Alerts | Alert status: the status (the sent, the read, the acted) | TC-SA-21-05-030 |
| 5.4 Monitor Student Engagement and Send Alerts | Engagement view: the view (the engagements, the students, the metrics, the dates) | TC-SA-21-05-031 |
| 5.4 Monitor Student Engagement and Send Alerts | Audit logging of the engagement monitoring and alerts | TC-SA-21-05-032 |
| 5.4 Monitor Student Engagement and Send Alerts | Rule: the engagement is the activity (the engagement, the student, the metric, the date); the engagement is the participation | TC-SA-21-05-025 |
| 5.4 Monitor Student Engagement and Send Alerts | Rule: the student is the learner (the student, the name, the engagement); the student is the user | TC-SA-21-05-026 |
| 5.4 Monitor Student Engagement and Send Alerts | Rule: the engagement metric is the measure (the metric of the engagement, e.g., the login, the video completion, the quiz score); the metric is the value | TC-SA-21-05-027 |
| 5.4 Monitor Student Engagement and Send Alerts | Rule: the alert is the signal (the alert, the student, the reason, the date); the alert is the notice | TC-SA-21-05-028 |
| 5.4 Monitor Student Engagement and Send Alerts | Rule: the students are engaged (the engagements, the students, the metrics, the dates); the watch is managed | TC-SA-21-05-031 |
| 5.4 Monitor Student Engagement and Send Alerts | Rule: engagement monitoring and alerts are audit-logged with the engagement, student, and timestamp | TC-SA-21-05-032 |
| 5.5 Handle Course Access Issues | Issue: the issue (the issue, the student, the course, the date) | TC-SA-21-05-033 |
| 5.5 Handle Course Access Issues | Student: the student (the student, the name, the issue) | TC-SA-21-05-034 |
| 5.5 Handle Course Access Issues | Course: the course (the course, the name, the issue) | TC-SA-21-05-035 |
| 5.5 Handle Course Access Issues | Resolution: the resolution (the resolution, the steps, the date) | TC-SA-21-05-036 |
| 5.5 Handle Course Access Issues | Issue count: the count (the count of the issues) | TC-SA-21-05-037 |
| 5.5 Handle Course Access Issues | Issue status: the status (the open, the pending, the resolved) | TC-SA-21-05-038 |
| 5.5 Handle Course Access Issues | Issue view: the view (the issues, the students, the courses, the dates) | TC-SA-21-05-039 |
| 5.5 Handle Course Access Issues | Audit logging of the course access issue handling | TC-SA-21-05-040 |
| 5.5 Handle Course Access Issues | Rule: the issue is the problem (the issue, the student, the course, the date); the issue is the fault | TC-SA-21-05-033 |
| 5.5 Handle Course Access Issues | Rule: the student is the learner (the student, the name, the issue); the student is the user | TC-SA-21-05-034 |
| 5.5 Handle Course Access Issues | Rule: the course is the content (the course, the name, the issue); the course is the subject | TC-SA-21-05-035 |
| 5.5 Handle Course Access Issues | Rule: the resolution is the fix (the resolution, the steps, the date); the resolution is the remedy | TC-SA-21-05-036 |
| 5.5 Handle Course Access Issues | Rule: the issue is handled (the issues, the students, the courses, the dates); the fix is managed | TC-SA-21-05-039 |
| 5.5 Handle Course Access Issues | Rule: course access issue handling is audit-logged with the issue, student, and timestamp | TC-SA-21-05-040 |

## 5.1 Handle Student Queries and Technical Issues

### TC-SA-21-05-001 — Query: the query (the query, the student, the issue, the date); the query is the question
**Type:** Positive
**Covers:** 5.1 → Query: the query (the query, the student, the issue, the date); Rule: the query is the request (the query, the student, the issue, the date); the query is the question
**Preconditions:** Super Admin is logged in; a student has submitted a query.
**Steps:**
1. Open Customer Support Management → Student Support Functions → Handle Student Queries.
2. Handle the query: the query (the query, the student, the issue, the date) — verify the query is the request.
3. Verify the query shows the student, the issue, and the date.
4. Verify the query is linked to the correct student account.
**Expected Result:** The query is handled — the query, the student, the issue, and the date are the question.
**Priority:** Critical

### TC-SA-21-05-002 — Student: the student (the student, the name, the query); the student is the learner
**Type:** Positive
**Covers:** 5.1 → Student: the student (the student, the name, the query); Rule: the student is the user (the student, the name, the query); the student is the learner
**Preconditions:** Multiple students have submitted queries.
**Steps:**
1. Select the student: the student (the student, the name, the query) — verify the student is the user.
2. Verify the student shows the name and the query.
3. Verify the student's profile (plan, courses, contact) is accessible from the query.
**Expected Result:** The student is selected — the student, the name, and the query are the learner.
**Priority:** High

### TC-SA-21-05-003 — Issue: the issue (the issue, the description, the date); the issue is the fault
**Type:** Positive
**Covers:** 5.1 → Issue: the issue (the issue, the description, the date); Rule: the issue is the problem (the issue, the description, the date); the issue is the fault
**Preconditions:** A student query with a technical issue exists.
**Steps:**
1. View the issue: the issue (the issue, the description, the date) — verify the issue is the problem.
2. Verify the issue shows the description and the date.
3. Verify the issue description is complete and matches what the student reported.
**Expected Result:** The issue is shown — the issue, the description, and the date are the fault.
**Priority:** High

### TC-SA-21-05-004 — Resolution: the resolution (the resolution, the steps, the date); the resolution is the remedy
**Type:** Positive
**Covers:** 5.1 → Resolution: the resolution (the resolution, the steps, the date); Rule: the resolution is the fix (the resolution, the steps, the date); the resolution is the remedy
**Preconditions:** A student query with an issue exists.
**Steps:**
1. Create the resolution: the resolution (the resolution, the steps, the date) — verify the resolution is the fix.
2. Verify the resolution shows the steps and the date.
3. Verify the resolution is communicated to the student and the query can be closed.
**Expected Result:** The resolution is created — the resolution, the steps, and the date are the remedy.
**Priority:** High

### TC-SA-21-05-005 — Query count: the count (the count of the queries); the count is the measure
**Type:** Edge
**Covers:** 5.1 → Query count: the count (the count of the queries)
**Preconditions:** Student queries exist; a support queue with zero queries (zero-count edge) is also prepared.
**Steps:**
1. View the query count: the count (the count of the queries) — verify the count is the measure.
2. Verify the count matches the actual number of queries.
3. Check the zero-query queue — verify the count shows 0 (no error, no negative value).
**Expected Result:** The query count is shown — the count of the queries is the measure; the zero-query queue displays cleanly.
**Priority:** High

### TC-SA-21-05-006 — Query status: the status (the open, the pending, the resolved); the status is the state
**Type:** Positive
**Covers:** 5.1 → Query status: the status (the open, the pending, the resolved)
**Preconditions:** Queries with open, pending, and resolved statuses exist.
**Steps:**
1. View the query status: the status (the open, the pending, the resolved) — verify the query status is the state.
2. Move a query from open to pending (waiting on student) — verify the status updates.
3. Move it to resolved — verify the status updates and the query is closed.
**Expected Result:** The query status is shown — the open, the pending, and the resolved are the state.
**Priority:** High

### TC-SA-21-05-007 — Query view: the view (the queries, the students, the issues, the dates); the resolution is managed
**Type:** Positive
**Covers:** 5.1 → Query view: the view (the queries, the students, the issues, the dates); Rule: the query is handled (the queries, the students, the issues, the dates); the resolution is managed
**Preconditions:** Multiple student queries exist.
**Steps:**
1. View the queries: the view (the queries, the students, the issues, the dates) — verify the query is handled.
2. Verify each query shows the student, the issue, and the date.
3. Verify the resolution is managed (view, assign, resolve, close).
**Expected Result:** The queries are viewed — the queries, the students, the issues, and the dates are visible; the resolution is managed.
**Priority:** High

### TC-SA-21-05-008 — Student query handling is audit-logged with the query, student, and timestamp
**Type:** Positive
**Covers:** 5.1 → Audit logging of the student query handling; Rule: student query handling is audit-logged with the query, student, and timestamp
**Preconditions:** Super Admin has handled a student query.
**Steps:**
1. Open the audit trail and filter by "student query".
2. Verify entries show the query, the student, and the timestamp.
**Expected Result:** The student query handling is audit-logged with the query, student, and timestamp.
**Priority:** Critical

## 5.2 Manage Parent Communication

### TC-SA-21-05-009 — Communication: the communication (the communication, the parent, the message, the date); the communication is the contact
**Type:** Positive
**Covers:** 5.2 → Communication: the communication (the communication, the parent, the message, the date); Rule: the communication is the update (the communication, the parent, the message, the date); the communication is the contact
**Preconditions:** Super Admin is logged in; a parent account linked to a student exists.
**Steps:**
1. Open Customer Support Management → Student Support Functions → Manage Parent Communication.
2. Manage the communication: the communication (the communication, the parent, the message, the date) — verify the communication is the update.
3. Verify the communication shows the parent, the message, and the date.
4. Send the message — verify the parent receives it.
**Expected Result:** The communication is managed — the communication, the parent, the message, and the date are the contact.
**Priority:** Critical

### TC-SA-21-05-010 — Parent: the parent (the parent, the name, the communication); the parent is the stakeholder
**Type:** Edge
**Covers:** 5.2 → Parent: the parent (the parent, the name, the communication); Rule: the parent is the guardian (the parent, the name, the communication); the parent is the stakeholder
**Preconditions:** Parent accounts exist; a student with no linked parent (no-parent edge) is also prepared.
**Steps:**
1. Select the parent: the parent (the parent, the name, the communication) — verify the parent is the guardian.
2. Verify the parent shows the name and the communication.
3. Attempt to send a parent communication for the no-parent student — verify the system shows a clear "no parent linked" state (no crash, no message sent to a wrong recipient).
**Expected Result:** The parent is selected — the parent, the name, and the communication are the stakeholder; students without a linked parent never receive misdirected communications.
**Priority:** High

### TC-SA-21-05-011 — Message: the message (the message, the text, the date); the message is the payload
**Type:** Positive
**Covers:** 5.2 → Message: the message (the message, the text, the date); Rule: the message is the content (the message, the text, the date); the message is the payload
**Preconditions:** A parent communication is being created.
**Steps:**
1. Create the message: the message (the message, the text, the date) — verify the message is the content.
2. Verify the message shows the text and the date.
3. Verify the message is delivered to the parent exactly as composed (no truncation, no encoding errors).
**Expected Result:** The message is created — the message, the text, and the date are the payload.
**Priority:** High

### TC-SA-21-05-012 — Communication count: the count (the count of the communications); the count is the measure
**Type:** Positive
**Covers:** 5.2 → Communication count: the count (the count of the communications)
**Preconditions:** Multiple parent communications exist.
**Steps:**
1. View the communication count: the count (the count of the communications) — verify the count is the measure.
2. Verify the count matches the actual number of communications.
3. Send a new communication — verify the count increments.
**Expected Result:** The communication count is shown — the count of the communications is the measure.
**Priority:** High

### TC-SA-21-05-013 — Communication status: the status (the sent, the read, the replied); the status is the control
**Type:** Positive
**Covers:** 5.2 → Communication status: the status (the sent, the read, the replied); Rule: the communication status is the state (the sent, the read, the replied); the status is the control
**Preconditions:** Communications with sent, read, and replied statuses exist.
**Steps:**
1. View the communication status: the status (the sent, the read, the replied) — verify the communication status is the state.
2. Verify a sent communication becomes read when the parent opens it.
3. Verify a read communication becomes replied when the parent responds.
**Expected Result:** The communication status is shown — the sent, the read, and the replied are the control.
**Priority:** High

### TC-SA-21-05-014 — Communication view: the view (the communications, the parents, the messages, the dates); the update is managed
**Type:** Positive
**Covers:** 5.2 → Communication view: the view (the communications, the parents, the messages, the dates); Rule: the communication is managed (the communications, the parents, the messages, the dates); the update is managed
**Preconditions:** Multiple parent communications exist.
**Steps:**
1. View the communications: the view (the communications, the parents, the messages, the dates) — verify the communication is managed.
2. Verify each communication shows the parent, the message, and the date.
3. Verify the update is managed (send, track, follow up).
**Expected Result:** The communications are viewed — the communications, the parents, the messages, and the dates are visible; the update is managed.
**Priority:** High

### TC-SA-21-05-015 — Communication export: the export (the communications, the format, the parent); the export is the record
**Type:** Edge
**Covers:** 5.2 → Communication export: the export (the communications, the format, the parent)
**Preconditions:** Communications exist for multiple parents; a parent with no communications (zero-row export edge) is also prepared.
**Steps:**
1. Export the communications: the export (the communications, the format, the parent) — verify the export is the record.
2. Verify the export contains all communications for the selected parent in the selected format.
3. Export the no-communication parent — verify the export completes (empty file or clear "no data" message, no error/corrupt file).
**Expected Result:** The communications are exported — the communications, the format, and the parent are the record; empty exports never produce corrupt files or errors.
**Priority:** High

### TC-SA-21-05-016 — Parent communication management is audit-logged with the communication, parent, and timestamp
**Type:** Positive
**Covers:** 5.2 → Audit logging of the parent communication management; Rule: parent communication management is audit-logged with the communication, parent, and timestamp
**Preconditions:** Super Admin has managed a parent communication.
**Steps:**
1. Open the audit trail and filter by "parent communication".
2. Verify entries show the communication, the parent, and the timestamp.
**Expected Result:** The parent communication management is audit-logged with the communication, parent, and timestamp.
**Priority:** Critical

## 5.3 Process Account-related Requests

### TC-SA-21-05-017 — Request: the request (the request, the student, the type, the date); the request is the ask
**Type:** Positive
**Covers:** 5.3 → Request: the request (the request, the student, the type, the date); Rule: the request is the action (the request, the student, the type, the date); the request is the ask
**Preconditions:** Super Admin is logged in; a student has submitted an account-related request.
**Steps:**
1. Open Customer Support Management → Student Support Functions → Process Account-related Requests.
2. Process the request: the request (the request, the student, the type, the date) — verify the request is the action.
3. Verify the request shows the student, the type, and the date.
4. Verify the request is linked to the correct student account.
**Expected Result:** The request is processed — the request, the student, the type, and the date are the ask.
**Priority:** Critical

### TC-SA-21-05-018 — Student: the student (the student, the name, the request); the student is the learner
**Type:** Positive
**Covers:** 5.3 → Student: the student (the student, the name, the request); Rule: the student is the user (the student, the name, the request); the student is the learner
**Preconditions:** Multiple students have submitted account requests.
**Steps:**
1. Select the student: the student (the student, the name, the request) — verify the student is the user.
2. Verify the student shows the name and the request.
3. Verify the student's account details are accessible to verify the request's legitimacy.
**Expected Result:** The student is selected — the student, the name, and the request are the learner.
**Priority:** High

### TC-SA-21-05-019 — Request type: the type (the type of the request, e.g., the password reset, the profile update, the plan change); the type is the segment
**Type:** Positive
**Covers:** 5.3 → Request type: the type (the type of the request, e.g., the password reset, the profile update, the plan change); Rule: the request type is the category (the type of the request, e.g., the password reset, the profile update, the plan change); the type is the segment
**Preconditions:** Requests of password reset, profile update, and plan change types exist.
**Steps:**
1. Select the request type: the type (the type of the request, e.g., the password reset, the profile update, the plan change) — verify the request type is the category.
2. Verify each request shows its type.
3. Verify requests can be filtered by type.
**Expected Result:** The request type is selected — the type of the request (the password reset, the profile update, the plan change) is the segment.
**Priority:** High

### TC-SA-21-05-020 — Request status: the status (the pending, the processed, the rejected); the status is the control
**Type:** Edge
**Covers:** 5.3 → Request status: the status (the pending, the processed, the rejected); Rule: the request status is the state (the pending, the processed, the rejected); the status is the control
**Preconditions:** Requests with pending, processed, and rejected statuses exist; a processed request that is re-submitted identically (duplicate-request edge) is also prepared.
**Steps:**
1. View the request status: the status (the pending, the processed, the rejected) — verify the request status is the state.
2. Process a pending request — verify the status changes to processed and the account change is applied.
3. Reject an invalid request — verify the status changes to rejected and the student is notified with a reason.
4. Submit the duplicate request — verify the system detects it (no double application of the change, e.g., no double plan change).
**Expected Result:** The request status is shown — the pending, the processed, and the rejected are the control; duplicate requests never cause double application.
**Priority:** High

### TC-SA-21-05-021 — Request count: the count (the count of the requests); the count is the measure
**Type:** Positive
**Covers:** 5.3 → Request count: the count (the count of the requests)
**Preconditions:** Multiple account requests exist.
**Steps:**
1. View the request count: the count (the count of the requests) — verify the count is the measure.
2. Verify the count matches the actual number of requests.
3. Submit a new request — verify the count increments.
**Expected Result:** The request count is shown — the count of the requests is the measure.
**Priority:** High

### TC-SA-21-05-022 — Request view: the view (the requests, the students, the types, the dates); the action is managed
**Type:** Positive
**Covers:** 5.3 → Request view: the view (the requests, the students, the types, the dates); Rule: the request is processed (the requests, the students, the types, the dates); the action is managed
**Preconditions:** Multiple account requests exist.
**Steps:**
1. View the requests: the view (the requests, the students, the types, the dates) — verify the request is processed.
2. Verify each request shows the student, the type, and the date.
3. Verify the action is managed (view, process, reject).
**Expected Result:** The requests are viewed — the requests, the students, the types, and the dates are visible; the action is managed.
**Priority:** High

### TC-SA-21-05-023 — Request export: the export (the requests, the format, the type); the export is the record
**Type:** Edge
**Covers:** 5.3 → Request export: the export (the requests, the format, the type)
**Preconditions:** Requests exist for multiple types; a type with no requests (zero-row export edge) is also prepared.
**Steps:**
1. Export the requests: the export (the requests, the format, the type) — verify the export is the record.
2. Verify the export contains all requests for the selected type in the selected format.
3. Export the empty type — verify the export completes (empty file or clear "no data" message, no error/corrupt file).
**Expected Result:** The requests are exported — the requests, the format, and the type are the record; empty-type exports never produce corrupt files or errors.
**Priority:** High

### TC-SA-21-05-024 — Account request processing is audit-logged with the request, type, and timestamp
**Type:** Positive
**Covers:** 5.3 → Audit logging of the account request processing; Rule: account request processing is audit-logged with the request, type, and timestamp
**Preconditions:** Super Admin has processed an account request.
**Steps:**
1. Open the audit trail and filter by "account request".
2. Verify entries show the request, the type, and the timestamp.
**Expected Result:** The account request processing is audit-logged with the request, type, and timestamp.
**Priority:** Critical

## 5.4 Monitor Student Engagement and Send Alerts

### TC-SA-21-05-025 — Engagement: the engagement (the engagement, the student, the metric, the date); the engagement is the participation
**Type:** Positive
**Covers:** 5.4 → Engagement: the engagement (the engagement, the student, the metric, the date); Rule: the engagement is the activity (the engagement, the student, the metric, the date); the engagement is the participation
**Preconditions:** Super Admin is logged in; students have platform activity.
**Steps:**
1. Open Customer Support Management → Student Support Functions → Monitor Student Engagement.
2. Monitor the engagement: the engagement (the engagement, the student, the metric, the date) — verify the engagement is the activity.
3. Verify the engagement shows the student, the metric, and the date.
4. Verify the engagement data updates as students use the platform.
**Expected Result:** The engagement is monitored — the engagement, the student, the metric, and the date are the participation.
**Priority:** Critical

### TC-SA-21-05-026 — Student: the student (the student, the name, the engagement); the student is the user
**Type:** Positive
**Covers:** 5.4 → Student: the student (the student, the name, the engagement); Rule: the student is the learner (the student, the name, the engagement); the student is the user
**Preconditions:** Multiple students have engagement data.
**Steps:**
1. Select the student: the student (the student, the name, the engagement) — verify the student is the learner.
2. Verify the student shows the name and the engagement.
3. Verify the student's engagement history is accessible.
**Expected Result:** The student is selected — the student, the name, and the engagement are the user.
**Priority:** High

### TC-SA-21-05-027 — Engagement metric: the metric (the metric of the engagement, e.g., the login, the video completion, the quiz score); the metric is the value
**Type:** Positive
**Covers:** 5.4 → Engagement metric: the metric (the metric of the engagement, e.g., the login, the video completion, the quiz score); Rule: the engagement metric is the measure (the metric of the engagement, e.g., the login, the video completion, the quiz score); the metric is the value
**Preconditions:** Students have login, video completion, and quiz score activity.
**Steps:**
1. View the engagement metric: the metric (the metric of the engagement, e.g., the login, the video completion, the quiz score) — verify the engagement metric is the measure.
2. Verify each metric matches the actual student activity.
3. Verify metrics can be viewed per student and in aggregate.
**Expected Result:** The engagement metric is shown — the metric of the engagement (the login, the video completion, the quiz score) is the value.
**Priority:** High

### TC-SA-21-05-028 — Alert: the alert (the alert, the student, the reason, the date); the alert is the notice
**Type:** Edge
**Covers:** 5.4 → Alert: the alert (the alert, the student, the reason, the date); Rule: the alert is the signal (the alert, the student, the reason, the date); the alert is the notice
**Preconditions:** Engagement thresholds are configured; a student whose inactivity crosses the alert threshold (threshold-crossing edge) is also prepared.
**Steps:**
1. Send the alert: the alert (the alert, the student, the reason, the date) — verify the alert is the signal.
2. Verify the alert shows the student, the reason, and the date.
3. Wait for the inactive student to cross the threshold — verify the alert is triggered automatically with the correct reason.
4. Verify the same student does not receive duplicate alerts for the same ongoing condition (no alert spam).
**Expected Result:** The alert is sent — the alert, the student, the reason, and the date are the notice; threshold alerts fire once per condition, never spammed.
**Priority:** High

### TC-SA-21-05-029 — Alert count: the count (the count of the alerts); the count is the measure
**Type:** Positive
**Covers:** 5.4 → Alert count: the count (the count of the alerts)
**Preconditions:** Multiple alerts have been sent.
**Steps:**
1. View the alert count: the count (the count of the alerts) — verify the count is the measure.
2. Verify the count matches the actual number of alerts.
3. Trigger a new alert — verify the count increments.
**Expected Result:** The alert count is shown — the count of the alerts is the measure.
**Priority:** High

### TC-SA-21-05-030 — Alert status: the status (the sent, the read, the acted); the status is the state
**Type:** Positive
**Covers:** 5.4 → Alert status: the status (the sent, the read, the acted)
**Preconditions:** Alerts with sent, read, and acted statuses exist.
**Steps:**
1. View the alert status: the status (the sent, the read, the acted) — verify the alert status is the state.
2. Verify a sent alert becomes read when the recipient opens it.
3. Verify a read alert becomes acted when the recipient takes the expected action (e.g., logs back in).
**Expected Result:** The alert status is shown — the sent, the read, and the acted are the state.
**Priority:** High

### TC-SA-21-05-031 — Engagement view: the view (the engagements, the students, the metrics, the dates); the watch is managed
**Type:** Positive
**Covers:** 5.4 → Engagement view: the view (the engagements, the students, the metrics, the dates); Rule: the students are engaged (the engagements, the students, the metrics, the dates); the watch is managed
**Preconditions:** Multiple students with engagement data exist.
**Steps:**
1. View the engagements: the view (the engagements, the students, the metrics, the dates) — verify the students are engaged.
2. Verify each engagement shows the student, the metric, and the date.
3. Verify the watch is managed (monitor, alert, follow up).
**Expected Result:** The engagements are viewed — the engagements, the students, the metrics, and the dates are visible; the watch is managed.
**Priority:** High

### TC-SA-21-05-032 — Engagement monitoring and alerts are audit-logged with the engagement, student, and timestamp
**Type:** Positive
**Covers:** 5.4 → Audit logging of the engagement monitoring and alerts; Rule: engagement monitoring and alerts are audit-logged with the engagement, student, and timestamp
**Preconditions:** Super Admin has monitored engagement and sent an alert.
**Steps:**
1. Open the audit trail and filter by "engagement".
2. Verify entries show the engagement, the student, and the timestamp.
**Expected Result:** The engagement monitoring and alerts are audit-logged with the engagement, student, and timestamp.
**Priority:** Critical

## 5.5 Handle Course Access Issues

### TC-SA-21-05-033 — Issue: the issue (the issue, the student, the course, the date); the issue is the fault
**Type:** Positive
**Covers:** 5.5 → Issue: the issue (the issue, the student, the course, the date); Rule: the issue is the problem (the issue, the student, the course, the date); the issue is the fault
**Preconditions:** Super Admin is logged in; a student has reported a course access problem.
**Steps:**
1. Open Customer Support Management → Student Support Functions → Handle Course Access Issues.
2. Handle the issue: the issue (the issue, the student, the course, the date) — verify the issue is the problem.
3. Verify the issue shows the student, the course, and the date.
4. Verify the issue is linked to the correct student and course.
**Expected Result:** The issue is handled — the issue, the student, the course, and the date are the fault.
**Priority:** Critical

### TC-SA-21-05-034 — Student: the student (the student, the name, the issue); the student is the user
**Type:** Positive
**Covers:** 5.5 → Student: the student (the student, the name, the issue); Rule: the student is the learner (the student, the name, the issue); the student is the user
**Preconditions:** Multiple students have course access issues.
**Steps:**
1. Select the student: the student (the student, the name, the issue) — verify the student is the learner.
2. Verify the student shows the name and the issue.
3. Verify the student's enrollment and subscription status are accessible to diagnose the issue.
**Expected Result:** The student is selected — the student, the name, and the issue are the user.
**Priority:** High

### TC-SA-21-05-035 — Course: the course (the course, the name, the issue); the course is the subject
**Type:** Edge
**Covers:** 5.5 → Course: the course (the course, the name, the issue); Rule: the course is the content (the course, the name, the issue); the course is the subject
**Preconditions:** Course access issues exist; an issue referencing a deleted/archived course (missing-course edge) is also prepared.
**Steps:**
1. Select the course: the course (the course, the name, the issue) — verify the course is the content.
2. Verify the course shows the name and the issue.
3. Open the missing-course issue — verify the system shows the course as "no longer available" with a clear path (e.g., restore access to a replacement or close with explanation); no broken reference, no crash.
**Expected Result:** The course is selected — the course, the name, and the issue are the subject; issues referencing missing courses are handled gracefully.
**Priority:** High

### TC-SA-21-05-036 — Resolution: the resolution (the resolution, the steps, the date); the resolution is the remedy
**Type:** Positive
**Covers:** 5.5 → Resolution: the resolution (the resolution, the steps, the date); Rule: the resolution is the fix (the resolution, the steps, the date); the resolution is the remedy
**Preconditions:** A course access issue exists.
**Steps:**
1. Create the resolution: the resolution (the resolution, the steps, the date) — verify the resolution is the fix.
2. Verify the resolution shows the steps and the date.
3. Apply the resolution — verify the student can actually access the course (test with the student's account).
**Expected Result:** The resolution is created — the resolution, the steps, and the date are the remedy; the student's access is verifiably restored.
**Priority:** High

### TC-SA-21-05-037 — Issue count: the count (the count of the issues); the count is the measure
**Type:** Positive
**Covers:** 5.5 → Issue count: the count (the count of the issues)
**Preconditions:** Multiple course access issues exist.
**Steps:**
1. View the issue count: the count (the count of the issues) — verify the count is the measure.
2. Verify the count matches the actual number of issues.
3. Report a new issue — verify the count increments.
**Expected Result:** The issue count is shown — the count of the issues is the measure.
**Priority:** High

### TC-SA-21-05-038 — Issue status: the status (the open, the pending, the resolved); the status is the state
**Type:** Positive
**Covers:** 5.5 → Issue status: the status (the open, the pending, the resolved)
**Preconditions:** Course access issues with open, pending, and resolved statuses exist.
**Steps:**
1. View the issue status: the status (the open, the pending, the resolved) — verify the issue status is the state.
2. Move an issue from open to pending (waiting on verification) — verify the status updates.
3. Move it to resolved — verify the status updates and the issue is closed.
**Expected Result:** The issue status is shown — the open, the pending, and the resolved are the state.
**Priority:** High

### TC-SA-21-05-039 — Issue view: the view (the issues, the students, the courses, the dates); the fix is managed
**Type:** Positive
**Covers:** 5.5 → Issue view: the view (the issues, the students, the courses, the dates); Rule: the issue is handled (the issues, the students, the courses, the dates); the fix is managed
**Preconditions:** Multiple course access issues exist.
**Steps:**
1. View the issues: the view (the issues, the students, the courses, the dates) — verify the issue is handled.
2. Verify each issue shows the student, the course, and the date.
3. Verify the fix is managed (view, diagnose, resolve, close).
**Expected Result:** The issues are viewed — the issues, the students, the courses, and the dates are visible; the fix is managed.
**Priority:** High

### TC-SA-21-05-040 — Course access issue handling is audit-logged with the issue, student, and timestamp
**Type:** Positive
**Covers:** 5.5 → Audit logging of the course access issue handling; Rule: course access issue handling is audit-logged with the issue, student, and timestamp
**Preconditions:** Super Admin has handled a course access issue.
**Steps:**
1. Open the audit trail and filter by "course access issue".
2. Verify entries show the issue, the student, and the timestamp.
**Expected Result:** The course access issue handling is audit-logged with the issue, student, and timestamp.
**Priority:** Critical
