CPS Facility Request System — Project Write-up and Effort Estimate

Cincinnati Public Schools · FMX replacement in Salesforce and FormAssembly · Stakeholder: Adam Goeppner · Coverage May 23 – September 11, 2026 · Prepared September 11, 2026
Live in production since July 1, 2026
16weeks, May 23 → Sep 11
12production releases
1,332requests in the system by Sep 1
209legacy FMX bookings migrated
549 hhours of work

1. Task ledger

Every task from the first day of discovery, in date order, with the hours of work each represents. Month subtotals and the running total reconcile to the project total of 549 hours of work.

DesignBuildDataTestingMeetingsDocsFixRework
DateTypeTaskHoursRunning
May 2026 (May 23–31)
May 23DesignDiscovery: FMX field inventory (40 fields, 8 request types, 65 buildings), walk-through of the live FMX form77
May 23DesignSalesforce reconciliation of the existing Facility and Facility Request objects; data model and specification; decision log916
May 23BuildPhase 1 fields and permission set deployed; effective-window formula corrected; functional test 5/5420
May 23BuildConflict-detection flow: flag mode, then block mode (first-come-secures); retest 4/4424
May 23BuildPublic site, guest profile, bookings REST service, Visualforce calendar, iframe embed on form 175 (clickjack and trusted-domain settings)933
May 23BuildApproval form 176 and update connector; approval token flow; email engine in Apex with inline branded templates942
May 23TestingCase-object impact audit (76 flows, 2 triggers, zero coupling)143
May 24TestingConnectors enabled, form published; first end-to-end test failed at the connector and was fixed; full loop proven; approver-capture fields; test recipients set750
May 25DataFMX exports processed; 65 buildings and 2,525 rooms loaded; three-level building → resource type → room cascade built on the form; date and time validation959
May 25–26BuildCalendar requests scoped (school filter, ICS feed, Eastern time); Eastern-time fix deployed362
May 24–31MeetingsWeekly huddle, demo rehearsal, Remaining Work planning summary769
Subtotal, May 20266969
June 2026
Jun 1BuildFormAssembly API approach established; 24-field build on the clone form; school filter authored; approval-email recipients776
Jun 1Data324 additional facilities; Equipment object and 344 records with permission set480
Jun 2MeetingsDemo to CPS, preparation, and post-demo priority agreement686
Jun 6BuildPost-demo sprint: building and room name resolution, school filter deployed, entrance records, ICS feed, form 175 field push with rollback snapshot, 32 conditional-logic rules, connector cluster repair, two validation rules, Lightning record page, pre-go-live cleanup15101
Jun 8DocsGoogle calendar rollout brief for district IT1102
Jun 9BuildBranded Request Received email; status path extended by four stages; organisation fields and required-on-create rule; five checkbox fields converted to Yes/No; calendar tile redesign9111
Jun 10BuildAvailability REST service with CORS and form handoff; request-type and record-type alignment; calendar shows approved and pending; five branded workflow emails; Committee Review rename9120
Jun 10DataHourly rates from three district workbooks on 2,525 rooms; rate and flag fields; quote calculation6126
Jun 10MeetingsWeekly huddle with Adam: requirements capture, rate workbooks, July 1 date; follow-up3129
Jun 11BuildPaid status, payment due, scheduled auto-cancel, payment stamp; workflow-emails flow; Yes/No connector emergency and fix; attachment step; six-digit request number9138
Jun 13–14DataFacility Requester object; 1,225 FMX requesters loaded and deduplicated to 1,2157145
Jun 13BuildReservation Resource junction object, resolver flow and permission set4149
Jun 13DesignFeedback document review and change-request batch #2 scoping4153
Jun 2–30TestingUser acceptance support: test submissions with Adam, defect triage, test-record cleanup, recipient reversion before go-live11164
Jun 23–25MeetingsSenior leadership presentation support; governance meeting and feedback additions4168
Jun 27FixFeedback cleanup (request types, theatre spelling, test data); rooms-not-populating root cause and building-scoped resource-type endpoint7175
Jun 29BuildAttendee auto-calculation, reminder field removed, untyped rooms corrected; June 29 Project Status document6181
Jun 30BuildRecurrence and security fields; principal and athletic-director routing fields, 57 buildings loaded, staff-recipient formula; test addresses removed8189
Jun 30 – Jul 1DocsGo-live readiness checks; Approval Routing Open Items document3192
JunMeetingsWeekly huddles and decision threads through June8200
Subtotal, June 2026131200
July 2026
Jul 1–2TestingGo-live support; first live routing review and note to Adam4204
Jul 8BuildStatus Path component; four fee fields and automatic rental and total formulas; quote email; path reorder; scheduled auto-complete9213
Jul 13–15MeetingsWorking session (70 minutes), transcript, 12-item programme scoped with effort per item9222
Jul 15–16BuildSandbox baseline; Site Review advancement and price override built and validated in sandbox; Batch A production release9231
Jul 13–22BuildRental office users, permission set and app; additional user July 224235
Jul 16–24BuildBatch B built in sandbox: three committee stages, approver configuration setting, daily reminders, Education Center auto-confirm, calendar colour at sign-off15250
Jul 21–24DocsFacilities feedback check-in and huddle; Open Items and Batch B Deployment Plan4254
Jul 25BuildBatch B production release (22 components, 20 tests); 17 failing tests repaired; 36-record backfill; weekend guard; Committee Review removed from path; list-view rights; stuck-record triage; Work Completed document13267
Jul 25–27DataLegacy FMX analysis: 311 rows, 17 collisions, duplicate detection corrected; Items to Resolve document and decision email11278
Jul 27DesignRequester self-edit recommendation; licensing question answered3281
Jul 29FixPrincipal routing gap closed (64 of 64 buildings); Walnut Hills and repeat-event bugs root-caused; huddle and sync7288
Jul 29BuildRecurrence Phase A designed, deployed to production, email previews7295
Jul 29–30BuildRecurrence Phase B design and engine built in sandbox: 24 fields, 8 classes, 40 tests, 7 functional proofs; backfill analysis14309
Jul 30–31FixLaunch Ed room-block levers tested and applied; Findings and Options document4313
Subtotal, July 2026113313
August 2026
Aug 1–2TestingPhase A proven on live submissions; session handoff2315
Aug 3MeetingsFacility Rental meeting (migration scope), SCPA profiling, session note and six migration questions6321
Aug 4TestingSecretary training day support (33 submissions), twin analysis, handoff4325
Aug 5DataMigration rehearsed in sandbox (100 of 101), external id, load file, collision handling; scope narrowed to pending9334
Aug 5DocsSequenced Release Plan; Launch Ed existing-bookings document; SCPA athletic director set; huddle6340
Aug 5BuildMulti-date calendar picker built on the clone form7347
Aug 6TestingCommittee chain observed end to end at SCPA; handoff2349
Aug 11BuildEducation Center approval emails (template, copy to principal, flow)3352
Aug 12DesignEducation Center approval routing build specification3355
Aug 13MeetingsWorking call (60 minutes), ten decisions, FMX resource-type root cause, exceptions file, handoff8363
Aug 14–15FixInverted time windows corrected; room-block correction; handoff4367
Aug 16FixForm 175 session: conditional-logic analysis, picker port to a second clone, connector-failure workbook (57 submissions), blank-resource fix, facility record defects (310 rows)11378
Aug 17FixDate-scoped Launch Ed block (74 records) and closeout; Dynamic Form edit fix and closeout; status note7385
Aug 19FixConnector failures re-investigated (19 of 21 resolved); HVAC records corrected; field history enabled3388
Aug 19BuildRecurrence engine to production with permission set, guards, configuration and rollback plan; engine enabled; list views and series related list; picker live on form 175 (revision 68) with connector remap; runbooks15403
Aug 19DataFirst FMX load: 175 bookings; exceptions file; Questions and How Multi-Date Bookings Work documents9412
Aug 20FixSeries cap defect (52 of 169 dates) diagnosed; handoff4416
Aug 22FixRoom-already-booked complaint: availability check never wired, 471 duplicate room names; build specification4420
Aug 24–25BuildICS feed review, 548-event export, subscription links for 67 schools; handoff4424
Aug 26–27BuildCalendar end times, page into source control; completed events kept on the calendar; closeouts3427
Aug 26–27MeetingsWeekly huddle and sync: calendar feedback, reporting wishes, migration audit3430
AugTestingRegression and verification across four release days; sandbox validations15445
AugMeetingsDecision threads with Jenna, Adam and Shauna between sessions9454
AugReworkEducation Center bypass reversal, form revision churn (61 → 68), sandbox re-baselining13467
AugDocsSession handoffs of August 13, 15 and 207474
Subtotal, August 2026161474
September 2026 (Sep 1–11)
Sep 1BuildEducation Center requests routed to Jenna before the approval email: new field, workflow and advancement flow versions, auto-confirm and notify retired, activation10484
Sep 1DocsEnd-user Standard Operating Procedure (6 pages)11495
Sep 1DocsSenior leadership briefing deck (15 slides)7502
Sep 2MeetingsPresentation support; Salesforce chat2504
Sep 4DataSecond FMX load: 34 bookings; theatre spelling; exceptions and Needing a Decision workbook7511
Sep 4BuildPrincipal note-to-requester built in sandbox (field, layout, handler, tests)6517
Sep 4MeetingsAthletic-director integration discussion2519
Sep 9MeetingsWorkflow and security session; approver identity check4523
Sep 10MeetingsForm requests session: cancellation, capacity, calendar toggle; scoping notes4527
Sep 11MeetingsReporting session with Adam; scoping of directory-driven routing4531
Sep 11DocsProject write-up and effort estimate9540
SepTestingRegression, verification and decision threads through September 119549
Subtotal, September 202675549
Total, May 23 – September 11, 2026549549

