Every DOJ alert & notification
This gallery renders every alert the DOJ system shows, with realistic mock data filled into the
dynamic fields (names, amounts, case numbers). Template wording is exact —
review it here and tell me what to change. Each card shows the real message plus a caption stating
what triggers it and the source file.
Where alerts appear
In-city toasts — the small themed pop-ups (top-right) fired by
cw.notify from the DOJ terminal, printer, filing cabinet, City Services
window, security lockout, and the police tablet. Only shown to a player who is online.
Web / App bell notifications — the 🔔 inbox on the DOJ website and
the phone DOJ app. Driven by the messages / message_recipients
tables; most also send a phone email (and sometimes an SMS pointer)
so they reach citizens who are offline.
Type / colour legend
success = green — an action completed
error = red — failed / denied / blocked
warning = amber — caution / returned for fix
info = blue — informational (the DOJ bell channel maps to inform)
Note: in-game the toast type is chosen by the code (shown faithfully below). Web bell notifications are all rendered identically in the real inbox (a gold "unread" dot); the colours below are added only for this review to convey each message's sentiment.
1 · In-city toasts cw.notify → themed toast
Fired in-world from the DOJ terminal, printer, filing cabinet, City Services ped, lockout system, and police tablet.
Terminal security & lockout
🚨SECURITY ALERT
SECURITY ALERT — terminal cityhall_02 has been locked.
Trigger: a different character opens a terminal already bound to someone else (tamper). Shown to any IT staff online in-game. server/lockout.lua:65
🔔SECURITY ALERT
Intrusion detected on terminal cityhall_02 — locked.
Trigger: same tamper event — the durable copy sent to every IT account's bell/email (urgency urgent). server/lockout.lua:60 → Notify
🛠️IT Assistance Requested
Marcus Vance is requesting IT at locked terminal cityhall_02.
Trigger: a locked-out player presses "Request IT assistance" on the lock screen. Paged to every IT account. server/lockout.lua:113
✅Diagnostics complete — terminal restored.
(shown to the IT tech who ran the fix)
Trigger: IT staff completes the ox_target "fix" on a locked terminal. server/lockout.lua:153 → client/lockout.lua:20
🔧Terminal restored
Terminal cityhall_02 has been repaired and is back online.
Trigger: after an IT fix — sent to every clerk / master_clerk bell + email. server/lockout.lua:149 → Notify
⛔This terminal is not locked, or you are not IT staff.
Trigger: a non-IT player (or a bad target) tries to run the terminal fix. client/lockout.lua:10
Trigger: IT tech backs out of the fix confirmation. client/lockout.lua:22
🎫IT Work Ticket
Harmony Reed (555-0148) filed an IT ticket: My DOJ login is locked and IT is offline.
Trigger: a citizen submits an IT work ticket at the City Services window. Sent to every IT account (urgent). server/cityservices.lua:526 → Notify
📨Your IT work ticket has been filed — IT services have been notified.
Trigger: confirmation to the citizen who filed the IT ticket. server/cityservices.lua:529
⚑ Possible gap — the locked-out victim is never told.
On a tamper trip the bound player's token is silently invalidated (server/lockout.lua:54) but they get no proactive toast/email — they only discover the lock the next time they try to log in. Consider a "Your DOJ session was locked for security" notice.
DOJ printer (clerks)
🖨️Warranty Deed DEED-2026-0042 printed — hand it to the parties to sign.
Trigger: clerk prints a queued legal document original at the printer. client/printer.lua:8
Trigger: clerk prints a queued credential (ID / license) into their own hand. client/printer.lua:89
📥Marriage Certificate marked ready for citizen pickup.
Trigger: clerk marks a document/credential "print for pickup" for citizen self-collection. client/printer.lua:19 / :99
📄Certified Copy — Warranty Deed issued — check your inventory.
Trigger: a paid certified reprint is produced at the printer. client/printer.lua:167
🗂️No documents are queued to print.
Trigger: clerk opens the printer's document queue and it's empty. client/printer.lua:33
🗂️No certificates or licenses are queued to print.
Trigger: clerk opens the credentials queue and it's empty. client/printer.lua:112
🗂️You have no completed documents to reprint.
Trigger: clerk opens Certified Reprint with nothing eligible. client/printer.lua:180
Trigger: a print action fails server-side (fallback message). Siblings: "Reprint failed.", "Could not mark that ready for pickup.", "Could not reach the printer." client/printer.lua:10 / :169 / :21 / :29
Filing cabinet, records library & signing
✍️Document fully executed and filed with the DOJ.
Trigger: the last required signer signs on the in-game sign NUI — the document auto-completes. client/sign.lua:38
📃This document is unreadable.
Trigger: the sign NUI receives a corrupt / undecodable document payload. Sibling: "Could not open the document." client/sign.lua:19 / :8
Trigger: a clerk opens an empty DOJ filing cabinet. client/cabinet.lua:49
🗃️Ask a clerk — or check Documents & Invoices at the City Services window.
Trigger: a non-clerk citizen interacts with the cabinet. client/cabinet.lua:78
⛔could not open that document
Trigger: cabinet fails to load a specific filed document (fallback). Sibling: "could not open the cabinet". client/cabinet.lua:10 / :45
🗑️Case CR-2026-0311 has been expunged.
Trigger: a clerk executes an expungement order at the shredder in the Permanent Records Library. server/permrecords.lua:172
Trigger: clerk backs out of the shred confirmation. client/permrecords.lua:87
📁No cases are under an active expungement order.
Trigger: clerk opens the shredder with nothing queued for expungement. Sibling (error): "You are not authorized here." client/permrecords.lua:94 / :93
🚫Only documents and credentials may be stored here.
Trigger: a player tries to store a disallowed item in a DOJ locker. server/locker_hook.lua:24
City Services window (citizen-facing)
📤Your filing has been submitted to the Clerk's office.
Trigger: citizen submits a form at the window (no clerk on duty). On-duty variant: "A clerk is on duty — your filing was sent to the Clerk's office for review." server/cityservices.lua:124 / :121
🧾Your certified-copy request has been sent to the Clerk's office for printing.
Trigger: citizen requests a certified copy at the window. server/cityservices.lua:235
🆔Your first Basic ID (8U51K657B) is free of charge — it has been filed with a clerk to print. Check "My Documents — Pickup" at City Services once it is printed.
Trigger: citizen requests their first-ever Basic ID (free). server/cityservices.lua:362
🆔Basic ID requested — invoice INV-26-000731 ($250). Pay it via /invoices to have your card issued.
Trigger: citizen requests a Basic ID after having held one before (paid). server/cityservices.lua:385
♻️Replacement queued for the Clerk — invoice INV-26-000732 ($300). Pay via /invoices; a clerk will print it — check "My Documents — Pickup" for it once it is filed.
Trigger: citizen requests a replacement of an already-issued credential. server/cityservices.lua:439
📝New Driver's License applications require a form, and a completed DMV written + road test (see the DMV instructor). File it at any DOJ terminal or the phone DOJ app under Licensing — City Services cannot start it here.
Trigger: citizen asks for a brand-new license (non-Basic-ID) at the window. server/cityservices.lua:455
🏗️Contractor request filed — the Clerk's office and contractors have been notified.
Trigger: a property owner files a contractor/work request at the window. server/cityservices.lua:190
📐Permit requested — pay the invoice with /invoices.
Trigger: a property owner requests a building / door-move permit at the window. client/cityservices.lua:104
📧Your message has been sent to the DOJ Notifications inbox of the selected official(s).
Trigger: citizen uses "Contact DOJ Officials" at the window. server/cityservices.lua:751
🎓Registered — code 7KQ4M2PX emailed to you. Pay invoice INV-26-000740 ($2,500) here at the window, then use any DOJ terminal.
Trigger: citizen registers for the Bar or a professional exam at the window. server/cityservices.lua:605 / :685
📍you are not at a City Services desk
Trigger: anti-exploit distance gate — any window callback invoked from too far away. server/cityservices.lua (requireNearby)
🚫No forms are available for public filing right now.
Trigger: citizen opens "Submit a Form" but no citizen-submittable templates are active. client/cityservices.lua:188
DOJ Notify → citizen (bell + phone email; toast when online)
These go through exports.crestwood_doj:Notify — every one lands as a phone email and a website bell notification; if the citizen is online it also shows as a blue inform toast.
🆔Basic ID filed
Your Basic ID (8U51K657B) has been filed with a clerk to print. Check "My Documents — Pickup" at the City Services window once it has been printed.
Trigger: a credential is queued for a clerk (first ID, paid ID, or replacement). server/cityservices.lua:343
🎓Bar Examination Registered
Your examination code is 7KQ4M2PX. Invoice INV-26-000740 ($2,500) has been issued.
Pay the invoice here at the city service window, then take this code to any DOJ terminal and open the Bar & Examinations page to begin.
Trigger: Bar / professional exam registration at the window. server/cityservices.lua:599 / :679
💳Examination Fee Paid
Your Bar Examination fee is paid. Visit a DOJ terminal and open Bar & Examinations to begin — no code needed.
Trigger: the exam-fee invoice is paid (auto-activates the code). server/exams_bridge.lua:24
🏗️Contractor request
Harmony Reed needs work done at 12 Vespucci Blvd: Kitchen remodel — replace cabinets and lighting.
Trigger: a contractor request — sent to every online contractor/realtor. Also a plain toast: "New contractor request at 12 Vespucci Blvd." server/cityservices.lua:181 / :183
🗑️Expungement executed
Expungement executed for CR-2026-0311 by Clerk Dana Whitlock.
Trigger: a clerk shreds a case — notifies master_clerk and the ordering judge. server/permrecords.lua:160 / :167
DOJ Notify → clerks (new-work pings)
📥New filing awaiting review
Harmony Reed filed a Name Change Petition (submission #128).
Trigger: a citizen submits a form at the window. server/cityservices.lua:116
🧾Certified copy requested
Harmony Reed requested a certified copy of Marriage Certificate (MAR-2026-0087). It is in the print queue.
Trigger: certified-copy request filed at the window. server/cityservices.lua:226
🆔Free Basic ID queued
Harmony Reed's first Basic ID (8U51K657B) is queued to print — no charge.
Trigger: first-ID / paid-ID / replacement queued. Siblings: "Paid Basic ID queued", "Replacement credential queued". server/cityservices.lua:361 / :404 / :436
🏠New purchase closing to print: 12 Vespucci Blvd.
(in-game toast to any clerk online)
Trigger: a buyer/tenant files a property offer — clerks get this toast + a durable bell message (see §2). server/closings.lua:66
Police tablet (crestwood_mdt)
💵You were fined $1,250.
(shown to the cited citizen if online)
Trigger: an officer issues a citation/fine from the MDT. server/main.lua:457
🆘Panic sent — Officer Down broadcast.
Trigger: officer hits the MDT panic button. client/main.lua:169
👮You must be an on-duty officer to use the police tablet.
Trigger: a non-LEO / off-duty player opens the tablet. Server sibling: "Only on-duty officers can use this device." client/main.lua:36 · server/main.lua:26
🔍Could not identify suspect.
Trigger: a person lookup on the tablet resolves nobody. client/main.lua:191
Trigger: a DOJ/EMS/lawyer job opens the tablet (their MDT isn't built yet). Siblings: "EMS MDT is coming soon.", "Law firm MDT is coming soon.", "No MDT for your current job." client/main.lua:74–85
2 · Web / App bell notifications 🔔 inbox + phone email
Inserted into messages / message_recipients by the API's
v2_notify_* helpers. Shown in the website 🔔 panel & dashboard "DOJ Notifications",
and (for citizens) mailed to the phone. Unread shows as "📨 New message: Subject".
Cases & counsel
⚖️Notice of Appointment
You have been entered as counsel of record (defense) on case CR-2026-0311 by Clerk Dana Whitlock.
Trigger: a clerk enters an attorney as counsel of record. Sent to that attorney's account. api/cases_api.php:357
🧑⚖️Public Defender Request DR-57
Citizen Harmony Reed has requested appointed counsel (reference DR-57). Please review the request in the defense queue.
Trigger: a citizen requests a public defender — sent to the District Attorney role. api/cases_api.php:435
🧑⚖️Notice of Appointment
You have been appointed defense counsel for Harmony Reed (reference DR-57) on case CR-2026-0311.
Trigger: a public defender is appointed to a request — sent to the appointed attorney. api/cases_api.php:503
✅Counsel Appointed
Counsel has been appointed to represent you (reference DR-57). Alex Marlowe will be in contact regarding your matter.
Trigger: same appointment — the notice to the citizen. api/cases_api.php:506
🤝Retention Accepted
Your retention request has been accepted by Cole Law Office. A member of the firm will contact you to open your client file.
Trigger: a law firm accepts a citizen's retention/lead request. api/cases_api.php:551
Filings (clerk review)
📗Filing Accepted
Filing MAR-2026-0087 has been accepted and entered into the registry. A copy has been queued at the Department print desk for collection.
Trigger: a clerk approves a pending filing submission. api/filings.php:274
↩️Filing Returned — Action Required
Your Name Change Petition submission has been reviewed and returned by the Office of the Clerk. Clerk's note: Missing witness signature. You may correct and resubmit at a City Services window.
Trigger: a clerk rejects a pending filing. api/filings.php:202
Licensing division
📜License Issued
Your Weapons License (5H2K9QT4A) has been issued and is available for collection at the Department print desk.
Trigger: a licensing application clears its background check + waiting period and is issued. api/licensing.php:334
🚫License Application Denied
Your application for a Weapons License has been denied following a records review. Note: Active warrant on file.
Trigger: a licensing officer denies an application on review. api/licensing.php:203
🚫License Application Denied
Your application for a Weapons License has been denied: the good-behavior requirement of the waiting period was not met.
Trigger: the applicant picked up a new charge during the waiting period. api/licensing.php:231
Examinations
🎉Bar Examination — PASSED
Congratulations! You passed the Bar Examination with a score of 88% (44/50).
Trigger: a candidate passes an official exam sitting (emailed + mirrored to the bell). api/exams.php:130 / :142
📕Bar Examination — Not Passed
You did not pass the Bar Examination (score 58%, 29/50). You may register again after the retake waiting period.
Trigger: a candidate fails an official exam sitting. api/exams.php:136 / :142
🏛️Bar Examination Passed
Harmony Reed has passed the CrestWood Bar Examination with a score of 88%.
Trigger: same pass — the notice to the master_clerk (Bar Examiners). api/exams.php:157
🚗DMV Written Knowledge Test — PASSED
Congratulations! You passed the DMV Written Knowledge Test with a score of 92% (23/25).
You may now take the driving test — see the DMV instructor. No additional fee is required.
Trigger: a candidate passes the DMV written test (adds the road-test line). api/exams.php:131–133
Court orders & announcements
🗂️Expungement Order — CR-2026-0311
By order of Judge Priya Nandakumar, all records in case CR-2026-0311 are to be expunged. A clerk must attend the Permanent Records Library at the Supreme Court to execute the order.
Trigger: a judge enters an expungement order — sent to the clerk role. A shorter variant goes to master_clerk. api/justice.php:69 / :74
🔁Judge recusal — reassignment needed for CR-2026-0311
Judge Priya Nandakumar has recused from the court session for case CR-2026-0311 (2026-07-22 14:00, Courtroom A). A new judge must be assigned.
Trigger: a judge recuses from a scheduled session — sent to clerk, master_clerk & chief_justice. api/justice.php:151–158
📢ANNOUNCEMENT
Department-wide announcement. Replies are disabled for announcements; the panel tags these with a purple "Announcement" badge.
Trigger: any message whose subject is exactly ANNOUNCEMENT — rendered specially (no reply, purple tag). js/notifications.js:199,239
3 · Court, closings & bail
Court-docket fan-out reaches every party on a case (defendant + linked counsel) via phone email + SMS pointer + bell.
📅Court session scheduled — CR-2026-0311
A court session for case CR-2026-0311 has been scheduled for 2026-07-22 14:00 in Courtroom A. Presiding judge: Judge Priya Nandakumar.
Trigger: a clerk/judge schedules a court session. Sent to all case parties. api/court.php:88 · api/publicinfo.php:198
✅Court date confirmed — CR-2026-0311
Your court date is confirmed. Case CR-2026-0311 will be heard 2026-07-22 14:00 in Courtroom A, presided over by Judge Priya Nandakumar.
Trigger: a scheduled session is confirmed. SMS pointer: "Your court date for CR-2026-0311 is confirmed." api/publicinfo.php:262
🚫Court session cancelled — CR-2026-0311
The court session scheduled for case CR-2026-0311 has been cancelled. A new date will be set separately.
Trigger: a scheduled session is cancelled. SMS pointer: "Your court date for CR-2026-0311 was cancelled." api/publicinfo.php:229
🏠New purchase closing — 12 Vespucci Blvd
Harmony Reed filed a purchase offer on 12 Vespucci Blvd. When ready, print the warranty deed (Property Closings on your dashboard), then have the parties sign it at City Hall.
Trigger: a buyer/tenant files an offer — durable bell message to every clerk role (lease variant swaps in "rental" / "lease agreement"). server/closings.lua:56
💵Bail refund — BL-7F3K9Q
Bail refund BL-7F3K9Q
Trigger: the bail dashboard queues a refund; the engine credits the defendant's bank. note — this is only a bank-transaction memo, not a DOJ alert. server/refund.lua:78
⚑ Missing alerts around enforcement & bail
- Warrant issued — api/mdt.php:218 warrantIssue inserts a warrant but sends the subject no notification. A citizen is never told a warrant exists against them (only visible on a record lookup).
- Bail set / posted — crestwood_bail is a headless engine with no citizen-facing alert when bail is computed, set, or successfully posted. Consider a "Bail set — $X" and "Bail posted — you are released" notice.
- Citation while offline — the "You were fined $X" MDT toast only fires if the citizen is online; there's no bell/email fallback, and it carries no violation detail or citation number.
- No dedicated subpoena / court summons notification type exists — court contact is only the "session scheduled/confirmed/cancelled" trio above.
4 · Wording & consistency notes
Casing / punctuation is inconsistent
Most toasts are sentence-case with a full stop ("Print failed.", "The cabinet is empty."), but several error fallbacks are lowercase with no period — e.g. "could not open that document", "could not open the cabinet" (client/cabinet.lua:10,45) and the gate "you are not at a City Services desk". Recommend normalising to sentence-case + period.
"SECURITY ALERT" is duplicated
On a lockout the online IT toast ("SECURITY ALERT — terminal X has been locked.") and the bell/email ("Intrusion detected on terminal X — locked.") both carry the title SECURITY ALERT with slightly different bodies. Not wrong, but reads as two alerts for one event — worth aligning the wording.
Onboarding email vs. reality
The welcome email ("Welcome to CrestWood — Getting Started", server/onboarding.lua:47) tells players to set their passcode at a terminal and warns about the terminal lockout — good. But the dashboard mirror says "Check your phone email for the getting-started guide." while the code comments note the setup code itself is no longer emailed. Confirm the guide copy still matches the in-person flow.
Two identical "License Application Denied" subjects
A records-review denial and a waiting-period (good-behavior) denial share the exact subject "License Application Denied" (api/licensing.php:204,232). The bodies differ, but a distinct subject for the waiting-period case would read more clearly in the inbox.
Faithful review copy — every message above is the real template text from the sources cited, with mock data in dynamic fields only.