CONTENTSTACK · WORKSHOP DAY
Plan.Net / Mindcore · BMW·MINI AEM Replacement · One-day vendor workshop
C

Contentstack organization → stack → branches; “environments” are publishing targets, not sandboxes

Governance-native, best native workflow.

Contentstack is the governance-native option: the only vendor whose documentation natively satisfies enforced approval (publish rules, role-based approvers, four-eyes), the best permission granularity of the three, and native personalization + CDP. It leads the Governance-first profile and narrowly the Engineering-first one. The day turns on one thing: its localization model detaches an entry permanently on the first partial override, which is exactly BMW's field-level inheritance requirement — so GATE 1 is make-or-break.

GOING IN Leads Governance-first (398/500) and, narrowly, Engineering-first (362/500). Front-runner if governance is the priority.
Companion to the shared technical dossier · other days: Contentful pack · Sanity pack
A

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.

30m
Context: BMW/MINI + target architecture

Vendor confirms it understands the HQ→market model and the eight gates below.

90m
GATE 1 — Fallback / inheritance

Live demo: partial override + later HQ update. Capture CDA/GROQ payloads before & after.

90m
GATE 2 — Approval workflow

Demo in UI, then attempt publish with a Management-API token. Capture the enforcement response.

60m
GATE 3 — Editor visual preview

Real BMW-like preview: inherited vs overridden fields, market/locale, approval state.

60m
GATE 4 — DAM / AEM Assets

Asset reference, expiry/replacement, usage tracking, pre-publish stale-asset warning.

60m
GATE 5 — Migration / cutover

Environment model, re-runnable import, rate limits, rollback — with real 429/Retry-After logs.

60m
GATE 8 — Compliance / commercial / contract

Answers that go into the contract/RFP, not just the chat: SLA, residency, TISAX/ISO, uplifts.

45m
AI / personalization (Phase-1 scope only)

Only as far as BMW's Phase-1 scope requires — do not let it consume the day.

30m
Recap / open risks

Pass/fail per gate, open-risk owner + follow-up deadline, contractual to-dos.


B

Read-in: where Contentstack 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

  • Fully native enforced approvalPublish rules gate publishing on a named stage; approvers by user or role; four-eyes prevents self-approval; scoped per branch/environment/locale. docs
  • Best permission granularityCustom roles scope by content type, specific entries, field, language variant, environment, taxonomy term and asset folder — plus a SCIM API (beta). docs
  • Native personalization + CDP + 500-field headroomPersonalize (audiences, variants, A/B, multi-armed bandit) on the Lytics CDP; 500 fields per content type vs Contentful's 50. docs

Top risks / where the bodies are buried

  • Localization detaches the entry — permanently“The inheritance of the entry is broken from the fallback language and it, therefore, becomes independent.” The moment a market edits one field, empty fields stop following HQ. This is the field-level requirement failing. docs
  • CMA writes are 10 req/s per ORGANIZATIONNot per stack — every stack, integration and import job across BMW + MINI shares one 10 req/s write budget; bulk ops run at 1 req/s. docs
  • Compliance + consistency gapsNo TISAX on the trust page; standard SLA is 99.50% (99.95% only on Scale/X5); docs say 3 environments / 2 branches per stack while the legal terms say 5/5; release & webhook fan-out behavior is undocumented. docs

C

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 Contentstack. Don't accept a verbal answer where a demo is written.

GATE 1

Field-level HQ inheritance

90 min
Going in: Structural risk — this is the make-or-break gate for Contentstack.
Setup

A stack with a master locale + de-DE; a car entry not yet localized into de-DE.

Show us — live steps
  1. GET the de-DE entry with include_fallback=true → it serves master content (inheritance working while unlocalized).
  2. The decisive step: localize de-DE and change exactly ONE field (price). Save.
  3. Update the master image. GET de-DE again → show whether the still-empty DE image follows the new master (expected: it does NOT — the entry has detached).
  4. Ask for the official pattern for 'override one field, keep inheriting the rest' — fragment entries? a delivery-layer merge?
Expected evidence to capture

Payloads before/after localization proving detachment, plus the vendor's recommended partial-override pattern.

✓ Pass
Only if they demonstrate a supported, maintainable pattern for partial override with continued inheritance at 50+ models × 30 markets.
✗ Fail
The answer is 'don't localize' or 'copy the fields manually' — i.e. the requirement isn't met.
Reference: official docs
GATE 2

API-enforced approval

90 min
Going in: Likely the strongest of the three — verify the API path and plan inclusion.
Setup

A workflow with a Draft→Reviewed→Approved→Published stage set; a publish rule requiring the Approved stage before publish; four-eyes enabled; only a Market-Lead role can move Reviewed→Approved.

Show us — live steps
  1. As an editor in the UI, attempt to publish a Draft entry → expect it blocked by the publish rule.
  2. With a Management-API token, attempt to publish the pre-Approved entry → capture the response (expected: blocked by the publish rule).
  3. As the last editor, attempt to approve/publish your own entry → expect four-eyes to block it.
  4. Confirm the role-gated Reviewed→Approved transition and that Publish Rules are included in BMW's plan tier.
Expected evidence to capture

The CMA rejection response + the four-eyes block + confirmation the feature is in-plan.

✓ Pass
CMA publish blocked natively before the Approved stage, with role-gated approval and four-eyes.
✗ Fail
Publish rules turn out to be UI-only, or aren't in the offered plan.
Reference: official docs
GATE 3