Hours by type

TypeHoursShare
Build21539%
Meetings7914%
Data6211%
Testing5510%
Fix519%
Docs489%
Design265%
Rework132%
Total549100%

2. Summary

I replaced the retired FMX facility-request process with a Salesforce system fronted by a public FormAssembly form. Discovery started on May 23, 2026 against a June 2 demo and a July 1 production date, both of which were met. The system took its first real requests on July 1, absorbed the district's secretary training day on August 4 (33 submissions in one day), and by September 1 held 1,332 booking records, 646 of them for the Education Center.

The build covers intake, room selection, double-booking protection, a nine-stage approval path with emailed approvals that need no Salesforce login, branded notifications, rate-based quotes and payment controls, a public calendar with per-school subscription feeds, multi-date series booking, and the migration of the forward FMX schedule. This document records what was built and when, what was delivered, where testing sat in the calendar, and the effort the work represents.

3. Timeline, testing and releases

3.1 Phases

PeriodWhat happened
May 23Discovery: FMX field inventory (40 fields, 8 request types, 65 buildings), Salesforce reconciliation, data model designed and deployed the same day. Conflict detection, public calendar site, approval form and email engine built by end of day.
May 24Testing began. Form 175 published and connectors enabled; the first end-to-end test failed at the connector and was fixed the same day. Full loop proven: form submit → Salesforce record → emails → emailed approval → calendar.
May 25 – Jun 12,592 facility records loaded, three-level building → resource type → room cascade built on the form, Eastern-time fix, additional 324 facilities and 344 equipment records.
Jun 2Demo to CPS. Strong reception; post-demo priorities agreed.
Jun 2 – 30User acceptance window. Post-demo sprint (school filter, ICS feed, conditional logic, name resolution), status path, branded emails, pricing, payment controls, requester directory, multi-room junction, feedback rounds on June 10, 13 and 25, principal routing wired on June 30.
Jul 1Go-live. First real approvals within the week (a principal declined a request on July 7).
Jul 8 – 25Status Path and fee model (Jul 8); Jul 13 working session set a 12-item programme; Batch A released Jul 16; Batch B (three committee stages, approver reminders, Education Center auto-confirm, calendar colour) released Jul 25 with 22 components and 20 passing tests.
Jul 29 – Aug 6Recurrence Phase A live; Phase B engine built and proven in the full sandbox; Launch Ed rooms closed; FMX migration scoped with CPS on Aug 3 and rehearsed in sandbox on Aug 5; secretary training Aug 4.
Aug 11 – 17Education Center approval emails; routing redesign agreed with CPS on Aug 13; inverted time windows corrected; date-scoped room block (74 records) and resource-name edit fix closed out Aug 17.
Aug 19 – 20Largest release. Ten production deploys: recurrence engine enabled, multi-date picker on the live form, external-id field, 9 list views, series related list, 175 legacy bookings loaded. One live defect surfaced the next day (a 169-date series capped at 52).
Aug 22 – 27Availability-check gap diagnosed and specified; ICS feed reviewed; calendar tiles show end times (Aug 26) and keep completed events (Aug 27).
Sep 1 – 4Education Center requests routed to Jenna before approval email (Sep 1); end-user SOP and leadership briefing deck for the Sep 2 presentation; second migration load of 34 (Sep 4); principal note-to-requester built in sandbox.
Sep 9 – 11Working sessions with CPS on remaining migration outreach (about 16 bookings), reporting needs, cancellation and capacity requests, and directory data for future routing.

