Viewing as Project lead · Reads globally · edits globally · approves nowhere · country teams: United Kingdom
REVIEW SURFACE
Every card in the catalogue, rendered as Teams renders it, with seeded data bound in. Nothing here posts to Teams: the JSON beside each card is what Power Automate will send. Approve the set here, then it is built once.
Pick a seeded record; every card below re-renders against it. Fire one card, or fire the whole set, and read the result in the send log.
N-01
A seco_request is submitted
Request raised — REQ-00001
Halbrook Engineering Ltd
Audience
Team channel — Approval team – Route channel
seco_request.ownerteam → the Teams channel mapped to that team. Never an individual: a request lands on a flat team and any member of Approval team – Route may decide for the team (D-04).
Resolved for this record: Teams channel · Europe — Assessment & qualification
Payload fields and source column
Escalation
Undecided after 2 working days: repost once to the same channel with the waiting time in the body. No personal escalation — the team owns it.
Suppression
One card per request. A request returning from 'More information needed – route' reuses the original thread rather than posting again.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 26 characters
Payload file: src/services/notifications/cards/N-01.json
N-02
Request reaches route review
REQUEST
Route review required — REQ-00001
You are in Approval team – Route — Europe. The team is flat: any member can decide the route for the team, and the first decision closes it for everyone else. Choosing "More info needed" leaves the request at route review and names the team member who will chase what is missing.
Audience
Role pool — Approval team – Route, for the owning business unit
Security role 'Approval team – Route' ∩ seco_request.owningbusinessunit. A flat team with no leader: any member decides for the team, and the first decision closes it for the pool (D-04, D-06).
Resolved for this record: Pool · Approval team – Route — Europe
Payload fields and source column
Escalation
3 working days without a decision: repost to the team. 5 working days: escalate one level up the business-unit hierarchy.
Suppression
Never digested — it holds the request at route review. Once any team member decides, the pending card is withdrawn for everyone else.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 33 characters
Payload file: src/services/notifications/cards/N-02.json
N-03
The route decision names the delivery route
REQUEST
Resource review required — REQ-00001
You are in Approval team – Resources — Europe. Route review has already decided the route; this team decides who does the work and what equipment is needed. The team is flat — any member can decide for the team.
Audience
Role pool — Approval team – Resources (Tooling led / Solution led) or Approval team – Resources (Application Engineering), whichever the decided route names
Security role 'Approval team – Resources (Tooling led / Solution led)' where the decided route is tooling-led or solution-led, otherwise 'Approval team – Resources (Application Engineering)', ∩ seco_request.seco_engineeringgroup. Route review always comes first, so this card cannot fire before the route decision is recorded.
Resolved for this record: Pool · Approval team – Resources — Europe
Payload fields and source column
Escalation
3 working days: repost to the team. 5 working days: escalate one level up the business-unit hierarchy.
Suppression
Never digested. Withdrawn for the team on the first decision.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 36 characters
Payload file: src/services/notifications/cards/N-03.json
N-04
The route decision sends the request back to sales
Back to sales — REQ-00001
Audience
Individual — The person who raised the request, personally
seco_request.seco_requestedby → systemuser. A 1:1 Teams chat, never a channel: the outcome carries a reason and the reason belongs to the person who raised it.
Resolved for this record: Helena Marsden (chat)
Payload fields and source column
Escalation
None.
Suppression
One card per outcome. Cannot be opted down — it is the answer to a question the person asked.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 4 facts · 1 action · title 0 characters
Payload file: src/services/notifications/cards/N-04.json
N-05
Request qualified and a seco_project created
Project created — Not yet created
From request REQ-00001.
Audience
Record owner — Person who raised the request, and the assigned project lead
seco_request.seco_requestedby + seco_project.ownerusr. Two 1:1 chats, not a channel: both are named on the record.
Resolved for this record: Ruth Pennington (record owner)
Payload fields and source column
Escalation
None.
Suppression
One per project. Never repeated.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 0 characters
Payload file: src/services/notifications/cards/N-05.json
N-06
A seco_action is assigned to a person
Action assigned — Not yet created
No open action on this record
Audience
Individual — The assignee, personally
seco_action.ownerusr → systemuser. 1:1 chat.
Resolved for this record: Ruth Pennington (chat)
Payload fields and source column
Escalation
None.
Suppression
The highest-volume card by far, so it is digested by default: one 08:00 local card listing the day's assignments, at most 10 lines with a count for the remainder. Users may opt up to immediate.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 4 facts · 2 actions · title 33 characters
Payload file: src/services/notifications/cards/N-06.json
N-07
Due date passed and the action is still open
Action overdue — Not yet created
No open action on this record is 0 days overdue.
Audience
Individual — The assignee; the project lead is added on the second escalation
seco_action.ownerusr, then seco_action.seco_project.ownerusr on escalation. Never a channel — an overdue action is not a public shaming.
Resolved for this record: Ruth Pennington (chat)
Payload fields and source column
Escalation
Day 1 overdue: immediate card to the assignee. Day 5: second card, project lead added (threshold open item `08 §7.3`). Thereafter it appears in the lead's weekly digest only.
Suppression
One immediate card per action per escalation step. Never a daily repeat — a repeated overdue card is the fastest route to muting.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 0 characters
Payload file: src/services/notifications/cards/N-07.json
N-08
A project moves stage on the spine
PROJECT
Stage advanced — Not yet created
For information. No action is expected from this card.
Audience
Team channel — Project team channel
seco_project.ownerteam → the mapped Teams channel.
Resolved for this record: Teams channel · Europe — Assessment & qualification
Payload fields and source column
Escalation
None.
Suppression
Digested to one channel post per day listing every stage move, ordered by project. Immediate only for the move into Agreement and the move into Closed.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 6 facts · 1 action · title 32 characters
Payload file: src/services/notifications/cards/N-08.json
N-09
A seco_agreement is recorded against the project
Agreement signed — Not yet created
Delivery begins once the plan is baselined.
Audience
Team channel — Project team channel and the sales owner
seco_project.ownerteam channel + seco_project.seco_salesowner 1:1. Agreement value is permitted: it is the customer's own committed figure, not an internal rate.
Resolved for this record: Teams channel · Europe — Assessment & qualification
Payload fields and source column
Escalation
None.
Suppression
One per agreement. Amendments post a new card only when the value changes.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 0 characters
Payload file: src/services/notifications/cards/N-09.json
N-10
Feedback submitted and the project closed
Project closed — Not yet created
Halbrook Engineering Ltd — titanium bracket cell
No closure figures recorded for this record.
Close the opportunity in Dynamics 365.
Recorded in EPMS. Dynamics 365 is not updated automatically — close the opportunity there.
Opportunity reference: NSP-20250
Audience
Record owner — Sales owner personally, plus a wider commercial channel (audience to confirm)
seco_project.seco_salesowner → 1:1 chat, plus a wider commercial channel (audience to confirm). Both are entitled to total cost and total hours; if that audience ever widens, those two facts come off the card (`08 §5`).
Resolved for this record: Helena Marsden (record owner) + channel
Payload fields and source column
Escalation
No response to the Dynamics 365 action within 10 working days: one reminder to the sales owner. Nothing is written to the CRM automatically (D-03).
Suppression
Never digested, never suppressible. This card stands in for a CRM write, so losing it loses the value record.
Confidentiality: no cost rate, charge rate, margin or internal cost.
total cost and total hours permitted here because the audience is the sales owner and the BD channel (08 §5).
Schema 1.4 · 9 facts · 2 actions · title 32 characters
Payload file: src/services/notifications/cards/N-10.json
N-11
The closure lifecycle deactivated external accounts
External access closed — Not yet created
Deactivation is not deletion. The records and the audit trail stay, and access can be reinstated.
Audience
Record owner — Project lead, informational
seco_project.ownerusr → 1:1 chat.
Resolved for this record: Ruth Pennington (record owner)
Payload fields and source column
Escalation
None.
Suppression
Digested with the lead's other informational cards. Opt-down permitted to weekly.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 40 characters
Payload file: src/services/notifications/cards/N-11.json
N-12
A record's sync state moves to Failed
INTEGRATION
Sync failed — REQ-00001
The record is unchanged in EPMS. Nothing was written to Dynamics 365.
Audience
Team channel — Platform support channel
Fixed channel from configuration, not from the record. A technical audience — no customer or commercial detail on this card.
Resolved for this record: Teams channel · Platform support
Payload fields and source column
Escalation
First failure: immediate. Same object failing repeatedly: collapsed into one card per object per day with an attempt count, so a broken connector cannot flood the channel.
Suppression
Deduplicated on object + reference + error within 24 hours. A resolved sync posts nothing — silence is success.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 6 facts · 2 actions · title 0 characters
Payload file: src/services/notifications/cards/N-12.json
N-13
A seco_opportunityintake row is created by a customer
ENQUIRY
Enquiry received — Halbrook Engineering Ltd
Approval team – Route will triage this. The account's sales owner is copied for awareness.
Audience
Record owner — Sales owner for the account, plus the Approval team – Route channel
account.ownerid → 1:1 chat, plus the Approval team – Route channel. Check channel membership before posting customer names (`08 §5`).
Resolved for this record: Helena Marsden (record owner) + channel
Payload fields and source column
Escalation
Untriaged after 1 working day: repost to the Approval team – Route channel.
Suppression
One per enquiry. Cannot be opted down by the sales owner — it is inbound customer demand.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 43 characters
Payload file: src/services/notifications/cards/N-13.json
N-14
Delivery complete and no feedback recorded after n days
Feedback outstanding — Not yet created
The project cannot close until feedback is recorded. Ask the customer.
Audience
Record owner — Project lead first, then the person who raised the request
seco_project.ownerusr, then seco_request.seco_requestedby on the second pass (D-24, R-09).
Resolved for this record: Ruth Pennington (record owner)
Payload fields and source column
Escalation
Day 7 after completion: project lead. Day 14: the person who raised the request is added. Day 21: weekly only. Thresholds are an open item (`08 §7.3`).
Suppression
Weekly digest after the second pass. It never stops, because feedback is the mandatory closure gate.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 2 actions · title 0 characters
Payload file: src/services/notifications/cards/N-14.json
Fourteen card types across 150 users produces fatigue, then muting, which is worse than email. The full policy is in docs/notifications/CATALOGUE.md. In summary:
Opting down, never out: any user may move an informational card from immediate to daily, or from daily to weekly. Decisions addressed to them personally — N-02, N-03, N-04, N-07 and N-10 — cannot be turned off, because turning them off stops the work.