Skip to content

Module 1.4: Platform Adoption & Migration Strategy

Discipline Module | Complexity: [ADVANCED] | Time: 55-65 min

Before starting this module:


After completing this module, you will be able to:

  • Design migration strategies that move teams to the platform incrementally with minimal disruption
  • Implement adoption tracking dashboards that identify teams struggling with platform onboarding
  • Build champion programs that turn early adopters into advocates who accelerate platform adoption
  • Lead organizational change management for platform migrations spanning hundreds of services

Hypothetical scenario: A platform team ships a Kubernetes-based internal platform after eighteen months of engineering work. Leadership sends a company-wide email mandating migration within six months. At the deadline, roughly one quarter of development teams have moved workloads; the rest cite competing priorities, fear of production risk, or unresolved blockers from earlier attempts. Three teams have quietly rebuilt bespoke deployment tooling to avoid the mandate entirely. The platform is technically sound, but adoption is not — because building infrastructure and earning adoption are different disciplines that require different investments.

The answer to “why won’t they use it?” is rarely “the technology is wrong.” More often, migration was announced as a deadline without a plan, without embedded support, and without understanding what migration costs each product team in calendar time and cognitive load. Platform teams that treat adoption as a communications problem — send another email, extend the deadline — discover that resentment compounds faster than compliance dashboards improve. This module teaches durable practices for earning adoption through paved roads, incremental migration, aligned incentives, and honest deprecation — without organizational warfare.

The Garden Path Analogy

A mandate is a fence that tells people where they cannot go. A golden path is a well-lit walkway that happens to be the fastest route to where they already want to be. Teams do not resent the walkway; they resent being shoved through a gate on someone else’s schedule. Your job is to pave the path so thoroughly that walking on it feels like the team’s own decision.

Building a platform and getting people to use it require overlapping but distinct capabilities. The former rewards deep technical design; the latter rewards empathy, change management, migration tooling, and patience. When organizations conflate the two, platform teams burn out while product teams learn to route around them. The practices in this module apply whether you operate a Kubernetes 1.35 cluster platform, a CI/CD paved road, or an internal developer portal — the organizational mechanics of pull versus push, strangler-fig migration, and sunset discipline stay the same even when the tool skin changes.

If you take one idea from this module, let it be that adoption metrics and migration plans deserve the same engineering rigor as control-plane availability. Teams that instrument cluster health but guess at adoption fly blind into sunset deadlines and wonder why holdouts become heroes for resisting. Treat every migration as a product launch with cohorts, feedback loops, and a credible story — because to the teams you are asking to move, it is a product launch whether you call it that or not.


Adoption is the moment a team chooses your platform because it is the easiest, safest, and fastest path to ship — not the moment they comply with a policy ticket. Evan Bottcher’s framing of platforms as products that reduce cognitive load for stream-aligned teams (see What I Talk About When I Talk About Platforms) only delivers value when teams actually consume those capabilities. A paved road nobody walks is indistinguishable from no road at all, regardless of how elegant the underlying Kubernetes abstractions are.

Pull-based adoption works by reducing friction on the desired path and letting product teams retain agency. Push-based adoption works by removing alternatives — mandates, gatekeeping review boards, or hard blocks in legacy pipelines. Both can raise usage numbers on a dashboard, but they produce different long-term outcomes. Pull builds advocates who recommend the platform in design reviews; push builds experts at working around your controls. The CNCF TAG App Delivery platforms whitepaper emphasizes that internal platforms succeed when they deliver a compelling product experience to application teams, not when they win arguments in architecture review.

The adoption spectrum runs from fully optional capabilities through strongly encouraged defaults to opt-out baselines and fully mandatory guardrails. Most healthy organizations use a layered model rather than picking one point on the spectrum for everything. Security scanning, identity baselines, and audit logging often belong in the mandatory layer because they protect the whole company regardless of individual team preference. Standard CI/CD, observability integrations, and deployment pipelines fit the opt-out default layer: teams use them unless they document a supported exception. Service templates, developer portals, and advanced platform features belong in the voluntary layer where teams adopt when the value proposition is clear.

Mandates are justified when the capability protects shared risk that individual teams cannot price correctly — regulatory controls, secrets handling, or production access patterns that create blast-radius exposure across tenants on a shared Kubernetes 1.35 cluster. Mandates are corrosive when they force teams onto workflows that genuinely do not fit their constraints, or when they arrive without migration support, tooling, or a credible rollback story. The test is simple: if you removed the mandate tomorrow, would usage collapse because teams never wanted the capability, or would usage remain because the paved road is genuinely better? Collapse signals compliance theater; retention signals earned adoption.

