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 · 6 May 2026 · End of Week 3 · Week 4 starts Thu 7 May

3 of 8
Weeks Completed
25%
SOW Budget Invoiced
12
Issues Closed
+43h
Extra Hours Absorbed
7
Sessions This Week
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
IN PROGRESS
3 — Audience Building
PLANNED
4 — MCN Configuration
EARLY
SPECS
PLANNED
PLANNED
PLANNED
5 — Validation & Handover
PLANNED
Pilot Scope Locked · Consent Architecture Decided · Operating Model Signed-Off
Phase 1 — Discovery & Audit 100% closed
Phase 2 — DC Remediation ~40% in progress
Phase 4 — MCN Configuration (specs in flight) ~20% in progress
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
Campus Pilot Build Begins · #79 + #82 Spec Drafting · MC Reconnection Production
Sandbox ready (Jess confirmed 5 May) → unblocks pilot execution. dbt model `campus_canonical` build begins in silver → gold (Hristo / BI). Zero Copy sync gold → DC. New DMO mapped. #79 (consent) + #82 (subscriber migration) specs drafted once Ash + Chris's discrepancy DD lands. #88 stream error monitoring spec. #80 MC connection recreation in production (still gated on Ash sign-off). Polly + Simon EoW deliverable: campus + programme transformation docs (Fri 8 May).
Starts Thu 7 May
Weeks 5–6
14–27 May
MCN Configuration · CI Build · Consent & All Subscribers Execute
Calculated Insights build (#81 — PipeAge, Suppression Flags, Footer CTAs, Application Link). Consent architecture implementation (#79). All Subscribers migration execute (#82) once legal scope confirmed. Programme footer CTAs (#87). End-to-end Pillar journey on MCN.
Planned
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
Status as of End-of-Week 3
Pilot Scope Locked — 6 May

Campus + programme canonicalisation in scope. Track A (Snowflake-first dbt silver→gold) confirmed as primary path; Track B (DC-first BDT) ruled out — fragments normalisation authority. Five build checkpoints framed: dbt layer · DC-first reference · ZC sync · DMO mapping · activation showcase. Conflict-resolution rule for `Preference__c` locked (most-recent matching case criteria; fallback to Contact). dbt Core inside Snowflake workspaces (not external dbt Cloud) confirmed as the tooling. Sandbox almost ready per Jess (confirmed 5 May) — unblocks Wk 4 build start.

Operating Model Signed-Off — 5 May

14-slide operating-model deck (#142) presented to broader team and signed-off as the post-architecture working framework. Closed.

Consent Architecture Decided — 6 May

DC owns consent (not Snowflake — Snowflake = reporting only). MC unsubscribe = canonical base (362K records, verified). Three-DMO model re-confirmed: `CommunicationSubscription` + `ChannelType` + `CommunicationSubscriptionConsent` + `ContactPointConsent` (for IR + segmentation). Data cleaning happens in BI silver layer before DC. Preference centre starts simple: one tickbox "Marketing"; CloudPage stays active during migration. Seven-flag reconciliation identified as the core open work item for the #79 spec.

Subscriber Discrepancy DD — Open (Ash + Chris)

The discrepancy between SFMC subscribers and CRM Lead/Contact counts (~362K vs ~3.5M opt-outs) is acknowledged as a business artifact: Hult's lead-acquisition model relies on third-party purchasing + repurchasing, which creates duplicates across CRM. Ash + Chris will run a query to quantify the gap before #79 + #82 specs scope the migration approach. Currently blocking #79 + #82 spec drafting.

MC Connection Cleanup — Still in Production Phase (#80)

Jessica has deleted 31 sfmc-connector streams. Reconnection sequence in production still pending: requires Ash sign-off + low-traffic window. Sandbox testing first per the spec.

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
149Campus canonical pilot — scope locked, sandbox-ready imminent2In Review
80MC connection recreation — 31 streams cleaned, recreate gated on Ash4In Progress (Jessica)
178Data Cloud One companion org sandbox provisioning1In Progress (Falak)
82All Subscribers migration — spec drafted, blocked on DD4Spec drafted
84WhatsApp / Unified Messaging — audit complete, 5 bugs4In Review
73Two-org Data Space/Data Share architecture1Backlog
79Consent architecture — DC owns, 7-flag reconciliation open4Backlog
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 strategy (NEW Wk 3)4Backlog
221MCN Preference Center configuration (NEW Wk 3)4Backlog
Budget & Utilisation — End of Week 3
Weeks Completed
3 of 8
Budget Invoiced (capped)
€5,000 of €20,000
Invoice status: INV F-14/2026 issued 30 Apr (due 1 Jun) covering Wks 1+2 = €5,000. Wk 3 (this week) is now closed and accrues toward the next invoice (INV-002, Wks 3+4 = €5,000) which issues at end of Wk 4 (13 May). Fortnightly invoicing, NET 30.

Cap rule honoured: Weekly cap is fixed at €2,500 regardless of actual hours worked. Hours absorbed beyond the 20h/week cap-equivalent: Wk 1 +12h · Wk 2 +12.5h · Wk 3 +19h. Total of +43.5h absorbed beyond contracted capacity through Phase 1 closure, the architecture decision, the operating-model deck sign-off, the campus pilot scope lock, and the consent architecture decisions. None of this overage is invoiced — the contracted SOW total of €20,000 will not be exceeded.

Pace: 25% invoiced at 37.5% of timeline = ahead on delivery vs invoicing. Phase 1 fully closed, pilot scope locked and ready to build, Phase 4 specs (#79 + #82) drafting unblocked once Hult-side DD lands.
Next Steps — Week 4 (starts Thu 7 May, per SOW Phases 2 + 4)
Campus pilot build kicks off (#149) — sandbox-ready per Jess (5 May). Five checkpoints execute: dbt `campus_canonical` model in silver→gold (Hristo / BI) · Zero Copy sync gold → DC · new DMO mapped · activation showcase via Apex/Flow/SF Connect (optional). Track A primary; Track B kept as DC-first reference. Tableau workbooks with programme logic to download for replication in dbt.
#79 (consent) + #82 (subscriber migration) spec drafting — unblocked once Ash + Chris's DD on the subscriber-vs-Lead/Contact discrepancy lands. Specs incorporate the seven-flag reconciliation logic + the 3-DMO model.
MC connection recreation in production (#80) — continues the unmap → delete → recreate sequence. Still gated on Ash sign-off + low-traffic window. Sandbox run first per spec.
#88 stream error monitoring spec — pickable now that scope is refined post-#160 cleanup. ~27 surviving streams to instrument.
Polly + Simon EoW deliverable (Fri 8 May) — campus + programme transformation documentation finalised, with categorisation columns (segmentation/personalisation/normalisation) for each of the 64+ rules. Becomes the spec input for the dbt canonical model.
Sprint review action items — StoryBlock tagging kickoff with Aaron / web team (external scheduling), workspace access for Jonatan (Jess to action), MCN admin perms for Ash (HULTMKT1-7467, with SF Support since Dec 2025).
Phase 4 prep extended — #81 (CI build: PipeAge / Suppression / CTAs), #87 (programme-specific footers), #83 (sender profiles + reply mail mgmt), #86 (WhatsApp bulk send), #219 (deliverability strategy → 4 unknowns for Ash / SF Support), #221 (preference centre — depends on #79 DMOs first).
Open Questions for Leadership
QQuestionOwnerBlocks
Q1Operating-model deck (#142) — sign-off?James + Simon✓ Resolved 5 May · signed-off, deck closed
Q4Campus canonical — confirm as first proof point?James + Simon✓ Resolved 6 May · campus + programme locked
Q2Legal scope for All Subscribers migration — current 362K unsubs, or broader historical superset (subscribers who unsubed at any point, even if since re-subscribed)?Ku / Simon (legal)#82 execute · Wk 5+
Q3Data Graph naming + structure — confirm PG vs UG split (per Polly+Simon decision) and per-journey-family pattern before first build.Marketing (Simon · Polly · Ash)First Data Graph build · Wk 5+
Q5 (NEW)Subscriber-vs-Lead/Contact discrepancy DD — quantify gap, document third-party-lead duplication root cause.Ash + ChrisBlocks #79 + #82 spec drafting
Q6 (NEW)Event-reminder classification — marketing vs transactional? Affects footer language + whether event reminders bypass the marketing tickbox.Simon + Polly (legal counsel)#221 preference centre + #87 footers
Q7 (NEW)MCN deliverability unknowns — IP type today, IP transfer to MCN, parallel-run sharing, sending subdomain decision.Ash + SF Support#219 deliverability strategy · before first MCN send
Health Check at End of Week 3 (per SOW §6)
Schedule
Phase 1 closed on time. Phase 2 in flight (~40%). Phase 4 specs in active drafting (#79, #82) waiting on Hult-side DD. Pilot scope locked end-of-Wk 3, ready to build Wk 4 once sandbox lands.
Budget
On budget — €5,000 invoiced (Wks 1+2 via INV F-14/2026). Wk 3 closes today, accrues to next paired invoice. Cap rule applied (no overage billed despite +43.5h absorbed).
Scope
No scope expansion. Two new tickets created Wk 3 (#219 deliverability, #221 preference centre) within Phase 4 envelope — splitting work that was implicit in #79/#80 into their own deliverables. SOW §5 boundaries still respected.
Risk
Amber — 5 open questions, of which 3 are blocking Hult-side: (Q5) Ash+Chris discrepancy DD blocks #79+#82 specs · (Q7) deliverability unknowns block first MCN send · (HULTMKT1-7467) Ash MCN admin perms still pending since Dec 2025.
Net read

Engagement on schedule and on budget at the Week-3 checkpoint. Pilot scope locked with Track A primary; build kicks off Wk 4 as soon as sandbox is provisioned. Operating-model deck signed-off, consent architecture decided, transformation rules catalogued and categorised. Q1 + Q4 from the Wk 2 report resolved this week. The 3 Hult-side blockers (Q5, Q7, HULTMKT1-7467) are the highest-leverage unblockers for the back half — fast turnaround on these keeps Phases 4–5 on track. Engagement is ahead on delivery vs invoicing pace (37.5% complete at 25% invoiced).