As the Azure ecosystem evolves, Microsoft is consolidating its observability tooling. One key shift is the move away from legacy Application Insights-specific NuGet packages towards an OpenTelemetry-based approach, aligned with the OpenTelemetry standard.
In this post, we’ll explore what’s changing, why it matters, and how to migrate your .NET applications to OpenTelemetry with Azure Monitor integration.
Why Microsoft Is Moving to OpenTelemetry
Microsoft has marked the Microsoft.ApplicationInsights.* SDKs as feature-complete, meaning no new features will be added — only critical fixes will be provided. The company now recommends migrating to OpenTelemetry-based packages for all new development and future-proof instrumentation.

Why This Matters
OpenTelemetry is a vendor-neutral, open standard maintained by the Cloud Native Computing Foundation (CNCF). It provides consistent instrumentation for traces, metrics, and logs across platforms and tools, enabling better observability for modern, distributed applications.
Key Benefits for Azure Engineers
- Enables integration with open-source tools like Prometheus, Grafana, Jaeger, and Zipkin
- Seamlessly connects with Azure Monitor through the OpenTelemetry exporter
- Reduces vendor lock-in and supports hybrid observability strategies
- Unified APIs for metrics, traces, and logs
Microsoft’s official announcement
Does This Migration Affect You?
Yes, if your application uses any of the following NuGet packages, for exa
- Microsoft.ApplicationInsights.Web
- Microsoft.ApplicationInsights.AspNetCore
- Microsoft.ApplicationInsights.WorkerService
- Other Microsoft.ApplicationInsights.* NuGet packages (e.g. WindowsServer, DependencyCollector, PerformanceCounterCollector)
These are now deprecated. Microsoft has confirmed that no new features will be added, and future investment is focused entirely on OpenTelemetry.
A Look at the New Implementation
Here’s what your new setup might look like in an ASP.NET Core app:
using Azure.Monitor.OpenTelemetry.AspNetCore;
var builder = WebApplication.CreateBuilder(args);
// Configure OpenTelemetry with Azure Monitor exporter
builder.Services.AddOpenTelemetry().UseAzureMonitor();
var app = builder.Build();
app.Run();There’s no need to set the connection string manually in code — the SDK automatically reads the environment variable APPLICATIONINSIGHTS_CONNECTION_STRING.
Still using instrumentation keys? It’s time to migrate to application insights connection strings. Microsoft has deprecated instrumentation keys for all new Application Insights resources.
Migration Guide: From App Insights to OpenTelemetry
Although the migration is fairly straightforward, it’s not just a NuGet update. Here are the steps you should follow:
Step 1 – Remove Legacy Packages
Uninstall any Microsoft.ApplicationInsights.* packages from your project.
Step 2 – Add the New SDK
Add the new package:
dotnet add package Azure.Monitor.OpenTelemetry.AspNetCoreStep 3 – Configure OpenTelemetry in Startup
Use the new AddOpenTelemetry().UseAzureMonitor() pattern, as shown earlier.
Step 4 – Update Environment Configuration
Ensure APPLICATIONINSIGHTS_CONNECTION_STRING is correctly configured. This can be set via:
- Azure App Service application settings
- Azure Functions configuration
- Environment variables in your container or pipeline
Step 5 – Validate Telemetry
After deployment, check:
- Logs are flowing into Azure Monitor / Application Insights
- Dependencies and custom events are showing correctly
- Any custom telemetry processors are re-implemented using the OpenTelemetry pipeline
Final Thoughts
Microsoft’s transition to OpenTelemetry is part of a broader move toward modern, standardised observability in the cloud. For Azure engineers and architects, this shift brings better tooling, more flexibility, and a path toward unified telemetry across platforms.
If you’re still relying on legacy Application Insights SDKs, now’s the time to plan your migration and adopt the future of telemetry.
