TrainGrid User Guide

Functions: Courses & Versioning

The course catalog is the foundation of TrainGrid: every assignment, matrix column, certificate and compliance percentage traces back to a course — step-by-step function reference.


The course catalog is the foundation of TrainGrid: every assignment, matrix column, certificate and compliance percentage traces back to a course definition. This area covers building the catalog (creating, importing and grouping courses, attaching materials, setting competency requirements and topics) and governing change over time through course versions — drafting, activating, retraining fan-out, and the read-only archived history that auditors see.

In this section: Browse and search the course catalog · Create a course · Set the competency requirement and topics · Attach materials and SOPs · Manage course groups · Import courses · Create a new course version · Activate a draft version · What activating a version does · Version history and provenance · Deactivate or reactivate a course · Delete a course

Browse and search the course catalog

Find any course by search, filters or sorting, see its version and status at a glance, and export the filtered catalog to CSV for audits.

Where: Sidebar → Courses  ·  Before you start: Any signed-in user can browse; the Export CSV button appears only for roles with the Export data capability.

OptionWhat it does
Search title or code…Live text filter matching course title or code.
Filter by statusDefaults to "Active". "Inactive" = a current version someone deactivated; "Archived versions" = superseded versions retired by a version bump — deliberately kept separate so an old v1.0 never looks like it was switched off; "All statuses" shows everything.
Filter by category / type / mandatory / tagEach defaults to All; the tag filter appears only when tags are configured.
Export CSVExports the on-screen (filtered + sorted) rows with columns Code, Title, Category, Type, Duration (min), Recurrence, Certificate validity, Passing grade (%), Mandatory, Status, Default instructor, Available at locations.
  1. In the sidebar, click Courses. The page opens under the "Catalog" eyebrow with the title "Courses".
  2. Type in the "Search title or code…" box to narrow by title or course code; click the × inside the box to clear it.
  3. Use the filter dropdowns in the toolbar: category ("All categories" / a category / "Uncategorized"), type ("All types" / In-person / Online / Video / External / Practical), mandatory ("All courses" / "Mandatory only" / "Optional only"), and status.
  4. The status dropdown defaults to "Active". Its options are "Active", "Inactive", "Archived versions" and "All statuses" — choose "Archived versions" to see superseded course versions kept for audits.
  5. Read each row: the course title with its code and a version chip (e.g. "v2.0") underneath, then Category, Task type, Type, Locations (multi-site orgs only), Duration, Recurrence, Certificate, Mandatory, Status and Instructor columns. Click a column header to sort (ascending → descending → cleared).
  6. Click "Clear filters" to reset everything; the counter on the right always shows "N of M courses".
  7. Click "Export CSV" to download the catalog exactly as filtered and sorted — the Status column reads Active, Inactive or Archived.
  8. Click any row to open that course's page. Success: you land on the course detail page with its title, version badge and Properties card.
Good to know:
  • Empty-catalog state offers "Add starter courses" (loads a set of common courses you can edit or remove) beside "New course".
  • Filter choices are written into the URL, so a filtered view can be shared as a link.
  • Archived versions remain searchable and exportable but are read-only — see "What activating a version does".

Create a course

Define a training course — its identity, delivery type, scheduling, certificate and passing-grade rules — which then drives assignments, the matrix and compliance reporting.

Where: Sidebar → Courses → New course  ·  Before you start: Manage courses capability (Manager/Administrator by default).

