Starters and Leavers - edmozley/freeitsm GitHub Wiki
Starters & leavers
Folder: starters/ ยท Colour: Golden brown #a16207 ยท New in 4.6.0
Everything that has to happen when someone joins, moves or leaves - on the right days, by the right teams - from one case.
A new starter needs an account, a laptop, a phone and access to the right systems before their first day. A leaver needs all of it taken back on their last. Each job belongs to a different team and has its own deadline, and the usual way of keeping track - an email to five people and a spreadsheet - loses something every time.
Starters & leavers is built from the modules you already use. The work is tasks in Tasks, kit is custody in Assets, the person is the one in Users, and anything automatic is a workflow. Nothing is kept twice, so everything those modules already do - notifications, checklists, history, the handover document - works here as well. (How it is built: Starters & leavers - Developer Guide.)
Try it with demo data
System โ Demo data โ Starters & leavers fills the module with a worked example: a New starter request form on the portal (who is joining, mailbox, private mailbox, DMS and PMS access, equipment), four templates - Legal starter (chosen when the department is one of the legal ones), Standard starter, Role change and Leaver - and nine cases at every stage. Priya Shah, joining Dispute Resolution next week, needs DMS access but not the PMS, and a laptop and a phone but no monitor, so her case has no PMS or monitor step. There is a starter waiting for answers, one who started three days ago with the walkthrough overdue, a finished one, a cancelled one, a leaver whose laptop is still to come back, and a mover.
Import Core, Assets, Checklists, Forms and Tasks first: a case's steps are tasks and its answers are a form submission, so they come with those modules' demo data. Re-import Starters & leavers after re-importing Tasks or Forms, to link the cases up again. Like all demo data, it is marked as such and removed without touching your own cases.
The pages
| Page | What it shows |
|---|---|
| Cases | Every case in the companies you can see: the person, starter / mover / leaver, the date (and how soon), the template, a progress bar, the owner and the status. Filter by kind and status, search by name or email. Open cases come first, soonest date first. |
| A case | The person and the date, then its steps (each a task, with who has it and when it is due), kit (from Assets), the account (for a leaver), documents and the history. |
| Settings โ Templates | What should happen for each kind of change. |
| Help | The in-app guide. |
Opening a case
New asks:
- What is happening? - a starter (someone joining), a mover (a new role, team or office) or a leaver.
- Who? - a starter can be somebody not in Users yet: give their name and, if you know it, their email and job title. Movers and leavers are always somebody already in Users, found by name or email.
- The date - the first day, the move date or the last day.
- Owner - who looks after the case (you, by default).
- Template - the steps to add (see below). None opens just the case.
The case itself becomes a task, due on the date, called something like Leaver: Jane Smith (31 Oct 2026). Each step of the template becomes a subtask of it, given to the step's team or analyst and due its number of days from the date. So the work is on the Tasks board for the people doing it, with Tasks' own notifications, and the case reads its progress straight back - close a step in Tasks and it is ticked on the case.
If a step cannot be added (a team that has since been deleted, say), the case is still opened with the others, and its history says which step failed and why.
Templates
Settings โ Templates (permission: Manage templates). A template is for one kind - starters, movers or leavers - and lists its steps:
| Column | Meaning |
|---|---|
| Step | What has to happen - "Order a laptop", "Disable the account". |
| Team / Analyst | Who it goes to. Either, both or neither. |
| Days | When it is due, from the case's date: -5 is five days before, 0 is on the day, 2 is two days after. |
| Checklist | A checklist from Tasks, attached to the step's task - for a step with several parts, like building a laptop. |
Changing a template never changes cases already opened from it - their tasks are already made. Switch a template off to stop offering it without deleting it.
Steps as tickets (5.2.0)
For a desk that works from the ticket queue (#316, from discussion #298). Each template step has two more columns:
| Column | Meaning |
|---|---|
| Raise as | Task - a subtask of the case, as always (the default, so no template changes by itself) - or Ticket. |
| Ticket | A name, for ticket steps. Steps with the same name become one ticket, each step an item of its checklist. Blank = a ticket of its own. The names already used are suggested, so one ticket is not typed two ways. |
So one organisation has one IT accounts ticket (AD account, mailbox, DMS) and one Security pass ticket for Facilities; another splits IT into IT accounts and MFA for two teams. The template decides.
Each ticket:
- Subject - the ticket name, the person and the due date: IT accounts: Jane Smith - due 3 Nov 2026 (a step on its own uses its title).
- Text - what it is for, a link to the case, each step with its description, and the answers.
{Question}and the transforms work as in step titles. - Team and analyst - the first step's. The template editor warns when the steps of one ticket name different teams. Department - that team's, when it is in exactly one; otherwise the company's default. Company - the case's.
- Scheduled all day on its due date (the earliest of its steps), so it is on the Calendar.
- Checklist - one item per step; a step's own checklist (if it is one for tickets) is added too.
- Requester - whoever asked for the case: the person who submitted its form in the portal, else the case's manager, else the person themselves if they are in Users. A ticket must have one, so with none of them the steps are added as tasks instead and the case's history says why.
- Type - Steps raised as tickets โ Ticket type on the template, or the usual one. A Starter type can have its own SLA, and lets a routing workflow leave these tickets alone.
Email the requester about these tickets (on the template) is off by default: these tickets then send their requester no automatic email - logged, assigned, closed, a shared note - and no satisfaction survey. Each one not sent is listed in the email log as skipped, with the reason. An analyst can still reply by email by hand. The setting is kept with each ticket when it is raised, so changing the template later does not change tickets already out.
On the case, a Tickets list sits under the steps: number and name, team, due date, checklist progress (1 of 2 done) and status. Each ticket counts as one step - done when it is closed (a ticket in the trash is not counted) - in the progress bar, the case list, the person's page and the Report Pack blocks (ready on the day, and overdue, included). On the ticket, a ๐งณ Starter: Jane Smith pill in its links opens the case, for anyone who can use Starters & leavers.
Done never closes a ticket, as it never closes a task - it says how many steps and tickets are still open first. Reopening a case never reopens anything either.
Developers: Steps as tickets - Developer Guide.
Questions from Forms
Every company asks different things about a new starter - Will they need DMS access? A private mailbox? A company laptop? - so the questions are yours, built in Forms. Each template can use one form, or none. Forms and checklists are independent: a template can have either, both, or neither.
On the template (Settings โ Templates):
| Setting | What it does |
|---|---|
| Questions | The form this template asks. None = a template that works exactly as above. |
| Use this template when | When a form opens a case, which template it gets: Department is any of Dispute Resolution, Property โ Legal starter. The first template whose rule the answers meet is used; one with no rule is used when no other matches. |
| Only if (per step) | The step is added only when the answers say so: only if DMS access? is Yes. Operators: is, is not, is any of, contains, is filled in, is blank - the same as a form's show/hide rules. |
| {Question} in a step | The answer goes in: Create account for {Full name} - {Job title}, {Department} becomes Create account for Sarah Jones - Senior Associate, Dispute Resolution. The chips above the steps insert them. {name}, {email}, {job title} and {date} come from the case. A name that is not a question is left as typed, so a typo shows. |
| Working a value out (5.2.0) | Add changes after a bar, applied left to right: initial (first letter), first (first word), last (last word), upper, lower, nospace, slug (lower case, spaces and punctuation to dots) and ascii (Josรฉ โ Jose). ORG-{First name|initial|upper}{Last name|upper|nospace} gives ORG-JSMITH; {First name|initial|lower}{Last name|lower} gives jsmith; {First name|first|lower}.{Last name|lower|nospace}@example.org gives [email protected]. A misspelt change is left exactly as typed, so you can see it. (How it works) |
Rules and {Question} use the question's wording, so a new version of the form keeps working as long as the question is still called the same thing.
Two ways the questions get answered:
- A manager in the portal. Publish the form in the request catalogue, and in Forms add the action Open a Starters & leavers case to the form's actions - on submit, or on approval if HR signs off first (request approvals work as usual). The case opens itself: the name, email, date and job title are read from the answers (a question called Name, the first email question, the first date question, Job title / Role), or from the action's own boxes, which take
{{submission.fields.Start date}}style values. A mover or leaver is matched to Users by email; if nobody matches, the case opens with the typed name and Link joins it up. No template matched? The case asks the analyst to Use one. - An analyst on the case's task. Choose a template with questions in New, and the form goes on the case's task (forms on tasks) - its steps arrive as soon as the questions are answered there. Needs Tasks โ Settings โ Checklists โ Forms on tasks; the case says so if it is off.
The analyst then works from the answers. The case page shows every answer with a Copy button, and the answers are written into the case's task in Tasks, so whoever picks up a step has them without opening the form.
Kit
Once a case is linked to a person, Kit lists everything they hold in Assets.
- Issue - find an asset by name, model or serial and give it to them.
- Recover - take one back, and optionally set its status at the same time: In stock, Awaiting wipe, or a status ticked Retired, which retires the asset with the date as anywhere else.
- Handover - the Assets handover document for the person, listing what they hold, ready to print and sign.
Both Issue and Recover are the same custody change Assets makes, so each asset's history, the asset.assigned / asset.unassigned events and any workflow listening for them all see it. Kit needs access to Assets as well as to Starters & leavers.
A starter added to Users after their case was opened: on the case, Person โ Link joins them up, and Kit appears.
Leaving
On a leaver's case, Account โ Left switches the person off in Users - exactly what the person screen does - with the date. Their tickets, assets and history stay as they are.
A person kept up to date from a directory (LDAP, Entra, CardDAV) is not switched off here: the next sync would switch them straight back on. The case says so; disable them in the directory and the sync marks them as left.
Done and cancelled
Done closes the case, Cancel shelves it, Reopen brings it back. None of them touches the tasks: a step still open is somebody's work, and closing it quietly would hide that. Done asks first, and says how many steps are still open.
Anyone working on a case can mark it done. Cancelling and reopening are for the case's owner or somebody with Manage Starters & leavers.
Workflows
Two Workflow triggers:
| Trigger | Fires when |
|---|---|
A starter, mover or leaver case is opened (jml.case_created) |
A case is created - after its steps are in Tasks. |
A starter, mover or leaver case is marked done (jml.case_completed) |
Done is chosen. |
Both carry jml_case.id, kind, person_name, person_email, user_id, effective_date, status, template_name and parent_task_id, so a workflow can check the kind or the template first - "if a leaver, email HR and post in #it-ops". Each step is an ordinary task, so the task triggers fire for them too.
In a report pack (5.2.0)
Reporting โ Report Packs has a Starters & leavers area: a summary (starters, movers and leavers dated in the period, and how many were ready on the day - every step done by their first or last day), a chart, a list of the period's cases with their progress, and the steps overdue now. See Report Packs - the Starters & leavers blocks.
On a person's page
People shows a Joining, moving and leaving section on a person's page: each of their cases with its date, status and how many steps are done.
Companies
A case belongs to the person's company; a starter not yet in Users belongs to the company you are working in. Analysts see the cases of the companies they can see - a case in another company reads as not found. Templates are shared by every company.
Permissions
| What | Needs |
|---|---|
| See, open and work on cases | Access to the Starters & leavers module |
| Issue and recover kit | ...and access to Assets |
| Change templates | Manage templates (starters.templates) |
| Cancel or reopen any case | Manage Starters & leavers (starters.manage), which also covers templates - or be the case's owner |
When an analyst leaves, the analyst-leaving tool lists the open cases they own and hands them on with the rest of their work.
Feature Bingo
Four cards: a template with steps, a first case, a step with a checklist, and a workflow on a Starters & leavers trigger.