3.2 Testing in the calendar

3.3 Production releases

DateRelease
May 23–26Data model, conflict detection, public site and calendar, approval form and emails, timezone fix
Jun 1Facility and equipment data loads
Jun 6Post-demo sprint: name resolution, school filter, ICS feed, validation rules, record page
Jun 9–11Branded emails, status path, organisation fields, Yes/No fields, availability service, pricing, payment controls
Jun 13–14Requester directory and multi-room junction
Jun 27–30Feedback cleanup, building-scoped resource types, attendee auto-calc, security fields, principal routing
Jul 8Status Path, fee model, auto-complete
Jul 13–16Rental office users and app; Site Review advancement (Batch A)
Jul 25Batch B: committee stages, reminders, Education Center auto-confirm, calendar colour
Jul 29 – Aug 17Recurrence Phase A, room block, Education Center approval emails, inverted-window and edit fixes
Aug 19–20Recurrence engine, multi-date form, external id, list views, first FMX load
Aug 26 – Sep 4Calendar end times and completed events, Education Center routing to Jenna, second FMX load

4. What was built

4.1 Intake form and connectors (FormAssembly)

4.2 Data model and conflict protection (Salesforce)

4.3 Approvals, workflow and notifications

4.4 Pricing, payment and completion

4.5 Public calendar and subscriptions

