Skip to main content

Behind the Scenes of a Large-Scale Azure File Share Migration

From assessment through cutover — the complete architectural story of how large enterprise file share migrations actually work: what tools to use when, how to design your share mapping, where the surprises live, and what the monitoring looks like at scale.

By Francis Avorgbedor | Azure Engineer  ·  July 9, 2026  ·  18 min read  ·  Azure Files · Enterprise Migration · Storage
FA
Francis Avorgbedor
Azure Engineer  ·  SEVENAI  ·  Azure Field Notes
5
Migration tools evaluated — only 2 used in production
8
Phases from assessment to post-migration validation
100M+
Files Storage Mover tested to at enterprise scale
0
Files lost in production — the only acceptable number

Large-scale file share migrations sound like infrastructure projects. They are not. They are change management projects with an infrastructure implementation layer underneath. The file copying is the easy part. The hard parts are the conversations you have before the first byte moves — with storage architects about share mapping, with security teams about ACL preservation, with service owners about downtime tolerance, and with the finance team about the cost model that justifies the move. This post covers both layers: the architecture and tooling decisions that determine whether the migration works, and the organisational patterns that determine whether it lands without an incident.

I am writing this as a companion to the QNAP case study and lessons learned posts in this series. Where those posts covered a specific 15TB migration in detail, this post covers the general pattern — applicable to migrations ranging from a few terabytes to hundreds of terabytes across dozens of file servers. The scale changes the tool choices and the coordination overhead. The fundamentals do not change.

The eight-phase migration lifecycle — the full picture before you start

Most migration guides describe the data movement phases. What they omit is the assessment and validation work that determines whether the data movement phases succeed. Here is the complete lifecycle.

Figure 1 — The complete Azure file share migration lifecycle: 8 phases
1Assessment & DiscoveryAzure Migrate · share inventory · readiness classification2Share Mapping & Target Design1:1 mapping · grouping · storage tier selection · naming3Azure Infrastructure ProvisioningStorage accounts · file shares · Private Endpoints · AD auth4Tool Selection & Agent DeploymentStorage Mover · AFS · AzCopy · Data Box decision5Initial Bulk Data TransferWave 1 copy · parallel jobs · progress monitoring · error triage6Delta Sync & Pre-Cutover ValidationCatch-up sync · ACL verification · user access testing7Cutover & RedirectDFS-N redirect · maintenance window · zero user action8 — Post-Migration ValidationACL audit · performance baseline · decommission schedule8
Blue = planning phases · Amber = provisioning phases · Green = migration phases · Red = cutover

Phase 1 — Assessment and discovery: the work that determines everything else

Azure Migrate now supports automated discovery and assessment of SMB and NFS file shares hosted on Windows and Linux servers — agentlessly, without manual inventory scripts. This capability, announced in April 2026, changes the discovery phase from a weeks-long manual exercise into an hours-long automated assessment.

Figure 2 — Azure Migrate file share assessment: automated discovery to migration plan
Deploy ApplianceHyper-V or VMwareOn-premises VMNo agent on serversSTEP AAuto-DiscoveryAll SMB + NFS sharesCompletes in hoursSize · files · access patternsSTEP BReadiness ReportReady · Conditional · Not ReadyTier recommendationStandard vs Premium per shareSTEP CMigration Wave PlanPrioritise by risk + sizeSelect: Mover or AzCopyExecute via Storage Mover jobsSTEP DASSESSMENT OUTPUT — WHAT EACH SHARE GETSReadiness statusReady / Conditional / Not ReadyIncompatibility issues flaggedPermission gaps surfacedTier recommendationStandard HDD or Premium SSDBased on actual usage dataAvoids over-provisioningCost estimateMonthly cost per shareRedundancy options pricedRegion comparisonMigration pathStorage Mover or AzCopyEstimated transfer timeWave assignment
Azure Migrate appliance discovery typically completes within a few hours — no manual scripting required

Phase 2 — Share mapping: the decision that shapes everything downstream

The most consequential pre-migration decision is how your on-premises share structure maps to Azure file shares. Get this wrong and you create performance bottlenecks, unnecessary IOPS sharing, or an operational complexity that costs more to manage than the migration saved.

