Intro

Most Cloud Adoption Framework guides start by building platforms. This one starts with people and a plan.

If you’re an MSP or system integrator with on-prem customers or your own data center, use this hybrid-first path to turn strategy into action fast:

▸ Confirm outcomes

▸ Assign roles using RACI (Responsible, Accountable, Consulted, Informed)

▸ Snapshot the digital estate

▸ Choose the “8 Rs” per workload (Retire, Retain, Rehost, Replatform, Refactor, Rearchitect, Rebuild, Replace)

▸ And sequence the first migration wave before touching landing zones

Along the way you’ll get only what you need to move:

▸ A couple of copy-paste PowerShell checks and a small inventory snippet (no forms)

▸ Plus a pointer to Microsoft’s official End-of-Support source for precise dates

The result is a living adoption backlog that respects real-world constraints and actually ships value.

People First: Roles & RACI

Before you touch platforms, make ownership crystal-clear. Define who drives adoption, who runs platform guardrails, and who is accountable per workload.

RACI

Workstream / Workload Purpose (what this team owns) Responsible (R) Accountable (A) Consulted (C) Informed (I)
Adoption (overall) Backlog, wave planning, comms & change Cloud Adoption Lead Exec Sponsor CIO, CISO, PMO Helpdesk, Finance
Platform guardrails Identity, networking, policy, landing zones Platform/Infra Lead Head of IT Security, Networking, Identity App Owners
Security & compliance Reviews, risk mgmt, compliance mapping Security Lead CISO Platform, Data, Legal Exec Sponsor, PMO
Workload: Customer Portal Wave 1 delivery for this app App Team Lead LoB/Product Owner Platform, Security, DBAs Support, PMO
Workload: Data Warehouse Wave 1 delivery for this data platform Data/Analytics Lead LoB/Product Owner Platform, Security, Networking Support, PMO

Tip: Replace role titles with names once confirmed. Keep the table in your repo/wiki and update per wave.

Quick checklist

▸ [ ] Accountability set:
Each Wave 1 workload has a named A (Accountable) and an R (Responsible)

▸ [ ] Capacity secured:
Adoption & Platform teams have bandwidth and time-boxed commitments

▸ [ ] Security in the loop:
Security/Compliance are C (Consulted) with a defined review SLA (e.g., 3 business days)

▸ [ ] Cadence agreed:
Reporting rhythm set (weekly/bi-weekly) with a short, consistent template

▸ [ ] Escalation path:
Who unblocks decisions within 24h–48h is documented

▸ [ ] Kick-off booked (60 min):
Outcomes/KPIs (10) → Wave 1 candidates (15) → Draft RACI (15) → Next steps (20)

▸ [ ] Published & visible:
RACI stored in a shared location; owners linked on backlog items

▸ [ ] Next 7–10 days committed:
3–5 tasks assigned with owners & due dates (e.g., estate snapshot, 8Rs workshop, security review)

Prioritize & Sequence Value × Feasibility

Score each candidate workload on Value (business impact) and Feasibility (readiness, risk, effort) from 1–5. Multiply to get a priority score (V×F). Pick a small, representative Wave 1 you can complete in 4–6 weeks.

Value × Feasibility scoring

Workload Value (1–5) Feasibility (1–5) Score (= V×F) Notes / Risks Decision
Customer Portal (DB + API) 5 3 15 DB dependency; change window needed ✅ Wave 1
Data Warehouse 4 4 16 Throughput OK; network verified ✅ Wave 1
Legacy Report Generator 2 5 10 No usage last 6 months 🔸 Retire / later

Tip: If you can’t decide an 8R disposition quickly, default to Rehost (bridge) or Replatform (PaaS) and revisit later.

Scenario: On-Prem SQL Server 2014 (End of Support)

Context:
▸ Classic 3-tier app. Database = SQL Server 2014 (End of Support July 9, 2024)
▸ OS = Windows Server 2012 R2 (End of Support Oct 10, 2023)
▸ Goal = reduce risk now, then modernize on your timeline, without rebuilding platforms first