4.6 Multi-date and recurring bookings

4.7 Legacy FMX migration

4.8 Access, operations and enablement

5. Data loaded

DateObjectRowsSource
May 25Facilities (buildings + rooms)2,592FMX resources export
Jun 1Facilities (additional)324FMX resources export
Jun 1Equipment344FMX equipment export
Jun 10Hourly rates on rooms2,525Three district rate workbooks
Jun 13–14Requesters (deduplicated to 1,215)1,225FMX user export
Jun 30 – Jul 29Principal and AD routing on buildings64District principal and AD lists
Jul 25Education Center backfill to Paid36Policy decision Jul 13
Aug 17Launch Ed date-scoped room blocks74CPS request Jul 31, shortened Aug 13
Aug 19Legacy FMX bookings, load 1175FMX future schedule export
Sep 4Legacy FMX bookings, load 234Same export, held rows

6. Deliverables

DateDeliverableFor
May 24Remaining Work planning summaryInternal
Jun 8Google calendar rollout briefDistrict IT
Jun 29Project Status (HTML/PDF): 45+ items shipped, 9 remainingAdam
Jul 1Approval Routing Open Items (PDF)Adam
Jul 24Open Items and Batch B Deployment PlanAdam
Jul 25Work Completed (HTML); Legacy Schedule Migration — Items to Resolve (HTML)Adam
Jul 27Legacy migration decision email (DOCX)Adam
Jul 29Block Off Time intake template (CSV)Rental office
Jul 30Launch Ed Room Block — Findings and Options (HTML/PDF) + Scheduled Use listingAdam, Jenna
Aug 5Sequenced Release Plan; Launch Ed Existing Bookings (HTML/PDF)Internal; Jenna
Aug 12Education Center Approval Routing build specAdam, Jenna
Aug 13FMX vs Salesforce resource-type exceptions (CSV, 157 rows)Adam
Aug 17Room Block Closeout; Resource Name Not Editable Closeout (HTML/PDF)Jenna, Adam
Aug 19Release rollback plan; How Multi-Date Bookings Work (DOCX); Questions for the buildings team (DOCX); migration exceptions (CSV)Internal; CPS
Aug 22Form 175 Availability Check build specInternal
Aug 24School Calendar Subscription Links (XLSX, 67 schools); calendar export (ICS)Adam
Aug 26–27Calendar end-time and completed-events closeouts (PDF)Adam
Sep 1Facility Use Schedule Request SOP (6 pp, HTML/PDF); SLT Briefing deck (15 slides)Jenna, SLT
Sep 4FMX Bookings Needing a Decision (XLSX, 16 rows); migration exceptions (CSV)Jenna, Adam
Jul 29 – Aug 27Eleven dated session handoffs with per-item stateInternal

7. Working sessions with CPS on record

