Executive Progress Report

SOW HLT-DC-MCN-001 · Confidential

SOW HLT-DC-MCN-001

Data Cloud & Marketing Cloud Next
Executive Progress Report

Prepared for James · Ku · Simon · Ash · 21 May 2026 · Wk 5 wrap (14–20 May) · Halfway point · Day 35 of 56 · Wk 6 Day 1 in flight

5 of 8
Weeks Completed
Day 35 of 56 · halfway
99.66%
Sandbox Deployable
Enrollment manifest
10 / 10
Specs Locked
Track A + Track B parity
5
Blockers Carved
All named owners
3 of 5
Connectors Live
SF CRM · Companion · Snowflake ZC
SOW Phase Gantt — 8 Weeks
Phase
W1
16–22 Apr
W2
23–29 Apr
W3
30 Apr–6 May
W4
7–13 May
W5
14–20 May
W6
21–27 May
W7
28 May–3 Jun
W8
4–10 Jun
1 — Discovery & Audit
✓ DONE
✓ DONE
2 — DC Remediation
START
SPECS DONE
DEPLOY READY
SANDBOX 99.66%
BUILD
3 — Audience Building
SPECS
SPECS LOCKED
BUILD
4 — MCN Configuration
SFMC AUDIT
OP MODEL
PLAYBOOK
NAMING
CONFIG
PLANNED
5 — Validation & Handover
PLANNED
Specs Locked · Sandbox 99.66% Deployed · 5 Blockers Carved with Named Owners · Reverse ETL Plan Locked
Phase 1 — Discovery & Audit 100% closed
Phase 2 — DC Remediation ~85% — sandbox deployed, build gated on orphan DLO fields
Phase 3 — Audience Building (specs locked · reverse ETL plan locked) ~40% — naming convention adopted cross-team
Phase 4 — MCN Configuration (consent restart · 1 of 3 connectors) ~40% in progress
Week 5 deliverables (14 – 20 May)
20 May · Sprint review delivered (halfway-point check-in): 7-slide deck adapted for halfway narrative (1.7 MB PPTX · 1920×1080 · Hult-branded). Three-stream framing re-affirmed. Five blockers carved as discrete tickets with named owners. Session log: docs/sessions/2026-05-20-sprint-review.md (139 lines · PR #286 + #287 merged).
20 May · Prod Snowflake↔DC connection ESTABLISHED (Chris+Hristo session): Chris executed live in session. Default role swap (`public` → `DATACLOUD_SHARE_ROLE`) · USAGE chain validated · bronze + silver revoked post-validation → gold-only exposure to DC. Locks: case-by-case Track A vs B per dataset · curated gold (not full passthrough) · DMOs as Engagement (not Profile) for time-series. Session log: docs/sessions/2026-05-20-chris-hristo-snowflake-dc-integration.md. 21 May Day 1 follow-up confirms sandbox-side LIVE: Preference stream ACTIVE · 1.79M records · daily incremental.
20 May · Consent migration restart with Simon + James: Star diagram delivered (James's 15 May ask · standalone HTML + embedded in p4-79-82 deck slide 6). 4 decisions confirmed: phone channels unified · latest event timestamp tiebreaker · marketing vs transactional split · requirements doc precedes technical model. New blocker surfaced: CRM ↔ SFMC opt-out discrepancy 600K vs 3.6K (~166× gap) · Chris to investigate. 4 tickets updated (GH #79 · #82 · HULT-21770 · HULT-21841). Deck PR #292 merged.
18–20 May · Track A + Track B specs published · field-coverage parity: specs/data-graph/p2-149-bi-canonical-model-spec.md (825 lines · Snowflake medallion · dbt · 7 canonical DMOs · 16 NEW computed fields with exact SQL CASE logic · static seed catalogs Campus_Catalog + Staff_Assignment + Programme_Lookup). specs/data-graph/p2-149-bdt-canonical-normalization.md (770+ lines · full field-coverage parity with Track A for BDT-suitable subset · documents what stays in dbt only: SIA aggregation · row-rank conflict resolution · IR).
18 May · DLO/DMO naming convention 3-level pattern locked + adopted cross-team: <Object>_<source>_<layer>__<dll|dlm>. Aligned with Hristo's existing preference_sf_slv convention. Chris + Hristo + Jonatan + Simon to broadcast (HULTMKT1-10164 created · workshop scheduled post-Polly-return).
18 May · Reverse ETL plan locked (sandbox-first): Dedicated data_cloud_reverse schema in silver · materialised tables + incremental loads · dbt-owned movement · private/public key auth pattern. PRD_GLD grants documented for Chris (ACCOUNTADMIN-only · 6 SQL statements drafted + optional ownership transfer to SYSADMIN). Findings posted to HULTMKT1-10139.
18 May · Platform DMOs v2 deployed to sandbox (2,843 components · 0 errors): Equivalent for Enrollment Data Kit v3 deployed clean. 99.66% of intended schema is in sandbox. UPDATE_FAILED root cause traced to orphan DLO fields pointing to deleted SF Lead fields — carved into discrete ticket HULT-22242 / GH #285.
18 May · Sandbox connector verification (HULTMKT1-10138 status check) — UI ground truth: ✅ #1 Hult Enrollment (00DU) Active since May 13 · ❌ #2 myStudents (00D36) Inactive · ❌ #3 Marketing Cloud expired. Lesson: DLO existence ≠ active connector · SOQL alone misleading · UI status is ground truth. HULTMKT1-10138 corrected to "1 of 3 done."
15 May · GBP invoicing locked + F-14R + INV-002 sent (~£10,000): All SOW invoicing rebilled in British Pounds via UK entity at today's conversion rate. F-14R (Wks 1+2) + INV-002 (Wks 3+4) both sent 15 May to finance inbox, CC James for priority processing. Two HULTMKT1 tickets created same day for connector reauth (HULTMKT1-10138 Jess · HULTMKT1-10139 Chris).
15 May · Stakeholder cover plan + GA4 scope decision: James covers Jess week of 19 May for SF + connector coordination. GA4 collection out of current SOW phase (Polly's #277 reply · architecturally supported via Snowflake → DC).
Week 4 deliverables (7 – 13 May)
13 May · Sprint review — three-epic engagement structure agreed: Data transformation (BI/Snowflake/dbt) · Data harmonization & activation (MCN) · Environment readiness (sandbox/prod). Campus tackled as a dimension first (audience segmentation) before journey build. IP application stage programme code trumps all other campus sources. MC Personalization SDK ruled out for foreseeable future (broken ~1 year) — GA-via-Snowflake (24h delay) is the substitute. Campus preference logic stays in Snowflake (NOT DC Calculated Insights). Session log committed.
13 May · 3 Jira execution tickets created under HULT-20621 epic: HULT-22198 — [BI · Track A] Build Snowflake medallion architecture (Hristo + Chris). HULT-22199 — [DC · Track B] Build DC-first BDT canonical normalisation (Ash / Jess). HULTMKT1-10110 — marketing-side visibility tracker (Simon + Polly). Cross-project link graph established (HULT-22198 ↔ HULT-22199 ↔ HULT-22064 ↔ HULT-22159 ↔ HULTMKT1-10110).
13 May · HULT-22064 closed — Architecture decision resolved as hybrid: Approach A vs B → both. Track A (Snowflake medallion dbt) primary. Track B (DC-first BDT) optional reference / fallback. Re-affirmed across 23 Apr · 6 May · 11 May · 13 May sessions. Execution moves to HULT-22198 + HULT-22199.
13 May · Canonical model specs committed (Track A + Track B): specs/data-graph/p2-149-bi-canonical-model-spec.md — Track A dbt · 7 DMOs · 16 NEW fields with exact SQL CASE logic · seed CSVs for Campus_Catalog + Staff_Assignment + Programme_Lookup · 825 lines. specs/data-graph/p2-149-bdt-canonical-normalization.md — Track B BDT · field-parity · 15-code programme normalization · single + multi-value formulas · 770+ lines. Plus 3 session logs committed (Chris+Hristo BDT debugging · playbook training · sprint review).
13 May · Chris + Hristo BDT working session: BigQuery → Snowflake pipeline replaces Fivetran ($2k/month saved). No Data Cloud SDK adopted now. BDT formula syntax debugged: single quotes (not double). 4 "gold" tables for pilot <10 fields each. DLO naming convention TBD with Hristo before pilot demo. 6 action items captured.
13 May · Playbook training session delivered: presented to marketing + DC + BI teams. Three-bucket architecture · 7 canonical DMOs · PG/UG Data Graph split · MCN migration approach · pillar journey analysis. Six checkpoints for validation defined.
13 May · HULT-21768 closed — MC Connection deep audit: Final-decision comment posted (hybrid architecture · Data Graphs working in flows per Ash · MC connector path validated · backups in place · Snowflake Zero Copy audit captured). Transitioned to Done.
13 May · 7,298 metadata files committed (PR #262): Brings local repo in line with prod metadata. Post-retrieve dry-runs validated 94.7% clean across all 5 manifests at component level.
12 May · Jess unmapped EmailEngagement + BulkEmailMessage DMOs: 20-min coordination call with Jess + Ash + Hristo. All 47 CIs backed up to audit/phase-4/calculated-insights-pre-unmap-2026-05-12/ (JSON + Metadata XML formats · deployable manifest). BI safety confirmed — Tableau pulls SFTP not DC, unmap window invisible to BI.
11–12 May · Sandbox post-refresh state assessed: CDP feature flags (CdpDataStreams, CdpDataSpace) reactivated by Jonatan (not SF Support). 3 remaining gaps tracked: stream activation · Data Kits redeploy · companion org link. Memory updated for future-session context.
8 May · Polly's Data Dimensions delivery received + digested: 16 NEW fields documented with Polly's exact SQL CASE logic. 4 of 6 spec questions resolved via direct prod queries (Applicant RecordType · Created_Date__c vs CreatedDate · Lead_Created_Date__c gap pattern). 2 critical Snowflake replication gaps identified (Lead.ImportFile_LastImportDate__c + Lead.Created_Date__c not yet in replica — drives Pipeage logic).
7 May · #225 Data Graph playbook deck completed: 18-slide deck + spec scaffolds. 10 iteration cycles tightening architecture (denormalized → normalised canonical model · SF Data Graph constraint verification · multi-org IR · Q→Journey mapping). Final: 18 slides · 6.1 MB PPTX.
Week 3 deliverables (30 April – 6 May)
6 May · Stakeholder sprint review (#176 closed): 10-slide deck presented to broader Hult + SF stakeholders. 5 architectural confirmations: hybrid foundation · medallion bronze/silver/gold · daily→hourly refresh cadence · pilot scope expanded to campus AND programme · Tableau remains BI system. 160 tables already moved to Snowflake; silver layer reached.
6 May · Hristo + Chris pilot architecture session: Track A (Snowflake-first dbt) confirmed as the primary path; Track B (DC-first BDT) not selected — fragments normalisation authority. Five pilot checkpoints framed (dbt → ZC → new DMO → mapping → activation showcase). Conflict-resolution rule for `Preference__c` locked. dbt Core in Snowflake workspaces (not external dbt Cloud) confirmed.
6 May · Polly + Simon transformation rules session: Three-category framing locked for the 64+ MC transformation rules they catalogued (segmentation/personalisation → DC UI; normalisation → Snowflake). Data Graph organised by product family + audience (PG vs UG separate Data Graphs). PI_page calculation, Microsoft domain handling, PG/UG cross-pollination exclusion documented.
6 May · Consent architecture meeting: DC owns consent (not Snowflake — Snowflake = reporting only). MC unsubscribe = canonical base (362K records). Three-DMO model re-confirmed (`CommunicationSubscription` + `ChannelType` + `CommunicationSubscriptionConsent` + `ContactPointConsent` for IR). Seven-flag reconciliation identified as core open work item for #79 spec.
6 May · #175 Preference scoring deprecation closed: Live SOQL evidence confirmed scoring designed but never went live (0 of 1.7M records ever populated). 4 fields + Apex + lookup table cleanup. Future scoring lives in Snowflake gold.
6 May · #157 web behavioural gap closed (discovery): Spec committed; 14 MC-Personalization streams enumerated; three layered MCP→DC pipelines identified. Owner correctly shifted Lucy → Ash. Execution lives under HULTMKT1-9834.
6 May · 2 new tickets created: #219 [SETUP] MCN deliverability + IP warming + subdomain reputation strategy (verified via SF + 3rd-party docs); #221 [SETUP] MCN Preference Center configuration (Next-native page + CloudPage migration cutover).
5 May · Operating-model deck (#142) signed-off: 14-slide deck presented to broader team and approved as the post-architecture working framework. Closed.
5 May · Simon + Jess working session: 8-slide deck delivered. 4 decisions framed for #79 (consent) + #82 (subscriber migration). Lead-side opt-out counts verified via Snowflake Zero Copy share (bypassed SOQL 120s timeouts via columnar engine).
4 May · #160 closed: MC stream cleanup audit complete — 31 streams safely deleted, zero downstream consumer impact verified.
Week 2 deliverables (23–29 April)
30 Apr · Snowflake audit: 121 Zero Copy share objects + 779 medallion tables across 8 databases inventoried. Reusable scripts committed for re-runs.
30 Apr · Operating-model deck (#142): 14-slide framework for the post-architecture working model — data flow, team workflow, Data Graph lifecycle, consent mapping. In review.
30 Apr · All Subscribers migration spec drafted (#82): SFMC truth verified at 362K current global unsubs. 3-phase hybrid approach documented. Open questions raised for legal scope.
30 Apr · MC stream cleanup audit (#160): Verified Jessica's deletion of 31 sfmc-connector streams against all 47 CIs and 60 segments — zero downstream dependencies confirmed. Safe to proceed with reconnection.
29 Apr · Architecture decision (#96): Hybrid model agreed — Snowflake delivers harmonised Gold layer; Data Cloud handles Identity Resolution, Consent (Approach B for consent only), and activation. Campus pilot is the first proof point.
29 Apr · SFMC migration-readiness classification: 14 Pillar query families classified across 4 buckets (Ready / Needs CI/DG / Cannot migrate / Out of scope). 12 Gold-layer fields prioritised for build.
28 Apr · SFMC Classic full instance audit (#143): 362 automations, 1,534 journeys, 1,959 query activities, 41 CloudPages catalogued.
28 Apr · Polly + Simon Pillar journey walkthrough: Full SFMC automation stack for PG/UG nurture documented end-to-end (entry, splits, suppression, personalisation).
28 Apr · BI architecture session #4: Credit-cost analysis Approach A vs B (~60M credits/year for full-DC IR ruled out). Approach decision teed up for following day.
27 Apr · Salesforce AgentForce + Data Cloud workshop: Strategic agentic-readiness assessment. Snowflake ML + Zero Copy confirmed as preferred lead-scoring architecture. External FAQ agent identified as highest-yield starter.
Week 1 deliverables (16–22 April)
23 Apr · BI architecture session #3: Approach A vs B framing. Identity Resolution cost insight (~60M credits/year for full-DC scenario).
23 Apr · DLO/DMO/DSO inventory (#129): 137 DMOs, 203 DLOs, 224 DSOs, 3,454 field-level mappings. Zero coverage gap. DBML lineage diagrams published.
23 Apr · Calculated Insights inventory (#126): 47 CIs documented with SQL, schedule, status, DMO lineage.
23 Apr · Segments inventory (#130): 60 Data Cloud segments audited with criteria, runtime stats, and health checks.
22 Apr · V3 CRM Data Kit field maps (#112): 963 DLO→DMO field mappings retrieved and indexed.
21 Apr · BI sessions #1 + #2: Bronze/Silver/Gold architecture confirmed; Zero Copy strategy; dbt adoption; ML model inputs; field-mapping strategy.
21 Apr · Simon marketing call: MCN migration priorities, consent complexity, parallel-operation period planning.
17 Apr · Data Stream baseline (#76): All 176 streams audited. All healthy, 344M+ records. Dual SFMC architecture documented.
17 Apr · CI write-back diagnosis (#74): Root cause identified — source stream at 0 records since Feb 2026. 409 stale residuals.
17 Apr · Opportunity 3-stream audit (#75): Architecture confirmed intentional. Custom Field History is audit log.
16 Apr · Repo scaffold (#77): Spec-driven workflow, issue templates, board, folder structure live.
16 Apr · Access provisioning (#72): Salesforce prod, sandbox, JIRA, GitHub, Snowflake, Marketing Cloud — all confirmed.
16 Apr · Kick-off + GitHub board: Stakeholder map confirmed. 21-issue board created with Jira refs and SOW scope notes.
What Happened — Week by Week
Week 1
16–22 Apr
Kick-off, Discovery, BI Deep Dive & Full Audit
Kick-off with full team. BI sessions #1–3: Bronze/Silver/Gold confirmed, Zero Copy strategy, IR cost analysis, field-mapping strategy. 176 Data Streams baselined — all healthy. V3 CRM Data Kit retrieved (963 field maps). Full DLO/DMO/DSO inventory — zero coverage gap. 47 CIs and 60 segments inventoried. GitHub board created with 21 issues. 7 closed in Week 1.
Complete · ahead of plan
Week 2
23–29 Apr
Architecture Decision · SFMC Audit · Operating-Model Deck
Salesforce AgentForce + Data Cloud workshop (3h, full team). BI session #4 — credit cost analysis Approach A vs B (~60M credits/year for full-DC IR ruled out). Polly + Simon SFMC Pillar walkthrough — full automation stack documented. Architecture decision 29 Apr: Hybrid model — Snowflake gold + DC for IR, Consent (Approach B), and activation. Campus pilot first. SFMC Classic full audit: 362 automations, 1,534 journeys, 41 CloudPages, 14 query families classified. Snowflake medallion + Zero Copy share audited (779 tables · 121 share objects). MC reconnection cleanup begun by Jessica (31 streams deleted, audit confirmed safe). Operating-model deck (#142) delivered — 14 slides, in review. All Subscribers migration spec (#82) drafted with corrected baseline.
Complete · architecture decided · INV F-14 issued (€5,000)
Week 3
30 Apr – 6 May
Pilot Scope Locked · Operating Model Signed-Off · Consent Architecture Decided
Operating-model deck (#142) presented and signed-off. Stakeholder sprint review delivered (#176). 7 working sessions today alone (sprint review · Hristo BDT · Jess scoring · Simon+Jess working session · Hristo+Chris pilot architecture · Polly+Simon transformations · consent meeting). Pilot scope locked: campus + programme, Track A (Snowflake-first dbt) primary, 5 checkpoints framed. Consent architecture decided: DC owns consent, MC unsubscribe = canonical base (362K), 3-DMO model + ContactPointConsent, seven-flag reconciliation as next-spec scope. Polly+Simon catalogued 64+ MC transformation rules and 3-category framing locked (segmentation/personalisation → DC UI; normalisation → Snowflake). Wave 2 enrichment (GSC + EA Comments NLP) deferred. 5 issues closed (#142, #160, #157, #175, #176). 2 new tickets created (#219 deliverability, #221 preference centre). All Lead-side opt-out counts verified via Snowflake ZC bypassing SOQL 120s timeouts.
Complete · pilot scope locked · ready to build
Week 4
7–13 May
Playbook Delivered · Canonical Specs Done · Architecture Decision Closed
Heaviest delivery week so far. Playbook training session (18-slide deck) presented to marketing + DC + BI teams. Three-bucket architecture confirmed at sprint review (Segments / Data Graphs / dbt). HULT-22064 architecture decision closed as hybrid (Track A primary · Track B fallback). Canonical specs committed — Track A (dbt · 825 lines · 16 NEW fields with SQL CASE) + Track B (BDT · 770+ lines · field parity). 3 Jira execution tickets created — HULT-22198 (BI Track A) · HULT-22199 (DC Track B) · HULTMKT1-10110 (MKT visibility). HULT-21768 closed (MC Connection deep audit). Polly's 16 NEW field requirements digested into Track A spec. 47 CIs backed up before Jess's EmailEngagement unmap (12 May). 7,298 metadata files committed.
Complete · 22.3h actual · INV-002 GBP sent 15 May
Week 5
14–20 May
Halfway Point — Specs Locked · Sandbox 99.66% Deployed · 5 Blockers Carved · Reverse ETL Plan Locked
Specs + architecture: Track A spec (825 lines · 7 canonical DMOs · 16 NEW fields with SQL CASE logic · static seed catalogs) and Track B spec (770+ lines · field-coverage parity for BDT subset) both published. DLO/DMO naming convention 3-level pattern locked + adopted cross-team (<Object>_<source>_<layer>__<dll|dlm>). Reverse ETL plan locked sandbox-first — dedicated data_cloud_reverse schema · dbt-owned movement.

Sandbox readiness: Enrollment Data Kit v3 + Platform DMOs v2 both deployed clean to staging (2,843 + 1,094 components · 0 errors). CDP feature flags re-enabled. SF CRM connector reauth completed (1 of 3 in HULTMKT1-10138).

Ops + commercials: GBP invoicing locked · F-14R + INV-002 sent 15 May. James covers Jess week of 19 May. GA4 architecturally supported but out of current SOW phase. 20 May Chris+Hristo session: prod Snowflake↔DC connection ESTABLISHED · gold-only exposure to DC. 20 May consent restart with Simon+James: star diagram delivered · 4 decisions confirmed · new blocker (600K vs 3.6K opt-out gap).
Complete · 16.5h actual · INV-003 GBP pending end Wk 6
Week 6
21–27 May
Build Kickoff — Track A dbt · Reverse ETL Sandbox · Consent + WhatsApp + Preference Centres
Day 1 (21 May · today): GH #294 created — SF Engineering escalation umbrella bundling 4 SFMC subscriber streams (#80) + 99 orphan DLO fields (#285). Snowflake ZC sandbox verified live (Preference stream ACTIVE · 1.79M records · daily incremental). GH #173 closed (scope superseded).

Days 2–7: Track A kickoff (Hristo + Chris silver layer once orphan DLOs cleared). Reverse ETL sandbox config (Chris generates keys, validates connection). Companion + SFMC reauth (Jess returns, completes 2 of 3 remaining). WhatsApp config review (James + Jonatan paired session). Consent restart conversations with Simon. Preference centres validation with SF. 6 SF objects support ticket follow-up. Track A + B spec updates with naming convention.
In flight · Day 1 of 7
Weeks 7–8
28 May – 10 Jun
Validation & Handover
QA of all configurations. Team enablement sessions (MAT, BI, Tech) per #93. Documentation handover via GitHub. Final sprint review and SOW closure.
Planned
No Spec Gaps Remaining · Sandbox 99.66% Deployed · 5 Blockers Carved with Named Owners
No Spec Gaps Remaining — Track A + Track B Locked (20 May)

Both tracks fully specced and parity-checked: Track A (p2-149-bi-canonical-model-spec.md · 825 lines · Snowflake medallion · dbt · 7 canonical DMOs · 16 NEW computed fields with exact SQL CASE logic · static seed catalogs Campus_Catalog + Staff_Assignment + Programme_Lookup) and Track B (p2-149-bdt-canonical-normalization.md · 770+ lines · full field-coverage parity with Track A for the BDT-suitable subset · documents what stays in dbt only: SIA aggregation · row-rank conflict resolution · IR). Build is now execution, not design.

Prod Snowflake↔DC Connection Live · Gold-Only Exposure (20 May)

Chris + Hristo working session: prod Snowflake↔DC connection ESTABLISHED. Default role swap from publicDATACLOUD_SHARE_ROLE · USAGE chain validated · bronze + silver revoked post-validation → only gold accessible to DC. Locks: case-by-case Track A vs B per dataset · curated gold (not full passthrough) · DMOs as Engagement (not Profile) for Preference/time-series objects · sandbox uses separate RSA key + user, same role. 21 May follow-up confirms sandbox-side also LIVE: Preference stream ACTIVE · 1,790,615 records · daily 06:00 UTC incremental. Session log: docs/sessions/2026-05-20-chris-hristo-snowflake-dc-integration.md.

DLO/DMO Naming Convention Adopted Cross-Team (18 May)

3-level pattern locked: <Object>_<source>_<layer>__<dll|dlm>. Aligned with Hristo's existing preference_sf_slv convention. Adopted across Chris (BI) · Hristo (dbt) · Jonatan (specs) · Simon to broadcast at upcoming workshop. HULTMKT1-10164 created as marketing-side tracker · workshop scheduled post-Polly return (week of 25 May). Track A + B specs to be updated with the convention before dbt build kicks off.

Consent Restart with Simon + James — Star Diagram Delivered (20 May)

Star diagram delivered (James's 15 May ask · standalone HTML + embedded in p4-79-82 deck as new slide 6). 30-min session yielded 4 decisions confirmed: phone channels unified · latest event timestamp as tiebreaker · marketing vs transactional split · requirements doc precedes technical model. New blocker surfaced: CRM ↔ SFMC opt-out discrepancy 600K vs 3.6K (~166× gap) · Chris to investigate. 4 tickets updated (GH #79 · #82 · HULT-21770 · HULT-21841). Restart momentum recovered after 2+ weeks of deferral.

5 Blockers Carved with Named Owners — All Coordination, Not Design

All five remaining blockers visible, owned, and sequenced. None is a technical design issue: (1) Orphan DLO fields (~30 fields · Jess UI surgery · HULT-22242 · GH #285) — gates Lead/Account/Contact streams → Track A/B silver. (2) 6 SF objects not visible in DC (3 Finance · 3 Ranking · Chris support ticket) — gates full BI data scope. (3) Companion + SFMC connectors reauth (Jess · HULTMKT1-10138) — gates full sandbox integration + #80 sandbox-first path. (4) PRD_GLD grants to DATACLOUD_SHARE_ROLE (Chris needs ACCOUNTADMIN · HULTMKT1-10139) — gates reverse ETL. (5) Ash MCN admin permissions since Dec 2025 (SF Support · HULTMKT1-7467). Build can proceed in parallel.

NEW Wk 6 Day 1 (21 May) — SF Engineering Escalation Umbrella · GH #294

The orphan DLO fields blocker (sandbox · #285) and the 4 SFMC subscriber streams blocker (prod · #80) have been bundled into a single SF Engineering escalation umbrella (GH #294) — same root-cause family. 99 orphan fields inventoried across 3 DLOs (Lead 21 · Account 14 · Contact 64). 9 API surfaces attempted across v60→v67 (REST · Tooling · Metadata · Apex DML · sObject DML) · all 9 failed with "setup object in use". Reproduced lock on a non-orphan field (AnnualRevenue__c) → confirms the DC platform lock is systemic, not orphan-specific. Specific question for SF Engineering: how to destructively deploy CustomField on a __dll CustomObject when the DLO is referenced by an active DataStream? Owners: Ash (primary SF Support channel) · Jess (secondary) · Jonatan (evidence). Operational fallback available: UI clicks (30–60 min).

Jess Single-Thread Risk on DC Sandbox UI Fixes

HULT-22242 (orphan DLO fields) currently requires Jess UI surgery as the only known path. To mitigate: James covers Jess this week for connector reauth coordination · Jonatan documents step-by-step UI procedures for autonomy · SF Engineering case (#294) pursued in parallel for a programmatic path. Chris ACCOUNTADMIN dependency for PRD_GLD grants is a parallel single-thread risk — mitigation proposed: schema ownership transfer to SYSADMIN to remove future bottleneck.

Data Cloud Object Model — Interactive Diagram

Full DLO → DMO lineage covering all 137 DMOs, 203 DLOs, and 224 DSOs across both Enrollment and MyStudents orgs. Interactive — zoom, pan, and click to explore relationships.

Open full diagram in dbdiagram.io →
Password protected · request access if needed
Full Workstream Status
#IssuePhaseStatus
72Access provisioning (sandbox, JIRA, GitHub, MC)1Done
74CI write-back diagnosis — CC_TopChoiceCampus__c1Done
75Opportunity 3-stream split audit1Done
76Data Stream baseline — 176 streams1Done
77Repo scaffold + spec-driven workflow1Done
112V3 CRM Data Kit field maps (963 mappings)1Done
143SFMC Classic full audit (362 autos · 1,534 journeys · 14 query families)1Done
96BI architecture review — Hybrid decided 29 Apr1Decided
142Operating-model deck — signed-off 5 May4Done · Wk 3
160MC stream cleanup audit2Done · Wk 3
157Web behavioural data gap — discovery, exec lives in HULTMKT1-98342Done · Wk 3
175Preference scoring deprecation — 0 of 1.7M ever populated2Done · Wk 3
176Stakeholder project update deck — presented 6 May4Done · Wk 3
176Stakeholder project update deck — presented 6 May4Done · Wk 3
225Data Graph playbook — deck + canonical specs + Jira tickets4Done · 14 May
173Unmap existing DC configurations — scope superseded by HULT-22198/22199 + #149 (closed Wk 6 Day 1)2Done · 21 May
149Campus canonical pilot — specs done, Jira execution tickets active (HULT-22198 + 22199)2In Progress · gated by orphan DLO fields (#285/HULT-22242)
80MC connection recreation — bundled into SF Engineering case via #2944In Progress · escalated via #294
178Data Cloud One companion org sandbox provisioning — connector reauth pending Jess+Falak1In Progress (Jess + Falak)
79Consent architecture — restart Simon+James 20 May · 4 decisions confirmed · star diagram delivered4In Progress · requirements doc pending
82All Subscribers migration — spec drafted, blocked on DD + consent legal scope4Spec drafted
84WhatsApp / Unified Messaging — audit complete, 5 bugs · MCN cutover review Wk 64In Review
294SF Engineering escalation umbrella — orphan DLO fields (#285) + 4 SFMC subscriber streams (#80) (NEW Wk 6 Day 1)2Critical-path · Ash + Jess
285Orphan DLO fields blocking Lead/Account/Contact streams (99 fields · sandbox) — bundled into #294 (NEW Wk 5)2Blocker · HULT-22242
272Sandbox connector reauth — 3 of 5 done (SF CRM · Companion · Snowflake ZC) · SFMC pending Jess · BigQuery dropped1In Progress · 3 of 5 live
281Naming convention — Data Graphs · Journeys · CIs · Segments (HULTMKT1-10164 · Simon) (NEW Wk 5)4Blocked · workshop post-Polly return
73Two-org Data Space/Data Share architecture1Backlog
81Calculated Insights build — PipeAge, Suppression, CTAs4Backlog
83Sender profiles + Reply Mail Management4Backlog
85BigQuery DLO — batch data transform workaround2Backlog
86WhatsApp bulk send — MCN setup4Backlog
87Programme-specific footers + application link CTAs4Backlog
88Stream error monitoring — 27 streams2Backlog
92Lead Source deduplication2Backlog
93Team enablement sessions5Backlog
219MCN deliverability — IP warming, subdomain rep, sending strategy4Backlog
221MCN Preference Center configuration4Backlog
Budget & Utilisation — End of Week 5 (Halfway Point)
Weeks Completed
5 of 8 · Day 35 of 56
Invoiced
2 of 4 invoices · Wks 1–4 billed in GBP
Invoice status: All SOW invoicing rebilled in British Pounds via UK entity at today's conversion rate (decision 15 May with James). F-14R (Wks 1+2) + INV-002 (Wks 3+4) both sent 15 May to finance inbox, CC James for priority processing. Total billed to date: 2 of 4 invoices (Wks 1–4 of 8 · half the SOW). INV-003 (Wks 5+6) pending end of Wk 6. INV-004 (Wks 7+8) pending end of Wk 8. Fortnightly invoicing, NET 30.

Cap rule honoured: Weekly cap fixed at 2,500 EUR equivalent (now GBP) regardless of actual hours. Hours actual vs 20h cap: Wk 1 32h (+12h) · Wk 2 32.5h (+12.5h) · Wk 3 39h (+19h) · Wk 4 22.3h (+2.3h) · Wk 5 16.5h (-3.5h ahead). Total +42.3h absorbed across Wks 1–4, plus Wk 5 came in under cap-equivalent — running cumulative still net-absorbed. None invoiced — contracted SOW total of €20,000 equivalent will not be exceeded.

Pace: 50% invoiced at 62.5% of timeline (Wk 5 complete · Wk 6 Day 1). Engagement on plan. Actual delivery at ~65% completion (Phase 1 closed · Phase 2 at 85% with sandbox deployed · Phase 3 specs locked + reverse ETL plan locked · Phase 4 consent restarted · 3 of 5 connectors live). Delivery still ahead of invoicing pace.
Plan for Week 6 (21–27 May · in flight)
Build / Config work
Track A kickoff (HULT-22198 · Hristo + Chris) — silver layer build starts once orphan DLOs cleared via #294. Seed CSVs (Campus_Catalog · Staff_Assignment · Programme_Lookup) committed. Spec update to migrate DLO/DMO names to _canon_gld__dlm pattern landing first.
Reverse ETL sandbox config (Chris) — key gen (private/public RSA · separate from prod) · validate sandbox connection · replicate prod Snowflake↔DC setup. Sandbox-first per 20 May session.
Companion + SFMC connectors reauth (Jess returns) — completes 2 of 3 remaining in HULTMKT1-10138. SFMC requires Installed Packages client ID/secret. Falak owns Companion org piece.
WhatsApp config review (James + Jonatan paired session) — ensure no blocking points moving from Classic → Next.
Conversations to restart
Consent with Simon (continuation of 20 May restart) — business requirements doc precedes technical model · star diagram socialisation · 600K vs 3.6K opt-out discrepancy investigation with Chris.
Preference centres validation with SF — Ash's proposal (Next emails + Marketing Engagement · both push to DC) needs SF validation.
6 SF objects support ticket follow-up (Chris) — 3 Finance · 3 Ranking · not visible in DC currently. Gates full BI data scope.
Deliverables
Track A + Track B spec updates with new naming convention · UPPER() syntax reinforcement on Track B (case-sensitivity bug captured 18 May from Hristo's row count diagnostic).
Orphan DLO field full audit · HULT-22242 · committed to audit/phase-2/ · feeds SF Engineering case (#294).
BDT workshop with marketing team in ~2 weeks (Wk 6/7) · once data flows in sandbox post-orphan-field fix. Naming convention workshop scheduled post-Polly return (week of 25 May).
INV-003 invoicing · Wks 5+6 in GBP · issues end of Wk 6.
3 Decisions Surfaced at Sprint Review · Awaiting Confirmation
DecisionContextAsked of
Consent solution scopeMCN defaults Opt-Out · zero emails without consent setup. Polly out · Simon is key person. Star diagram delivered 20 May · 4 decisions confirmed in restart session · business requirements doc needs to land before technical model.Simon (with James)
2-preference-centre approachAsh proposed Next emails + Marketing Engagement, both push to DC. Needs SF validation before build.SF + James
WhatsApp config review for MCN cutoverEnsure no blocking points moving from Classic → Next. Paired session with James + Jonatan in Wk 6.James + Jonatan
Status by Epic — Wk 5 Close
EpicWk 5 status
Data transformation (BI · Snowflake · dbt)Specs ✅ locked · Build ⏳ waiting on sandbox streams (orphan DLO fields via #294)
Data harmonisation & activation (MCN · segments · Data Graphs)Naming convention ✅ adopted · Consent ⏳ restarted 20 May · Preference centres ⏳ SF validation · WhatsApp ⏳ Wk 6 review
Environment readiness (sandbox + prod)99.66% deployed · 3 of 5 connectors live (SF CRM · Companion · Snowflake ZC) · 5 blockers carved with named owners · prod Snowflake↔DC connection LIVE 20 May
Risks + Mitigations
RiskMitigation
Jess single-thread on DC sandbox UI fixes (HULT-22242 · 99 orphan fields)James covers for connector reauth · Jonatan documents step-by-step UI procedures · SF Engineering case (#294) pursued in parallel for programmatic path
Chris ACCOUNTADMIN dependency for PRD_GLD grantsPropose schema ownership transfer to SYSADMIN to remove future bottleneck
Consent conversation deferred 2+ weeks alreadyJonatan takes over from Ash · restart with Simon executed 20 May · 4 decisions confirmed · momentum recovered
Wk 6 build phase starts late if blockers slipSpec work is parallel-tracked, no rework risk · all 5 blockers are coordination/permission issues, not technical design
Owners + Due Dates
#ActionOwnerDue
1Execute orphan DLO field audit + UI deletion (HULT-22242 · 99 fields)JessThis week / next week
2PRD_GLD grants via ACCOUNTADMINChrisThis week
36 SF objects support ticket (3 Finance · 3 Ranking)ChrisThis week
4Companion + SFMC connector reauth (HULTMKT1-10138)JessAfter return
5Restart consent conversation with Simon (business requirements doc)Jonatan + JamesMon/Tue Wk 6 · 20 May session delivered
6WhatsApp config review with JamesJonatanWk 6
7Validate 2-preference-centre approach with SFJonatanWk 6
8Update Track A + Track B specs with new naming conventionJonatanWhen dbt build kicks off
9Schedule BDT workshop with marketing teamJonatanWk 6/7 · post-Polly return
10(NEW 21 May) Open SF Engineering case via #294 — bundles 99 orphan DLO fields + 4 SFMC subscriber streamsAsh (primary) · Jess (secondary) · Jonatan (evidence)Wk 6 — Slack/email draft pending
Four Things to Remember from Wk 5
1 · No spec gaps remaining

Track A + Track B are complete and parity-checked. Build is execution, not design. 10 of 10 specs locked.

2 · Sandbox progress is real

4 weeks ago this was a "sandbox doesn't exist" risk. Today it's "99% deployed · 3 of 5 connectors live · 5 carved blockers." Prod Snowflake↔DC connection live since 20 May · sandbox-side verified live 21 May (1.79M Preference records flowing).

3 · Halfway through 8 weeks, engagement is on plan

No scope creep · no budget overrun · GBP invoicing established (F-14R + INV-002 sent 15 May ≈ £10,000). 50% invoiced at 62.5% of timeline · delivery still ahead of invoicing pace.

4 · Remaining risk is coordination, not architecture

Every open item has a named owner. All 5 blockers are permission / coordination issues. GH #294 (NEW 21 May) bundles the orphan DLO fields and SFMC streams into a single SF Engineering escalation umbrella — one channel, one case, one root-cause family.

Health Check at End of Week 5 — Halfway Point (per SOW §6)
Schedule
Phase 1 closed on time. Phase 2 at ~85% — sandbox deployed, build gated on orphan DLO fields (#294). Phase 3 specs locked + reverse ETL plan locked. Phase 4 consent restarted with Simon+James 20 May. Engagement on plan at halfway point.
Budget
On budget — ~£10,000 GBP invoiced (F-14R + INV-002 · sent 15 May). INV-003 (Wks 5+6) pending end of Wk 6. Cap rule applied · Wk 5 came in under cap-equivalent at 16.5h · running cumulative net-absorbed.
Scope
No scope expansion. New tickets all within Phase 1/2 envelope: #281 (naming convention workshop) · #285 (orphan DLO fields) · #294 (SF Engineering escalation umbrella) · HULT-22210 + HULT-22242 + HULTMKT1-10164. SOW §5 boundaries respected.
Risk
Amber — 5 carved blockers · all coordination, not design: (1) Orphan DLO fields (Jess UI · escalated #294) · (2) 6 SF objects (Chris support ticket) · (3) Companion + SFMC reauth (Jess return) · (4) PRD_GLD grants (Chris ACCOUNTADMIN) · (5) Ash MCN admin perms (SF Support since Dec 2025).
Net read

Engagement on schedule and on budget at the halfway point (Day 35 of 56). Wk 5 delivered all spec work (Track A + Track B parity · naming convention adopted cross-team · reverse ETL plan locked · prod Snowflake↔DC connection live · consent restart with Simon+James). Phase 2 jumped from 75% → 85% through sandbox deployment. Build phase (Wk 6+) starts as soon as orphan DLO fields clear via #294. Pilot build (HULT-22198 + 22199) runs in parallel as soon as silver layer accepts data. Engagement now at ~65% delivered against 50% invoiced — outperforming pace. Forward signal: Wk 6 Day 1 saw sandbox-side Snowflake ZC verified live (1.79M Preference records · daily incremental) and SF Engineering escalation umbrella (#294) opened — momentum carrying forward.