Prevent quiz failure from being treated as course completion — for compliance, badge integrity, and learner clarity.
When a learner exhausts all quiz attempts and fails, Allego currently marks the content item as "completed". This triggers a cascade:
For regulated industries like life sciences, "completed" must mean "demonstrated competence." A badge or certificate issued to someone who failed the knowledge check is a compliance risk under FDA 21 CFR Part 11 and GxP training requirements.
Allego already has a "Grant Additional Attempt" mechanism that works for both standalone and in-course quizzes, from the My Team's Tasks and Manage Tasks tabs. This is the recovery path when completion is blocked.
Gated on advancedQuizQptionsEnabled role. Available to managers and admins. No equivalent currently exists for SCORM or Allego Lessons — see Capability 4.
This feature is composed of four independent capabilities. Clients can adopt any combination. Teleflex is implementing Capabilities 1, 2, and 3.
Per-quiz option that prevents a failed, attempts-exhausted quiz from marking the content item complete. Course stays open. Badge naturally blocked.
A composite label on the course task communicates the failed quiz to learners, managers, and admins — regardless of whether Capability 1 is in use.
Default behavior change: badge issuance is deferred if any required quiz component in the awarding course is in a failed state. No client toggle required.
Per-SCORM option equivalent to Capability 1, using the content item's successStatus field. Separate story; team to size and schedule.
A new per-quiz toggle (requirePassForComplete) prevents timeCourseComplete from being set when the learner exhausts attempts with a failing score. The content item genuinely does not complete, so the course stays incomplete and badge issuance is naturally prevented.
Only in the quiz properties dialog when max attempts is set to a finite value. Unlimited-attempt quizzes already never mark complete on fail — the toggle is not relevant for them.
timeCourseComplete is NOT set. State shows as Failed (9).
Stays incomplete. Composite label displayed: "In Progress - Quiz Not Passed" (see Capability 2).
Naturally blocked — course never reaches state 6. No badge logic changes required for this option.
Naturally blocked — course is incomplete.
A composite label on the course task surfaces the failed quiz outcome to all audiences — the learner, manager, and admin — using the established "Cancelled - Exempt" pattern for rendering composite status modifiers.
The label applies only to required course components. A failed optional quiz does not affect the course-level composite label.
Shown when Capability 1 is active and the learner has exhausted attempts on a required quiz. The course remains in an Open/Active state. Tooltip on the label: "Contact your manager for next steps."
Shown when a course reaches the Finished state but contains a required quiz that was not passed. Provides visibility for admins and managers without blocking the task. Applies to all clients — even those not using Capability 1.
A default behavior change to badge issuance logic: when evaluating whether to award a badge, the system checks whether any required quiz component in the awarding course is in a Failed state. If so, badge issuance is deferred until the state resolves.
The sp_assignBadgesToUserV2 stored procedure is updated to check the failed-quiz condition before issuing a badge. This is a system-level default — no client-facing toggle or badge template setting is added.
Issuing a badge to a learner who failed a required knowledge check is an integrity problem regardless of whether a client has explicitly opted in. Making this a default closes a gap that most clients are unaware exists. The behavior is consistent with the intent of badge issuance — recognizing demonstrated competence.
Allego Lesson SCORMs report two values to Allego's content item layer: completionStatus (completed / incomplete) and successStatus (passed / failed / unknown). Currently, Allego marks the content item complete based on completionStatus alone — so a learner who exhausts attempts with a failing score gets the content item marked complete.
A new "Require passing to complete" option on the SCORM content item properties page (alongside passing threshold and attempts) instructs Allego to additionally require successStatus = passed before marking the item complete. If successStatus = failed and no attempts remain, the item stays incomplete — mirroring Capability 1 for quizzes.
SCORM content item properties page — same location as passing threshold and max attempts. Only shown when max attempts is set to a finite value.
successStatus = unknown: Some SCORM packages do not reliably set successStatus. When the option is enabled and successStatus is unknown but completionStatus is completed, the recommended default is to allow completion (do not block on ambiguous data) — but this needs team confirmation.| Concern | With Capability 1 Block | Without Capability 1 |
|---|---|---|
| Quiz item | Does not complete | Completes (as today) |
| Course status label | "In Progress - Quiz Not Passed" | "Finished - Quiz Not Passed" |
| Learner task list | Stays in Open/Active | Moves to Completed |
| LP completion | Blocked | Counts as complete |
| Badge (Capability 3) | Naturally blocked | Deferred by default |
| Compliance strength | Strongest | Moderate |
| Zombie task risk | Yes — mitigated by label + tooltip | None |
| Admin action to recover | Required (grant attempt) | Optional, judgment-based |
| Closest to ACTO | No — ACTO always completes | Closer — separate competency gate |
| Layer | Change | Risk |
|---|---|---|
| DB schema | New column Content.requirePassForComplete (BIT, default 0) | Low |
| Java | ContentMetaData + content create/update APIs — wire new field | Low |
| Quiz properties UI | New toggle in quiz properties dialog — shown only when max attempts is finite | Low |
| SP | sp_updateUserContentCourseCompleteV8 — do not set isComplete when failed + flag set | Med |
| SP | sp_calcScorableContentState_Quizzes — output Failed state without timeCourseComplete | Med |
| Layer | Change | Risk |
|---|---|---|
| JSP / Java / JS | Three rendering paths for the composite label — follows Cancelled-Exempt pattern; only surfaces for required course components | Low |
| i18n | New locale keys: "In Progress - Quiz Not Passed" and "Finished - Quiz Not Passed" | Low |
| Tooltip | Info icon on the composite label: "Contact your manager for next steps." (generic; not client-customizable in V1) | Low |
| Layer | Change | Risk |
|---|---|---|
| SP | sp_assignBadgesToUserV2 — defer issuance if any required quiz component in the awarding course is in Failed state | Med |
| Re-evaluation trigger | Confirm badge re-evaluation fires after grant attempt + pass (no new mechanism needed if existing trigger covers this) | Low |
| Layer | Change | Risk |
|---|---|---|
| DB schema | New column on SCORM content item for requirePassForComplete flag | Low |
| SCORM properties UI | New toggle on content item properties page — shown only when max attempts is finite | Low |
| SP / SCORM handoff | When flag set: require successStatus = passed before marking content item complete. Handle successStatus = unknown gracefully (TBD — see Open Items). | Med |
| Composite label | Extend Capability 2 label logic to cover SCORM items (label wording TBD — may differ from quiz variant) | Low |
Grant Additional Attempt flow · LRS tracking · Existing learners in Failed state · Already-issued badges
successStatus = unknown handling before implementation begins.These areas are affected by the feature but need further investigation before scoping. Listed here so they are not overlooked.
| Surface | Issue | Applies to |
|---|---|---|
| Congratulations screen | After course completion, a congratulations screen is shown (web, iOS, Android — possibly separate implementations). Under Capability 1 the trigger may not fire (verify: is it state-6-driven or client-side on quiz submit?). For courses that do complete, the message should acknowledge the failed quiz rather than congratulating unconditionally. | 1 2 |
| Certificate screen | When a course is tagged with a Badge tag, the completion screen shows the certificate. With Capability 3, the badge is withheld but the screen may render optimistically before the server confirms issuance. Needs to handle the deferred-badge case gracefully. | 3 |
| Completion notifications | Course completion emails and push notifications. Under Capability 1 no email fires (naturally suppressed). For completing courses, emails may say "You've completed [Course]" without caveats. Badge-earned notifications may fire before badge deferral logic runs. | 1 3 |
| Reporting & transcripts | Admin completion exports and learner transcripts need to surface the failed-quiz flag. Compliance customers like Teleflex will pull these for audits — the composite label only helps real-time task views. | 1 2 |
| CRM / Salesforce sync | Allego's CRM integration syncs completion status. A "Completed" sync record for a course with a failed required quiz would propagate the same compliance gap into Salesforce. | 2 |
| xAPI / LRS | If Allego reports completion to an external Learning Record Store, the xAPI statement would say completed: true for a course that has a failed required quiz but no Capability 1 block. |
2 |
| Grant Attempt after completion | For courses that complete (no Capability 1), does the "Grant Additional Attempt" entry point remain accessible in the course component view? Managers should be able to grant an attempt even after course completion, so the learner can retake and eventually receive the badge. | 2 3 |
successStatus = unknown: Some SCORM packages do not reliably set successStatus. Confirm the handling rule: recommended default is allow completion when status is unknown (do not block on ambiguous data).
Knowledge Verification Gating — communicates the core concept (verified competence is required to pass through the gate) without being tied to a specific content type. Works across all four capabilities and leaves room to extend to other assessment types in the future.