Service User Profile — Functional Specification v0.9

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

Scope & structural change wireframe ↗

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 SMSSL Service ManagerRef
Service Agreements → SearchGlobal search bar on every page; advanced search opens from the barG-005
Service Agreement Summary pageService User Profile — "it's about the user, not the agreement"S-001
Quick AgreementRemoved. It was a stock-integrity "fudge" (ghost equipment). Replaced by a simpler referral form which may include a stock section — referrals moduleG-006
WorkspaceMoves to Tasks/Scheduling ("over complicated" — SaaS4)G-007
"This should be called Service User Profile — customer is really confusing: is it our customer, an authority, the end user?" — Nikki, M4

1.1 Search bar (all pages)

1.2 Advanced search page G-005, S-014

Opened from the search bar on any page. Replaces old SM "Service Agreements → Search" (Basic + Advanced) and absorbs the old History views.

2 · Service User Profile — header & layout wireframe ↗

2.1 Identity panel

ElementBehaviourRef
Organisation logoReplaces 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 referenceBoth 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 badgeActive · Pending · Terminating · Terminated. (Suspended status removed, see 6.1.)S-004
Primary equipmentThe unit that contacts the ARC: model name, model no., telephone no.S-003
KeywordsKept (= ILOS tags), coloured; surfaced prominently — used to call out conditions before a visit.G-008
Linked agreementsSame-dwelling/shared-equipment links (dual occupancy).S-007
Two "unassigned" buttonsRemoved — duplication of Requests ("this whole page looks very much like a mess").S-003
Recent-activity action buttonsRemoved — duplications of requests/tabs.S-010

2.2 Action bar

ActionBehaviourRef
New RequestOpens 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 AgreementQuick-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
DecommissionStarts the decommission workflow (§6.2).S-005
ReactivateOnly on decommissioned/terminating users, within 3 months (§6.3).S-006
Print to PDFPrettified browser print of the client-data summary (no server PDF licence — deliberate). Used for archives/coroner files.S-020
Log internal callPopup 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
Suspend / ResumeRemoved — never used, no billing consequence ("you either have the service or you don't"). If suspension ever returns it must drive billing.S-004

3 · Tabs wireframe ↗

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

3.1 Summary

3.2 Contacts S-011

3.3 Equipment S-017

3.4 Call History S-015

3.5 Notes S-019

3.6 Messages S-019

3.7 Audit S-014

4 · Requests tab & request detail wireframe ↗

4.1 Requests list S-012

4.2 Request creation Q-001, Q-003, S-012

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.

TypeType-specific fields
ChangeEquipment 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 taskTask 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).
DecommissionReason (standard category, Q-010) · recovery visit date; hands off to the guided decommission flow with the dual-occupancy check (S-005).
InstallationUnavailable once an installation has completed (Q-001); creation normally flows from a referral.
Shared fieldStatusNotes
PriorityAgreedNormal · Urgent — urgent triggers the incident flow (S-013). Two levels per the old SM, not Mark's four.
Assigned / ResponsibleAgreedPer 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 requestAgreedOptional, saved together with the request, auto-scheduled (S-012).
Channel+Mark — to confirmPhone · WhatsApp · Form · Internal. Not discussed in the meetings.
Requester + phone+Mark — to confirmWho asked for this, with contact number. Meetings made requester name compulsory only for referral surveys (R-002).
Location+Mark — to confirmDefaults 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 confirmAt 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).

4.3 Request detail Q-005…Q-009

Field/sectionSSL behaviourRef
TypeInstallation · Change · Decommission · Custom (admin-extensible). Change only after completed installation.Q-001
PriorityNormal · Urgent. Urgent = incident flow (notification + timeline).S-013
Assigned / ResponsibleAssigned = person doing the job (filtered by task-type role); Responsible = a real manager + their team (no ghost "installation team" users).Q-005
Next action dateRead-only window derived from the task SLA (latest date shown) — not user-picked.Q-006
CauseRemoved ("we already know").Q-006
ResolutionOn completion: optional/free-form. On cancellation: mandatory, from admin list mapped to standard categories.Q-010
Stock items listDedicated 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-007Q-009
LinksThird-party URLs stored against the request (and per task), with who added them; "+ Add link" on the detail page.Q-009
Completion flowRequest 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
CancellationStock auto-released to spare (partial release supported); completed requests can't be cancelled → change request. Full flow TBD.Q-011 TBD

5 · Assessments S-016 wireframe ↗

6 · Agreement lifecycle wireframe ↗

6.1 States

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.

6.2 Decommission S-005

6.3 Reactivate S-006

6.4 Termination & redaction S-008, S-022

7 · Terminated agreements archive S-008 wireframe ↗

8 · Work queue (replaces Workspace) G-007, Q-008 wireframe ↗

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.