flowchart TD
subgraph Mandatory [MANDATORY — Guardrails]
M1["Security scanning, access controls, audit logging, resource limits<br/>Enforced by automated policy"]
end
subgraph OptOut [OPT-OUT DEFAULT — Strong Defaults]
O1["Standard CI/CD, monitoring, deployment pipeline<br/>Teams use by default; exceptions require justification"]
end
subgraph Voluntary [VOLUNTARY — Golden Paths]
V1["Service templates, developer portal, advanced features<br/>Teams adopt when value is clear"]
end
Mandatory --> OptOut --> Voluntary

Strongly encouraged adoption sits in the sweet spot for most core platform services: leadership communicates clear expectations, platform teams invest in documentation and support, and teams migrate because the path of least resistance aligns with the path of best outcomes. Fully optional adoption is appropriate for experimental capabilities where you are still discovering product-market fit inside the company; the risk is never reaching critical mass. Fully mandatory adoption for non-security capabilities usually trades short-term dashboard green for long-term shadow systems and eroded trust in the platform team.

Team Topologies reminds us that platform teams succeed when they operate as an internal product consumed via X-as-a-Service interaction modes — clear APIs, predictable release cadence, and boundaries that do not require constant collaboration firefights. When platform teams slip into facilitation mode for every migration, they become a bottleneck; when they hide behind tickets without customer empathy, they become irrelevant. Pull-based adoption is how you keep the platform team in the product posture: stream-aligned teams choose the service because it accelerates their flow, and the platform team scales by improving the product rather than arm-wrestling each holdout in isolation.

Hypothetical scenario: A security baseline moves to mandatory policy-as-code enforcement on all Kubernetes 1.35 clusters while developer tooling around CI and observability stays strongly encouraged. Product teams accept the security mandate because the rationale is legible — shared blast radius — and the enforcement is automated rather than a monthly exception spreadsheet. They resist a mandate on the internal developer portal because their workflow already integrates documentation elsewhere; incentives and templates eventually raise portal usage without a decree. The lesson is that legitimacy of push correlates with clarity of shared risk, not with the platform team’s frustration level.


A golden path — sometimes called a paved road — is an opinionated, supported route through your platform that handles the boring correctness work so product teams focus on business logic. Golden paths are not catalogs of every possible tool combination; they are curated defaults with escape hatches. The pull principle states that teams should migrate because the golden path is faster than their bespoke setup, not because a architecture review board rejected their alternative.

Making the paved road the easiest path requires obsessive attention to time-to-first-value. Measure how long it takes a new engineer to deploy a “hello world” service through the golden path versus through the legacy route, including account provisioning, documentation hunting, and waiting for platform team office hours. If the legacy route is faster for common cases, your adoption strategy is fighting physics. Fix the golden path before you fix the communications plan.

Reduce switching costs at the boundary where teams feel pain. Automated scaffolding that generates a working repository with CI, observability hooks, and Kubernetes manifests beats a twenty-page manual that assumes fluency in six tools. Embedded platform engineers during a team’s first migration week signal commitment more loudly than a Slack announcement. Instant rollback mechanisms — feature flags on routing, parallel pipelines, or reversible DNS cutovers — convert risk-averse holdouts into willing experimenters because the downside is bounded.

Internal marketing is not vanity; it is how pragmatic teams learn that peers succeeded. Reference stories from lighthouse teams — early adopters who tolerated rough edges in exchange for influence on the roadmap — provide the social proof that Geoffrey Moore described in Crossing the Chasm between enthusiastic early adopters and the pragmatic early majority. Without those stories, the majority waits indefinitely for proof that the platform survives real production traffic. Platform teams that only celebrate feature launches miss the adoption mechanism: celebrate team outcomes enabled by the platform, not platform components shipped in isolation.

Documentation and onboarding are adoption levers only when they shorten time-to-first-value rather than merely describing architecture. A tutorial that ends with a running service in a sandbox cluster beats a reference manual that assumes twelve prerequisites. Pair documentation with office hours staffed by engineers who have migrated real services — not only developer advocates who demo happy paths. The goal is for a new team lead to believe “my peer shipped with this last sprint” rather than “the platform team wants credit for a launch blog.”

Align incentives with product-team KPIs instead of platform-team vanity metrics. If product management rewards feature delivery while platform metrics reward ticket closure, migrations lose every prioritization meeting. Co-create migration milestones with engineering managers so platform work appears on the same Gantt chart as customer-facing epics. When adopting the paved road visibly removes recurring operational tasks from a team’s backlog, Desire in the ADKAR sense emerges naturally because the change helps them hit commitments they already care about.


Migration Strategy: The Strangler Fig and Beyond

Section titled “Migration Strategy: The Strangler Fig and Beyond”

Martin Fowler’s Strangler Fig Application pattern names the safest default for platform migrations: gradually route functionality from the old system to the new one while the legacy path remains operational until confidence is high. Like the fig vine that grows around a host tree, new capabilities wrap existing workflows piece by piece rather than demanding a single cutover weekend. The old system handles less and less until decommissioning is a formality rather than a crisis.