Figure 3 — Share mapping strategies: 1:1 mapping vs share grouping vs common-root approach
Strategy A: 1:1 MappingRecommended for ≤30 sharesON-PREMISES\\Finance\\Projects\\HR\\SharedAZURE FILESFinanceProjectsHRShared✓ Simplest validation✓ ACLs intact — no rework✓ Rollback is straightforwardUse when: ≤30 shares,active shares, mixed loadActive share = separate acctStrategy B: Share GroupingFor >30 shares or dept-level grouping15 HR SHARES ON-PREMHR-Team1HR-Team2HR-Payroll... 12 moreONE AZURE SHAREHR-AllSubfolders:HR-All\Team1\HR-All\Team2\HR-All\Payroll\ACLs unchanged✓ Fewer Azure resources✓ Simplified management✓ ACLs preserved at subfolderUse when: many low-trafficshares in same department,>30 shares totalStrategy C: Tier by ActivityPerformance-critical separationHIGH-ACTIVITY SHARESFinance, Projects→ Premium SSD1 share per storage accountDedicated IOPS poolMID-ACTIVITY SHARESShared, Media→ Standard HDDPool in same storage accountARCHIVE SHARESArchive2022, 2023→ Cool tier · read-only
For active shares in HDD storage accounts, pool only archival or low-activity shares — high-activity shares need dedicated storage accounts to avoid shared IOPS contention

Phase 4 — Tool selection: the decision matrix you actually need

There is no single correct migration tool. The correct tool depends on your source type, your network bandwidth, your need for continuous sync post-migration, and whether you want a managed service or a scriptable command-line approach. Here is how the decision actually works in practice.

Figure 4 — Migration tool selection: decision flowchart
Start: What is your source?Need ongoing hybridsync post-migration?YESAzure File Sync+ RoboCopy initial copyHybrid · Cloud tiering · ContinuousNO (one-time migration)Data >10TB+ poor WAN?YESAzure Data Box+ RoboCopy to deviceOffline · ships to Azure · no WANNO (good WAN)SMB or NFS source?Large namespace?SMB/NFS · >1M filesAzure Storage MoverManaged · delta syncTested: 100M items · fastestWindows Server sourceAzCopyScript-based · fastNo managed service overhead
Azure Storage Mover is faster than RoboCopy for cloud transfer because it uses the FileREST API rather than SMB — tested to 100 million items
ToolBest forACL fidelityOngoing syncManaged serviceSpeed
AzCopyWindows Server source, scriptable, no managed service needed✓ Full✗ Manual reruns✗ Script onlyFast — parallel threads
Azure Data Box>10TB + constrained WAN, offline transfer, physical shipment✓ Full via RoboCopy✗ One-time onlyAppliance-basedFastest for large offline
Azure Migrate + MoverLarge enterprise, automated assessment + execution in one tool✓ FullDelta only✓ Fully managedFast — optimised API

Phase 5 — Deploying Azure Storage Mover: step by step

Storage Mover is the recommended path for most large-scale NAS-to-Azure-Files migrations where hybrid sync is not required long-term. It is faster than SMB-based tools because it uses the FileREST API, it is fully managed from the Azure portal, and it has been tested to 100 million namespace items. Here is exactly how to set it up.

Figure 5 — Azure Storage Mover deployment architecture and setup sequence
ON-PREMISESSource: NAS or File ServerSMB share · NFS export · Windows ServerStorage Mover Agent VMHyper-V or VMware · near sourceReads source via SMB/NFS mountSSH registration · cloud-managedAzure Key VaultSMB credentials · username + passwordNFS shares do not need Key VaultFileRESTAPI uploadHTTPS onlyAZUREStorage Mover ResourceCentral orchestration serviceProjects → Jobs → Source/TargetPortal · PowerShell · CLI managedAzure Files (Target)Storage account + file shareFull NTFS ACL preservationStandard HDD or Premium SSDCopy Logs + TelemetryFiles copied · errors · throughputMonitor in Azure portalPrivate EndpointFor storage accountsNo public internet traversalConfigure BEFORE agentAD AuthenticationAzure AD ConnectKerberos auth for sharesUsers keep existing credentialsDFS NamespacesPreserve share paths post-cutover\\domain\share → Azure Files
Agent VM must be deployed close to the source — ideally on the same LAN segment — to minimise source-to-agent transfer latency
1
Azure Portal → Storage Mover → Create

Create the Storage Mover resource