OptionWhat it does
CodeUnique course code within the org; a next free code in your org's dominant pattern (e.g. TR-1001) is suggested and editable.
TitleThe course name shown everywhere; required.
DescriptionFree text — what the training covers and who it's for; optional.
CategoryOrg-defined catalog grouping with a colour dot; defaults to "No category".
Task type (optional)Your organization's own labels for the kind of task covered (e.g. Sanitation, Safety), filterable in reports; managed under Administration → Task types; defaults to "No task type".
TypeDelivery type: In-person (default), Online, Video, External or Practical. This also sets the record's default training source: In-person, Video and Practical count as Internal; Online and External map to their own buckets — individual records can override it.
Default instructorPre-filled when recording completions; can be overridden per record. Optional.
Duration (minutes)Length of the training, 1–6000 minutes; optional. Feeds the training-hours default.
Available at locationsShown only in multi-site orgs. Empty = available at all locations; ticking locations limits the course to employees there. Inactive locations can be retained or cleared but never newly added.
TagsShown only when tags are configured; labels for filtering this course in the catalog.
RepeatsOff by default. On, completing an assignment automatically schedules the next one "Repeat every (days)" after the completion date (1–3650 days; presets Weekly/Monthly/Quarterly/Annual).
Requires certificateOff by default. On, each passing completion issues a certificate expiring "Valid for (days)" after completion (1–7300 days; presets 1/2/3/5 yr).
Valid for (days)Certificate lifetime. On a recurring certificate course, the next assignment is due on the certificate expiry date (completion + validity) instead of completion + repeat interval. When editing: the change applies to certificates issued from now on — already-issued certificates keep the validity they were issued under (no backfill).
Passing grade (%)Optional, 0–100. Completions below this grade are still recorded but flagged — they display as the Failed status and count as non-compliant.
Mandatory courseOff by default. On, the course counts toward compliance for every employee and appears in the Missing Mandatory Training report.
  1. In the sidebar, click Courses, then click "New course" (top right).
  2. In the "Course details" card, accept or edit the "Code" (a next free code like TR-1001 is pre-suggested and editable; codes must be unique within your organization) and type the "Title".
  3. Optionally fill "Description", pick a "Category" and a "Task type (optional)" (both managed under Administration), and set "Type" — In-person, Online, Video, External or Practical (default In-person).
  4. Optionally set "Default instructor" (pre-filled when recording completions; can be overridden) and "Duration (minutes)".
  5. If your organization has locations, use "Available at locations": leave every box unticked to make the course available everywhere, or tick specific locations to limit it.
  6. In the "Scheduling & certificates" card, tick "Repeats" if the training recurs, then set "Repeat every (days)" — type a number or click a preset (Weekly 7, Monthly 30, Quarterly 90, Annual 365).
  7. Tick "Requires certificate" if completion issues a certificate, then set "Valid for (days)" — type a number or click a preset (1 yr, 2 yr, 3 yr, 5 yr).
  8. Optionally set "Passing grade (%)" (0–100). Completions recorded below this grade are flagged — they become the red "Failed" status across the app.
  9. Toggle "Mandatory course" on if the course counts toward compliance for every employee.
  10. Click "Create course". Success: toast "Course "<title>" created." and you land on the new course's page, badged v1.0.
Good to know:
  • Certificate + recurrence interact deliberately: on a certificate-issuing recurring course the next assignment lands on the certificate expiry date, not completion + interval — the course page repeats this note in its Properties card.
  • Changing "Valid for (days)" later never re-dates already-issued certificates; there is no bulk re-issue — re-issuing means completing the training again.
  • A failed completion (below the passing grade) does not issue a certificate.
  • Editing uses the same form via the course page's "Edit" button and ends with "Save changes"; retired (superseded) versions have no Edit button at all.

Set the competency requirement and topics

Mark a course as requiring an internal competency assessment (training alone is not competence) and maintain the ordered list of topics the course covers.

Where: Sidebar → Courses → open a course → "Competency & topics" card (right column)  ·  Before you start: Manage courses capability; the card is editable only on the current (active) version of a course.