Strangler-fig migration succeeds when you identify seams — boundaries where traffic, configuration, or ownership can split without rewriting everything at once. Ian Cartwright, Rob Horn, and James Lewis outline four activities for incremental modernization: understand desired outcomes, break the problem into smaller parts, deliver those parts successfully, and change the organization so the approach sustains. Platform migrations fail when teams skip the first activity and jump to swapping tools. Outcomes like “reduce deployment lead time” or “standardize observability baselines on Kubernetes 1.35” anchor decisions; tool names do not.

Parallel run extends strangler fig for correctness-critical paths. Both old and new systems process the same inputs; automated comparison detects divergence before you promote the new path to primary. Payment routing, authentication, and telemetry pipelines benefit from shadow mode because manual spot checks do not scale across hundreds of services. The comparison layer must be automated and noisy when mismatches appear; otherwise teams dismiss drift as acceptable until an incident proves it was not.

Feature-flag migration toggles cohorts — individual teams, namespaces, or traffic percentages — between old and new implementations. Robust flag infrastructure with fast rollback is non-negotiable; a flag that takes hours to revert is not a safety mechanism. Big-bang migration — switching everyone on a single date — remains appropriate only when vendors decommission legacy systems, regulatory deadlines force coordinated change, or parallel operation is technically impossible. Even then, rehearse in staging, staff surge support, publish rollback runbooks, and communicate daily as the cutover approaches.

Every migrating team deserves a runbook that names their seam, their rollback trigger, their platform buddy, and their success criteria. A portfolio-level migration plan without per-team runbooks is a Gantt chart fantasy. Reversibility and blast-radius control should be explicit: which services can roll back independently, which shared dependencies create coupling, and what maximum concurrent migrations your platform team can support without starving incident response.

flowchart TD
A["Phase 1<br/>Old: 100% | New: 0%"] --> B["Phase 2<br/>Old: 70% | New: 30%"]
B --> C["Phase 3<br/>Old: 20% | New: 80%"]
C --> D["Phase 4<br/>Old: decommissioned | New: 100%"]

Hypothetical scenario: A platform team migrates CI from a self-hosted system to a Git-backed pipeline integrated with Argo CD on Kubernetes 1.35. Phase one onboards only greenfield services. Phase two migrates low-risk internal tools with parallel runs on pull requests. Phase three tackles revenue services with embedded support and automated config translation. Phase four decommissions the old controller only after the last team completes phase three or receives a documented exception. Total calendar time might stretch to nine months, but production incidents during migration stay near zero because no single weekend carries the entire company.

Portfolio migration governance should include a visible status board: teams in discovery, in progress, blocked, validating, or complete. Blocked status must link to an owner and ETA, not merely linger as shameful red. Review the board weekly with product leadership so blockers receive staffing decisions instead of passive-aggressive pings. Transitional architecture — temporary routing layers, dual-published artifacts, compatibility shims — feels wasteful but buys option value; Fowler’s strangler fig writing explicitly accepts transitional cost because earlier returns and lower risk outweigh purity.


Platform migrations are organizational change initiatives, not ticket queues. John Kotter’s research on major change programs — summarized in the 8 Steps for Leading Change — emphasizes urgency, coalition building, short-term wins, and sustained reinforcement. Platform teams that skip coalition building and jump to documentation wonder why perfect guides gather dust. You need allies in product leadership, security, and finance who repeat the same narrative: why migration matters now, what teams gain personally, and what happens if we accrete permanent legacy.

The Prosci ADKAR Model sequences individual change through Awareness, Desire, Knowledge, Ability, and Reinforcement. Platform rollouts routinely fail at Awareness and Desire while over-investing in Knowledge (documentation) and Ability (CLI tools). A developer who does not believe the migration solves their problem will not read the guide, no matter how polished. Start with the business case in language product teams use — faster incident recovery, fewer pager nights, reduced toil — before publishing the hundredth tutorial.

Incentives beat sticks for sustained adoption. Mandates produce compliance metrics; incentives produce behavior that survives the next reorg. Effective incentives align platform usage with what teams already optimize for: shipping features, reducing operational burden, and avoiding career-limiting outages. Reduced toil on the paved road — one-click deploys versus twelve manual steps — is an incentive embedded in the product. Priority support SLAs for teams on the platform signal that migration buys responsiveness. Budget relief when legacy infrastructure costs are transparently charged back to holdouts makes the status quo expensive without public shaming.

ApproachShort-term effectLong-term effect
MandateHigh compliance on dashboardsResentment, shadow IT, eroded trust
Deadline without supportUrgencyRushed migrations, quality regressions
Incentives and paved roadsModerate initial uptakeSustained adoption, goodwill
Social proof from lighthouse teamsPeer-driven uptakeOrganic growth across pragmatists
Automated migration toolingFaster conversionsPermanent behavior change

