-
-
Notifications
You must be signed in to change notification settings - Fork 27
LMS Competency Tests
New in 3.0.0 Β· LMS β Tests Β· permission: Competency tests (sensitive) Β· developer guide
Test what a job candidate can actually do before you interview them. You describe the role, add the skills it needs, and the AI drafts the questions. You check them, and every candidate sits an identical paper through a private link, with no account needed. The same tests work for your own team when you want to find out where the skills gaps are.
- LMS β Tests β New. Give the test a title and describe the role.
- Add the skills, one row each: a difficulty, how many questions, and a format.
- Fill all. Approved questions come from the bank first, and the AI writes the rest as drafts.
- Read every draft, then Approve, Edit, Remove or Hide it.
- Send. Enter the candidate's name, and their email if FreeITSM should send them the link.
- Candidates shows their score, a score per skill and every answer they chose.
The first box is the most important one, because the AI reads it before it writes anything. "2nd line support" gets you generic questions. "A 2nd line analyst in a 40-person IT team supporting 900 users on Microsoft 365 and Intune, with some PowerShell and on-call one week in six" gets you questions about the job you are actually hiring for.
The test also has a time limit (the default comes from Settings; leave it empty for untimed) and an optional pass mark, which the result page uses to say Pass or Below the pass mark.
Each skill is one row:
| Skill | anything - Active Directory, Incident management, Networking, PowerShell |
| Difficulty | Beginner (the everyday task done the standard way), Intermediate (choosing between approaches, diagnosing a realistic fault), Advanced (trade-offs, unusual failures, design decisions) |
| Questions | 1 to 20 |
| Format | Multiple choice or Graded |
- Multiple choice - four answers, one right. Good for knowledge: "Which port does HTTPS use?"
- Graded - the scenario style of the old ITIL intermediate exams. Four answers that are all defensible but not equally good, worth 5, 3, 1 and 0 marks: the best action, a reasonable but weaker one, a poor one, and one that is wrong or harmful. Good for judgement: "47 users can't reach SharePoint and Microsoft shows no advisory. What do you do?"
Either way the candidate picks one answer, and they never see the marks. Every question counts the same towards the score: a graded answer worth 3 of 5 scores 60% for that question, just as a right multiple-choice answer scores 100%. That way a test with more graded questions isn't weighted towards them.
To use different marks, for example 4, 2, 1, 0, change them under LMS β Settings β Competency tests. New graded questions get the new marks, and questions already in the bank keep theirs (you can change any question's marks with Edit).
Fill all works through every skill that is short of questions:
- It takes approved questions from the bank that match the skill, difficulty and format and aren't already on the test. Untick Use approved questions from the bank first if you want only new ones.
- It asks the AI for whatever is still missing. The AI is told what is already in the bank on that skill, so it doesn't repeat it.
Each row shows how many it has, e.g. 3 of 5. Fill on a single row fills just that skill.
The AI is the one set up under LMS β Settings β LMS AI. Without it, Fill can only use the bank, and you can still write questions with Write or pick them with Bank.
Everything the AI writes arrives as a draft. A test with a draft on it cannot be sent, so nothing reaches a candidate unchecked. On each question:
| Button | What it does |
|---|---|
| Approve | it's right - it can be sent, and future tests can reuse it |
| Edit | fix the wording, the answers or the marks (changes it in the bank, for future tests) |
| Remove | takes it off this test only |
| Hide | retires it from the bank - it is never offered again (you can unhide it in the bank) |
Approve all is there for when you have read them all. The AI is usually right and occasionally confidently wrong, so read them before you press it.
LMS β Tests β Question bank holds every question ever written, whether by the AI or by you. You can:
- search by words in the question or its answers, the skill, or the role it was written for
- filter by skill, difficulty, format and status (draft, approved, hidden)
- tick several to approve or hide them together
- build a test by hand from the bank with Bank on the test
The bigger the checked bank, the cheaper and quicker each new test becomes.
Send asks for the candidate's name and, optionally, their email:
- With an email, and Email them the link ticked, FreeITSM sends it from your first mailbox that can send. The send is logged under the Training route.
- Either way, the link is shown once, with a Copy button. FreeITSM keeps only a scrambled fingerprint of it, so it can't show it again.
- Lost it? Press Link on the candidate's row to make a new one. The old one stops working. This only works until they press Start.
The link stays open for 7 days by default (Settings) until the candidate presses Start. Cancel withdraws it.
The candidate's paper is frozen at the moment you press Send: the questions, their answers in a shuffled order, and the marks. Editing or hiding a question afterwards never changes what they sit or how it's scored, and every candidate you send the test to gets an identical set of questions.
A page with the test's name, the number of questions, the time limit and four short rules, and a Start button. After Start:
- the questions, one after another, each with a single choice
- answers save as they go, so a dropped connection or a closed tab loses nothing
- a clock at the bottom, kept by the server. It keeps running if they close the page, and when it reaches zero, whatever they have answered is submitted.
- Submit when they're done (it warns about unanswered questions)
It works on a phone. Candidates never see the marks, the explanations or which answer is best, and by default they don't see their score either (Settings can change that).
LMS β Tests β Candidates lists everyone you've sent a test to, with where they are: Not started, In progress, Finished, Link expired or Cancelled. Opening one shows:
- the overall score, and Pass / Below the pass mark if the test has a pass mark
- a score for each skill: where they're strong and where they'd need support
- when it was sent, started and finished, and the time taken
- every question with the answer they chose against the marks, and the explanation
- a box for your notes
Print gives a clean copy for the interview panel.
Candidates are people outside your organisation, so their names, emails and scores are personal data:
- The whole feature sits behind its own permission, Competency tests, under Roles. It is not part of LMS manage, so somebody can run recruitment tests without managing courses, and the reverse.
- Finished, cancelled and expired candidates are deleted automatically 180 days later. Change this under LMS β Settings β Competency tests; 0 keeps them until you delete them.
- Delete on a candidate's row removes them and their result straight away.
Tell candidates how long you keep their results.
LMS β Settings β Competency tests:
| Setting | Default | |
|---|---|---|
| Links stay open for | 7 days | until the candidate presses Start |
| Time limit for a new test | 45 minutes | each test can change it; 0 = untimed |
| Marks for a graded question | 5, 3, 1, 0 | best first |
| Keep candidates' results for | 180 days | 0 = until you delete them |
| Show candidates their score | off | they never see answers or marks either way |
- LMS Β· AI authoring - the AI provider this uses
- Developer guide
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
- Architecture
- π§ͺ Developer tests
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- π Date & Time Formats
- Theming & Dark Mode
- ποΈ Recent β getting back to what you were doing
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
-
MobileβFriendly
- β³ π« Mobile: Tickets
- β³ π» Mobile: Assets
- β³ π Mobile: Calendar
- β³ π Mobile: Knowledge
- β³ π¦ Mobile: Service Status
- β³ πΌ Mobile: Watchtower
- β³ π§© Mobile: Problem Management
- β³ π Mobile: Change Management
- β³ πΏ Mobile: Software
- β³ β Mobile: Tasks
- β³ π Mobile: Forms
- β³ π Mobile: Contracts
- β³ π Mobile: Domains
- β³ π Mobile: People
- β³ π Mobile: LMS
- β³ πΊοΈ Mobile: CMDB
- β³ πΊοΈ Mobile: Network Mapper
- β³ π§ Mobile: Process Mapper
- β³ βοΈ Mobile: Workflow
- β³ π₯οΈ Mobile: System
- β³ π Mobile: Reporting
- β³ π Mobile: System Wiki
- β³ π Mobile: Self-Service Portal
- β³ π§° Mobile: Techniques & Tricks
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- β³ π‘οΈ CSRF protection (S4) β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- π CardDAV contact sync
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π REST API: Domains
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ π·οΈ REST API: Cost centres
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ π Rota copy and paste β Developer Deep Dive
- β³ β Checklists & SOPs
- β³ βοΈ Mandatory fields
- β³ π·οΈ Ticket categories
- β³ π₯ Assigning tickets to a team, and escalation
- β³ π’ One board across every company
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
-
β³
βοΈ Telegram channel - β³ β CSAT company scope and filters β Developer Guide
- β³ π₯ Microsoft Teams channel
- β³ π¨οΈ Mattermost channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ β Record previews
- β³ π Ticket notes: internal or shared
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ π¨ Telling the analyst a ticket is theirs
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π’ Ticket numbering
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ π Confidential tickets
- β³ π₯ Portal managers
- β³ π Who has seen a ticket
- β³ π Reading long tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ ποΈ The folder pane
- β³ π½ Just my tickets, or no closed ones
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- β³ π Scheduled work in your own calendar
- Problem Management
- Tasks
-
Assets
- β³ π’ Moving an asset between companies
- β³ π Shared asset locations
- β³ π§βπΌ Assigning assets to analysts
- β³ π Warranty and lease alerts
- β³ π Saved table views
- β³ π¨οΈ Recording anything, and importing it
- β³ π·οΈ QR asset labels
- β³ π Who holds what, and handover documents
- β³ π₯οΈ The inventory agent (PowerShell)
- β³ ποΈ Proxmox VE servers
- β³ βοΈ VMware Cloud Director servers
- β³ π Linking equipment to tickets
- β³ βοΈ Follow-up tasks on a ticket
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
-
Forms
- β³ π¨ The form designer β Developer Guide
- β³ π Layout & the grid β Developer Guide
- β³ ποΈ Collections β grouping submissions
- β³ π Submissions as PDFs
- β³ β‘ What happens next β a form's own actions
- β³ π οΈ Sections & conditional logic β Developer Guide
- β³ π οΈ Lookup fields β Developer Guide
- β³ π‘οΈ Catalogue request approvals
- People
- Domains
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ π’ One board across every company
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)
- What this is
-
π Bugs resolved
- β³ π’ Chat tickets ignored your ticket numbering
- β³ π Dates shown as a dash, or in server time
- β³ π Assets β Users showed people from other companies
- β³ π Restricted analysts could read other modules' data
- β³ πΌοΈ Replies with a picture in the thread failed to send
- β³ π Reply attachments never reached the customer
- β³ π οΈ Outbound email attachments β Developer Guide
- β³ π A global SSO provider was missing from the portal
- β³ π Behind a proxy, the SSO redirect said http
- β³ βοΈ The portal tagline moved when you saved it
- β³ π¨ The portal settings screen forgot what you saved
- β³ π‘οΈ The approvals inbox said "Error" and nothing else
- β³ π A table's answers were missing from the PDF
- β³ β A single-select column let you tick every option
- β³ π The portal ignored a form's field widths
- β³ π The tasks board stopped taking clicks
- β³ ποΈ #121 The index list is out of date after upgrading
- β³ π #133 The calendar subscription was empty
- β³ π #131 Tasks always reopened on the board
- β³ π₯ #129 Every page returned HTTP 500 after upgrading
- β³ π³ #127 A PHP warning above the System page
- β³ π #126 Notes stamped with the server's clock
- β³ π Storing every date in UTC
- β³ πͺ The portal was down for everyone signed in
- β³ βοΈ #120 Workflow notes could never be written
- β³ βοΈ #123 Three errors when running Database Verification
- β³ π #122 The description box was a stub in the corner
- β³ π£ Demo data deleted real accounts
- β³ π #117 Sign-in redirected to the wrong address
- β³ π¨ #108 The priority dot was invisible
- β³ β±οΈ #116 Time logged from the right-click menu
- β³ π #114 API keys refused by our own guard
- β³ ποΈ #110 Assigning a task told nobody
- β³ πͺ #107 Signed out while still working
- β³ π #103 "Share with Requester" reached nobody
- β³ π #102 Search found nothing for hyphens
- β³ πͺ #101 Source code editor opened behind
- β³ βοΈ #88 Subtasks could not be ticked off
- β³ π» #84 Asset deep link selected nothing
- β³ π« #79 A new ticket arrived with no status
- β³ π§ #79 A ticket from email did not say so
- β³ π #78 Bell opened to nothing
- β³ π¬ #77 Mail only collected from Inbox
- β³ π #74 The default password could not be changed
- β³ π¦ #70 Renaming an impact level
- β³ π€ #67 App-only mailboxes could not send
- β³ π #45 Verify only ever worked for Microsoft
- β³ π #45 IMAP reported as not authenticated
- β³ βοΈ An email template stopped escaping itself
- β³ π The portal dashboard showed the wrong time
- β³ π’ The folder said 99 and the list showed 96