In the Azure portal, create a new Storage Mover resource in the same region as your target storage accounts. The resource is the orchestration plane — it tracks agents, projects, jobs, and telemetry. One Storage Mover resource can manage multiple agents and migration projects simultaneously.

2
Deploy VM on Hyper-V or VMware → SSH registration

Deploy and register the Storage Mover agent VM

Download the Storage Mover agent VM image and deploy it on a Hyper-V or VMware host close to your source shares. Connect locally over SSH to complete agent registration. All subsequent steps are managed from the Azure portal — the SSH connection is only needed for initial registration. For large migrations, deploy multiple agents to run parallel jobs across different shares.

3
Key Vault → Secrets → username + password

Create Azure Key Vault with source share credentials (SMB only)

For SMB source shares, create an Azure Key Vault and add two secrets: one for the username and one for the password the agent will use to access the source share. NFS source shares do not require Key Vault credentials — they use the NFS export's access controls directly. The Key Vault is referenced when creating the migration job, not when registering the agent.

4
Storage Mover → Endpoints → Source + Target

Define source and target endpoints

Create a source endpoint pointing to the SMB share path on your NAS or file server. Create a target endpoint pointing to the Azure file share in your target storage account. Each share pair requires its own source and target endpoint. You can create all endpoints before starting any jobs — this is useful for large migrations where you want to review the full mapping before beginning data transfer.

5
Storage Mover → Projects → Jobs → Start

Create migration jobs and start the transfer

Create a Storage Mover project and define individual migration jobs within it — one per share pair. Review migration settings carefully before starting: copy mode (overwrite vs mirror), conflict resolution, and whether to copy ACLs. Start jobs sequentially or in parallel depending on network capacity and agent count. Monitor progress and copy logs from the Azure portal.

6
Run delta job → validate → cutover

Run delta sync, validate, then cut over

Once the initial bulk transfer completes, run a second Storage Mover job in delta mode to capture changes made to the source since the bulk transfer began. Validate a sample of migrated files — check permissions, timestamps, and file content. Schedule the cutover maintenance window, run a final delta job, then redirect DFS-N targets from the source to the Azure file share endpoints.

Phase 5–6 — Monitoring at scale: what to track and when to intervene

Figure 6 — Large-scale migration monitoring: the metrics that actually matter
METRICHEALTHY SIGNALALERT THRESHOLDACTIONTransfer throughputConsistent · matches bandwidth plan<40% of expected for >30minCheck agent load · WAN saturationError file countZero or near-zero per shareAny increase from previous checkInspect copy log · fix before cutoverItems remainingDecreasing consistentlyFlat for >60min (job stalled)Check agent status · restart jobACL copy success rate100% — every file's ACL copiedAny ACL failure — no thresholdSID remap issue — stop and fixStorage account IOPSBelow 80% of provisioned limit>90% sustained — throttling riskReduce parallel jobs · add accountDelta items (Phase 6)Decreasing to near-zeroStill >1,000 items at cutover -2hrExtend window or lock source early# Check Storage Mover job status via Az CLI:az storage-mover job-run show --resource-group rg --storage-mover-name mover --project-name proj --job-definition-name job

Phase 8 — Post-migration validation: the checks that close the project

A migration is not complete when the data transfer finishes. It is complete when you can demonstrate — with evidence, not assumption — that the Azure file shares match the source across four dimensions: data integrity, permission fidelity, performance baseline, and business continuity.

Figure 7 — Post-migration validation checklist: four dimensions before decommissioning source
Data IntegrityFile count matchTotal size matchSample hash comparisonZero error files in logsTool: Get-ChildItem -Recurse| Measure-Object -PropertyLength -Sum✓ Run on both sourceand target. Numbersmust match exactly.Permission FidelityACL sample auditUser access testDenied access checkGroup policy validationTool: icacls \\server\shareCompare to source icaclsoutput for 50+ sample dirs✓ Have 3 real users fromeach share test readand write access before cutoverPerformance BaselineRead latency (p95)Write latency (p95)IOPS under load testThroughput baselineTool: Azure MonitorMetrics → File shareLatency + IOPS charts✓ Premium SSD latencyshould be <1ms p95.Standard <10ms p95.Business ContinuityAzure Backup configuredSnapshots enabledRestore test completedSource retention period setRetain source as read-onlyfor minimum 2 weeksbefore decommission✗ Never decommissionsource on cutover day.Always keep rollback.