Meet teams where they are, not where you wish they were. Capacity-constrained teams need migration windows aligned with their release calendar, not arbitrary fiscal-quarter deadlines. Risk-averse teams need white-glove migration and proof on non-critical services first. Teams with legitimate capability gaps need roadmap honesty — either build the missing feature or grant a supported exception path. Pretending the platform supports a workflow it does not destroys credibility faster than any delayed timeline.

Research summarized in Accelerate and the ongoing DORA program links generative culture — psychological safety, learning orientation, user focus — to software delivery performance. Platform migrations stall in blame-heavy cultures because teams hide bypass behavior instead of reporting friction. Invest in blameless postmortems when migrations fail, publish what changed afterward, and reward teams that surface blockers early. Change management is not a slide deck; it is the repeated experience that honesty is safer than silence.

For politically resistant teams, escalation to leadership is a last resort, not a first move. Executives can remove organizational obstacles — conflicting priorities, underfunded platform staffing — but executive mandates without support recreate the failure mode this module opens with. Prefer making success visible on peer teams so resistance becomes the exception that requires explanation, not the default that requires courage to opt in.


Champion programs convert early adopters into internal advocates who accelerate adoption across the pragmatic majority. A champion is not a unpaid salesperson for the platform team; they are a respected engineer on a product team who co-designs golden paths, surfaces friction early, and tells credible stories in language their peers trust. The platform team provides air cover — roadmap influence, early access, public recognition — in exchange for time spent helping the next wave migrate.

Lighthouse teams are the first production users of a new capability under real constraints, not demo tenants with synthetic traffic. Select lighthouse teams for diversity of stack and risk tolerance: include one enthusiastic team and one skeptical team with strong production discipline. Skeptical lighthouse successes convince the early majority; enthusiastic-only stories read as marketing. Document what broke during lighthouse migrations with the same transparency as what improved; hiding early incidents poisons the reference story later.

A minimal champion program includes nomination criteria (peer respect, willingness to mentor), explicit time allocation from product management, office hours co-hosted by champions and platform engineers, and a feedback channel that turns champion input into visible roadmap movement within weeks. Champions who file issues into a void stop championing. Celebrate champion teams in engineering all-hands with metrics they care about — deploy frequency, incident recovery time — not platform vanity counts.

Hypothetical scenario: Six champions across three business units each mentor two teams through a CI migration over one quarter. Each champion runs a ninety-minute workshop using their own service as the worked example. Adoption among mentored teams reaches roughly double the rate of teams that only received email announcements, because skepticism is addressed by someone who shares their backlog pressures. The platform team learns edge cases earlier, and the champion cohort becomes the hiring pool for future platform engineers who understand product realities.


Adoption metrics should distinguish mandated compliance from value-driven usage. A dashboard showing one hundred percent of teams “on platform” means little if usage is a single health-check cron job while real deploys bypass the paved road. Track depth, not just presence: services actively deploying through the platform, pull requests using golden-path templates, observability data flowing through standard pipelines, and repeat usage after initial onboarding.

Core metrics include adoption rate (teams or services on the paved road), coverage (share of production workloads using platform capabilities versus exceptions), time-to-onboard (median days from first request to first successful deploy), time-to-first-value (days until the team ships a meaningful change through the platform), and retention (teams still active ninety days after onboarding). Segment metrics by team tenure, workload criticality, and technology stack so aggregate numbers do not hide stuck cohorts.

Hypothetical scenario: Leadership celebrates sixty percent adoption while the platform team knows forty percent of that figure is mandated namespace labels without CI integration. Drilling into deploy-source telemetry reveals twenty percent genuine usage — a crisis of narrative, not a crisis of engineering. The remediation is honest reporting with two series — compliance baseline versus voluntary golden-path usage — and executive alignment on which series defines success.

Pair quantitative telemetry with qualitative signals: support ticket themes, ADKAR stage assessments per cohort, and periodic developer surveys using multidimensional frameworks like SPACE so satisfaction is not reduced to a single misleading score. DORA research consistently links organizational culture and user-centric delivery to performance outcomes; treat adoption measurement as input to continuous improvement, not as a weapon for blame during quarterly reviews.

Design dashboards for action, not decoration. Each tile should answer who must act tomorrow: teams stuck in onboarding longer than the median, services deploying outside the paved road, champions with mentees who have not started, blockers older than two weeks without an owner. Red metrics without a named intervention are anxiety theater. Review adoption data in the same forums where product priorities are set so metrics influence staffing; dashboards viewed only by the platform team become consolation prizes.

