SSL Service Manager · Module 1 of 7 · Replaces the old SM "Service Agreements" section (Quick Agreement, Search, Workspace — 98 screens). Sources: meetings of 15, 18 and 19 May 2026 (M2–M4, verified against full transcripts), consolidated meeting notes, current SM screenshots, Mark's prototype, SaaS4 customer review. Decision IDs refer to the Decisions Register (00).
Artifacts: 00 Register · 01 Shell · 02 Module spec · 03 Wireframes · 04 Build spec
The old SM treats Service Agreements as a menu section with three subsections (Quick Agreement, Search, Workspace). In the SSL Service Manager none of these survive as navigation items (G-004…G-007):
| Old SM | SSL Service Manager | Ref |
|---|---|---|
| Service Agreements → Search | Global search bar on every page; advanced search opens from the bar | G-005 |
| Service Agreement Summary page | Service User Profile — "it's about the user, not the agreement" | S-001 |
| Quick Agreement | Removed. It was a stock-integrity "fudge" (ghost equipment). Replaced by a simpler referral form which may include a stock section — referrals module | G-006 |
| Workspace | Moves to Tasks/Scheduling ("over complicated" — SaaS4) | G-007 |
Opened from the search bar on any page. Replaces old SM "Service Agreements → Search" (Basic + Advanced) and absorbs the old History views.
| Element | Behaviour | Ref |
|---|---|---|
| Organisation logo | Replaces the client photograph (consent burden; "a lot of ARCs don't touch it"). Logo of the organisation being monitored — e.g. "Leeds Care Alliance" in the wireframe sample — with the organisation name shown in the details. Product branding: ILOS logo top-left of the shell; "Powered by Tunstall" at the bottom of the left menu (as in Mark's SM). | S-002 |
| Name, DOB (age) | As current. Inline edit where permitted. | S-001 |
| Agreement no. + customer reference | Both displayed; agreement no. is the permanent key (survives redaction). | S-003 |
| Dwelling colour (pencil) / Risk colour (heart) | Kept, properly labelled. Colour model TBD: PNC allows any colour, ILOS has 3 (G-008). | S-003, G-008 |
| Status badge | Active · Pending · Terminating · Terminated. (Suspended status removed, see 6.1.) | S-004 |
| Primary equipment | The unit that contacts the ARC: model name, model no., telephone no. | S-003 |
| Keywords | Kept (= ILOS tags), coloured; surfaced prominently — used to call out conditions before a visit. | G-008 |
| Linked agreements | Same-dwelling/shared-equipment links (dual occupancy). | S-007 |
| Removed — duplication of Requests ("this whole page looks very much like a mess"). | S-003 | |
| Removed — duplications of requests/tabs. | S-010 |
| Action | Behaviour | Ref |
|---|---|---|
| New Request | Opens request creation pre-filled with this user (see §4). Requests stay on the profile — "the caller has that call live in front of them" (Rob, M3). | S-012 |
| Add User to Agreement | Quick-add of a new user onto this existing service page via a popup (title, name, DOB, relationship to existing resident, shared-equipment choice). No validation applied — the new agreement is being added to an existing valid agreement. (Address-match prompting at creation time lives in Referrals — R-005.) | S-007 |
| Decommission | Starts the decommission workflow (§6.2). | S-005 |
| Reactivate | Only on decommissioned/terminating users, within 3 months (§6.3). | S-006 |
| Print to PDF | Prettified browser print of the client-data summary (no server PDF licence — deliberate). Used for archives/coroner files. | S-020 |
| Log internal call | Popup with: colleague selector (people within the organisation), Teams/Zoom choice, notes field and outcome (Completed / No answer / Declined / Failed). "Start call" hands over to Teams/Zoom while the popup stays open — notes remain editable during the call. Nothing is written until the user presses Log call; closing without logging discards the entry (unsuccessful calls need not be recorded). Logged entries land in Call History tagged Internal with outcome + notes. Call content is not stored — that stays with Teams/Zoom. | S-009 |
| Removed — never used, no billing consequence ("you either have the service or you don't"). If suspension ever returns it must drive billing. | S-004 |
Tab set: Summary · Contacts · Requests · Assessments · Equipment · Call History · Notes · Messages · Audit. Removed: Tasks (nested under Requests), Incidents (urgent requests), History (advanced search), Service Cases (unknown purpose — dropped from Mark's design), Medication (until NHS link), Health Events (separate discussion). S-012/13/14/18
Opened from the profile action bar or Requests tab. The form is dynamic, as in Mark's SM (inbox → create): the type selection drives which fields appear. Mark's seven "Route to" forms (Response request / Technology Work / Ticket / Task / Message / Customer note / Assessment) do not survive as routes — the meetings consolidated everything into Requests with the agreed types (G-001, Q-001) — but their field patterns are reused per type. Messages and notes have their own tabs; assessments are created via requests (S-016).
Conflict rule applied: where Mark's form contradicts a meeting decision, the meeting wins. Consequently there are no user-set due dates (next action is SLA-derived, Q-006 — Mark's "Due by"/"Due" fields dropped) and the Custom task-type list comes from Administration, not Mark's hardcoded list (Q-003). Fields taken from Mark with no meeting decision either way are marked +Mark — to confirm below and listed in the open questions.
| Type | Type-specific fields |
|---|---|
| Change | Equipment affected (from installed list) · change kind (exchange / add / remove / battery) · technical requirement +Mark — to confirm. Default-task preview: Pick stock → Install/exchange → Confirm with family, with SLAs; next action by derived from those SLAs (Q-003, Q-004, Q-006). |
| Custom task | Task type — list as configured per client in Administration (old SM: Administration → Default Task Types), each mapping to a role that filters assignees (Q-003, Q-005) · description. Dates come from Scheduling/SLA, not the user (Q-006). |
| Decommission | Reason (standard category, Q-010) · recovery visit date; hands off to the guided decommission flow with the dual-occupancy check (S-005). |
| Installation | Unavailable once an installation has completed (Q-001); creation normally flows from a referral. |
| Shared field | Status | Notes |
|---|---|---|
| Priority | Agreed | Normal · Urgent — urgent triggers the incident flow (S-013). Two levels per the old SM, not Mark's four. |
| Assigned / Responsible | Agreed | Per the meetings (Q-005): Assigned = person doing the job, filtered by the task-type role; Responsible = a real manager (no ghost users) plus their user group, chosen from the groups the person belongs to. |
| Follow-on request | Agreed | Optional, saved together with the request, auto-scheduled (S-012). |
| Channel | +Mark — to confirm | Phone · WhatsApp · Form · Internal. Not discussed in the meetings. |
| Requester + phone | +Mark — to confirm | Who asked for this, with contact number. Meetings made requester name compulsory only for referral surveys (R-002). |
| Location | +Mark — to confirm | Defaults to the customer's address ("use customer address if blank"); postcode lookup + what3words — endorsed in M4 ("looks pretty good" — Nikki) but as part of Mark's intake work, not a request-form decision. Pickup/drop-off blocks from Mark's Response route stay in the ARC (G-003). |
| Title / Details | +Mark — to confirm | At the top of the form: Title (short description — shown in the Requests list so the purpose is visible) and Details (operational notes, risks, access information). The meetings only defined "Comment = just notes" (Q-006); the two-field split is for Tunstall to confirm. |
Form layout & behaviour (per review, 10 Jun 2026): Title + Details sit at the top; the Type selector follows and swaps the type-specific group; the auto-added default task set is displayed for every type with a per-task "N/A — close immediately" tick (Q-003), plus "+ Add custom task". Installation is selectable (defaults: Pick stock → Install → Financial assessment → Welfare follow-up call) with a note that installations normally originate from referrals (Q-001). Assignment flow: select the Responsible's user group first, which filters the Assigned person list to that group (and derives the responsible manager) (Q-005). The "Show nearest online staff" panel was removed at Ivan's direction (10 Jun 2026) — distance-ranked assignment returns with the Scheduling module (C-004).
| Field/section | SSL behaviour | Ref |
|---|---|---|
| Type | Installation · Change · Decommission · Custom (admin-extensible). Change only after completed installation. | Q-001 |
| Priority | Normal · Urgent. Urgent = incident flow (notification + timeline). | S-013 |
| Assigned / Responsible | Assigned = person doing the job (filtered by task-type role); Responsible = a real manager + their team (no ghost "installation team" users). | Q-005 |
| Next action date | Read-only window derived from the task SLA (latest date shown) — not user-picked. | Q-006 |
| Removed ("we already know"). | Q-006 | |
| Resolution | On completion: optional/free-form. On cancellation: mandatory, from admin list mapped to standard categories. | Q-010 |
| Stock items list | Dedicated stock list on the request: item, serial, source store, status "Reserved" (the old "Allocated" is renamed); reserved on pick, becomes "Assigned to client" when the request completes. | Q-004, Q-007 |
| Tasks (was "Task history") | Default task set auto-added per type (admin-configured, with SLA each); N/A defaults can be closed immediately; "+ Add task" adds custom tasks — dialog fields: type (admin list; its SLA shown read-only, Q-006), description, Responsible's user group → Assigned person filtered within it (Q-005), assignee notification (app / app+SMS / none), optional note. Each task opens a detail view: status, assignee, SLA, reserved stock, third-party links, the task's notes (multiple, author + timestamp recorded, new notes addable), and actions — Complete, Put on hold (reason/person/date, queryable), Reassign (role-filtered). | Q-003, Q-005, Q-007…Q-009 |
| Links | Third-party URLs stored against the request (and per task), with who added them; "+ Add link" on the detail page. | Q-009 |
| Completion flow | Request closes only when all tasks complete. Completing the last open task triggers a prompt to the completing user: "All tasks complete — close this request?" with an optional free-form resolution (Q-010). Closing sets the request to Completed and assigns reserved stock to the client; "Keep request open" leaves it open only by this explicit choice. If other tasks remain open (e.g. a custom task was added), no prompt — the request stays in progress. | Q-002, Q-004, Q-010 |
| Cancellation | Stock auto-released to spare (partial release supported); completed requests can't be cancelled → change request. Full flow TBD. | Q-011 TBD |
Pending → Active → Terminating → Terminated → (Redacted), with Reactivate available ≤ 3 months after decommission. No Suspended state (S-004): all eight customers confirmed nobody operates suspension because it has no billing consequence.
The old Workspace was a cross-client advanced search over requests (Assigned, Responsible, Type, Status, Request Hold Reason, Address, Name, PNC Equipment Id, Agreement No., Customer Reference → queue table with Next Action, Assigned To, Priority). Customers called it "over complicated" (SaaS4). Decision: it moves out of Service Agreements into the Requests/Tasks area (G-007) as the team work queue. It is specced here because it is part of the old section; it will be wireframed in its final home, with a preview included in this module's wireframes.
Quick Agreement (5 screens) is not rebuilt. It existed to rush hospital discharges onto the platform and did so by creating ghost equipment, breaking stock integrity — "a fudge that was quickly deployed without true detailed planning" (Andy, M2). Replacement, agreed in M2:
| Old SM page (under Summary → History / Tasks) | SSL disposition | Ref |
|---|---|---|
| History → Linked Service Agreement | Identity panel "Linked agreement" link (dual occupancy) | S-007 |
| History → Previous Agreements History | Terminated archive (§7) + advanced search by status/date | S-008 |
| History → Status History | Advanced search on status + Audit tab (who/when/from→to) | S-014 |
| History → Service Level History | Audit tab + Service Agreements report ("as of" queries) | S-014, P-002, P-006 |
| Tasks → Task History page | Tasks nested under each request (renamed "Tasks", Q-007) | S-012 |
| Tasks → Schedules page | Scheduling module (bookings/planner) — links from request tasks | C-001 |
| Incidents tab (+ timeline, Increase SLA) | Urgent requests; ARC colour timeline kept; SLA handling specced with the Requests module | S-013 |
Every screenshot group from "Current Service Manager / 5 Service Agreements" mapped to its SSL home. ✅ = specced + wireframed in this module · 📄 = specced here, wireframed in a later module · ➡ = owned by a later module · ✂ = removed by decision.
| Old screens (group) | # | SSL disposition | Where |
|---|---|---|---|
| 2 Search → Basic / Advanced Search, Status & Funder menus, results lists (Pending/Terminating views) | 9 | ✅ Global search bar + Advanced search page (§1) | G-005 |
| 2 Search → results row-action menus ("…" table options: Navigate to open request, Add Request, Suspend/Resume) | 7 | ✅ Row click → profile; actions live on the profile action bar (§2.2); Suspend/Resume entries ✂ | S-004, S-012 |
| 2 Search → Agreement Summary (icons, info box, tab views incl. Pending/Suspended/Terminating states) | 7 | ✅ Profile identity panel + Summary tab (§2, §3.1); status states per lifecycle §6 | S-001…S-003 |
| 2 Search → Suspend icon / Suspension Reason / Resume | 2 | ✂ Removed — never operated, no billing effect (§2.2) | S-004 |
| 2 Search → Print (icon + displays) | 4 | ✅ Print to PDF, prettified (§2.2) | S-020 |
| 2 Search → Contacts tab (+ contact group) | 3 | ✅ Contacts tab (§3.2) | S-011 |
| 2 Search → Assessments tab (+ completion details) | 2 | ✅ Assessments tab, draft→publish (§5) | S-016 |
| 2 Search → Equipment tab (+ equipment history) | 2 | ✅ Equipment tab + decommissioned toggle (§3.3) | S-017 |
| 2 Search → Requests tab + Change/Installation/Decommission Request Details, Add/Edit, Complete, Cancel, Pick Stock, Stock Item Edit, Add Task/Note/Link popups, task details/stock | 38 | ✅ Requests tab + request detail (§4); pick-stock & stock-edit screens 📄 detailed flow with Requests/Inventory modules | S-012, Q-001…Q-011 |
| 2 Search → Incidents tab | 1 | ✂ Tab removed → urgent requests (§3, §4.1); console ➡ Requests module | S-013 |
| 2 Search → History menu (Linked SA, Previous Agreements, Status, Service Level) | 4 | ✅ Mapped per §10 — advanced search / audit / archive | S-014 |
| 2 Search → Tasks menu (Task History, Schedules) | 2 | ✅ Nested tasks (§4); schedules ➡ Scheduling module | S-012, C-001 |
| 2 Search → Audit tab | 1 | ✅ Audit tab (§3.7) | S-014 |
| 2 Search → Terminated agreement views | 2 | ✅ Lifecycle §6 + Terminated archive (§7) | S-005…S-008 |
| 3 Workspace → Basic/Advanced Search, Type/Status/Hold Reason menus, search outputs | 9 | 📄 Work queue (§8) — final home: Requests/Tasks area | G-007, Q-008 |
| 1 Quick Agreement → form + scope screens | 5 | ✂ Removed → simplified referral (§9) ➡ Referrals module | G-006 |
Counts are screenshot files per group (some files show the same screen in different states). Total 98 ✓.
Changes made in response to Ivan's 12 Jun review and the two critique reports (05 stakeholder, 06 UI/UX). Each is reflected in the wireframes (03) and, where structural, in the build spec (04).
| # | Change | Where | Refs |
|---|---|---|---|
| 1 | Request cancellation flow — confirmation modal with a mandatory reason from the admin-defined category list, optional note, automatic reserved-stock release to spare (partial release supported), and an audit statement. Distinct from completion (whose resolution is optional/free-form). | Request detail | Q-010 Q-011 S-014 |
| 2 | Reactivate hidden out of window — the Reactivate control shows only inside the 3-month reactivation window; expired rows show a non-actionable "Reactivation window expired" note instead of a button. | Archive | S-006 |
| 3 | Terminated, non-redacted agreements open read-only — a dedicated read-only profile (identity, services, contacts, audit) reachable from the archive; redacted records cannot be opened (Verify only). No edit/request/call actions. | Archive → read-only profile | S-008 |
| 4 | Service type added as a first-class field on every service (per the notes: "services have a type, start date, end date, cost, payee"); types configured in Administration. | Summary · Services | S-021 |
| 5 | Add service flow — new-service modal (type, name, start/end, cost, payee) with required-field validation. | Summary · Services | S-021 |
| 6 | Edit service-user data — "Edit details" opens an audited editor of identity/record fields (name, DOB, address, phone, email, refs, scope, MOSA, colours, keywords). | Identity panel | S-014 SSL-3.1 |
| 7 | Consistent, emphasised section titles — every card/table title uses one treatment (bold, primary colour, accent bar) drawn from Mark's SM headings. | All cards | 06 titles |
| 8 | Background scroll locked while any popup is open. | All modals | 06 modals |
| 9 | Removed the "→" arrow from list-view title links (requests, tasks, agreements). | Lists | — |
| 10 | Phones and addresses are links — tel: on every number, Maps URLs on addresses. | Identity, Contacts, Equipment | — |
| 11 | Advanced-search click closes the suggestion list (blurs the search input). | Global search | G-005 |
| 12.1 | Assessment editor is now a full-page route, not a modal — sticky group navigation (About/Wellbeing/SSM/Connectedness/Outcome), per-group completion counts, autosave + resume indicator, scroll-spy. Publish stays a confirmation modal. | Assessment editor | S-016 |
| 12.2 | New Request is a 2-step flow (What → Who & when) with pre-filled defaults (channel = Phone, requester = last caller, group from task-type role). | New request | Q-001 Q-005 |
| 12.3 | Interaction grammar codified — lifecycle entities (request, assessment) are pages; quick context (task, device, DMP) opens as a slide-in side panel; confirmations stay modals. | Global pattern | 06 grammar |
| 12.4 | Status-pill token table documented in the global shell (01) — 7 semantic states, reused across modules. | 01 Shell §4 | 06 pills |
| 12.5 | Required fields marked (red *) with inline validation + error summary on Save (new contact, new service, edit details, cancellation reason, request title). | All forms | AA 3.3.x |
| 12.6 | Typeahead keyboard model — arrow-key traversal, Enter to open, substring highlight, "no results — try advanced search" row. | Global search | G-005 |
| 13.1 | Urgent-request ARC timeline restored — sent → accepted → en route (ETA) → arrived → completed, colour-coded, shown on the profile under the urgent request (and on the request page). | Requests tab / request detail | S-013 |
| 13.2 | Per-row quick actions (hold, history) on the requests grid — no need to open each request. | Requests tab | Q-008 |
| 13.3 | Identity panel fields added — Source (→ referral), Scope, MOSA flag, Email, First contact (name + number). | Identity panel | SSL-3.1 |
| 13.4 | Contacts call-order column (1, 2, 3…) plus a Change-priority control. | Contacts tab | S-011 |
| 13.5 | Audit pagination — 6 rows per page with "Show more". | Audit tab | S-014 |
| 13.6 | Service-expiry workflow — Extend action on expiring services + link to the "expiring within 7 days" report (extend / let lapse / call funder). | Summary · Services | S-021 P-008 |