The production pitfalls that emerge at enterprise scale

Small migrations surface individual problems. Large migrations surface systemic problems. These are the issues that consistently appear at enterprise scale that do not show up in small proof-of-concept migrations.

⚠ Pitfall 1 — IOPS contention when pooling active shares in one storage account

Azure standard HDD storage accounts have shared IOPS and throughput limits across all file shares within the account. If you pool multiple active shares in a single storage account to save cost, peak usage periods can cause shares to throttle each other — and none of them will show an obvious error. Users experience intermittent slowness that looks like a network problem and is actually a storage account IOPS ceiling being hit. The rule: pool only archival or low-activity shares. High-activity shares get their own dedicated storage account. Premium SSD file shares do not have this problem — IOPS are explicitly provisioned per share.

⚡ Pitfall 2 — Azure File Sync scale limits at large namespace

Azure File Sync scales primarily with the number of items (files and folders), not total storage size. The recommended maximum is 100 million items per registered server. For migrations with very large file counts — millions of small files — you may need to split across multiple server endpoints or multiple sync groups rather than placing everything under a single endpoint. The TreeSize tool helps you determine item counts before deployment so you can plan endpoint boundaries before you begin syncing.

⚠ Pitfall 3 — Storage Mover agent network path to source matters enormously

The Storage Mover agent reads from the source share over the network and uploads to Azure over the internet. If the agent VM is placed on a different network segment from the source NAS — with a routing hop, a firewall inspection, or a bandwidth-constrained link in between — your effective transfer speed will be limited by the slowest link between the agent and the source, not between the agent and Azure. Deploy the agent VM on the same LAN segment as the source, connected via the fastest available link. A 10GbE local connection between agent and NAS is what allows the agent to saturate a 500Mbps WAN link.

✓ Scale lesson — migrate in waves, not all at once

For migrations involving more than 10 shares or more than 10TB of active data, migrate in waves rather than attempting to move everything simultaneously. Wave 1 should be your lowest-risk shares — archives, read-only data, small shares with simple ACLs. Validate completely before Wave 2. Wave 2 adds moderate-complexity active shares. Wave 3 is your highest-stakes shares — Finance, HR, anything with complex ACLs or high user sensitivity to outage. This sequencing lets you discover and resolve systemic problems (SID mapping issues, illegal filename patterns, storage account configuration errors) on low-risk data before they affect your most critical shares.

Key takeaways
  • Use Azure Migrate for assessment before touching any migration tool. Automated discovery in hours replaces weeks of manual inventory. The readiness classification and tier recommendation output directly feeds your share mapping and wave planning decisions.
  • Match migration tool to requirement: Storage Mover for one-time NAS migration, AFS for ongoing hybrid sync. Storage Mover is faster because it uses FileREST rather than SMB. AFS is correct only if you need continuous cloud sync or cloud tiering after migration. Do not use AFS for pure one-time migrations — it adds unnecessary long-term infrastructure overhead.
  • Active shares need dedicated storage accounts — never pool high-IOPS shares in HDD accounts. Shared IOPS contention is silent, intermittent, and difficult to diagnose after the fact. The per-share cost of a dedicated storage account is lower than the cost of one incident caused by IOPS throttling.
  • Migrate in waves, validate completely between waves. Every enterprise migration has at least one systemic problem that Wave 1 surfaces. Discovering it on an archive share is a recoverable situation. Discovering it on your Finance share on cutover weekend is not.
  • Validate across all four dimensions before decommissioning source. Data integrity, permission fidelity, performance baseline, and business continuity. All four. With evidence, not assumption. Keep source read-only for a minimum of two weeks after cutover.
  • DFS Namespaces is your cutover mechanism — configure it before migration, not at cutover. If you are not already using DFS-N, establish it as part of Phase 3 provisioning. Use it to preserve existing share paths throughout the migration and redirect targets transparently at cutover.

Popular posts from this blog