Hypothetical scenario: A platform team publishes weekly adoption email with three numbers — new onboardings, active deployers, blocked teams — and one human story from a champion mentee. Over two quarters, managers begin asking for their team’s row in the status board before asking for new platform features. The metric program succeeded because it connected data to narrative and narrative to staffing decisions, not because the Grafana panels were prettier than the old ones.


Migration’s mirror image is deprecation: retiring the old path so the platform does not accrete permanent dual-stack tax. Every team maintaining two CI systems, two deployment controllers, or two observability agents pays interest in cognitive load and incident complexity. Sunset discipline communicates timelines early, reduces support gradually, and decommissions only after migrations or documented exemptions are complete.

A typical sunset arc spans multiple quarters. Month zero announces the timeline and makes the replacement available with migration guides. Month three shifts old-path support to community-only without SLA-backed response. Month six freezes new integrations on the legacy stack; all new capabilities ship on the paved road only. Month nine begins infrastructure teardown for unused components while keeping read-only access to historical artifacts teams need for audits. Month twelve completes decommission with archived runbooks explaining where logs and build history migrated.

Never surprise-decommission a system teams still rely on for production deploys. Surprise shutdowns are remembered for years and become the anecdote skeptics cite in every future platform initiative. If three teams legitimately block on missing features, extend their sunset date publicly while you build capability or formalize exceptions — do not pretend the feature exists. Legacy hygiene also applies to documentation: strike outdated guides that describe the retired path, or label them with bold deprecation banners linking to replacements.

Communication during deprecation is empathetic and specific. Affected teams need direct notice, not only a broadcast in a channel they muted. Name their services, name their deadline, name their migration buddy, and name the rollback window if the new path fails acceptance testing. Empathy without specifics feels like platitudes; specifics without empathy feels like threats. Balance both.

Deprecation is also when you discover whether adoption was real. Teams that integrated deeply will ask detailed questions about audit trails and artifact retention; teams that performed checkbox compliance will shrug and disappear until the old path dies. Use sunset planning as a diagnostic: if decommissioning terrifies many teams, your adoption metrics were lying. If decommissioning is boring, you earned the migration. Plan migration support capacity to spike during the final quartile of a sunset — that is when holdouts arrive, not when the program launches.


Different changes demand different communication strategies. Breaking changes affecting pipeline contracts need weeks of lead time, direct outreach to high-risk teams, workshops, tracked migration status per team, and a staffed response roster on cutover day. New golden-path features need concise changelog entries, worked examples, and demo sessions showing time saved — not architecture diagrams alone. Deprecation notices need individualized impact statements eight or more weeks ahead. Incidents need factual, calm updates in a known channel; silence during outages fills with rumors that outlive the postmortem.

The breaking-change protocol is a template, not bureaucracy for its own sake. Eight weeks before change: inventory affected teams, estimate effort, publish migration guide, identify blockers. Six weeks: announce scope, rationale, timeline, and support channels; offer office hours. Four weeks: run workshops, track per-team status, unblock stuck migrations. Two weeks: direct outreach to lagging teams with white-glove offers. Cutover week: monitor, respond fast, verify with affected teams. One week after: retrospective survey, update templates, publish lessons. Skipping the middle weeks produces the same outage with worse trust.

Organizational resistance often masquerades as technical objections. When a lead says “we do not have time,” they may mean “I do not trust you after the last failed migration.” When they say “our use case is unique,” they may be right. Listen for the underlying concern before offering solutions. The resistance table below is a diagnostic aid, not a script for winning arguments.

Stated reasonSurface readingDeeper concern
”We cannot afford downtime”RiskDistrust of platform stability or rollback
”We have no capacity”SchedulingMigration not prioritized in team goals
”Our setup works fine”InertiaUnclear personal benefit from switching
”We tried and it broke”HistoryBroken trust requiring small wins first
”Our workflow is unique”ExceptionGenuine capability gap or political autonomy
”We need to evaluate alternatives”ProcessDesire to own tooling decisions

For risk-averse teams, offer to execute the migration alongside them with a written rollback checklist and a scheduled validation window. For capacity-constrained teams, propose a scoped first slice — migrate nightly batch jobs before customer-facing APIs — and fund the effort as a shared initiative rather than “extra work.” For teams with bad history, name the previous failure in writing, document deltas, and grant an explicit trial period with opt-out if service levels degrade. For politically resistant teams, find the one engineer on the team who wants faster deploys and start there; universal consensus is rare, but partial coalition is enough for strangler fig.

