How to Debug Learner Verificient(/Proctortrack) Proctoring Issues
There’s a common issue with Proctortrack exam attempts wherein they’ll end up, inexplicably, with a null external ID. This shouldn’t happen! Let’s diagnose & mitigate.
When to Apply
Manifests as a 403 HTTP error when the learner goes to start the Proctortrack application.
Instructions
This assumes you know the learner’s user_id and the course in which they’re experiencing the issue. Ideally you’ll also know which subsection the proctored exam occurs in, but this can be inferred in most cases.
Query for Read Replica, substituting USER_ID and COURSE_ID:
SELECT
ex.backend,
ex.external_id as exam_level_external_id,
att.external_id as attempt_level_external_id,
att.user_id
FROM proctoring_proctoredexam ex
INNER JOIN proctoring_proctoredexamstudentattempt att on ex.id = att.proctored_exam_id
WHERE att.user_id = ${USER_ID}
AND ex.course_id = "${COURSE_ID}";
Example output showing nothing wrong:
+--------------+----------------------------------+----------------------------------+----------+
| backend | exam_level_external_id | attempt_level_external_id | user_id |
+--------------+----------------------------------+----------------------------------+----------+
| proctortrack | deadbeefdeadbeefdeadbeefdeadbeef | deadbeefdeadbeefdeadbeefdeadbee2 | 00000007 |
| proctortrack | deadbeefdeadbeefdeadbeefdeadbee1 | deadbeefdeadbeefdeadbeefdeadbee3 | 00000007 |
+--------------+----------------------------------+----------------------------------+----------+
When working with proctortrack, both exam-level and attempt-level external ids should be UUIDs. In the error case we’re checking for, we see the exam-level external ids show just fine, but the attempt-level external ids show as NULL rather than a UUID-length string.
What to Do When the Attempt-Level External ID is Null
Delete the attempt; it probably won’t happen again if the learner attempts again. One can delete the attempt from within the LMS, using the “Special Exams” portion of the instructor dashboard, e.g. https://courses.edx.org/courses/${COURSE_ID}/instructor#view-special_exams (substituting the course id). In the second drop-down, labelled “Student Special Exam Attempts”, search for the relevant learner, and click the “X” at the end of the table row to delete the attempt row.
An example of where to find the button in question, if you’ve never used that page before: