SOW HLT-DC-MCN-001 · Confidential
Prepared for James · Ku · Simon · Ash · 12 Jun 2026 · Wk 8 close (4–10 Jun) + Wk 9 post-SOW workshop delivery · 8 of 8 weeks complete · ✅ F-20/2026 sent · SOW fully invoiced
Wk 8 (4–10 Jun · 29.0h · +9.0h over cap absorbed): Mon 8 — pilot PG/UG segments built with Identity Link bridge fix · cross-DMO filtered segment authoring confirmed UI-only path (Visual creationFlow API returns 403 EXTERNAL_RESOURCE_FORBIDDEN for external users). Tue 9 — prod SFMC Bounce cleanup breakthrough: re-reading the platform validation error revealed a 2nd action path · built CSV stub populator on ssot__EmailEngagement__dlm · 5 streams DELETED including 1.4M-row Bounce wedged since 21 May · DC MC connection disabled + deleted + recreated · UMA install handed to Jess via AppExchange. Wed 10 — pilot re-audit + 3 Workshop Flows cleared + flow-rebuild playbook drafted + MyStudents partialQA companion ready relayed.
Wk 9 Day 1 (Thu 11 Jun · 10.0h · post-SOW workshop delivery extension): MCN pilot prep · token render debug confirmed Pillar_Lead_DataGraph materialised (Query Editor explore on Intira UnifiedRecordId · NOT 0-row SOQL on internal fragment DMOs as initially suspected) · Filter+Sort dialog discovered as documented MCN UX for OneToMany Data Graph resolution · Preference Page setup path verified (Step 1c in Consent app · NOT Setup as one might assume). End-to-end 15-slide deck shipped in Hult brand format via existing render pipeline. 5 UI playbooks in audit/phase-4/_handoff/ for Jonatan + Jess execution.
Workshop Fri 12 Jun: live walkthrough of the production-ready architecture with stakeholders · 15-slide deck covers source → Snowflake → DC → MCN end-to-end · Identity Resolution rationale · BDT canvas pattern · token Filter+Sort dialog · consent pipeline (CRM → UMA pkg → 18.13M records) · Preference Center setup. ✅ F-20/2026 SENT post-workshop · closes the 20,000 EUR equivalent SOW · all 4 invoices pending payment.
SNOW_GLD_* tables in prod (Individual_Unified 18.1M · Application_Program_Preference 3.5M · Campus_Preference 3.5M)individual_id__c PK · fix path documented · execution pendingflow-rebuild-stepbystep-10jun.md)contentType bug worked around via /clone endpointaudit/phase-4/_handoff/ (DG token Filter+Sort · Preference Page · Flow rebuild · 3 email HTML drop-ins)48c901c5…)Tue 9 Jun · 8.0h. Months-blocked SFMC Bounce stream (1.4M rows · ERROR since 21 May) cleared via stub-populator workaround. Platform validation error read twice this week revealed a 2nd action path — "link another data stream to the object with mappings to these fields" — built CSV stub Stub_EmailEngagement_Populator.csv (8 cols mapping the 7 wedged DMO fields + BounceDate) · uploaded as new data stream · 2nd populator established on ssot__EmailEngagement__dlm · original Bounce stream unmapped successfully · DELETED.
| Stream | Status before | Action | Status after |
|---|---|---|---|
| SFMC_Email_Engagement_Bounce_523000969 | 1.4M rows · ERROR since 21 May | Stub-populator workaround + unmap original | DELETED |
| DV_Job | Active sibling | Inventory + cascade delete | DELETED |
| Event_Pillar_Union | Active sibling | Inventory + cascade delete | DELETED |
| Event_Pillar_Union_DV | Active sibling | Inventory + cascade delete | DELETED |
| Staging_DV_subscriber | Active sibling · UI cascade race | Mapping-first manual sequence (d360 MCP) | DELETED |
| MC Connection Salesforce_Marketing_Cloud_NA1 | Original connection broken | Disabled + deleted + recreated cleanly | RECREATED |
| UMA package install (Step 4 of 4) | Required for Flow Performance dashboard | AppExchange handover to Jess · install in flight | IN PROGRESS |
| Layer | Built | Status |
|---|---|---|
| Segments | Workshop_PG_Announce_Lead_FINAL (2,070,683 PG) + Workshop_UG_Announce_Lead_FINAL (825,128 UG) · published · SM tables populated | READY |
| Identity Resolution | UnifiedIndividual__dlm · 18.16M records · IR ruleset live · bridge IndividualIdentityLink__dlm OneToMany | READY |
| Data Graph | Pillar_Lead_DataGraph · UnifiedIndividual primary · Bridge to ssot__Individual → GLD_PERS_CAMPUS + GLD_PERS_PROGRAMME · materialisation confirmed via Query Editor explore | READY |
| CMS Emails | 6 records (v3 originals + v4 clones via /clone endpoint workaround) · PG MBA + PG Masters + UG BBA · 7 + 7 + 9 merge tokens | CREATED |
| Consent pipeline | 18.13M records via UMA installed pkg (UMsgConsentProd v1.5) · OPT_IN 14.6M · OPT_OUT 3.5M · MCN auto-gates send by consent | READY |
| MC Connection | Tenant 523000969 · stack s4 · cleaned + recreated 9 Jun · UMA install in flight | READY |
| Token render | Per-token Filter+Sort dialog config (~25 min UI work for 23 tokens · playbook ready) OR Default Personalization Data Graph assignment | UI config pending |
| Preference Page | Step 1a Setup → Marketing Features → toggle ON · 1b Landing Page · 1c Consent app → Set as Default · Variant A footer (OptOutUrl only) works now | UI config pending |
| Flows | 3 old Workshop Flows deleted Wed 10 · UI rebuild per flow-rebuild-stepbystep-10jun.md playbook | UI rebuild pending |
| Source | Decision | Status |
|---|---|---|
| Pilot re-audit (Wed 10) | 3 Workshop Flows deleted via UI · clean slate for rebuild against new DG schema | LOCKED |
| Prod cleanup (Tue 9) | Stub-populator workaround is the canonical pattern for clearing wedged DMO-dependent streams · documented in audit/phase-2/_handoff/stub-stream-create-instructions-9jun.md | LOCKED |
| Pilot debug (Thu 11) | DG materialisation probe = Query Editor explore (NOT SOQL on internal fragment DMOs which return 0 rows by design) | LOCKED |
| MCN UX (Thu 11) | Token render path = Filter+Sort dialog per token (documented MCN UX for OneToMany Data Graph traversal · prefer over array-indexer hacks) | LOCKED |
| Preference Page (Thu 11) | Default Preference Page assignment lives in Consent app (NOT Setup as one might assume) · 3-step setup verified against SF Help docs | LOCKED |
| Type | Artifact | Status |
|---|---|---|
| DC sandbox | Pilot segments published — PG 1sgbb0000000ocjAAA (2.07M) + UG 1sgbb0000000oeLAAQ (825k) | ACTIVE |
| DC sandbox | 6 emails in CMS workspace (v3 originals + v4 clones) — PG MBA + PG Masters + UG BBA | CREATED |
| DC prod | 5 SFMC streams deleted (Bounce 1.4M + 4 siblings) · MC connection recreated · UMA install in flight | CLEARED |
| Deck | p5-mcn-pilot-deck · 15 slides · 4.1 MB · Hult brand format · IR + BDT + Token Resolution SVGs + Preference Center + HasOptedOut linkage | SHIPPED |
| Playbook | dg-personalization-tokens-playbook-11jun.md · 23-token Filter+Sort dialog steps · ~25 min UI work | SHIPPED |
| Playbook | preference-page-and-footer-11jun.md · 3-step Pref Page setup + Variant A/B footer HTML | SHIPPED |
| Playbook | flow-rebuild-stepbystep-10jun.md · 3 DC-triggered Flow UI rebuild path | SHIPPED |
| Playbook | jess-uma-install-handover-9jun.md · UMA AppExchange install order + smoke test | SHIPPED |
| Session log | 2026-06-11-pilot-prep-workshop-12jun.md · 6 threads · 10h prep day captured | COMMITTED |
| Audit | Bounce stream DE linkage evaluation (corrected root cause) + stub stream create instructions | COMMITTED |
| PRs | 11 PRs merged Wk 8 + Wk 9 D1 (#352 #353 #354 #355 #356 #357 #358 #359 #360 #361 #362 #363) | MERGED |
| # | Item | Decision needed | When |
|---|---|---|---|
| 1 | ✅ F-20/2026 SENT (Wks 7+8 · 5,000 GBP equiv) | F-20/2026 sent post-workshop · pending payment. All 4 invoices now in finance queue: F-14 + F-15 sent 15 May · F-16 sent end Wk 6 · F-20 sent post-workshop. Numbering jump F-16 → F-20: Ohana invoice book is sequential across all clients · F-17/18/19 issued to other clients between Hult F-16 (end Wk 6) and this invoice. SOW fully invoiced. | ✅ Done |
| 2 | SF Engineering response pressure | HULT-22242 sandbox (sent Mon 1 Jun · 4-layer block argument · 78-object dependency tree · awaiting SF Engineering call) + CI Email Engagement deadlock prod ticket (draft ready). Both bottom out at platform-side cleanup that customer APIs do not expose. Decision: continue waiting for SF or escalate via Premier Support / Account team. | Ongoing |
| Wk | Dates | Hours | Invoice | Status |
|---|---|---|---|---|
| 1+2 | 16-29 Apr | 64.5h | F-14 (GBP reissue) | Sent 15 May · pending payment |
| 3+4 | 30 Apr-13 May | 61.3h | F-15 (GBP) | Sent 15 May · pending payment |
| 5+6 | 14-27 May | 39.0h | F-16 (GBP) | Sent end Wk 6 · pending payment |
| 7+8 | 28 May-10 Jun | 48.5h (19.5 Wk 7 + 29.0 Wk 8) | F-20/2026 (GBP) | Sent · pending payment |
| Total · 8-wk SOW | 213.3h | ✅ £20,000 fully invoiced (F-14/15/16/20) | +53.3h absorbed · cap rule honored | |
| 9 (post-SOW) | 11-12 Jun | 10.0h Thu 11 + workshop Fri 12 | No additional billing | Workshop delivery extension · absorbed |
| Grand total inc. workshop | 223.3h | ✅ £20,000 SOW fully invoiced · all 4 invoices pending payment | +63.3h absorbed net | |
Wk 8 actual: 29.0h vs 20h cap (+9.0h absorbed). Wk 9 Day 1 Thu 11 Jun (10.0h prep) + Workshop Fri 12 Jun = post-SOW workshop delivery · absorbed as engagement-close extension · no additional billing per fixed-scope SOW cap. Cumulative engagement 223.3h delivered against 160h cap-equivalent (8 weeks × 20h). All overage hours align with engagement letter cap-rule — no overage billed.
| # | Handover | Owner |
|---|---|---|
| 1 | Pilot token render config — 23 merge fields × Filter+Sort dialog (~25 min UI work) · test with Nishantha (UnifiedRecordId 48c901c5… · MBA Dubai EMEA full data) · playbook dg-personalization-tokens-playbook-11jun.md | Jonatan |
| 2 | 3 Workshop Flows rebuild via UI · playbook flow-rebuild-stepbystep-10jun.md (175 lines · Trigger config · Decision split · Send_Email action · Save+Activate) | Jess |
| 3 | UMA install completion · Marketing Analytics + Marketing Performance + Flow Performance via AppExchange · playbook jess-uma-install-handover-9jun.md · gates Flow Performance dashboard | Jess |
| 4 | Preference Page setup · Step 1a Setup → Marketing Features → Custom Preference Pages ON · 1b Landing Page Hult_Email_Preferences · 1c Consent app → Set as Default · playbook preference-page-and-footer-11jun.md · enables PreferenceCenterUrl footer token | Ash + Polly |
| 5 | HULT-22242 SF Engineering follow-up — sandbox 4-layer block · 78-object dependency · awaiting Engineering response · pair with Premier Support / Account team if no movement | Jess + James |
Phases 1-5 delivered · workshop today closes the cycle · 8 weeks complete
✅ £20k SOW fully invoiced (4 of 4 sent) · 63.3h net absorbed · workshop ext. absorbed
SOW §5 boundaries respected · 5 playbooks shipped for Hult team execution post-SOW
2 SF Engineering tickets pending · UMA install in flight · Hult team to execute UI config