9 · Quick Agreement — disposition G-006

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:

10 · Old History sub-pages — disposition S-014 wireframe ↗

Old SM page (under Summary → History / Tasks)SSL dispositionRef
History → Linked Service AgreementIdentity panel "Linked agreement" link (dual occupancy)S-007
History → Previous Agreements HistoryTerminated archive (§7) + advanced search by status/dateS-008
History → Status HistoryAdvanced search on status + Audit tab (who/when/from→to)S-014
History → Service Level HistoryAudit tab + Service Agreements report ("as of" queries)S-014, P-002, P-006
Tasks → Task History pageTasks nested under each request (renamed "Tasks", Q-007)S-012
Tasks → Schedules pageScheduling module (bookings/planner) — links from request tasksC-001
Incidents tab (+ timeline, Increase SLA)Urgent requests; ARC colour timeline kept; SLA handling specced with the Requests moduleS-013

11 · Coverage matrix — all 98 old screens

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 dispositionWhere
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 §6S-001S-003
2 Search → Suspend icon / Suspension Reason / Resume2✂ 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/stock38✅ Requests tab + request detail (§4); pick-stock & stock-edit screens 📄 detailed flow with Requests/Inventory modulesS-012, Q-001Q-011
2 Search → Incidents tab1✂ Tab removed → urgent requests (§3, §4.1); console ➡ Requests moduleS-013
2 Search → History menu (Linked SA, Previous Agreements, Status, Service Level)4✅ Mapped per §10 — advanced search / audit / archiveS-014
2 Search → Tasks menu (Task History, Schedules)2✅ Nested tasks (§4); schedules ➡ Scheduling moduleS-012, C-001
2 Search → Audit tab1✅ Audit tab (§3.7)S-014
2 Search → Terminated agreement views2✅ Lifecycle §6 + Terminated archive (§7)S-005S-008
3 Workspace → Basic/Advanced Search, Type/Status/Hold Reason menus, search outputs9📄 Work queue (§8) — final home: Requests/Tasks areaG-007, Q-008
1 Quick Agreement → form + scope screens5✂ Removed → simplified referral (§9) ➡ Referrals moduleG-006

Counts are screenshot files per group (some files show the same screen in different states). Total 98 ✓.

Round 11 — review changes (12 Jun 2026)

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).

#ChangeWhereRefs
1Request 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 detailQ-010 Q-011 S-014
2Reactivate 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.ArchiveS-006
3Terminated, 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 profileS-008
4Service 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 · ServicesS-021
5Add service flow — new-service modal (type, name, start/end, cost, payee) with required-field validation.Summary · ServicesS-021
6Edit service-user data — "Edit details" opens an audited editor of identity/record fields (name, DOB, address, phone, email, refs, scope, MOSA, colours, keywords).Identity panelS-014 SSL-3.1
7Consistent, emphasised section titles — every card/table title uses one treatment (bold, primary colour, accent bar) drawn from Mark's SM headings.All cards06 titles
8Background scroll locked while any popup is open.All modals06 modals
9Removed the "→" arrow from list-view title links (requests, tasks, agreements).Lists
10Phones and addresses are linkstel: on every number, Maps URLs on addresses.Identity, Contacts, Equipment
11Advanced-search click closes the suggestion list (blurs the search input).Global searchG-005
12.1Assessment 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 editorS-016
12.2New Request is a 2-step flow (What → Who & when) with pre-filled defaults (channel = Phone, requester = last caller, group from task-type role).New requestQ-001 Q-005
12.3Interaction grammar codified — lifecycle entities (request, assessment) are pages; quick context (task, device, DMP) opens as a slide-in side panel; confirmations stay modals.Global pattern06 grammar
12.4Status-pill token table documented in the global shell (01) — 7 semantic states, reused across modules.01 Shell §406 pills
12.5Required fields marked (red *) with inline validation + error summary on Save (new contact, new service, edit details, cancellation reason, request title).All formsAA 3.3.x
12.6Typeahead keyboard model — arrow-key traversal, Enter to open, substring highlight, "no results — try advanced search" row.Global searchG-005
13.1Urgent-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 detailS-013
13.2Per-row quick actions (hold, history) on the requests grid — no need to open each request.Requests tabQ-008
13.3Identity panel fields added — Source (→ referral), Scope, MOSA flag, Email, First contact (name + number).Identity panelSSL-3.1
13.4Contacts call-order column (1, 2, 3…) plus a Change-priority control.Contacts tabS-011
13.5Audit pagination — 6 rows per page with "Show more".Audit tabS-014
13.6Service-expiry workflow — Extend action on expiring services + link to the "expiring within 7 days" report (extend / let lapse / call funder).Summary · ServicesS-021 P-008

Open questions for Tunstall (module-specific)