SFO Resource Tracker — Production Walkthrough

End-to-end walkthrough in the SFO production org. Contractors receive an automated intake email, submit their resource plan on the public Stakeholder Portal, and CAS and Document Control are notified right away. CAS then reviews and locks the plan in Salesforce, and leadership tracks progress and variance on the dashboards.

Working session on production data The three projects below are the walkthrough set. G7 already has submissions, which is why it shows variance. Walkthrough data will be cleared before go-live, and live contractor submissions will then flow into the same production dashboards. Every email is sent from demo@citiri.com, the organization-wide address with verified DKIM.
Intake email (3rd Friday)→ Contractor submits→ CAS & Document Control notified→ Reminder (4th Friday)→ CAS review & lock→ Dashboards & variance
Start here

Walkthrough projects and direct links

Each project has an internal record link (requires a Salesforce login) and a project-specific guest link (no login). Guest links are single-project and expire 90 days after they are generated. These links were generated on Sep 29, 2026 and are valid until about Dec 28, 2026.

Boarding Area G Gate Enhancements G7 Has variance data

Primary walkthrough project. Existing submissions produced variance on six metrics (see the Variance section).

Airport Electrical Power Capacity Upgrade Study

Clean project. Use it to demonstrate a first-time submission, which sets the baseline with no variance.

Airport Wide Safety and Security Improvements Phase 1

Clean project. Use it to show the Missing Submission report before and after a submit.

Internal entry points

Internal users need the SFO Resource Tracker Internal permission set. Lock and unlock require SFO Resource Tracker CAS. Older guest links from earlier sessions still work until they expire, but use the links above.

Step 1

Which emails are sent, to whom, and when

There are three automated emails. All of them come from demo@citiri.com, the organization-wide address. Check that the From line shows demo@citiri.com and that the message isn't flagged in the recipient's spam folder. That confirms DKIM signing is working.

EmailTriggerToCCWhat it contains
Resource Plan Intake Request
template
Automatic, 3rd Friday of each month, 6:00 AM Pacific. Opens the new cycle and unlocks locked months in the guest window. Contractor Stakeholder primary and secondary contacts, plus project-role users with role type Commissioning Manager or Construction Manager. cas.documentcontrol@sfoconsultant.com Project name, the month being requested, and a fresh 90-day guest intake link.
Resource Plan Intake Reminder
template
Automatic, 4th Friday, 6:00 AM Pacific. Sent only for projects whose cycle is still Not started or In progress. Same contractor recipients as the intake request. cas.documentcontrol@sfoconsultant.com "Reminder:" subject, project name, month label, and a fresh intake link.
Resource Plan Submission Notice
template
Immediately, when a contractor clicks Submit on the guest page. The project's SFO Project Manager, PDP Construction Manager, PDP Cx Manager, and Commissioning Coordinator; additional SFO PM contacts; and cas.documentcontrol@sfoconsultant.com. — Project name, submitter name, the months submitted, and a direct link to the Salesforce project record.
What to expect during the walkthrough
  • The three walkthrough projects have no Contractor Stakeholder or CAS contacts filled in, so the automated run skips the contractor emails for them. On a guest submit, only Document Control receives the Submission Notice.
  • To show the emails to the team, use the limited send script. It sends the real templates to the six named people only.
  • To see the real routing, fill in the Contractor Stakeholder (primary/secondary contacts) and the SFO PM / PDP fields on a project, then submit from its guest link.
Step 2

Contractor submits from the public site

The contractor opens the link from the intake email (or one of the guest buttons above). No Salesforce login is needed. They enter their contact details and plan weekly resources for the rolling window, one month tab at a time. Then they certify that their ACS worksheet is current and submit.

What you should see
  • Month tabs with a status for each month: Draft, Submitted, or Locked.
  • A weekly grid with nine metrics. All are whole numbers ≥ 0, except Wayfinding Support, which is 0–3.
  • A required Access Control (ACS worksheet) checkbox before Submit.
  • After CAS locks the plan, the guest page is read-only and shows a lock message.
