Script for showing and testing the new Elevate Yes/No intake path, config-driven people, assignment emails, and the 1-business-day SLA. Use production. Follow the scenarios in order; write down tracking numbers as you go.
Environment: CVG production · Site: Command Center Submittal Form (Live) · Org: citiri-cvg.my.salesforce.com
★Quick links
Report an Impact Guest
Public intake. Open in a private/incognito window so you are a real guest.
Do not use pre-V2 sample rows for routing assertions. REQ-0070–0075 were created before the Elevate flag existed, so Elevate_Program_Related__c is blank on them. Use the two new guest submissions from Scenarios A and B.
1Configuration — show this first Config · Demo
V2 people and SLA live on custom objects so Citiri can change them without a deploy. Custom metadata still holds the Elevate CVG Project Id and the org-wide from-address.
Open the Default routing record. Name must be Default and Active must be checked — Apex loads this row by name.
Under Assignment, confirm Elevate Assignee is Michael Metz (active CCPL, not the inactive Metz user).
Confirm Ops Queue Developer Name is blank. Request is not queue-enabled in this org, so Owner stays the guest default owner; ops still get email and work the board.
Under SLA, confirm SLA Enabled, SLA Business Days = 1, SLA Status Value = New, and both include-assignee / include-ops flags are checked.
People related list
On the same Default record, open the related Command Center Routing People. Each row is one User plus notify flags.
Metz is not a people-row for Elevate assign — he is the Elevate Assignee lookup on Default. That is intentional so swapping the Elevate owner is one field change.
Program Id + from-address (CMDT)
Open Custom Metadata Type records and find Command Center Config → Phase_1A.
Confirm Program Id is Elevate CVG and Org-Wide Email Address is orat@cvgairport.com.
Expected: you can explain the whole dispatch table from this one Default record + related people, without opening Apex. Changing a User lookup here is how CVG would replace Lisa or Metz later.
Expected on the record: Elevate Program Related = Yes; Project = Elevate CVG; Assignee = Michael Metz; Status = New; record type Construction Impact. Reporter got a confirmation email. Adam and Lisa got “New work request.” Metz got “Work request assigned.”
Submit a second report with the same location/type, but Elevate = No.
Confirmation copy should say “CVG has your report” (not Elevate CVG).
Write down tracking number + email — this is Request B.
Open Request B in Salesforce.
Expected on the record: Elevate = No; Project is blank (not Elevate CVG); Assignee is blank; Owner is still the guest default owner (Request is not queueable). Reporter confirmation still sends. Adam and Lisa still get create mail. Alonzo and Kenza get the ops “not Elevate” mail. Metz does not get an assignment email for this row.
Queue fallback:Ops_Queue_DeveloperName__c is blank on purpose. Show that on Default if someone asks why Owner is not a queue.
Expected URLs in every V2 mail (HTML buttons and plain text):
Tracker: https://citiri-cvg.my.site.com/command/tracker
Record: https://citiri-cvg.my.salesforce.com/lightning/r/CITIRI__Request__c/{Id}/view
Tenants without a Salesforce user still use the tracker (tracking number + the email they submitted). Open request is for staff / CCPL.
Flow must be Active. Search Flows for Command Center Assignee Changed. If it is Draft, Activate it before this scenario, then change Assignee on a request that already exists (not the create itself — create-time Metz mail is separate so this Flow does not double-send).
Look up Request A with the tracking number and the email you submitted.
Try the same tracking number with the wrong email.
Expected: matching lookup shows status (and PMO response if you entered one). Wrong email returns not-found. V2 did not change tracker security — still no guest list of all requests.
SLA is assignee-agnostic: any Construction Impact still New after 1 org business day (America/New_York) gets one reminder, then SLA_Reminder_Sent__c is stamped.
Find job Command Center SLA. Cron is 0 0 8 * * ?, timezone America/New_York, next fire 08:00 Eastern. Class is CommandCenterSlaScheduler.
On Default routing, point at SLA Enabled / 1 business day / status New.
Leave Request A in New if you want it to be a real SLA candidate tomorrow morning (or move it to Under Review if you do not want mail tomorrow).
Recipients when it fires: Adam + Lisa (SLA flags) plus current Assignee if set (Metz on a Yes row).
Do not run CommandCenterSlaScheduler.processDue() in Execute Anonymous during a live demo unless you intend to email SLA for every Construction Impact that is still New and older than one business day (including pre-V2 REQ-0070 / 0071 / 0072). The job stamps those rows so they will not get a second reminder.
Expected to show: the clock is config + Business Hours, not hardcoded “if Metz skip SLA.” Path does not turn SLA off.
Show that replacing Metz is editing Elevate Assignee on Default (active-user lookup filter).
Show that adding a reviewer is a new Routing Person with Notify on Create (and SLA if needed).
Show that turning SLA off is unchecking SLA Enabled — no Apex change.
Put the seeded values back before leaving the demo (Metz, Adam/Lisa create+SLA, Alonzo/Kenza ops, SLA Enabled = true, 1 day).
Expected: stakeholders see that dispatch is data, not a code release. User Ids are not in Apex classes.
Out of scope for this walkthrough: Hexagon / HxGN work orders, SMS, extra tenant status emails, and making Request queue-owned. After Citiri triage, CVG still files the work request on their portal.