The day at a glance
A ~8.5-hour working session, structured around the eight non-negotiable gates. Every critical question is run as “show us”, not “do you support…”. The output of the day is evidence — recordings, logs, API responses — and a completed scorecard, not a feeling.
Vendor confirms it understands the HQ→market model and the eight gates below.
Live demo: partial override + later HQ update. Capture CDA/GROQ payloads before & after.
Demo in UI, then attempt publish with a Management-API token. Capture the enforcement response.
Real BMW-like preview: inherited vs overridden fields, market/locale, approval state.
Asset reference, expiry/replacement, usage tracking, pre-publish stale-asset warning.
Environment model, re-runnable import, rate limits, rollback — with real 429/Retry-After logs.
Answers that go into the contract/RFP, not just the chat: SLA, residency, TISAX/ISO, uplifts.
Only as far as BMW's Phase-1 scope requires — do not let it consume the day.
Pass/fail per gate, open-risk owner + follow-up deadline, contractual to-dos.
Read-in: where Contentful stands going in
Our position from the documented evidence in the shared dossier (verified against official docs, two passes 2026-07-06/07). The workshop confirms or overturns it — that is the point.
Top strengths
- Native multi-hop locale fallback chainsde-CH→de-AT→de-DE→en-US, configurable per locale; locale-scoped roles keep market editors in their locale. docs
- Cleanest compliance sheetISO/IEC 27001:2022, SOC 2 Type 2, and TISAX (TÜV Rheinland / ENX) — the automotive-relevant assessment the others lack. docs
- Deepest hands-on for usOur repo runs the full Contentful import pipeline, locale-scoped publishing and market tags today — plus BMW already runs 160+ BMW / 147 MINI dealer sites on it. docs
Top risks / where the bodies are buried
- Workflow API-enforcement is undocumentedThe docs never state whether a Management-API token can publish an entry sitting pre-Approved, and admins bypass steps by default. Governance may be UI-deep only — GATE 2 is where we find out. docs
- Salesforce acquisition pending closeDefinitive agreement signed 2026-06-01, expected to close ~Aug–Oct 2026. No customer FAQ, pricing or standalone-roadmap commitment published — renewal leverage sits with Salesforce. docs
- Hard edges at BMW scale50 fields per content type forces model decomposition; a saved empty string silently breaks the fallback chain; the org is pinned to one residency region permanently. docs
Live demo scripts — the eight gates
Each gate is a script: setup → show-us steps → expected evidence → pass/fail. Run them in order; GATES 1 and 2 are the ones that decide Contentful. Don't accept a verbal answer where a demo is written.
Field-level HQ inheritance
90 minOne space; a field-level-localized car type with a fallback chain de-CH→de-AT→de-DE→en-US. HQ values populated on the default locale.
- Leave de-DE price and image empty. GET the entry via the CDA in de-DE → expect the fallback-chain values to resolve.
- Set de-DE price only. GET again → price is the DE override, image still inherited.
- Update the master/default-locale price. GET de-DE → the inherited price reflects the new master value; the DE override is untouched.
- Write an empty string "" into de-DE image. GET → show that this blocks the fallback ("what you set is what you get") — the documented trap.
Four CDA JSON payloads, side by side, showing steps 1–3 resolving correctly and step 4 breaking.
API-enforced approval
90 minWorkflows app: a sequential Draft→Reviewed→Approved→Published workflow; a per-step rule denying publish to the editor role; only a Market-Lead team can move Reviewed→Approved.
- As an editor in the web app, attempt to publish a Draft entry → expect it blocked.
- The decisive step: with a Management-API (CMA) token, POST a publish on that same Draft entry. Capture the HTTP response.
- As a space admin, move the entry between steps → note that admins bypass restrictions by default (confirm how the admin role is contained).
- Ask: can an integration/automation token be scoped so it, too, respects the workflow gate?
The raw CMA publish response from step 2 (a 2xx means the gate is UI-only; a 4xx means it is enforced).
Editor-grade visual preview
60 minStudio / Experiences preview wired to a BMW-like page pulling an HQ master + a DE market variant.
- Open the page preview; switch market/locale (DE ↔ another market) and desktop ↔ mobile.
- Show which fields are inherited-from-HQ vs. locally overridden — visibly, in the editor, not just in the payload.
- Show the entry's workflow state and a draft-vs-approved-vs-published comparison in the same flow.
A screen recording of the full flow, plus the plan gating for Studio (unverified — confirm).
DAM / AEM Assets coexistence
60 minAn entry referencing an external asset (an AEM Assets URL), plus a second stale/expired asset.
- Reference the external asset and render it through the delivery API + image transforms.
- Show expiry / replacement handling and a 'where is this asset used' usage view.
- Attempt to publish an entry pointing at the expired asset → expect a warning/block.
A working external-asset reference and a demonstrated (or clearly-scoped-as-custom) usage/expiry mechanism.
Migration & cutover
60 minA source space with content model + entries; a target environment; a scripted import.
- Run a re-runnable import (idempotent on an external key) twice → show no duplication.
- Sustain CMA writes at the 10 req/s/space ceiling for ~10 min → capture the 429 / Retry-After behavior under load.
- Clone an environment and swap the master alias → confirm what does NOT copy (workflows) and that versioning/snapshots exist only in the master-alias target.
Import logs (idempotency), a 429/Retry-After trace, and the alias-swap result.
China / CDN delivery
45 minA published entry served through the CDN; BMW's own CDN (Akamai) in front for the invalidation test.
- Publish a change → measure publish-to-edge propagation time.
- Ask for the concrete mainland-China delivery story (edge presence / ICP-compliant partner / customer-proxied).
- Show the sanctioned cache-invalidation webhook/headers for BMW's Akamai — noting webhooks retry only 3× in ~1 min and never retry timeouts.
A propagation number and a written China-delivery architecture; the invalidation mechanism.
Exit & reversibility
45 minThe demo space with assets, roles, workflows and some version history.
- Run space export --download-assets → confirm content model, entries, assets, locales, roles and editor interfaces are all present.
- Confirm the exclusions explicitly: workflows, tasks, scheduled releases, version history, space memberships, author history, webhook credentials.
- Ask about the migration path for the proprietary rich-text JSON to another platform.
An export bundle + an explicit written list of what is and isn't included.
Contractual signability
60 minCommercial / legal stakeholders in the room; RFP language ready.
- Get, in writing: which roadmap, pricing and renewal terms survive the Salesforce close, and any standalone-availability commitment.
- Confirm the SLA ("up to 99.99%") as a contractual number, EU data-residency architecture (storage vs processing), and rate-limit uplifts for migration + steady state.
- Confirm the custom-roles tier (Enterprise on today's pricing page) and the AI-Actions / bandwidth metering that apply to BMW's volumes.
Written answers destined for the contract/RFP — not verbal reassurance.
Evidence checklist & contractual follow-ups
Capture during the day
- Screen recording of every gate demo (GATE 1–4 especially).
- Raw API responses: the GATE 2 Management-API publish attempt; GATE 5 429 / Retry-After traces.
- CDA/GROQ payloads for GATE 1 (before and after the HQ update).
- Written commercial answers for GATE 8 (SLA, residency, TISAX/ISO, uplifts, roadmap).
- Open-risk register: each failed/partial gate → owner + follow-up deadline.
Contractual / commercial follow-ups (Contentful)
- Post-Salesforce roadmap, pricing and renewal protections — in writing.
- API-level workflow-enforcement statement (can a CMA token bypass approval?).
- Empty-string fallback guardrails for TMS/import round-trips.
- EU data-residency reference architecture for a German OEM (storage vs processing).
- SLA 99.99% as a contractual figure + rate-limit uplifts for migration.
Post-workshop scorecard
Fill this in before leaving the room, while the demos are fresh. Same template across all three vendors, so the three days are directly comparable. Circle one verdict per gate; a FAIL on GATE 1 or GATE 2 is decisive, not advisory.
| Gate | Verdict | Evidence captured (link / file) | Owner & follow-up date |
|---|---|---|---|
| GATE 1Field-level HQ inheritance | PASSPARTIALFAIL |
||
| GATE 2API-enforced approval | PASSPARTIALFAIL |
||
| GATE 3Editor-grade visual preview | PASSPARTIALFAIL |
||
| GATE 4DAM / AEM Assets coexistence | PASSPARTIALFAIL |
||
| GATE 5Migration & cutover | PASSPARTIALFAIL |
||
| GATE 6China / CDN delivery | PASSPARTIALFAIL |
||
| GATE 7Exit & reversibility | PASSPARTIALFAIL |
||
| GATE 8Contractual signability | PASSPARTIALFAIL |
Scores on the dossier are directional; the workshop is where the decision is actually made. GATE 1 (field-level inheritance after partial override) and GATE 2 (API-enforced approval) are pass/fail thresholds — a vendor that fails either is not a Phase-1 platform regardless of its weighted total. GATES 3–8 inform the contract and the build estimate.