OptionWhat it does
Competency assessment requiredOff by default. On, a completed record stays "Assessment pending" (and the employee Not qualified) until an assessor records the practical assessment.
What must be demonstrated (optional)Free-text assessment description shown to assessors at the top of the record's Competency section.
Reassess every (days)Blank by default (= no expiry). Set, competency expires this many days after each assessment, feeding the 90/30/7-day reassessment reminders.
Topics covered / Add a topicOrdered list of the course's agenda; add via the field + "Add", remove via ×.
  1. Open the course page and find the "Competency & topics" card.
  2. Tick "Competency assessment required". The helper explains: completion records "trained"; an assessor must also record a demonstrated pass before the employee reads as competent.
  3. Optionally fill "What must be demonstrated (optional)" — this description is shown to assessors on the record's assessment form.
  4. Optionally set "Reassess every (days)" (blank = no expiry) — each assessment then derives a competency expiry this many days out, which drives reassessment reminders.
  5. Click "Save competency settings" (the button appears once you change something). Success: toast "Competency settings saved."
  6. Under "Topics covered", type into "Add a topic" and click "Add" (or press Enter). Topics list numbered in order; click the × beside a topic to remove it.
  7. Success: records of this course now carry a Competency section, the course appears in the Competency Status report, and the topics show on the Training Matrix column-header tooltip.