Try this
  • On Electrical, submit a first set of values. This is the baseline, so no variance is recorded.
  • On G7, change a few values that were already submitted and submit again. A variance row is recorded for each changed week and metric.
  • Use a real mailbox you can check as the submitter email. Document Control will receive the Submission Notice within a minute.
Step 3

CAS reviews, locks, and unlocks in Salesforce

Open the project record, or the internal Resource Plan Intake page, and select the project. The internal view shows the previous month, the current month, and the months ahead, so CAS can check the numbers against the ACS worksheet.

What you should see
  • Copy Intake Link and Email Intake Link buttons, shown only in internal views (project page and internal intake page). Copy creates a fresh 90-day guest link; Email sends the Intake Request to the project's contractor recipients.
  • Lock works at any time, even before the contractor has submitted. A "Lock this resource plan?" confirmation appears first. After you confirm, intake closes for the rest of the cycle, submitted months are marked approved, and unsubmitted months stay blank.
  • Unlock requires a reason, which is saved for audit. After unlocking, the contractor can edit and resubmit through the same link.
Try this
  • Open G7, click Lock, and confirm. Refresh the G7 guest link and confirm the month is now read-only.
  • Unlock with a reason such as "Correct week 3 ASO trips", then edit and resubmit from the guest link.
  • Click Copy Intake Link and paste the URL in a private browser window to prove it works without a login.
Step 4

Dashboards and reports that show progress

Each chart covers one activity type, so trips, inspections, and tests are never added together. Dashboards refresh when opened. Click Refresh after a live submission to pick up new values.

Dashboard / reportUse it to answer
Resource Tracker Dashboard — 18-Month Lookahead What demand is planned across the full rolling window, by metric and project?
Resource Tracker Dashboard — 6-Week Lookahead What is coming in the next six weeks? Use this for staffing and scheduling.
Resource Tracker Dashboard — 3-Week Lookahead What is happening in the next three weeks? Use this in the weekly coordination meeting.
Projects Missing Resource Submission Which projects haven't submitted this cycle? It's grouped by cycle status, and it's who to chase before the 4th-Friday reminder.
ASO Trips Matrix by Project ASO trips per project per week, laid out as a matrix. Export it to Excel for distribution.
Step 5

Variance: what changed between submissions

Variance shows how much a contractor's forecast moved between submissions. The first value saved for a given week and metric is the baseline, and no variance is recorded for it. Each later submission that changes that week's value records one variance row:

Variance = New Value − Prior Value

  • Positive variance means the forecast increased (more trips, inspections, or tests than previously planned).
  • Negative variance means the forecast decreased or work was pushed out.
  • Zero net can still mean movement. For example, +2 one week and −2 another week nets to 0 but shows two rows. Look at the row count, not just the sum.
  • Each row records the project, metric, month number, week, prior value, new value, and submitted date.

The nine metrics

MetricWhat the contractor enters per weekAllowed values
ASO TripsNumber of ASO trips the work will needwhole number ≥ 0
BICE Inspections — MechanicalNumber of BICE mechanical inspectionswhole number ≥ 0
BICE Inspections — ElectricalNumber of BICE electrical inspectionswhole number ≥ 0
BICE Inspections — PlumbingNumber of BICE plumbing inspectionswhole number ≥ 0
RR & Network LivesNumber of RR / network go-liveswhole number ≥ 0
SFFD InspectionsNumber of SFFD inspectionswhole number ≥ 0
Boundary ChangesNumber of boundary changeswhole number ≥ 0
FIT TestsNumber of FIT testswhole number ≥ 0
Wayfinding SupportLevel of wayfinding support needed (sliding scale; higher means more support)0–3

G7 variance in production today

MetricChanged weeksNet varianceHow to read it
ASO Trips6+8Six weeks were revised, and the net is 8 more trips than first planned.
BICE Inspections — Electrical1+3One week gained three inspections.
BICE Inspections — Mechanical1−3One week dropped three inspections.
FIT Tests1−3Three FIT tests were removed or pushed out.
SFFD Inspections20Two weeks moved in opposite directions (rescheduled, net unchanged).
Wayfinding Support1+1The support level went up one step for one week.