Breaking changes deserve the same care as migrations because they are migrations compressed in time. Publish a changelog rhythm — weekly for active platform development — so teams learn to scan updates habitually instead of discovering breaking diffs during deploy. Incident communication during a failed migration attempt must be fast, factual, and owned: who is mitigating, what is the customer impact, when is the next update. Silence converts a recoverable technical glitch into a trust bankruptcy that slows the next cohort regardless of root cause.


  1. Strangler-fig migration with explicit seams — Incremental cutovers preserve rollback and shrink blast radius compared with big-bang weekends that couple every team’s fate.
  2. Lighthouse teams before mass rollout — Real production learning on diverse teams produces credible reference stories for the pragmatic majority.
  3. Champion programs with protected time — Peer advocates accelerate adoption faster than platform-team-only outreach because they share context and credibility.
  4. Automated migration tooling — Scripts that translate eighty percent of legacy configuration beat manuals that demand weeks of engineer attention.
  5. Layered adoption spectrum — Mandatory guardrails for shared risk, opt-out defaults for core workflows, voluntary layer for advanced capabilities.
  6. Honest sunset with supported timelines — Deprecation communicated early with SLAs that taper before decommission prevents permanent dual-stack operations.
Anti-PatternWhy it failsBetter approach
Big-bang cutover without rehearsalCoupled failure across all teamsStrangler fig with phased traffic or team cohorts
Mandate without migration supportCompliance without capabilityEmbedded support, tooling, and rollback
Announcing deprecation without exemptions processProduction stops for edge casesDocument exceptions; extend timelines when gaps are real
Metrics that count token usage onlyFalse sense of adoptionMeasure deploy depth, retention, and voluntary usage
Champion program without roadmap feedbackAdvocates burn outClose the loop publicly on champion-filed blockers
Never deprecating legacy pathsPermanent dual-stack taxPublished sunset with tapering support
Skipping ADKAR Awareness and DesirePerfect docs nobody readsExplain why and personal benefit first

Decision Framework — Mandate Versus Incentivize Versus Migration Style

Section titled “Decision Framework — Mandate Versus Incentivize Versus Migration Style”

Use the flowchart when choosing how strongly to push a capability and how to migrate teams onto it. Start with risk class: shared security and compliance floors justify mandatory enforcement; productivity enhancements justify incentives and paved roads. Then select migration mechanics based on reversibility needs and correctness requirements.

flowchart TD
START([New platform capability]) --> RISK{Shared risk if<br/>teams opt out?}
RISK -->|Yes| MANDATE[Mandatory guardrail<br/>policy-as-code enforcement]
RISK -->|No| VALUE{Golden path clearly<br/>faster than legacy?}
VALUE -->|Not yet| FIX[Improve paved road<br/>before pushing adoption]
VALUE -->|Yes| PUSH{Need 100% usage<br/>by fixed date?}
PUSH -->|No| INCENT[Incentivize + champions<br/>+ lighthouse stories]
PUSH -->|Yes| SUPPORT{Adequate migration<br/>tooling and staff?}
SUPPORT -->|No| DELAY[Delay deadline<br/>build tooling first]
SUPPORT -->|Yes| CUTOVER{Correctness-critical<br/>workload?}
MANDATE --> CUTOVER
INCENT --> CUTOVER
CUTOVER -->|Yes| PAR[Parallel run + strangler fig]
CUTOVER -->|No| STR[Strangler fig<br/>per-team runbooks]
PAR --> SUNSET[Publish sunset timeline<br/>for legacy path]
STR --> SUNSET

Revisit decisions when evidence changes. A capability that began voluntary may move to opt-out default after lighthouse teams prove stability. A mandated control may need softer rollout if enforcement blocks critical deploys during an acquisition integration. Decision frameworks are guardrails for judgment, not substitutes for conversation with affected teams.

When choosing between rewrite and coexistence, ask whether the legacy system’s behavior is knowable. Unknown behavior favors strangler fig discovery; well-understood but toxic behavior may justify a bounded rewrite for a single service while the portfolio still migrates incrementally elsewhere. Coexistence is not failure — permanent coexistence without sunset is failure. Document the coexistence end date even when you extend it later so teams trust extensions as considered decisions, not as platform team forgetfulness.


Landscape Snapshot — Internal Developer Portals

Section titled “Landscape Snapshot — Internal Developer Portals”

Landscape snapshot — as of 2026-06. This changes fast; verify against vendor docs before relying on specifics. Internal developer portals illustrate adoption mechanics: teams adopt portals when catalog and scaffolding reduce search time, not when catalogs exist in isolation.

Durable capabilityBackstage (CNCF Incubating)PortCortex
Software catalogCore focusCore focusCore focus
Scaffolding / golden pathsSoftware TemplatesSelf-service actionsScaffolder plugins
Scorecards / maturity modelsTechDocs + pluginsScorecardsScorecards
Ownership graphCatalog relationshipsCatalog + scorecardsCatalog + rules

Present portals as peers compared by capability and integration model, not as a single winner. Adoption strategy stays constant: paved roads, clear ownership data, and templates that produce working services — portal brand is secondary to whether a developer ships faster on day one.