Good to know:
  • Competency is strictly per-course opt-in — courses without it show no Competency section anywhere and never appear in competency reports.
  • Topics surface in two places: the Training Matrix column-header tooltip (the version's agenda at a glance) and as the tick-list for "Areas requiring improvement" in a Needs-improvement assessment.
  • On retired/draft versions the card is replaced by a read-only "Topics covered" card (when topics exist).
  • The "This revision affects competency or qualification" question in version dialogs only appears on courses with this requirement switched on.

Attach materials and SOPs

Keep the talk sheet, SOP or handout for a course (including translated versions) one click from the catalog.

Where: Sidebar → Courses → open a course → "Materials & SOPs" card (bottom of the right column)  ·  Before you start: Manage courses capability to add or remove; anyone who can view the course can open the files. Not editable on archived (superseded) versions.

  1. Open the course page and scroll to the "Materials & SOPs" card.
  2. Click "Add material" and choose a file. Success: toast "Material added." and the file lists in the card.
  3. Alternatively use the link-existing control beside it to attach a file already uploaded elsewhere in your workspace, instead of uploading a duplicate.
  4. Click a file's name to open it in a new tab (via a time-limited signed link).
  5. To remove a file, click the trash icon on its row. Success: toast "Material removed." — this detaches it from the course.
Good to know:
  • On a retired (superseded) version the materials still render for audits but cannot be added, linked or removed.
  • The empty state suggests attaching talk sheets, SOPs or handouts — including translated versions.

Manage course groups

Bundle related courses — like a new-hire onboarding set — into a named group so the whole set can be assigned in one action from the assign flow.

Where: Sidebar → Courses → Groups (opens the "Course groups" page)  ·  Before you start: Manage courses capability (the page redirects to Courses otherwise).

OptionWhat it does
NameRequired, up to 120 characters.
Description (optional)What the bundle is for; up to 500 characters.
CoursesMulti-select picker with search; archived courses are labelled "(archived)" in the list.
  1. In the sidebar, click Courses, then click "Groups" in the page header.
  2. Click "New group".
  3. In the dialog, type the "Name" (e.g. New Hire Onboarding) and optionally a "Description (optional)".
  4. Under "Courses", click "Add courses…" to open the picker; type in "Search courses…" and click courses to tick them. Each selected course shows as a removable "CODE — Title" chip, and the label counts "(N selected)".
  5. Click "Create group". Success: toast ""<name>" created." and the group appears in the table with Name, Description and a Courses count.
  6. To change a group later, click the pencil (Edit) icon on its row, adjust, and click "Save changes".
  7. To delete, click the trash icon, then confirm "Delete group" in the "Delete "<name>"?" dialog. Success: toast ""<name>" deleted."
Good to know:
  • Deleting a group removes the group only — the courses in it are not affected; the deletion itself is permanent.
  • Groups exist to be assigned: in the assign flow you can select a whole group in one action.

Import courses

Load a whole catalog from a CSV in one pass — parse, map columns, preview against the live catalog, then commit. Create-only by design: existing codes are skipped, never overwritten.

Where: Sidebar → Courses → Import (opens the "Import courses" page)  ·  Before you start: Import courses capability (a child of Manage courses; the page redirects to Courses otherwise).

Set up (one time):

  1. On the upload step, click "Download template" to get a CSV with every supported column and one example row — the fastest way to build a correct file.
OptionWhat it does
Course code / TitleThe two required columns; a row missing either cannot import.
Category / Task typeCreated automatically if they don't exist yet.
DeliveryAccepts in_person, online, external, video or practical (and the friendly labels an export produces).
Repeat every (days)Leave blank for one-off training; a value makes the course recurring.
Certificate valid (days) / Passing grade % / Duration (minutes) / MandatoryOptional numeric/yes-no columns matching the course form's fields (Mandatory accepts yes/no).
  1. In the sidebar, click Courses, then click "Import" in the page header.
  2. Click "Choose file" and select your CSV (up to 2,000 rows per import). Course code and title are required; categories and task types are created automatically when they're new.
  3. On the mapping step, check the column matches — TrainGrid guesses from your headings. For each target field (Course code*, Title*, Description, Category, Task type, Delivery, Default instructor, Duration (minutes), Repeat every (days), Certificate valid (days), Passing grade %, Mandatory) pick the matching CSV header or "— Not in file —".
  4. Click "Preview". Badges summarize "N to create", "N already exist" and "N cannot import"; the table shows each row's Outcome (Create / Skip / Cannot import) with the reason.
  5. Click "Import N courses" to commit only the creatable rows.
  6. On the done step, read the result ("N courses imported", plus any new categories/task types created and any rows that could not be created). Click "Download full report" for a per-row CSV of every outcome and reason, then "Go to courses".
  7. Success: the new courses appear in the catalog, each starting at v1.0.
Good to know:
  • Create-only: rows whose code already exists in the catalog are skipped, never overwritten — safe to re-run the same file.
  • The preview verdict is re-derived at commit on the server, so a stale approval cannot insert a duplicate.
  • An exported catalog CSV round-trips: the import reverses the export's formula-injection escaping.
  • The on-screen failure list caps at 10; "Download full report" always carries every row and reason.

Create a new course version

Revise a course without rewriting history: copy the current definition into a new version with its own number, effective date and revision description, decide whether the change invalidates existing training, and either save it as a draft or make it current immediately.

Where: Sidebar → Courses → open a course → "New version" button (top right; shown only on the current version)  ·  Before you start: Manage courses capability. Only the current (active) version of a family offers the button — drafts and superseded versions don't.

OptionWhat it does
VersionFree-text version label; the next major (e.g. "2.0") is pre-suggested and editable. Must be unique in the family.
Effective date (optional)The revision's effective date, shown in the Version history card.
Change / revision descriptionWhat changed in this revision, and why — displayed under the version in the history card.
This revision requires retrainingUnchecked by default. Checked, activation creates a pending assignment on the new version for every active employee who completed a previous version, due on the Retraining due date. Unchecked, existing training remains valid.
Retraining due dateAppears when retraining is ticked and activating now; cannot be in the past (org today is the minimum).
This revision affects competency or qualificationCompetency-required courses only. Checked, current competency records of previously-trained employees are stamped with a reassessment-due date; existing qualifications are kept until each person is actually reassessed.
Reassessment due dateAppears when the Change Impact box is ticked; minimum is today.
Make it current nowTicked by default. Ticked = activate immediately (retires the current version, read-only, kept for audits). Unticked = save as a draft; the retraining/Change Impact questions are then asked at activation instead.
  1. Open the course's page and click "New version". A dialog titled "New version of "<title>"" opens, explaining it copies the current definition and that completed records keep pointing at the version they were completed against.
  2. Accept or edit "Version" — the next major number is pre-suggested (e.g. 1.0 → "2.0").
  3. Optionally set "Effective date (optional)" and type the "Change / revision description" — what changed and why.
  4. Read the helper under "This revision requires retraining": before anything is committed it shows the live count, e.g. "N active employees completed a previous version and will be assigned the new one. If unchecked, their existing records are left as they are." Tick the box if the change invalidates existing training.
  5. If retraining is ticked (and "Make it current now" is on), set the "Retraining due date" that appears.
  6. On competency-required courses only, the Change Impact question appears: tick "This revision affects competency or qualification" if trained employees must be reassessed, then set the "Reassessment due date". The helper states qualifications are KEPT until each person is reassessed — this schedules, it does not revoke.
  7. Decide with "Make it current now" (ticked by default): ticked, the button reads "Create & make current" and activating retires the current version; unticked, it reads "Save draft" and nothing changes for anyone yet.
  8. Click the button. Success: toast "Version <n> is now current." (with "— N retraining assignments created." and/or "N marked for competency reassessment." when applicable), or "Version <n> saved as a draft." The Version history card now lists both versions.
Good to know:
  • The retraining count is previewed live before you commit anything — the number covers active employees only.
  • On the draft path the Change Impact question is deliberately deferred to activation, so a choice made at draft time can't be silently discarded.
  • Version numbering is free-form but suggested as the next major; a taken label is rejected with a field error.
  • Completed records are never rewritten to the new version — the dialog and the Version history footnote both state it.

Activate a draft version

Make a saved draft the current version — from the draft's own page or straight from the Version history card — with the same impact preview and Change Impact question as the create dialog.

Where: Sidebar → Courses → open the draft version (badge "Draft") → "Activate version" button; or on the current version's page, the Version history card's compact "Activate" button beside the draft row  ·  Before you start: Manage courses capability; a version in Draft status.

OptionWhat it does
Retraining due dateAsked only when the draft was created with "requires retraining" (that decision lives on the draft; only the date is asked here). Minimum today; required to activate.
This revision affects competency or qualification / Reassessment due dateSame Change Impact pair as the create dialog; offered on competency-required courses at activation time.
  1. Open the draft (from the catalog with status filter "All statuses", or by clicking its "vN" link in the Version history card) and click "Activate version" — or click "Activate" directly on the draft's row in the Version history card.
  2. A dialog opens: "Make v<N> of "<title>" current?". It states whether the draft was marked as requiring retraining, and shows the live count of active employees who completed a previous version.
  3. If the draft requires retraining, set the "Retraining due date" (required before the button enables).
  4. On competency-required courses, answer "This revision affects competency or qualification" and, if ticked, set the "Reassessment due date".
  5. Click "Make it current". Success: toast "Version <N> is now current." (plus retraining/reassessment counts when applicable); in the Version history card the draft now shows "Current" and the previous version "Superseded".
Good to know:
  • The impact count is shown before you commit — this path used to fan out with no number at all and now previews exactly like the create dialog.
  • Drafts are editable (Edit button available) but activate only through this dialog, never through the Deactivate/Reactivate toggle.

What activating a version does

Understand the exact consequences of making a version current — who gets retrained, what happens to old records, and what the retired version can and cannot do afterwards.

Where: Effects visible across: the course page (badges, Version history), Courses catalog ("Archived versions" filter), Record Completion (new Pending retraining rows), Training Matrix and employee History (version markers)

  1. Activate a version (see "Create a new course version" or "Activate a draft version").
  2. If retraining was required: in the sidebar click Record Completion, click "Pending" in the status button row and search the course — each previously-trained active employee now carries a pending assignment on the new version, due on the date you set.
  3. Open the old version (Courses → status filter "Archived versions"): its title carries a "Superseded" badge and there is no Edit, no Deactivate and no "New version" button; materials are read-only.
  4. Start assigning training: only the current version is offered in pickers — archived versions are excluded from new assignments.
  5. Click a completed matrix cell or an employee's History tab: records completed before the bump still show their earned version marked "Superseded" — nothing was rewritten. Success: history intact, obligations moved forward.
Good to know:
  • Retraining fan-out targets active employees who completed a previous version; their historical completions are untouched and the toast reports the exact count created.
  • Completed records permanently keep the version they were completed against — the Version history card states this rule verbatim.
  • One state, two words by design: the catalog calls a retired version "Archived"; record surfaces (History, record sheet, matrix panel) call it "Superseded". Distinct from "Inactive", which is a current version someone deactivated.
  • Archived versions stay searchable, viewable and exportable for audits, but are read-only and excluded from assignment pickers.
  • Change Impact (competency courses) schedules reassessments by stamping due dates on current competency records; it never revokes an existing qualification by itself.

Version history and provenance

See every version of a course — status, effective date, revision note, and who created and approved each — the audit trail behind the catalog.

Where: Sidebar → Courses → open any version of the course → "Version history" card (right column; appears once the course has more than one version) and the "Properties" card

  1. Open the course page and find the "Version history" card.
  2. Read the list, newest first: each row shows the "vN" number (a link — click it to open that version's page), the revision note, and a "Created by <name> · Approved by <name>" line.
  3. Read the status badge per row: "Current", "Superseded" or "Draft", with the effective date underneath when set. Draft rows also carry the compact "Activate" button.
  4. In the "Properties" card of the version you're viewing, read the provenance rows: "Version created by", "Approved by" and "Approval date" (shown in the organization's timezone).
  5. Success: a complete who-did-what-when trail per version, with the footnote "Completed records always keep the version they were completed against."
Good to know:
  • The approver and approval timestamp are stamped automatically at activation — approval is the act of making it current, not a separate signature step.
  • Provenance rows render only when the fact exists: original v1.0 courses created through the plain form predate versioning and legitimately have no author/approver, and an unactivated draft has no approval — a missing row there is deliberate, not a gap.
  • A removed member displays as "Former member" rather than a blank.

Deactivate or reactivate a course

Take a course out of circulation without touching history — a deactivated course stops being available for new assignments but keeps every existing assignment and completion, and can be switched back on at any time.

Where: Sidebar → Courses → open the course → "Deactivate" (or "Reactivate") button beside Edit  ·  Before you start: Manage courses capability. Only offered on a current version — retired (superseded) versions and drafts have no archive toggle.

  1. Open the course's page and click "Deactivate".
  2. Read the confirmation "Deactivate this course?": the course will no longer be available for new assignments; existing assignments and completion history are kept and you can reactivate at any time. Mandatory courses get an extra bolded warning that deactivating stops future assignments while history is preserved.
  3. Click "Deactivate" to confirm. Success: toast ""<title>" deactivated." and the status badge reads "Inactive"; the course now sits under the catalog's "Inactive" filter.
  4. To bring it back, open it (status filter "Inactive") and click "Reactivate", then confirm in the "Reactivate this course?" dialog. Success: toast ""<title>" reactivated." and it is assignable again.
Good to know:
  • Deactivation is fully reversible and touches no records — it only removes the course from assignment pickers.
  • "Inactive" (deactivated current version) and "Archived" (superseded version) are different states with different catalog filters; a superseded version cannot be reactivated.

Delete a course

Permanently remove a course that has never been used. Deliberately narrow: it exists to clean up mistakes, not to erase history — a course with any training records cannot be deleted at all.

Where: Sidebar → Courses → open the course → red "Delete" button (appears only when the conditions below are met)  ·  Before you start: Administrator role (permanent deletes are Administrator-only across TrainGrid), and the course must have zero assignments of any status.

  1. Open the course's page. If a red "Delete" button shows beside Deactivate, the course qualifies; if not, it has assignments (or you lack the Administrator role) and the button is correctly hidden.
  2. Click "Delete".
  3. Read the confirmation "Delete this course?": it states the course has no assignments, so it can be permanently deleted, and that this cannot be undone.
  4. Click "Delete permanently". Success: toast ""<title>" deleted." and you are returned to the Courses catalog.
Good to know:
  • The button only renders at zero assignments — a course with any training history offers Deactivate instead; that is the supported way to retire a used course.
  • The current version of a family with version history cannot be deleted either (it would strand the family with no active member) — the button is hidden and the database refuses as a second line of defense.
  • Delete is governed by the Administrator-only delete-courses permission in the Permissions grid; Managers do not see the button by default.