Signing Check Lessons
Summary
When a student completes a progress check or stage check, the Admin Portal lets Chief Instructors and Assistant Chief Instructors apply an electronic signature to lock the result. Signing requires a one-time code delivered to a registered mobile device, so the signature is tied to a person—not just a logged-in browser session. Once signed, the check record carries the signer's name and timestamp, and any edit to the underlying grades invalidates the signature until it is re-signed.
Who this is for
- Chief Instructors and Assistant Chief Instructors — the only roles permitted to sign check lessons
- Schools operating under Part 141 who need tamper-evident endorsement on progress and stage checks
Owners, Admins, and line Instructors will not see the Sign button. The permission is scoped to the two chief roles by design.
Before you begin
- Confirm the student's progress check or stage check has been fully graded. The Sign button only appears once the check's status is complete.
- Register at least one mobile device for your FlightSense account. The one-time code is delivered via push notification to your registered devices—there is no email or SMS fallback.
- Have your phone or tablet within reach. You have 60 seconds to enter the code once it is sent.
- Check that the course is not archived. Check lessons on archived courses cannot be signed.
Steps
1. Open the student's Check Results
From the Admin Portal, navigate to Members, click the student's name to open their details overlay, and select the Check Results tab. Each assigned progress check or stage check is shown as a card with Type, Status, and Signature chips.
2. Identify which button to use
Look at the card for the check you want to sign:
| Card state | Button shown |
|---|---|
| Status is complete and Signature is Unsigned | Sign |
| Signature is Re-Sign Required (the graded items were modified after a prior signature) | Re-Sign |
| Signature is Signed | No button—already valid |
| Status is not complete, course is archived, or you lack the permission | No button |
3. Start the signing flow
Click Sign (or Re-Sign). A Digital Signature dialog opens showing the lesson name, course, and stage. In the background, FlightSense sends a one-time code to your registered mobile devices. A green banner confirms "Code Sent Successfully" and shows how many devices received it.
4. Retrieve the code from your mobile device
Open the notification on your phone or tablet. The code is a 6-digit number.
5. Enter the code before the timer expires
Type the 6-digit code into the Enter 6-digit code field. A countdown shows the time remaining—the code is valid for 60 seconds. The timer turns red when fewer than 20 seconds remain.
6. Apply the signature
Click Apply. If the code is correct, the dialog closes, the Signature chip turns green and reads Signed, and a snackbar confirms "Digital signature applied!".
What happens next
- The check card's Signature chip updates to Signed, and the View Results dialog header shows "Signed by {your name} at {time on date}".
- The signature is bound to the check record. If anyone later edits a grade on that check, the signature status flips to Re-Sign Required with the tooltip "Digital signature is no longer valid and requires re-signing because check results have been modified." The original signer's name is retained for audit purposes, but the record now needs a fresh signature.
- Signature status is re-verified every time the Check Results tab is opened, so the view is always current.
Common issues
| Problem | Cause | Solution |
|---|---|---|
| Sign button is missing on a completed check | You are not a Chief or Assistant Chief, the course is archived, or grading is not complete | Confirm your role, confirm the course status, and confirm every check item has a grade. |
| "No mobile devices registered. Please register a device to receive OTP codes." | Your FlightSense account has no active mobile device tokens | Sign in to the FlightSense mobile app on your phone or tablet, then return to the Admin Portal and try again. |
| "Code has expired. Please request a new code." | More than 60 seconds passed before you hit Apply | Close the dialog, click Sign again to send a new code, and enter it promptly. |
| "Invalid code. Please check and try again." | The digits were mistyped or an older code was entered | Re-read the latest notification on your device and re-enter. If you have multiple unread signing notifications, use the newest. |
| Button disabled with "This action is not available for inactive members" | The student is marked inactive in your organization | Reactivate the member first, or sign before inactivating. |
| "This record already has a valid signature and cannot be re-signed." | Someone else signed while your dialog was open | Refresh the tab. If the signature is already valid, no further action is needed. |
How this works
What the signature binds to
A signature is a cryptographic attestation tied to the graded content of the check at the moment of signing. If any grade changes afterward, FlightSense detects the mismatch and marks the signature invalid. This is the Re-Sign Required state. It is not a bug—it is the system working correctly to prevent silent edits after an audit-grade sign-off.
Why the OTP goes to mobile
The one-time code is delivered by push notification to the signer's registered mobile devices. Routing the code out-of-band (rather than showing it in the same browser session) ensures that the person clicking Sign is the same person who has possession of the signer's phone. A compromised browser session alone cannot produce a valid signature.
Who can sign, precisely
Signing is gated on a dedicated check-signing permission, and that permission is currently granted only to the Chief Instructor and Assistant Chief Instructor roles. Line Instructors who grade checks cannot sign them—this preserves the two-person review pattern that Part 141 schools typically expect for stage checks.
The signature record
After a successful sign, the check retains:
- The signer's display name
- The signed timestamp (shown as "Signed by {name} at {time on date}")
- A verification status that recomputes on every load—valid, invalid (record modified), or unsigned
You can see all three on the View Results dialog header for any signed check.