Portals fail adoption goals when treated as catalogs alone. A service graph without scaffolding leaves teams admiring metadata while still copying last year’s repository by hand. Successful portal rollouts pair catalog discovery with Software Templates or equivalent golden-path generators, TechDocs or linked runbooks that answer “what do I do Monday morning,” and scorecards that make production readiness visible without shaming teams into hiding problems. Migration onto the portal should reuse strangler fig: one template, one team, one success story, then widen.


  • Geoffrey Moore’s Crossing the Chasm describes a gap between early adopters and the early majority — internal platforms stall when they recruit only enthusiasts and lack credible stories from pragmatic teams operating under real production constraints.

  • Martin Fowler named the Strangler Fig pattern after a vine that gradually replaces its host tree — the metaphor emphasizes that legacy systems remain operational throughout incremental migration, which is why the pattern remains the default recommendation for platform cutovers.

  • The Prosci ADKAR Model sequences Awareness, Desire, Knowledge, Ability, and Reinforcement — platform teams that jump straight to documentation often fail because individuals never wanted the change, regardless of guide quality.

  • DORA research links generative organizational culture and user-centric prioritization to stronger performance outcomes — adoption programs that ignore culture and treat migration as purely technical configuration work underperform programs that invest in coalition building and short-term wins.


MistakeProblemSolution
Equating compliance with adoptionDashboard green while bypass behavior growsMeasure deploy depth, retention, and voluntary usage
Big-bang migration weekendsCoupled failures, no rollbackStrangler fig with per-team runbooks and reversibility
Mandates without tooling or supportResentment and shadow systemsAutomated migration, embedded engineers, honest timelines
Skipping lighthouse teamsEarly-majority skeptics never see credible proofDiverse lighthouse cohorts with transparent incident stories
Champion programs without time allocationBurnout and shallow advocacySecure PM sponsorship for champion hours and visible wins
Announcing sunset without individualized outreachTeams surprised at decommissionDirect notices with service names, buddies, and extensions
Over-indexing on Knowledge and Ability in ADKARPerfect tools nobody desiresBuild Awareness and Desire with business-case narratives
Never deprecating legacy pathsPermanent dual-stack operational taxPublished sunset with tapering support and archived artifacts

Platform adoption is a loop, not a launch event. Revisit incentives, metrics, and sunset assumptions each quarter because product portfolios, compliance rules, and team composition shift underneath static dashboards. The organizations that sustain high paved-road usage treat adoption work as permanent product operations — the same way they treat reliability work — rather than as a one-time migration project to checkbox and forget.


Scenario: Your organization has fifty development teams on a legacy self-hosted CI system. You have built a Git-integrated pipeline targeting Kubernetes 1.35 deployments. Leadership wants minimal production risk while all teams eventually migrate. Which migration pattern should you select, and how would you apply it?

Answer

Select the strangler fig pattern with per-team phases rather than a single cutover weekend. Onboard greenfield services first, then migrate low-risk internal tools, then revenue services with embedded platform support and automated config translation from the legacy system. Keep the old CI operational for rollback until each cohort completes validation. This approach limits blast radius, lets teams learn incrementally, and supplies feedback to improve guides before the pragmatic majority migrates.

Scenario: You are meeting the payment platform lead who says, “We tried your beta pipeline last year and had a multi-hour outage during peak season. We cannot take that risk again.” What is your immediate strategy to rebuild trust?

Answer

Acknowledge the past failure without defensiveness, then explain specific technical and procedural changes since that incident with evidence — tests added, rollback automation, canary defaults. Offer a low-risk trial on a non-critical service with an explicit rollback trigger and an embedded platform engineer during migration. Share parallel-run results from other teams only after listening to their constraints. Trust rebuilds through small flawless wins, not through slides about roadmap velocity.

Scenario: The CTO wants a company-wide mandate that all teams adopt the internal developer portal within thirty days. You recommend a strongly encouraged model with incentives instead. How do you justify that to executive leadership?

Answer

Mandates raise compliance metrics but obscure whether the portal solves real problems; teams may create minimal integrations while keeping real workflows elsewhere. Strong encouragement with paved-road incentives — faster support, templates, reduced toil — produces adoption that signals genuine value and generates useful product feedback. Reserve mandates for shared-risk guardrails like security baselines. For productivity tooling, pull-based adoption preserves trust and reduces shadow-system work that costs more than the portal saves.

Scenario: You shipped excellent documentation, migration scripts, and weekly office hours for a new ingress standard. Teams ignore the effort. Using ADKAR, what is the likely root cause and fix?

Answer

The likely gap is Awareness and Desire: teams do not understand why the change matters to their outcomes or have not been convinced the personal cost is worth the benefit. Knowledge and Ability artifacts cannot overcome apathy. Pause the technical push, run targeted sessions with leads explaining incident reduction and support SLAs, co-design timelines with product management goals, and recruit a lighthouse team to publish a peer story before re-issuing migration tooling.