DateSession
Jun 2Solution demo
Jun 10Weekly huddle (requirements capture, rates, July 1 date)
Jun 23Senior leadership presentation (Adam)
Jun 25Governance meeting (feedback additions)
Jul 13Working session, 70 minutes (12-item programme, committee approvers, Education Center policy, pricing)
Jul 21–22Facilities feedback check-in; weekly huddle
Jul 29–30Weekly huddle; Salesforce sync
Aug 3Facility Rental meeting (migration scope 294, placeholders, collisions)
Aug 4–5Training-day check-in; weekly huddle
Aug 13Working call, 60 minutes (ten decisions: Education Center routing, recurrence conflicts, room block, required fields, edit rights)
Aug 26–27Weekly huddle; Salesforce sync (calendar feedback, reporting wishes, migration audit)
Sep 2Jenna's SLT presentation (deck delivered Sep 1)
Sep 4AD integration discussion
Sep 9–11Three sessions: workflow and security, form requests (cancellation, capacity, calendar toggle), reporting with Adam

Plus the weekly Salesforce huddles through May and June and the day-to-day email and chat threads that carried decisions between sessions.

8. Effort estimate

Hours of work a skilled Salesforce and FormAssembly consultant would need to reproduce the project, split into build and engagement so each line can be checked against sections 3 to 7. Each line is skewed upward rather than down. The total is 549 hours of work.

8.1 Build and data

#WorkstreamHours
1Discovery and solution design: FMX field inventory, Salesforce reconciliation, data model and spec, decision log18
2Core data model, conflict detection, permissions13
3FormAssembly intake: form 175 rebuild (cascade, 22-field push, 32 rules, required flags, organisation fields, multi-date picker), approval form 176, connectors 205 and 206, API push and rollback, Yes/No and attachment fixes40
4Public calendar and services: site, guest profile, calendar page, bookings REST (4 modes), timezone, school filter, tiles and colour states, ICS feed, availability service and CORS, end times, completed events35
5Notifications and status workflow: email engine (13 templates), token flow, intake and workflow flows through 12 and 4 versions, status path 6 → 14, Path component, record-type alignment, Site Review advancement31
6Pricing, payment and completion: 2,525 rates, rate fields, quote calculation, Paid / payment due / auto-cancel, payment stamp, six fee fields, auto-complete, price override15
7Committee review and Education Center: three stages, approver config, reminders with weekend guard, auto-confirm and notify, 36-record backfill, list views, layouts, rental-office users and app, 17 tests repaired, Sep 1 routing change42
8Recurrence: Phase A; Phase B engine (24 fields, 8 classes, 41 tests, kill switch, permission set, list views, rollback plan), connector remap, enablement53
9Reference data and directories: 2,916 facilities, 344 equipment, 1,225 requesters and dedupe, entrances, resource-type cleanup, principal and AD routing, HVAC, field history, room blocking26
10Legacy FMX migration: 311-row analysis, decision document, sandbox rehearsal, external id, two production loads, exception and decision lists24
11Post-go-live defect resolution: inverted windows, connector failures, Dynamic Form lock, availability gap diagnosis and spec, 52-date cap, ICS filter, stuck records, Walnut Hills, Yes/No emergency26
Subtotal, build and data323

8.2 Scoping, meetings, testing and documentation

#CategoryHours
12Scoping and requirements: FMX walkthroughs, weekly huddles, feedback rounds (June 13 and 25), 12-item programme (July 13 → 15), migration scoping (July 25 → August 5), Education Center routing scoping48
13Working sessions and communication: the sessions in section 7, preparation and follow-up, email and chat threads carrying decisions53
14Testing and user acceptance: first end-to-end May 24, pre-demo cycles, UAT June 2 – 30, regression after each of 12 releases, sandbox rehearsals, training-day support August 4, post-release verification73
15Documentation and enablement: status documents, eleven handoffs, release and rollback plans, build specs, SOP, leadership deck, closeouts, explainers, decision emails37
16Rework and change absorption: post-demo scope changes, August 13 reversal of the Education Center bypass, form revision churn (rev 61 → 68), sandbox refresh re-baselining15
Subtotal, engagement226
Total hours of work549

8.3 Effort over time

PeriodFocusHoursPer week
May 23 – 31Discovery, core build, form and calendar, first end-to-end tests, data load, demo preparation69≈ 53
Jun 1 – 30Demo, post-demo sprint, UAT, pricing and payment, directories, feedback rounds, go-live preparation131≈ 30
Jul 1 – 31Go-live support, fee model, July 13 programme, Batch A and B, recurrence Phase A, migration scoping113≈ 26
Aug 1 – 31Migration rehearsal and load, recurrence engine and multi-date form, room block, routing redesign, defect resolution, calendar fixes161≈ 37
Sep 1 – 11Education Center routing, SOP and leadership deck, second load, reporting and backlog scoping75≈ 47
Total, 16 weeks549≈ 34

9. Open as of September 11

10. Notes on the record