The Cloud Incumbent: AWS Bedrock Hosts Every Frontier Model and Amazon Is Betting on Neutrality AWS at $37.6 billion quarterly revenue, growing 28%. $13 billion invested in Anthropic. A $100 billion Anthropic-to-AWS commitment. Trainium with $225 billion in customer revenue commitments. The most quietly powerful AI strategy in the race. By Francis Avorgbedor | Azure Engineer  ·  July 4, 2026  ·  14 min read  ·  Amazon · AWS · Cloud AI 74 SEVENAI Momentum Score — Rank #5 $37.6B AWS Q1 2026 revenue — 28% YoY growth ▲ Fastest in 15 quarters $13B Total Amazon investment in Anthropic to date ▲ Strategic anchor 100K+ Customers running Claude on AWS Bedrock ▲ Distribution moat Amazon's AI strategy is built on a thesis that every other Magnificent Seven company is testing against — and that Amazon is uniquely positioned to win regardless of the outcome. The thesis is neutrality. In a race where Microsoft has bet on OpenAI, Google has bet on Gemini, and Meta has bet...
Performance Fix Foundry Local 1.2 Linux ARM64 Embeddings Offline ASR The Edge Latency Drop: Fixing Latency Spikes by Offloading Embeddings to Foundry Local 1.2 You are paying a full cloud round trip — network, TLS, queue, throttle risk — to turn a twelve-word search query into a vector. That is the most expensive way possible to do one of the cheapest computations in your stack. Foundry Local 1.2 now runs on Linux ARM64, which means embeddings and speech recognition can happen on a Raspberry Pi, a Jetson, or a Graviton instance — offline, unmetered, and in single-digit milliseconds. The failure signature this guide resolves # Application Insights — the embedding call, not the LLM, is your tail latency: name p50 p95 p99 calls/day POST /embeddings (cloud) 89 ms 412 ms 3,847 ms 1,240,000 POST /chat/completions (cloud) 940 ms 1,720 ms 2,910 ms 38,000 ^^^^^^^^ ...

How to Reset an Azure Virtual Machine to Factory Settings Using a Managed Disk

How to Reset an Azure Virtual Machine to Factory Settings Using a Managed Disk Azure does not have a single "factory reset" button. What it does have is something better: the OS Disk Swap — a method that swaps out the corrupted or misconfigured OS disk for a clean Windows Server managed disk without deleting the VM, its NICs, its IP addresses, or any attached data disks. Here is how it works, when to use it, and the exact steps to execute it safely. FA Francis Avorgbedor Azure Engineer July 16, 2026 15 min read Azure VMs · Windows Server · Real-World Fix 3 Methods to achieve a clean Windows Server installation on an existing Azure VM ~15min Typical OS Disk Swap duration — VM retains its NICs, IPs, and data disks throughout 0 Data disks affected by an OS Disk Swap — data disks remain attached and untouched 1 Snapshot of the original OS disk you must take before starting — no exceptions Introduction Why Azure Does Not Have a Simple Factory Reset — and What to Do Instead On a ph...
  The 500GB System File That Eats Your Hard Drive Something on your Windows 10 drive is consuming hundreds of gigabytes and the normal tools cannot find it. This guide identifies every known culprit — from hibernation files and shadow copies to runaway backups and the Windows component store — and tells you exactly what is safe to delete, what to leave alone, and what the commands actually do.

AKS CrashLoopBackOff, Pending Pods, and NotReady Nodes — The Real Fixes Engineers Use

