TrainGrid User Guide

Functions: Assigning & Recording

The daily workflow: the Assign training wizard, the Record Completion list, marking complete, waiving and rescheduling. Step-by-step function reference.


This area covers the daily training workflow: creating assignments with the Assign training wizard, running the Record Completion list (the master training report), marking training complete, waiving, rescheduling, editing completions, attaching evidence, and running in-room sessions with the printed Sign-in sheet, the badge-scanning Scan check-in or a session scheduled on the Calendar. Everything a coordinator does between "these people need this course" and "the record is complete and audit-ready" happens here.

In this section: Assign training (set a due date) · Record a past or impromptu session · Find records in the Record Completion list · Customize columns, sorting and saved views · Mark training complete · Waive an assignment (N/A) · Reschedule a due date · View a record's details · Edit a completion · Set the training source on a record · Attach files to a record · Export and print the training list · Print a sign-in sheet and record the session · Run a Scan check-in session · Recurring courses and the next occurrence · Delete an assignment record · Schedule a training session · Book employees onto a session · Record session attendance · Cancel a session · Correct attendance (Administrator)

Assign training (set a due date)

Create pending training assignments for one or more courses and any set of people, all in one submission. This is how future training obligations enter the system.

Where: Sidebar → Assignments (opens the "Assign training" page with three numbered step cards: Pick courses · Pick people · Schedule)  ·  Before you start: Requires the assign-training permission (Training Coordinator or Manager and above; the page itself says "Ask a Training Coordinator or Manager to assign courses" if you lack it). At least one active course and one employee must exist.

OptionWhat it does
Search courses…Multi-select course picker; rows are code-prefixed and searchable. Only active course versions at the target's locations are offered.
Add a group…Adds every course in a saved course group to the selection (union — never removes anything already picked).
New courseCourse managers can create a course inline; it is added to the list and selected immediately.
Individuals / Department / Location / EveryoneThe four targeting tabs. Individuals defaults; Everyone targets all active employees. Archived employees are never included.
Already completed (impromptu / past training)Switch that flips the wizard into past-session recording (see the next function). Off by default; only shown to users who can record completions.
Due dateRequired for a scheduled assignment; every created record carries it.
Notes (optional)Free text up to 1000 characters, shown on each created assignment record.
  1. In the sidebar, click Assignments.
  2. In step 1, "Pick courses", click the "Search courses…" button and tick one or more courses — each row shows the course code as a prefix before the full title. A badge counts your selection.
  3. Optional: click "Add a group…" to add every course in a course group at once, or "New course" to create a course inline without leaving the wizard (visible to course managers only).
  4. Selected courses appear as removable "CODE — Title" chips under the picker; click the × on a chip to drop one.
  5. In step 2, "Pick people", choose a tab: Individuals (search and tick people — "Select all shown" and "Clear" links are above the list), Department ("Choose a department…"), Location ("Choose a location…"), or Everyone (all active employees). A "N targets" badge and, on wide screens, a "Who will be assigned" side panel show exactly who is included.
  6. Read any amber hints: courses not available at the target's location will be skipped, and "N of these already have this training assigned and will be skipped" warns about duplicates before you submit.
  7. In step 3, "Schedule", set the "Due date". Optionally add "Notes" — they are visible on each assignment record.
  8. Check the sticky footer math — "N courses × N people = N assignments" — then click "Assign training".
  9. Success: the wizard is replaced by a "Training assigned" card stating how many records were created and their due date, listing any duplicates skipped or location-ineligible pairs excluded, with buttons "View these records" (opens the Record Completion list filtered to exactly these records), "Print the sign-in sheet" (single scheduled course only), "Assign more training", and — when you arrived from an employee page — "Back to <name>".
Good to know:
  • People who already hold an open assignment for a selected course are skipped automatically — assigning is idempotent and never creates duplicates.
  • Course/employee pairs where the course is restricted to locations the employee is not at are excluded, and the success card reports the count.
  • Deep link: clicking "Assign training" on an employee's page opens the wizard with that person pre-selected.
  • The success card's "View these records" opens the Record Completion list on the All view filtered to the course and due date — records that already matched that filter appear there too; the card's counts are what this submission created.

Record a past or impromptu session

Enter training that already happened — a toolbox talk held this morning, or a new hire's existing external certificate — creating one already-completed record per attendee in a single step, with no pending assignment ever existing.

Where: Sidebar → Assignments → step 3 "Schedule" → turn on the "Already completed (impromptu / past training)" switch  ·  Before you start: Requires the record-completions permission (the switch is hidden without it) in addition to being able to open the wizard.

