October 4, 2026
Software StrategyClient portal requirements checklist and worksheet
A client portal requirements checklist should define the client and staff tasks, who can act on each client's records, which system owns the data, and what happens when access changes or an integration fails. Use a permission matrix and observable acceptance scenarios to turn those decisions into requirements a software partner can review.
By Chris Sutton
A client portal is an authenticated workspace where clients exchange information and complete defined tasks with a business.
Start with the work clients need to complete
Write one workflow before listing screens: a client supplies a document, submits it for review, and checks its status; an assigned staff member accepts it or requests a correction. Describe the starting information, the finished record, and who makes each decision. Specify whether clients act as individuals, representatives of organizations, or members of several organizations.
Download the client portal requirements worksheet, available without an email gate. It contains blank workflow, record, permission, scenario, integration, and ownership records, followed by a fictional example. Start with one important workflow and expand from there. Broader software planning topics are collected in Wavelength's Learn library.
For each record, identify its client owner, sensitivity, editable fields, and retention decision. Separate viewing a document from approving it. Someone who can upload evidence may have no authority to accept the submission. Write exclusions too: for example, billing and electronic signatures might stay in existing systems during the first release.
Make client portal requirements specific about access
Wavelength’s Client Portal Requirements Worksheet organizes each permission as role × client relationship × record × action. This is our planning method; OWASP supplies the authorization principles below. A role describes the job; the relationship establishes which client that job concerns. Add conditions such as active membership, staff assignment, or submission state. One row should describe one action and its expected decision.
OWASP's authorization guidance recommends least privilege, denial by default, and checking permissions on every request. Apply those principles when specifying downloads, exports, and background actions as well as ordinary page views. Hiding a button is insufficient evidence that the underlying action is denied.
In a portal serving several client organizations, each organization is called a tenant. OWASP’s multi-tenant guidance explains that a supplied client identifier does not establish permission. The server must verify who is making the request and their right to act for that client.
For unresolved permissions, record “unknown,” a decision owner, and the evidence needed. Keep the action unavailable until the policy is decided. Review delegated access, expired invitations, staff reassignment, and account closure explicitly rather than folding them into an unrestricted administrator role.
Fictional worked example: clients A and B
This example is invented for planning; it describes no client project or observed results. U1 is Client A's contributor, U2 is Client A's administrator, and S1 is a staff reviewer assigned only to A. A1 is A's file, A2 its submission, and A3 its membership register. B1 and B2 are B's file and submission. New submissions start as drafts.
On small screens, scroll the table sideways to read all columns.
| Fictional permission rule | Role and user | Client relationship | Record | Action | Decision and condition |
|---|---|---|---|---|---|
| P1 | Contributor U1 | Active member of A | File A1 | Download | Allow |
| P2 | Contributor U1 | No membership in B | File B1 | Download | Deny |
| P3 | Contributor U1 | Active member of A | Submission A2 | Submit | Allow while draft |
| P4 | Contributor U1 | Active member of A | Submission A2 | Approve | Deny |
| P5 | Reviewer S1 | Assigned to A | Submission A2 | Approve | Allow while submitted |
| P6 | Reviewer S1 | Not assigned to B | Submission B2 | Approve | Deny |
| P7 | Administrator U2 | Active member of A | Membership register A3 | Revoke U1 | Allow |
| P8 | Contributor U1 | Revoked from A | File A1 | Download | Deny |
| P9 | Contributor U1 | Active member of A | Draft A2 | Attach A-owned file | Allow; wrong-client file denied |
| P10 | Contributor U1 | Active member of A | Submitted A2 | Retrieve original receipt | Allow identical reference and payload; no new submission |
| P11 | Contributor U1 | Active member of A | Draft A2 | Upload new file | Allow; assign A ownership; incomplete upload cannot be submitted |
Extend the worksheet with separate rows for creating, editing, uploading, inviting, exporting, and deleting. If an external accountant needs invoice exports, define the client relationship and invoice fields that access covers. Granting a broad “client user” role would leave those decisions unanswered.
Write observable allowed and denied scenarios
Connect each matrix row to an acceptance scenario. Record the starting state, user, action, expected message, resulting records, and evidence to inspect. Include allowed paths: a system that rejects everything would satisfy denial cases while failing its purpose.
The following are authored acceptance requirements for the fictional example, not reported test results or an OWASP test suite.
On small screens, scroll the table sideways to read all columns.
| Fictional acceptance scenario | Starting state and action | Required observation |
|---|---|---|
| T1/T2 | Active U1 requests A1, then B1 through a saved link | A1 delivered; B1 content and metadata denied |
| T6 | U2 revokes U1; U1 reuses an open session and saved A1 link | Subsequent download denied |
| T7 | U1 attaches A1 to draft A2, then attempts B1 | A1 reference saved; B1 rejected, undisclosed, no other change |
| T8 | A2 submitted, receipt stored, one task acknowledged; U1 repeats identical reference and payload | Original receipt returned; submission/task counts remain one |
| T9 | Downstream system unavailable during submission | Receipt saved; transfer pending; recovery produces one task |
The attachment check verifies which client owns an existing file. It cannot determine whether a new upload contains another client’s information; agree a review and correction process. Revocation blocks future downloads but cannot retrieve copies already downloaded.
Treat each scenario as an independent check with its stated starting conditions. Restore fictional records between checks so an earlier approval or revocation does not change the next scenario. Keep expected observations separate from recorded results, with the implementation version and evidence reference attached.
Inspect actual records alongside messages. During outage recovery, task count stays zero until delivery succeeds, then becomes one. Test interrupted uploads: no incomplete attachment becomes submittable; inspect saved state before retrying. Test connectivity loss, login failure, and portal unavailability separately. Without a saved receipt, do not claim submission. If its outcome is uncertain, report it as unknown and check authoritative state after reconnecting before retrying. Provide an external support route, name its intake owner, and reconcile manual intake before retrying. For your own scenarios, name who records discrepancies and who decides whether an unresolved failure blocks release.
Name the source of truth and integration owners
A source of truth is the system whose value governs a particular field or state. Define it at that level: the portal might own submission content while a work system owns its task status. A displayed copy needs a freshness rule, a conflict decision, and an owner who can reconcile disagreement.
For fictional integration I1, use this ownership record:
On small screens, scroll the table sideways to read all columns.
| Worksheet field | Fictional I1 requirement |
|---|---|
| Data and direction | A2 submission reference; portal to work system |
| Authoritative states | Portal owns submission and receipt; work system owns task delivery acknowledgment |
| Authorization | Service authorized for A; receiving task retains A ownership |
| Failure and retry | Keep transfer pending; retry the same submission reference; reconcile before manual resend |
| Operations owner | Operations lead checks pending transfers and reconciles receipts |
| Technical owner | Engineer maintains connection, credentials, and retry behavior |
| Fallback | Operations lead checks for an existing task before creating one manually |
Specify alert recipients, the wait before escalation, and recovery evidence in the blank worksheet. Assign ongoing ownership for invitations, permission reviews, support, retention, and history access. Record relevant history fields, including actor, client, action, time, and outcome, without copying sensitive file contents into logs.
Replace owner labels with responsible people when completing your plan. Give support staff a defined client scope and a way to escalate disputed access. A technical owner can repair a connection; operations decides which conflicting business record governs. Before inviting clients, name who provisions accounts, trains staff, accepts the workflow, and receives support ownership. Handoff includes account and supplier access, operating instructions, export and recovery procedures, and a way to accept later changes.
Use the worksheet to decide what to buy or build
Ask an existing portal supplier to demonstrate your matrix and scenarios with representative accounts. Buying fits when its permission model and workflow meet the requirements without awkward exceptions. Custom development gives you control over those rules but requires funding for maintenance, support, and integration changes. A mixed approach can preserve existing record systems while adding a focused client interface.
GOV.UK's technology guidance recommends exploring interfaces and mapping components to build, buy, or obtain freely. That public-service planning method can inform this decision; it establishes no price advantage for either option.
Take the completed worksheet and unresolved owner decisions to a software partner. If considering Wavelength's 100-hour app sprint, use them to assess whether one workflow fits a scoped first build. Book a call to talk through that workflow, its access boundaries, and integration unknowns, and agree a practical next step. Use the worksheet to agree requirements; your engineering partner still needs to design and test access controls.