Scenario: Three teams refuse to migrate before a legacy CI decommission date because the new platform lacks equivalent build steps. Platform engineers demand they “figure it out.” How do you resolve the standoff?

Answer

Treat this as a legitimate capability gap, not laziness. Meet each team to document missing steps, extend their sunset dates publicly, and prioritize platform work to close gaps or publish supported workarounds. Forcing decommission while blockers remain halts delivery and destroys platform credibility across the organization. Update the portfolio migration plan with transparent criteria for exemptions and a revised timeline tied to feature readiness, not arbitrary calendar fear.

Scenario: Adoption dashboards show sixty percent of teams “on platform,” but deploy telemetry suggests many teams still release through legacy paths. What metrics program corrects this blind spot?

Answer

Split compliance usage from value-driven usage: track production deploys through the paved road, repeat activity ninety days after onboarding, time-to-first-value, and voluntary golden-path template usage versus mandated baseline checks. Segment by criticality and team cohort to find stuck groups. Pair telemetry with qualitative ADKAR assessments and short interviews. Report both series to leadership so success is measured by depth and retention, not by checkbox integrations that mask bypass behavior.

Scenario: Early adopters enthusiastically migrated, but the remaining pragmatic teams have entrenched custom infrastructure and have not moved in two quarters. How do you cross the adoption chasm?

Answer

Shift from feature announcements to switching-cost reduction: invest in automated translation from legacy configs, offer incremental adoption where teams use platform CI while keeping bespoke deploy steps temporarily, and publish lighthouse stories from skeptical teams with production credibility. Make maintenance costs of custom stacks visible against platform support SLAs. Recruit champions on pragmatic teams with protected time to mentor peers — peer proof matters more than platform-team marketing for the early majority.

Scenario: You built an automated CLI to migrate repositories to Argo CD. After fanfare in Slack, only three of forty-five teams used it. What are plausible causes and how do you investigate?

Answer

Causes include poor discoverability, distrust of black-box automation, CLI failures on edge cases, or misaligned timing with team roadmaps. Check telemetry for abandoned runs and error hotspots, then interview non-adopters across risk and capacity profiles. Run paired sessions where platform engineers migrate alongside skeptics, capturing gaps. Adoption tools without ADKAR Desire and champion social proof often become shelfware regardless of engineering quality.


Hands-On Exercise: Adoption and Migration Plan

Section titled “Hands-On Exercise: Adoption and Migration Plan”

Design a documented adoption and migration program for a realistic portfolio. Work on paper or in your internal wiki; the artifact is the deliverable. This exercise mirrors how platform leads prepare executive briefings: you are not configuring tools yet — you are making tradeoffs explicit so staffing, timelines, and sunset commitments receive scrutiny before engineers burn a quarter on a big-bang cutover nobody can roll back.

Scenario: Twenty development teams use a self-hosted CI system. You operate a new Git-integrated CI/CD platform with Argo CD deploying to Kubernetes 1.35. Leadership wants broad adoption within three quarters without a single big-bang weekend.

Step 1 — Choose migration pattern and justify it in prose: strangler fig, parallel run, feature-flag cohorts, or big-bang (only if you can defend it). Name seams, rollback triggers, and maximum concurrent migrations your platform team can support.

Step 2 — Design adoption layers using the mandatory / opt-out / voluntary model. List which capabilities belong in each layer and why. Identify one capability that deserves mandatory enforcement and one that must remain incentive-driven.

Step 3 — Plan lighthouse and champion cohorts. Nominate two lighthouse teams (one enthusiastic, one skeptical) and three champion candidates. Define what protected time champions receive and what feedback loop closes within two weeks.

Step 4 — Build an adoption dashboard spec. Define metrics for compliance usage versus voluntary paved-road usage, time-to-onboard, time-to-first-value, retention at ninety days, and blocked teams. Note which metrics you review weekly versus monthly.

Step 5 — Write a sunset communication for the legacy CI system with tapering support milestones and individualized outreach template fields (team name, services, buddy, deadline, extension criteria).

  • Migration pattern documented with seams, phases, and rollback story
  • Adoption spectrum assigns every major capability to mandatory, opt-out, or voluntary layer with rationale
  • Lighthouse and champion plan includes skeptical team and feedback loop
  • Dashboard distinguishes compliance metrics from value-driven usage metrics
  • Sunset timeline includes support tapering and exemption criteria
  • ADKAR assessment identifies weakest stage for one holdout persona and concrete action


Continue to Module 1.5: Scaling Platform Organizations to learn how to grow from a single platform team to a platform organization.


“You can build the best platform in the world, but if nobody migrates to it, you’ve built nothing.”