OptionWhat it does
Completion dateRequired; defaults to today in the organization's timezone and cannot be later than today. Impromptu records carry it as their due date too.
Grade (optional)0–100, decimal allowed. Below a course's passing grade the completion records as Failed (with a warning shown first).
Hours (session)Decimal training hours 0–24 in 0.25 steps; stamped on every attendee's record — record the session once for the whole class.
Instructor (optional)Free text up to 200 characters; blank falls back to the course's default instructor.
  1. In the sidebar, click Assignments and complete steps 1 and 2 (pick the course(s) and the attendees) as usual.
  2. In step 3, "Schedule", turn on "Already completed (impromptu / past training)". The due-date field is replaced by session fields.
  3. Set "Completion date" (defaults to today; cannot be in the future).
  4. Optionally enter "Grade" (0–100; the placeholder shows "Pass ≥ N" when a selected course has a passing grade), "Hours (session)" (0–24, quarter-hour steps — every attendee's record receives these hours), and "Instructor" (blank uses the course default).
  5. If the grade is below the strictest passing grade among the selected courses, an amber notice appears: "Below the passing grade of N% — the completion will be recorded and flagged." You can still save; the record will carry the Failed status.
  6. Click "Assign & record completion".
  7. Success: a toast reports "Assigned N · N completed" (plus any next occurrences scheduled), and the success card offers "View these records" — the completed records now exist, one per attendee, dated in the past.
Good to know:
  • Records are created and completed immediately; recurring courses schedule their next occurrence from the completion date (the form says so in-line).
  • For an evidence-only external record (e.g. a valid WHMIS certificate from a previous employer): record it here, then open the record's View details to set the Training source to External with provider and certificate number, and upload the certificate under Attachments with type "Certificate".
  • Impromptu recording has its own date-specific duplicate handling, so the wizard's pre-submit duplicate hint is not shown in this mode.

Find records in the Record Completion list

The master training report — one list of every assignment record, filterable by status, employee, course, dates, location, department and delivery source. This is where daily completion work happens.

Where: Sidebar → Record Completion (page title "Record Completion", eyebrow "Records")  ·  Before you start: Any signed-in staff member can view the list within their location scope; the actions it offers depend on your role's capabilities.

OptionWhat it does
Status filter (button row)Incomplete (default — pending work), Overdue, Due soon, Pending, Completed, Expired, Failed (completions below the passing grade), All, N/A (waived).
Search employee, number or course…One search box covering employee name, employee number and course; up to 200 characters.
Due … to …Inclusive due-date range filter.
All coursesCourse filter listing each course's active version as "CODE — Title (vN)"; matching is by course family, so records earned on earlier versions still show.
Location / Department filtersNarrow by employee location (only offered when the org has 2+ locations) or department; default all.
All sourcesTraining-source filter: Internal, External or Online. A record's own source override wins over its course default.
Group byNo grouping (default), Group by employee, or Group by course — grouped rows get a header with a per-group count. Grouping and column sorting are mutually exclusive.
Show archived employeesOff by default; on, archived employees' records appear (marked with a crossed-eye icon).
  1. In the sidebar, click Record Completion.
  2. Pick a status in the button row at the top (labelled "Status filter"): Incomplete · Overdue · Due soon · Pending · Completed · Expired · Failed · All · N/A (waived). The list opens on Incomplete.
  3. Type in "Search employee, number or course…" — matching is live with a short delay; a spinner replaces the magnifier while it searches.
  4. Narrow further with the filter bar: the "Due … to …" date range, the course dropdown (defaults "All courses"), Location (shown only when the org has more than one), Department, the training-source dropdown ("All sources" / Internal / External / Online), and the grouping dropdown (No grouping / Group by employee / Group by course).
  5. Toggle "Show archived employees" to include records belonging to archived people.
  6. Click "Clear filters" (appears only when something is active) to reset everything at once.
  7. Success: the count line reads "Showing X–Y of Z records", with a pager at both top and bottom (50 records per page).
Good to know:
  • A dismissible hint under the toolbar teaches the core interaction: "Select rows to mark complete, reschedule, waive or email — or use the ⋯ menu on any row."
  • Only pending rows are selectable — completed, waived, expired or failed rows cannot be bulk-actioned (use the row's ⋯ menu → View details instead).
  • The floating selection bar (bottom of the screen) shows "N selected" with Mark complete, Waive, Reschedule, Email and Clear — each button appears only if your role holds that capability.
  • Rows with a paperclip icon carry attachments.
  • Page-header shortcuts sit beside the title: "Sign-in sheet", "Print badges" (employee managers) and "Scan check-in" (completion recorders).

Customize columns, sorting and saved views

Shape the Record Completion table to your job: hide columns you never read, sort by any column, and save filter combinations you use daily as named views.

Where: Sidebar → Record Completion → "Columns" and "Views" buttons (top right), and the column headers themselves  ·  Before you start: None beyond viewing the list. Column choices and saved views are stored in your browser, per device.

OptionWhat it does
Visible columnsPer-column show/hide checkboxes; choices persist in the browser (localStorage) and default to all visible.
Saved viewsNamed filter presets (status view + search + filters + sort, page excluded). Saving under an existing name replaces it.
  1. Open Record Completion.
  2. Click "Columns" and tick or untick entries under "Visible columns": Employee, Employee #, Course, Department, Due date, Status, Completed on, Grade, Training hours, Instructor, Cert. expiry, Competency. All are on by default.
  3. Click any column header to sort: first click ascending, second descending, third clears back to the default order. (Hours and Competency are derived values and are not sortable.) Applying a sort flattens any grouping.
  4. To save the current combination of status view, search, filters and sort: click "Views" → "Save current filters…", type a name in the prompt, and confirm.
  5. Re-apply a saved view any time from "Views" → "Saved views"; the active one shows a check mark. Delete one with its trash button (or the Delete key while it is focused).
  6. Success: the table immediately reflects your columns/sort, and your saved view reappears in the menu on every visit from this browser.
Good to know:
  • Sorting is server-side, so it orders the entire result set, not just the current page — and the CSV export carries the active sort so the file matches the table.
  • Grade values below the course's passing grade render red; the Failed status has its own badge and its own view in the status row.

Mark training complete

Record completions for one row or a whole class at once, capturing date, grade, session hours, instructor and a shared attendance sheet in a single dialog.

Where: Sidebar → Record Completion → tick pending rows → "Mark complete" in the floating selection bar (or a single row's ⋯ menu → "Mark complete")  ·  Before you start: Requires the record-completions permission. Only rows still in Pending status can be completed.

OptionWhat it does
Completion dateRequired; defaults to today in the org timezone, max today.
Grade (optional)0–100 decimal; below the passing grade the record becomes Failed (warned, never blocked).
Hours (this session)Decimal 0–24 in 0.25 steps, written to every selected record; feeds the Training Hours report.
Instructor (override)Up to 200 characters; blank uses the course's default instructor.
Attendance sheet / shared attachment (optional)One file, uploaded once and linked to all selected records; each row then shows a paperclip and the file appears under View details → Attachments and on each employee's profile.
  1. Open Record Completion (the default Incomplete view shows outstanding work; the header checkbox selects all selectable rows on the page).
  2. Tick the attendees' rows. The floating bar appears showing "N selected".
  3. Click "Mark complete". The dialog reads "Record a completion for N assignments. Recurring courses automatically schedule their next occurrence."
  4. Set "Completion date" (defaults to today; cannot be in the future).
  5. Optionally fill "Grade (optional)" (placeholder shows "Pass ≥ N" when a selected course has a passing grade), "Hours (this session)" (0–24, 0.25 steps — applied to every selected record), and "Instructor (override)" (blank keeps the course default).
  6. If the grade is below the strictest passing grade among the selected rows, the amber warning "Below the passing grade of N% — the completion will be recorded and flagged." appears; saving records the rows as Failed.
  7. Optionally click "Choose file…" under "Attendance sheet / shared attachment (optional)" — the file is uploaded once and linked to every selected record.
  8. Click "Mark N complete".
  9. Success: a toast such as "N completed · N next occurrences scheduled · attendance sheet attached to N records", with a "View records" action that re-opens the same filters on the All view (completed rows leave the Incomplete view immediately, so this is how you see what you just did).
Good to know:
  • Completing a recurring course automatically creates the next pending occurrence (see "Recurring courses and the next occurrence").
  • A completion recorded below the passing grade does not issue a certificate and counts as non-compliant everywhere (its own Failed view, matrix colour and report treatment).
  • For certificate courses, certificate expiry is derived once at completion from the course's certificate settings.

Waive an assignment (N/A)

Mark a pending assignment as not applicable with a documented reason — the compliant way to say "this person doesn't need this training" while keeping the record for audit.

Where: Sidebar → Record Completion → tick pending rows → "Waive" in the selection bar (or a row's ⋯ menu → "Waive (N/A)")  ·  Before you start: Requires the assign-training permission. Pending rows only.

OptionWhat it does
ReasonRequired free text (3–500 characters), stored on the record and written to the audit log.
  1. Open Record Completion and select the pending row(s) to waive.
  2. Click "Waive" in the floating bar (or ⋯ → "Waive (N/A)" on one row).
  3. The dialog "Waive assignment(s)" explains: "Mark N pending assignment(s) as not applicable (N/A). The record is kept for audit purposes."
  4. Type a "Reason" (at least 3 characters, up to 500 — e.g. "Role does not require this training").
  5. Click "Waive N".
  6. Success: toast "N assignments waived (N/A)"; the rows move to the "N/A (waived)" view, and the reason is visible on each record's details and in the audit log.
Good to know:
  • Waived records are excluded from compliance percentages as not-applicable rather than counted against the employee.
  • In the Workforce Competency report a waived required course counts as MET — a documented waiver is a decision, not a gap.
  • The waive reason shows in the record's detail sheet ("Waive reason" row) and in the Waive reason column of the CSV export.

Reschedule a due date

Move the due date of pending assignments — a postponed session, a rehire's stale training — without deleting and recreating anything.

Where: Sidebar → Record Completion → tick pending rows → "Reschedule" in the selection bar (or ⋯ menu → "Reschedule"; also available inside View details for a pending record)  ·  Before you start: Requires the assign-training permission. Pending rows only — completed or waived records cannot be rescheduled.

OptionWhat it does
New due dateRequired; minimum is today in the org timezone. Bulk selections default to today rather than any one row's date.
  1. Select the pending row(s) and click "Reschedule".
  2. The dialog ("Reschedule assignment" or "Reschedule N assignments") states the current due date for a single row.
  3. Pick a "New due date" — today or later; the field pre-fills with the row's current due date, or today if that date is already past.
  4. Click "Reschedule".
  5. Success: toast "Due date moved to <date>." (bulk: "N assignments rescheduled to <date>." plus any "skipped (already completed or waived)"). The date change is recorded in the audit log.
Good to know:
  • The dialog states it plainly: "The date change is recorded in the audit log. Completed or waived records can't be rescheduled."
  • Rescheduling changes the row's sort position but keeps your selection intact.

View a record's details

Open the full record sheet for any assignment — every fact an auditor asks for on one panel: dates, grade, instructor, certificate expiry, course version, competency, training source, attachments, notes and who recorded it.

Where: Sidebar → Record Completion → any row's ⋯ button ("Row actions") → "View details" (a side panel opens)  ·  Before you start: Any list viewer can open details; the editing sections inside are gated by role.

  1. In Record Completion, click the ⋯ button at the right end of a row and choose "View details".
  2. Read the header: course code, status badge, course title and the employee's name.
  3. Review the fact rows: Employee (linked, with # and an Archived badge where relevant), Department, Location, Due date, Completed on, Recorded by, Grade (with a "below N%" chip on failed grades), Instructor, Certificate expires (certificate courses), "Recurs every N days" (recurring courses), Waive reason (waived records), Notes.
  4. Below the facts: the "Course version" line (with a "Superseded" badge when a newer version is now current), the "Competency" section (competency-required courses only), and the "Training source" panel (Delivery / Provider / Certificate # / Location).
  5. Further down: Attachments, then role-gated sections — Reschedule (pending), Edit completion (completed), and Delete record (Administrators).
  6. Success: close the panel with the × or by clicking outside; nothing is changed by viewing.
Good to know:
  • Records permanently keep the course version they were completed against — a version bump never rewrites history; the sheet shows the earned version with its Superseded/Current state.
  • On competency courses a completed-but-unassessed record reads "Assessment pending — training is complete, competency has not been demonstrated yet."
  • "Recorded by" names the member who recorded the completion — blank on pending or legacy rows.

Edit a completion

Correct the date, grade, hours or instructor on an already-completed record — including deliberately re-grading below the pass mark, which flags the record as Failed.

Where: Sidebar → Record Completion → ⋯ → View details → "Edit completion" section (completed records only)  ·  Before you start: Requires the assign-training permission; the section only renders on records in Completed status.

OptionWhat it does
Completion dateRequired; max today in the org timezone.
Grade0–100 decimal; clearing it removes the grade. Below the passing grade the record flags as Failed.
HoursDecimal training hours 0–24 in 0.25 steps; feeds the hours reporting.
InstructorUp to 200 characters; blank falls back to the course default.
  1. Open the completed record via ⋯ → "View details" and scroll to "Edit completion".
  2. Adjust "Completion date" (max today), "Grade" (0–100), "Hours" (0–24, 0.25 steps) and/or "Instructor" (blank = course default).
  3. If the new grade is below the course's passing grade, an amber line warns: "Below the N% passing grade — this will flag as failed."
  4. Click "Save changes".
  5. Success: toast "Completion record updated." and the panel closes; the list refreshes with the corrected values (and the Failed status where applicable).
Good to know:
  • Certificates keep their issued term: correcting the completion date re-anchors an already-issued certificate at the validity it was issued under — it is never re-issued under the course's current policy, and editing a course's "Valid for (days)" never back-fills existing records. Re-issuing under a new policy means completing the training again.
  • If the record's completion had scheduled a recurring follow-up, correcting the completion date moves the follow-up's due date to match (certificate expiry wins; otherwise completion + interval).
  • Re-grading below the pass mark makes the record Failed everywhere — list view, matrix, compliance percentages — and a failed completion carries no certificate.

Set the training source on a record

Classify who delivered a specific training record — Internal, External or Online — and, for external training, capture the provider, certificate number and training location. One workflow covers internal and external training; these are attributes of the record, not separate modules.

Where: Sidebar → Record Completion → ⋯ → View details → "Training source" panel → "Edit"  ·  Before you start: Requires the record-completions permission to edit. External providers are picked from the Training providers directory (Administration → Training providers).

OptionWhat it does
DeliveryCourse default (inherit — the default), Internal, External, or Online / self-serve; drives the list's "All sources" filter, the CSV "Training source" column and the Internal vs External Training report.
ProviderPicker over active entries in the Training providers directory; deactivated providers stay displayed on records that already name them but leave the picker.
Certificate #The provider's certificate number for this record (optional).
Location (optional)Free-text training location for this record.
  1. Open the record via ⋯ → "View details" and scroll to "Training source". Untouched records show their course's default, e.g. "Internal (course default)".
  2. Click "Edit".
  3. Set "Delivery" — Course default, Internal, External or "Online / self-serve".
  4. For external training, pick the "Provider" from the directory, and fill "Certificate #" and "Location" (both optional).
  5. Click "Save".
  6. Success: toast "Training source updated."; the panel lists Delivery, Provider, Certificate # and Location — only the fields you filled in are displayed.
Good to know:
  • A record with no override inherits its course's delivery classification (In-person/Video/Practical courses fold to Internal; Online and External map to their own buckets).
  • External training never automatically makes anyone competent or qualified — competency assessment is a separate internal step on competency-required courses.

Attach files to a record

File certificates, signed sheets, photos and assessment evidence directly on the training record they prove — each under its correct type, so audit evidence is one click from the record.

Where: Sidebar → Record Completion → ⋯ → View details → "Attachments" section  ·  Before you start: Uploading requires the record-completions permission; removing an attachment requires the assign-training permission.

OptionWhat it does
Attachment typeCertificate (default), Competency evidence, Attendance sheet, or Other — the label the file is stored and displayed under.
  1. Open the record via ⋯ → "View details" and scroll to "Attachments".
  2. In the "Attachment type" dropdown choose Certificate, Competency evidence, Attendance sheet, or Other.
  3. Click "Upload" and pick the file.
  4. Success: toast "<Type> uploaded."; the file lists on the record with its type and size, downloadable via the download button, and the row in the training list gains a paperclip icon.
  5. To remove one (managers): click the trash button on the attachment and confirm "Remove \"file\" from this record?".
Good to know:
  • Attachments are optional — nothing about a completion or an assessment requires a file.
  • A shared attendance sheet uploaded in the Mark-complete dialog lands here on every completed record automatically; a signed sign-in sheet attached from the Sign-in sheet page instead files under the course's Materials & SOPs.
  • Attached files also appear on the employee's profile.

Export and print the training list

Take the filtered training list off-screen — a CSV that matches the table exactly (filters, source filter and sort included) or a printer-friendly report.

Where: Sidebar → Record Completion → "Export CSV" and "Print report" buttons (top right)  ·  Before you start: "Export CSV" requires the export-data permission (the button is hidden without it); "Print report" requires the Print capability (on for every role by default).

  1. Set the status view, search, filters and sort you want in the file.
  2. Click "Export CSV".
  3. Success: the file downloads as assignments-<view>_<date>_<time>.csv and a toast confirms "Exported N records." Its columns are: Employee, Employee #, Course, Course code, Version, Department, Location, Due date, Status, Completed on, Grade, Training hours, Instructor, Certificate expiry, Competency, Qualification, Training source, Waive reason, Notes.
  4. For paper: click "Print report" — a print-formatted page opens carrying the exact same filters; print from the browser.
Good to know:
  • The export always honours every active filter and the active column sort — a filtered screen never produces an unfiltered file.
  • Exports are capped at 5,000 rows: a larger result downloads the first 5,000, the filename gains "-partial", and a warning toast tells you to narrow the filters for the full set.
  • Competency and Qualification cells are blank for courses with no competency requirement, and derive identically to the on-screen column.

Print a sign-in sheet and record the session

Run a classroom session on paper: print a sign-in sheet for everyone with a pending assignment on a course, have attendees sign it, then bulk-complete from the signed copy and file the scan.

Where: Sidebar → Record Completion → "Sign-in sheet" button in the page header (page title "Sign-in sheet")  ·  Before you start: Anyone who can view the list and holds the Print capability (on for every role by default) can print; "Attach signed sheet" requires the manage-courses permission; the follow-up bulk-complete requires record-completions.

OptionWhat it does
CourseRequired; "CODE — Title" picker. Nothing renders until a course is chosen.
Due from / Due toOptional due-date window narrowing who appears on the sheet.
Print orientationPortrait (default) or Landscape — set in-app because the page's print rule overrides the browser dialog's own orientation picker.
  1. From Record Completion, click "Sign-in sheet" in the header.
  2. Pick the "Course" ("Choose a course…") and optionally a "Due from" / "Due to" range — the sheet lists everyone with a pending assignment matching them.
  3. The actions sit in the row above the filters, the same toolbar as a session's sign-in sheet: "Back" (to Record Completion) on the left; "Attach signed sheet", "Record completions", the Portrait / Landscape toggle and "Print sign-in sheet" on the right.
  4. Choose the print orientation with the Portrait / Landscape toggle (portrait is the default for the sign-in layout).
  5. Click "Print sign-in sheet" and print the browser dialog.
  6. Run the session; attendees sign the sheet.
  7. Back on the page, click "Record completions" — it jumps to Record Completion pre-filtered to this course and date range, ready to tick attendees and use "Mark complete".
  8. Optionally scan the signed sheet and click "Attach signed sheet" to upload it.
  9. Success: toast "Signed sign-in sheet attached — it's now under the course's Materials & SOPs." (To file the sheet on each attendee's record instead, attach it in the Mark-complete dialog.)
Good to know:
  • "Attach signed sheet" files the scan under the course's Materials & SOPs (one copy per course); attaching in the Mark-complete dialog files it on each employee's record instead — the page header states this distinction.
  • The wizard's success card offers "Print the sign-in sheet" pre-filtered to the course and due date you just assigned.

Run a Scan check-in session

Record attendance for a live group session by scanning employee QR badges (or typing names/numbers) — every checked-in person gets a completed record in one tap, walk-ins included.

Where: Sidebar → Record Completion → "Scan check-in" button in the page header (page title "Scan check-in", eyebrow "Attendance")  ·  Before you start: Requires the record-completions permission (the header button is gated on it). Badges are printed via "Print badges" beside it (employee managers with the Print capability). Camera use needs browser permission; manual entry needs neither.

OptionWhat it does
CourseRequired; changing course mid-session asks to confirm and clears the checked-in roster.
Completion dateDefaults to today in the org timezone; cannot be future.
Instructor (optional)Up to 200 characters; blank uses the course default.
  1. From Record Completion, click "Scan check-in".
  2. Pick the "Course" ("Choose a course…"), confirm the "Completion date" (defaults to today, max today) and optionally the "Instructor (optional)" (blank = course default).
  3. In the "Scan badges" card, click "Start camera" and point the camera at each employee badge — each scan toasts "Checked in <name>" and adds the person to the "Checked in" roster on the right.
  4. No camera or an unreadable badge? Use "Manual entry — type an employee number or name" (e.g. "1042 or Jane Doe"), pick from the type-ahead or press "Add".
  5. Remove a mistaken check-in with the × on their roster row.
  6. When the room is done, click "Mark N complete".
  7. Success: toast such as "N marked complete · N newly assigned · N next occurrences scheduled"; the roster clears for the next session while course, date and instructor stay set.
Good to know:
  • Anyone checked in without an open assignment for the course is assigned one automatically, then completed — recurrence and certificate expiry are handled the same as everywhere else (the page says so under the button).
  • If your account cannot assign training, walk-ins are not silently dropped: a toast reports "N not assigned this course yet — a coordinator needs to assign it first."
  • Check-in deliberately captures no training hours — the kiosk stays a fast tap-through by design; add hours afterwards via Edit completion if needed.
  • Duplicate scans are ignored (a badge held in frame doesn't double-check anyone in), and already-checked-in people are filtered out of the type-ahead.

Recurring courses and the next occurrence

Understand what happens automatically when a recurring course is completed: TrainGrid spawns the next pending occurrence itself, so refresher cycles never depend on someone remembering to re-assign.

Where: Automatic — visible in the Mark-complete toast ("N next occurrences scheduled"), the wizard success card, and a record's View details ("Recurs every N days")  ·  Before you start: The course must have recurrence configured (its recurrence interval, and certificate settings if it issues one) on the course form.

  1. Complete any assignment of a recurring course (Mark complete, check-in, or an impromptu recording).
  2. Read the success toast: it includes "N next occurrence(s) scheduled".
  3. Open Record Completion on the Pending view and find the employee's new row for the same course — that is the spawned next occurrence.
  4. Success: the completed record and its future follow-up both exist; the derived states (Due soon, Overdue, Expired) then track the new due date automatically.
Good to know:
  • The next occurrence's due date is the certificate's stored expiry when the course issues one — the refresher comes due exactly when the certificate lapses; otherwise it is the completion date plus the recurrence interval.
  • Correcting a completion date later moves the follow-up's due date to match (using the certificate expiry as stored, never recomputed from the course's current settings).
  • Statuses like Overdue, Due soon and Expired are always computed from dates — never stored — so they update by themselves as the calendar advances.
  • Deleting a completed parent record also removes the follow-up occurrence it had scheduled, and the delete confirmation says so.

Delete an assignment record

Permanently remove a single assignment record — a data-entry mistake, a duplicate created outside the wizard — with the deletion written to the audit log. This is deliberately rare and restricted.

Where: Sidebar → Record Completion → ⋯ → View details → "Delete record" (red button at the bottom of the panel)  ·  Before you start: Administrator only (the delete-records capability is owner-level by default and the button does not render otherwise).

  1. Open the record via ⋯ → "View details" and scroll to the bottom.
  2. Click "Delete record".
  3. Read the confirmation "Delete this assignment?" — it names the course and employee, notes the completion date, and warns that a follow-up occurrence scheduled by this completion will be removed too, that this cannot be undone, and that an audit log entry will be recorded.
  4. Click "Delete".
  5. Success: toast "Assignment record deleted." (or "…also removed N follow-up occurrences it had scheduled.") and the panel closes.
Good to know:
  • If a completed record spawned a recurring follow-up, deleting the parent removes that follow-up too, so compliance never counts a phantom obligation.
  • For "this person shouldn't have this training requirement", use Waive (N/A) instead — it keeps the audit trail; delete is for records that should never have existed.

Schedule a training session

Put an instructor-led class on the calendar: a course on a date, from a start to an end time, at a location, with an optional instructor, seat limit and notes. Nothing is assigned by scheduling; the roster becomes records when attendance is recorded (see Record session attendance).

Where: Sidebar → Calendar → "Schedule session" (page title "Schedule session"); or a course's page → "Upcoming sessions" card → "Schedule session", which pre-selects the course  ·  Before you start: Assign & schedule capability (Administrator, Manager, Training Coordinator). A location-scoped member must pick one of their own locations.

FieldWhat it does
CourseRequired; "Choose a course". Only current, active courses are offered.
Date · Start time · End timeRequired; the date is today or later when scheduling; both times fall on that date and the end must be after the start ("End time must be after the start time."). Defaults: today, 09:00, 11:00.
LocationOne of your active locations, or "No specific location" (not offered to location-scoped members). The helper under it names the zone the times are read in: "Times are in <zone> (the location's zone)" or "(your organization's zone)", then "Employees see the session in this zone too."
InstructorOptional, up to 200 characters; pre-filled from the course's default instructor.
Capacity1 to 500, or tick "No limit" (the default).
Employees can book themselvesTicked by default. Untick "for a closed session that only staff enrol (an academy week, a mandated group day)"; employees you add still see it in their portal.
Notes (shown to employees)Optional, up to 2000 characters.
  1. In the sidebar, click "Calendar", then "Schedule session".
  2. Choose the "Course"; set "Date", "Start time" and "End time".
  3. Choose the "Location" and read the zone line under it.
  4. Optionally set "Instructor", "Capacity" (or leave "No limit"), untick "Employees can book themselves" for a closed session, and add "Notes (shown to employees)".
  5. Click "Schedule session". Success: toast "Session scheduled." and the new session's page opens with the badge "Upcoming" and the roster line "0 booked".
Good to know:
  • Times are stored and shown in the session location's time zone, else the organization's; never the browser's. Where the zone differs from the organization's it is named beside the time on every surface.
  • A session is a single day, at most 24 hours; there are no recurring series and no draft sessions. Schedule each date separately.
  • "Edit" on the session page reopens this form with the course fixed ("The course cannot change on an existing session; schedule a new one instead."). Changing the time or place emails every booked employee with an email address; the capacity cannot drop below the number already booked; a session cannot be moved into the past.
  • Find sessions later with the Calendar's "Month" view or its "Next 90 days" / "Past 90 days" list, plus the "Course" and "Location" filters; the course filter matches every version of the course.

Book employees onto a session

Fill a session's roster from the staff side: add employees (including walk-ins on the day) or remove someone who cannot attend. Employees may also book their own seat from the portal when the session allows it.

Where: Sidebar → Calendar → open the session → "Add employees" button; "Remove" on a roster row  ·  Before you start: Assign & schedule capability; the session must be open (not cancelled, attendance not yet recorded). Only active employees within your location scope are offered.

  1. Open the session and click "Add employees". The dialog "Add employees to this session" states "N seats left." (or "This session has no seat limit.") and that "Booked employees with an email address are notified."
  2. Type in "Search by name, number or department" and tick people; the footer counts "N selected" (maximum 500 per add). If you tick more than the seats left it warns "N more than the seats left: the extra will not be booked."
  3. Click "Add N employees". Success: a toast such as "Booked 12 · 2 already booked · 1 not booked: the session is full · 10 will be emailed"; the roster now lists them with Source "Added by staff" and Attendance "Not recorded".
  4. To take someone off, click "Remove" on their row and confirm "Remove this booking?" ("<name> loses their seat on this session. Their training records are not affected, and they can be added again while the session is open."). Success: toast "<name> removed from the session."
Good to know:
  • The seat limit is enforced when the booking is saved, so two people adding at once cannot overbook; anyone who did not fit is reported as "not booked: the session is full".
  • Booked employees with an email receive "Booked: <course> on <date>" with the time, place and instructor. Employees who have activated portal access are also told they can cancel from their portal Calendar and get a link to it; everyone else is told to contact their training coordinator to change or cancel the booking, and gets no link. The same rule applies to the "Changed:" and "Cancelled:" emails. A roster row marked "no email" gets nothing; tell them in person.
  • Employees who book themselves appear with Source "Self-booked". They can cancel their own seat until the session starts; you can remove anyone until attendance is recorded. A removed employee sees the session under My bookings with the pill "Removed by your organization" and cannot book it again from the portal; add them back with "Add employees" if that changes.
  • Location scope: you see only the booked employees at your locations; the roster line reads "N booked · N shown (others are outside your location scope)" when some are hidden, and the sign-in sheet carries the same notice.
  • "Print sign-in sheet" (always available) prints the sign-in sheet layout with the course, session date, time and zone, location and instructor filled in, one signature row per booked employee and five blank rows for walk-ins. The sheet page carries the course sign-in sheet's toolbar: "Back" returns to the session, Portrait / Landscape sets the orientation (the `orient` URL parameter, portrait by default), "Attach signed sheet" (Manage courses; hidden for a session on a superseded course version) files the scan under the course's Materials & SOPs, and "Print sign-in sheet" prints.

Record session attendance

Turn the roster into completion records in one step. Ticked employees get a completed record for the course (their existing due assignment is completed if they have one, otherwise a completed record is created); unticked employees are marked absent and nothing is recorded for them. Once per session.

Where: Sidebar → Calendar → open the session → "Record attendance" button (enabled from the session date onward)  ·  Before you start: Record completions capability; to record attendees who hold no assignment for the course (walk-ins), Assign & schedule as well. Every walk-in must already be on the roster ("Add employees"). The whole roster must be within your location scope.

FieldWhat it does
AttendedChecklist of the roster, everyone ticked by default except archived employees, who are listed with an "Archived" tag and start unticked because no record can be written for them; the header counts "N of M". Untick the absent.
Completion dateDefaults to the session date; must fall between the session date and today.
Grade (optional)0 to 100, applied to every attendee; below the course's passing grade the records become Failed.
Training hoursDefaults to the scheduled length, in hours to two decimals; 0 to 24; stamped on every attendee's record.
InstructorPre-filled from the session; up to 200 characters.
  1. Open the session on or after its date and click "Record attendance". Read the dialog text: "Ticked employees get a completed record for <course> (their existing due assignment is completed if they have one). Unticked employees are marked absent and nothing is recorded for them. Attendance is recorded once."
  2. Untick anyone who did not attend.
  3. Check "Completion date", optionally enter "Grade (optional)", adjust "Training hours" if the class ran shorter or longer, and check "Instructor".
  4. Click "Record N attended, N absent". Success: toast "N attended, N absent · N completion records written" (plus "N already recorded for this class" and "N walk-ins assigned" when they apply) with a "View the records" action; the session badge reads "Attendance recorded", the status line "Attendance recorded on <date>", the Details card gains "Attended", and each roster row reads "Attended" with a "View record" link, or "Absent".
Good to know:
  • Per attendee: their earliest pending assignment for the course is completed whatever its due date; with none, a completed record is created (this needs Assign & schedule, otherwise the dialog refuses: "N attendee(s) have no assignment for this course and you cannot assign training. Ask a coordinator to assign the course, then record attendance."); a completion already recorded for the course between the session date and the completion date is this class's record and is kept, not duplicated.
  • The records are written exactly as Mark complete writes them: a certificate issued once where the course requires it, Failed below the passing grade, the next occurrence of a recurring course scheduled, one audit entry per record. They are written against the course's current version.
  • Attendance is recorded once. Afterwards Add employees, Edit and Cancel session disappear and a second attempt says "Attendance has already been recorded for this session. Correct individual records from Record Completion." An Administrator fixes who attended on the session with "Correct attendance" (see Correct attendance (Administrator)); a date, grade or hours are fixed on the record (Edit completion in Record Completion).
  • Before the session date the button is disabled with "Attendance can be recorded from the session date onward."; a cancelled session cannot be recorded ("A cancelled session has no attendance to record.").
  • "View the records" (also a button in the Details card afterwards) opens Record Completion on the Completed view for that course, newest completion first. It is not filtered by date: the records keep whatever due date they were assigned with, so a date range would hide most of the class.

Cancel a session

Take a scheduled session off the plan while keeping it visible as cancelled. Bookings stay as history, no training records are created or changed, and booked employees are told.

Where: Sidebar → Calendar → open the session → red "Cancel session" button  ·  Before you start: Assign & schedule capability; the session must not have attendance recorded (then it is history and cannot be cancelled).

  1. Open the session and click "Cancel session".
  2. Read "Cancel this session?": "N booked employees will be emailed (those with an email address)." (or "Nobody is booked on this session.") and "The session stays on the calendar as cancelled; no training records are created or changed."
  3. Optionally type a "Reason (optional, shown to employees)" (up to 500 characters).
  4. Click "Cancel session" (or "Keep session" to back out). Success: toast "Session cancelled · N booked · N will be emailed"; the badge reads "Cancelled", the status line "Cancelled (<reason>)", and Add employees, Edit and Record attendance are gone.
Good to know:
  • Booked employees with an email receive "Cancelled: <course> on <date>" with your reason; in the portal the session shows the pill "Cancelled by your organization" under My bookings for 30 days.
  • A cancelled session cannot be edited, booked or recorded; schedule a new one instead. There is no delete button on the calendar; cancelled sessions remain in the list and in the Month view (struck through).
  • Cancelling changes nothing on anyone's assignments or due dates.

Correct attendance (Administrator)

Change who was attended or absent on a session whose attendance has already been recorded, and let the records follow: a completion record is written for anyone now attended; for anyone now absent, the record this session wrote is reopened (or removed, for a walk-in the class added) and its scheduled next occurrence cancelled. A record another session or a kiosk scan wrote is left in place. Other corrections (a date, a grade, hours) stay on the individual record in Record Completion.

Where: Sidebar → Calendar → open a session that reads "Attendance recorded" → "Correct attendance" button  ·  Before you start: Administrator only: no other role, built-in or custom, is offered the button, and the server refuses anyone else with "Only an Administrator can correct attendance." The whole roster must be within your location scope.

FieldWhat it does
AttendedChecklist of the roster starting at the current marks, "Attended" or "Absent" beside each name; the header counts "N changes" and a changed row reads "now attended" or "now absent". An archived employee can be unticked but not ticked.
Completion date · Grade (optional) · Training hours · InstructorShown only when someone becomes attended, because only they get a record written. Pre-filled from the first record the session wrote (else the session date, the scheduled length and the session's instructor), with the same limits as Record attendance.
  1. Open the recorded session and click "Correct attendance". Read the dialog text, which says what happens to each person you change.
  2. Tick anyone marked absent who did attend; untick anyone marked attended who did not.
  3. If anyone is now attended, check "Completion date", "Grade (optional)", "Training hours" and "Instructor".
  4. Click "Save N corrections". Success: toast "N corrected · N now attended (N records written) · N now absent (N records reopened, N walk-in records removed)" with a "View the records" action; each corrected roster row's badge flips, and the session still reads "Attendance recorded".
Good to know:
  • A reopened record goes back to pending, loses its certificate, and the next occurrence its completion had scheduled is cancelled. A walk-in record (one this class created for someone who held no assignment) is removed instead, together with its follow-up.
  • Records this session did not write are kept, and the toast says so: "kept for another class" when another session also counts the record (correct that class too and the second correction finishes the undo), and "kept: recorded elsewhere" when a kiosk scan or a completion recorded outside any class was only counted here.
  • Some records cannot be undone from here and stop the whole save until they are resolved in Record Completion: one with a competency assessment, one whose next occurrence is already complete, one on a superseded course version, or one with attached files. The message names the person.
  • If a colleague corrected the same session while the dialog was open, the save is refused: "The roster changed while this dialog was open. Reload the page and correct attendance again." Nothing is flipped back unseen.
  • Every change is in the audit trail (Administration → Audit log): one "attendance_corrected" entry on the session listing every booking before and after, a "complete" entry on each record written and a "reopen" entry on each record reopened.