Incident Playbook AKS Kubernetes kubectl 2026 AKS CrashLoopBackOff, Pending Pods, and NotReady Nodes — The Real Fixes Engineers Use Every AKS engineer eventually faces the same nightmare: CrashLoopBackOff at 2am, pods stuck Pending for no clear reason, or nodes flipping to NotReady mid-deployment. The difference between panic and control is knowing the exact diagnostic sequence — and the real fixes that work in production. This guide gives you both. 3 commands get pods, describe pod, and logs diagnose roughly 90% of AKS incidents before you touch anything else Exit 137 The code that means OOMKilled — the container hit its memory limit and was killed by the kernel (128 + SIGKILL 9) Events The bottom of kubectl describe is where the real cause lives — Pending, FailedScheduling, and image errors all surface there CoreDNS The single component behind most "intermittent" production failures — service discovery breaks quietly and looks like an app bug Table of Contents 01 The 3 Comm...
Can I Update My Old Computer to Windows 11 — and How Much Will It Cost? Your i7, 16GB RAM, 512GB SSD machine is powerful enough to run Windows 11 comfortably. The TPM 2.0 and Secure Boot wall is a security checkbox, not a performance ceiling. Here are two proven ways to get past it, what each one costs, and what you are trading away by doing so. $0 Cost of the Windows 11 licence if your existing Windows 10 is genuine — the upgrade remains free in 2026 2 Proven methods to bypass TPM 2.0 and Secure Boot — Rufus (easy) and Registry edit (manual) 25H2 Current Windows 11 version — all known bypass methods tested and confirmed working as of July 2026 Oct 2025 Windows 10 end of life — no more security updates. Staying on Windows 10 now carries real risk. First — Check Your BIOS Before Anything Else You Might Not Actually Need a Bypass Before running any bypass, open your BIOS and look at two settings. Many computers that fail the Windows 11 compatibility check have TPM 2.0 present in the hard...
2026 Edition 100 Tools Software Engineering DevOps AIOps Top 100 Best AI Tools for Azure  Engineers and DevOps Professionals in 2026 85% of developers now regularly use AI tools. Fully AI-generated code accounts for nearly 28% of all pull requests. The question is no longer whether to use AI tools — it is which ones, in which combination, for which part of the lifecycle. This guide cuts through the noise: 100 tools, 10 categories, honest pricing, real use cases, and a selection framework for building your stack without redundancy. 85% Percentage of developers who now regularly use AI tools, per JetBrains' 2025 State of Developer Ecosystem report — up from near zero three years ago 28% Share of all pull requests containing primarily AI-generated code in 2026 — the metric that signals AI coding assistants have moved from experiment to workflow $50B Cursor's reported valuation in April 2026 Series D talks — the number that signals investor confidence in the AI developer tools mark...

Azure Files vs Azure NetApp Files: Which One Should You Choose?

Azure Files vs Azure NetApp Files: Which One Should You Choose? Performance tiers, protocol support, dual-protocol capability, pricing models, SAP/Oracle/HPC suitability, data management features, and the decision framework that maps each workload type to the right service — with step-by-step setup procedures for both. FA Francis Avorgbedor Azure Engineer July 15, 2026 20 min read Azure Storage · Architecture 4 Azure Files tiers: Premium SSD, Standard Hot, Cool, Tx Optimized 3 ANF performance tiers: Standard, Premium, Ultra — all SSD-backed 4TiB ANF minimum provisioning — significant cost floor for small workloads Dual ANF serves the same data via SMB and NFS simultaneously — AF cannot Introduction Two Services, One Surface Area — Completely Different Purposes Microsoft offers two fully managed, enterprise-grade file storage services in Azure. They share a surface area — both serve file shares over standard protocols, both run on managed infrastructure, and both integrate with Microsof...
Troubleshooting Guide AKS Kubernetes Real Solutions kubectl Azure Kubernetes Service (AKS) Troubleshooting Guide: Real Solutions to Common Problems CrashLoopBackOff at 2am. Pods stuck Pending with no obvious cause. Nodes going NotReady mid-deployment. DNS resolution silently failing in production. Every AKS engineer encounters these — the difference between engineers who panic and engineers who stay calm is knowing the exact sequence of diagnostic commands to run. This guide gives you that sequence, the root cause analysis for each failure mode, and the fix. 3 commands 90% of AKS problems are diagnosed with the same three kubectl commands: describe pod, logs --previous, and get events — in that order, every time Exit 137 The exit code that tells you everything: container killed by SIGKILL — either the Linux OOM killer (memory limit exceeded) or kubelet after grace period expired 5 min The CrashLoopBackOff ceiling: Kubernetes applies exponential backoff (10s → 20s → 40s → 80s → 160s → 3...

How to Deploy an AI Chatbot on Azure Using Azure OpenAI and App Service

Step-by-Step Guide Azure OpenAI App Service Production Python How to Deploy an AI Chatbot on Azure Using Azure OpenAI and App Service From zero to a production-grade AI chatbot: provision Azure OpenAI, write a streaming Flask API backend, deploy it on Azure App Service with Managed Identity, wire in conversation history and content safety, and instrument it with Application Insights — all with complete code and Terraform IaC. No API keys in environment variables. No hardcoded secrets. No half-finished PoC patterns. 7 phases This guide covers the full deployment lifecycle: architecture design → resource provisioning → backend code → App Service deployment → streaming → security → monitoring Zero keys The chatbot authenticates to Azure OpenAI using Managed Identity and DefaultAzureCredential — no API keys stored in environment variables, Key Vault, or code SSE Server-Sent Events stream GPT tokens to the browser as they generate — the same token-by-token typing effect users expect from pr...