Heads-up on ESU timing:
▸ If you activate paid Extended Security Updates (ESU) for on-prem workloads after the End-of-Support date via Azure Arc (Windows or SQL), Microsoft charges a one-time bill-back for the months that have elapsed in the current ESU year.
▸ In Azure (e.g., Azure VMs/AVS/Stack), ESUs are included, no ESU license fee and no ESU bill-back.

Step 1: Bridge risk in days

Win Server 2012/2012 R2 ESU via Azure Arc + Update Manager
Onboard the server to Azure Arc, purchase/enable ESU, then use Azure Update Manager to schedule deployments and track compliance

SQL Server 2014 ESU

  • On-prem/hosted: onboard the instance to Azure Arc-enabled SQL Server and subscribe ESU
  • In Azure (VMs/AVS/Stack): ESU is included, you pay only for the Azure resources

▸ Verify backups & monitoring. Define a maintenance window and a simple rollback

Deliverables this week
▸ Arc agent connected on OS + SQL; baseline policies assigned
▸ ESU active (Windows + SQL); Update Manager window & compliance reports configured
▸ Backup-restore test passed

Step 2: 8 Rs per workload

Database (SQL 2014):
Prefer Replatform to Azure SQL Managed Instance in Wave 2 (if feature-compatible).
If not ready, Rehost to an Azure VM as a bridge while you refactor

App/Web tiers:
Likely Retain/Rehost short term; schedule modernization later

Step 3: Wave 1 backlog

Epic: Stabilize “Customer-Portal DB” under ESU

  • Feature: Arc onboarding & ESU activation (Windows + SQL)
    • Task: Connect servers to Arc; enroll ESU (Windows) & subscribe ESU (SQL)
    • Task: Configure Update Manager maintenance window & compliance reports
  • Feature: Risk controls
    • Task: Verify backups & test restore; alert on failed jobs
    • Task: Capture dependencies (app → DB, jobs/ETL, linked servers)

Exit criteria
▸ ESU compliant; last 30 days patch compliance ≥ 95%
▸ Backup-restore test passed
▸ Named Accountable owner for DB & app; Security review SLA ≤ 3 business days

One-liners (sanity checks)

Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 10
sqlcmd -Q "SELECT @@VERSION"

Mini tool: Hybrid estate inventory

Read-only, quick snapshot for Windows servers. Exports a CSV with OS info and flags Windows Server 2012/2012 R2 as EoS risk.

What it does
▸ Queries OS caption/version and last boot via CIM/WMI
▸ Flags High risk for WS 2012/2012 R2 (EoS: 2023-10-10)
▸ Writes .\estate.csv for your Wave 1 planning

Requirements
▸ PowerShell 5.1+ (Windows); network reachability to targets
▸ For Option A: RSAT ActiveDirectory module

Option A: Discover from Active Directory (exports estate.csv)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Import-Module ActiveDirectory

Get-ADComputer -Filter 'OperatingSystem -like "*Windows Server*"' -Properties DNSHostName |
  Where-Object DNSHostName |
  ForEach-Object {
    $s = $_.DNSHostName
    try {
      $os = Get-CimInstance Win32_OperatingSystem -ComputerName $s -ErrorAction Stop
      $risk = 'OK'; $eos = ''
      if ($os.Caption -match 'Windows Server 2012( R2)?') { $risk = 'High'; $eos = '2023-10-10' }
      [pscustomobject]@{
        ComputerName = $s
        OSCaption    = $os.Caption
        OSVersion    = $os.Version
        LastBoot     = $os.LastBootUpTime
        EoS_End      = $eos
        Risk         = $risk
      }
    } catch {
      [pscustomobject]@{ ComputerName=$s; OSCaption='N/A'; OSVersion=''; LastBoot=''; EoS_End=''; Risk='Unreachable' }
    }
  } |
  Export-Csv -NoTypeInformation -Encoding UTF8 .\estate.csv