Variance dashboard and reports

  • Variance by Project (column chart) shows net variance per project by submitted date. Use it to see which projects' forecasts are least stable.
  • Variance by Metric (line chart) shows net variance per metric by submitted date. Use it to see which resource type is being re-forecast the most.
  • Actuals and Variance Summary shows the sum of prior value, new value, and variance for each project and metric. Use this report for the numbers behind the charts.
Step 6

Automation schedule and production configuration

Verified in production on Sep 29, 2026
  • The scheduled job SFO Resource Plan Monthly is active. It runs daily at 6:00 AM Pacific and has fired 5 times, most recently Sep 28. It acts only on the 3rd and 4th Fridays.
  • The organization-wide address demo@citiri.com is available to all profiles, including the portal guest user. The sender is set in the custom label SFO_ResourceTracker_Sender_Email.
  • The site base URL label is https://sfo-citiri.my.site.com/stakeholder.
  • The three email templates are deployed. A live test send of all three from demo@citiri.com succeeded.
  • Flows: every active flow in the org is a CitiriOS managed flow. The Resource Tracker runs on Apex (schedule and batches), not flows, so no flow activation is needed.
DateWhat happens automatically
Fri Oct 16, 2026 (3rd Friday)The monthly batch runs for every project with a deadline. It unlocks locked months in the guest window, opens a new intake cycle (cycle status: Not started), and emails the Intake Request to each project's contractor recipients, CC Document Control.
Fri Oct 23, 2026 (4th Friday)The reminder batch emails projects whose cycle is still Not started or In progress.
Fri Nov 20 / Nov 27, 2026Next intake and reminder.

Oct 16 is the first automated production cycle, and it emails real contractor contacts on every project with a deadline. Clear the walkthrough data and confirm Contractor Stakeholder contacts before then. Monitor runs in Setup: Scheduled Jobs · Apex Jobs · Organization-Wide Addresses.

Step 7

Limited test-email script

scripts/apex/send-resource-tracker-emails.apex sends the real Intake Request, Reminder, and Submission Notice templates to a fixed list of named recipients only. It never emails contractors, project CAS contacts, or Document Control. The sender is demo@citiri.com. Intake and Reminder emails each contain a fresh, working 90-day guest link for that project.

Default recipients
  • Cathryn Deberry — cathryn.deberry@citiri.com
  • Lynette Gude — lynette@citiri.com
  • Faizan Shaik — faizan.shaik@citiri.com
  • Farhan Shaik — farhan.shaik@citiri.com
  • Ben Wilson — ben.wilson@citiri.com
  • Ivy (Yingyi) Chen — yingyi.chen@citiri.com
Run it
sf apex run --target-org SFO --file scripts/apex/send-resource-tracker-emails.apex

By default it sends 9 emails: 3 projects × 3 email types, each addressed to all six people. To narrow the send, edit the three lists at the top of the script:

List<String> RECIPIENTS  = ...;  // who receives the emails (max 10)
List<Id>     PROJECT_IDS = ...;  // G7, Electrical, Safety
List<String> EMAIL_TYPES = new List<String>{ 'Intake', 'Reminder', 'Submission' };
  • Only G7, all three emails: keep only a3Fiv00000001LLEAY in PROJECT_IDS.
  • Only the reminder: set EMAIL_TYPES to { 'Reminder' }.
  • Only yourself: set RECIPIENTS to your address.

Each run logs a SENT or FAILED line per email, plus a summary. Salesforce allows 10 email sends per run, so the script stops if projects × types exceeds 9. The method behind the script is SFO_ResourcePlanEmailService.sendLimitedEmail, which caps each send at 10 recipients.

Feedback

Capture adjustments for Citiri

  • Email content, subject lines, and recipient routing (contractor vs CAS vs Document Control).
  • Intake and reminder timing: 3rd and 4th Friday at 6:00 AM Pacific.
  • Guest intake UX: month tabs, rolling window, ACS certification.
  • Lock and unlock workflow, and unlock-reason audit needs.
  • Dashboard layout, variance interpretation, subscriptions, and Excel export cadence.
  • Who receives the Internal and CAS permission sets.