Editor-grade visual preview

60 min
Going in: Visual Builder + Live Preview need frontend edit-tag instrumentation; SDK v4 is 'select plans — contact support'.
Setup

Visual Builder + Live Preview wired to a BMW-like page; Timeline for scheduled releases.

Show us — live steps
  1. Open Visual Builder on the page; switch market/locale and device.
  2. Show inherited-vs-overridden field visibility and the entry's workflow stage.
  3. Preview a scheduled release via Timeline (draft/approved/published comparison).
Expected evidence to capture

A screen recording; confirmation of the Live Preview SDK plan gating.

✓ Pass
Inherited/overridden + market/locale + stage visible in one editorial flow.
✗ Fail
Preview requires heavy custom instrumentation with no inheritance visibility.
Reference: official docs
GATE 4

DAM / AEM Assets coexistence

60 min
Going in: 700 MB asset cap, 500k assets/org; probe usage tracking + expiry.
Setup

An entry referencing an external asset + a stale asset.

Show us — live steps
  1. Reference the external asset (or the Interstack asset-sharing pattern) and deliver it.
  2. Show usage tracking ('where used') and expiry/replacement.
  3. Attempt to publish with the stale asset → expect a warning.
Expected evidence to capture

A working external reference + usage/expiry demonstration or a bounded custom plan.

✓ Pass
External DAM references + usage/expiry governance (native or bounded build).
✗ Fail
CMS asset store offered as the enterprise-DAM answer.
Reference: official docs
GATE 5

Migration & cutover

60 min
Going in: The org-wide 10 req/s write ceiling is the headline risk — prove it under two concurrent stacks.
Setup

Two stacks in one organization; a scripted import into each.

Show us — live steps
  1. Run a re-runnable import → show idempotency.
  2. Write to two stacks simultaneously at full tilt → show that they share the org-wide 10 req/s budget (and bulk ops the 1 req/s budget); capture 429s.
  3. Show the branch model: merge covers content types + global fields only (entries never merge back); confirm 3-vs-5 environments and 2-vs-5 branches against the plan.
Expected evidence to capture

429 traces proving the org-wide ceiling; the branch-merge limitation demonstrated.

✓ Pass
Idempotent import + a contractual rate-limit uplift that makes a 30-market rollout feasible.
✗ Fail
The shared org budget throttles a realistic migration and no uplift is offered.
Reference: official docs
GATE 6

China / CDN delivery

45 min
Going in: CDA 100 req/s REST origin (GraphQL 80); CDN cached uncapped; three instances (incl. EU).
Setup

A published entry through the CDN; BMW's Akamai in front.

Show us — live steps
  1. Publish → measure publish-to-edge propagation.
  2. Ask for the mainland-China delivery story on the multi-cloud (AWS/Azure/GCP) footprint.
  3. Show cache invalidation for BMW's Akamai and the webhook reliability model.
Expected evidence to capture

A propagation number + a written China plan + the invalidation mechanism.

✓ Pass
Concrete propagation + a real China plan + reliable invalidation.
✗ Fail
No propagation figure and no China story.
Reference: official docs
GATE 7

Exit & reversibility

45 min
Going in: CLI export is broad (incl. Workflow, Custom Role, Personalize); NOT Users or Releases; JSON-RTE conversion is the friction.
Setup

The demo stack with workflows, roles and personalization config.

Show us — live steps
  1. Run cm:stacks:export → confirm content types, entries, assets, global fields, workflows, roles, taxonomy, personalize are present.
  2. Confirm the exclusions: Users and Releases; note the 100 MB per-item content-length default.
  3. Ask about converting the proprietary JSON RTE / modular blocks to another platform.
Expected evidence to capture

An export tree + explicit exclusions.

✓ Pass
Broad config + content export with the exclusions acknowledged.
✗ Fail
Governance/personalization config can't be exported.
Reference: official docs
GATE 8

Contractual signability

60 min
Going in: Contentstack has the most open doc-vs-legal contradictions to resolve on paper.
Setup

Commercial / legal stakeholders in the room.

Show us — live steps
  1. Get the official partial-override-with-continued-inheritance pattern in writing (ties to GATE 1).
  2. Get contractual rate-limit uplifts (the org-wide 10 req/s), a TISAX plan + date, and resolution of the 3-vs-5 environments / 2-vs-5 branches contradiction.
  3. Confirm release item caps (500/release, 25/API call) and the release-deploy webhook behavior; confirm Publish Rules and Personalize plan inclusion + Lytics event-based pricing.
Expected evidence to capture

Written answers for the contract/RFP.

✓ Pass
Signable uplifts, a TISAX date, and the inheritance pattern documented.
✗ Fail
The inheritance pattern stays 'it depends' and no TISAX commitment.
Reference: official docs

D

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 (Contentstack)

  • Official partial-override + continued-inheritance pattern — in writing (GATE 1).
  • Contractual rate-limit uplifts above the org-wide 10 req/s write ceiling.
  • TISAX assessment plan + date (absent from the trust page today).
  • Resolve the docs-vs-legal contradiction: 3 vs 5 environments, 2 vs 5 branches per stack.
  • Release item caps + release-deploy webhook behavior; Publish Rules & Personalize plan inclusion.

E

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.

GateVerdictEvidence 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
   
DECISION RULE

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.