Write-Host "Saved to .\estate.csv"

Option B: Target specific servers (no AD needed)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$servers = @('srv1','srv2','srv3')

$rows = foreach ($s in $servers) {
  try {
    $os = Get-CimInstance Win32_OperatingSystem -ComputerName $s -ErrorAction Stop
    $risk = 'OK'; $eos = ''
    if ($os.Caption -match 'Windows Server 2012( R2)?') { $risk = 'High'; $eos = '2023-10-10' }
    [pscustomobject]@{
      ComputerName = $s
      OSCaption    = $os.Caption
      OSVersion    = $os.Version
      LastBoot     = $os.LastBootUpTime
      EoS_End      = $eos
      Risk         = $risk
    }
  } catch {
    [pscustomobject]@{ ComputerName=$s; OSCaption='N/A'; OSVersion=''; LastBoot=''; EoS_End=''; Risk='Unreachable' }
  }
}

$rows | Export-Csv -NoTypeInformation -Encoding UTF8 .\estate.csv
Write-Host "Saved to .\estate.csv"

CSV columns ComputerName, OSCaption, OSVersion, LastBoot, EoS_End, Risk

Tip: Run Windows Terminal/PowerShell as Administrator for fewer RPC/CIM hiccups. Both variants are read-only and safe to run.

EOL & Product Lifecycle

For End of Support (EoS) and lifecycle dates, always use the official Microsoft source:

Tip: In your client work, deep-link the exact product pages (e.g., Windows Server 2012/2012 R2, SQL Server 2014) so readers see the precise dates and ESU notes.

Wrap-up

Plan before platforms.

With owners named, a light estate snapshot, 8-R decisions, and a sequenced Wave 1, you’ve got a living backlog your team can execute next week.

The SQL Server 2014 example shows how to de-risk fast (ESU + hygiene) while keeping options open for the right target (PaaS where possible, VM/HCI where constraints apply).

What’s next

Next time we’ll look at CAF Ready, the minimal guardrails to run Wave 1 safely, still hybrid-first.

Short, practical, and easy to change if priorities shift.

Sources

Topic Link
Microsoft Product lifecycle (official EoS dates) https://learn.microsoft.com/en-us/lifecycle/products/
Lifecycle policy overview https://learn.microsoft.com/en-us/lifecycle/
SQL Server 2014 - lifecycle page https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2014
SQL Server ESU - FAQ https://learn.microsoft.com/en-us/sql/sql-server/end-of-support/extended-security-updates-frequently-asked-questions
SQL Server ESU via Azure Arc (manage/subscribe) https://learn.microsoft.com/en-us/sql/sql-server/azure-arc/extended-security-updates
What are SQL Server ESUs? (program details) https://learn.microsoft.com/en-us/sql/sql-server/end-of-support/sql-server-extended-security-updates
Azure Update Manager - ESU for Windows Server 2012/2012 R2 https://learn.microsoft.com/en-us/azure/update-manager/extended-security-updates
Azure Update Manager - service overview https://learn.microsoft.com/en-us/azure/update-manager/
Deliver ESUs for Windows Server 2012 via Azure Arc https://learn.microsoft.com/en-us/azure/azure-arc/servers/deliver-extended-security-updates
Azure SQL Managed Instance - overview https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/sql-managed-instance-paas-overview
Cloud Adoption Framework - overview https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/overview
CAF - Plan https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/plan/plan-intro
CAF - Ready (landing zones) https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/
Azure VMware Solution - introduction https://learn.microsoft.com/en-us/azure/azure-vmware/introduction
Azure Arc - overview https://learn.microsoft.com/en-us/azure/azure-arc/overview
Azure Local (formerly Azure Stack HCI) - overview https://learn.microsoft.com/en-us/azure/azure-local/overview