Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Azure DevOps Services
Important
Legacy technology replacement required
The WIT Client OM (Work Item Tracking Client Object Model) is legacy technology that should be replaced with modern REST-based .NET client libraries. Migration provides better performance, security, and cross-platform support.
This guide helps you migrate your .NET code from the deprecated WIT Client OM to modern REST APIs. The migration offers significant benefits:
✅ Modern advantages:
- Asynchronous operations for better performance
- Modern authentication with managed identities and service principals
- Cross-platform support (.NET Core, .NET 5+, and .NET Framework)
- Active development and ongoing support
❌ Legacy limitations:
- Limited to .NET Framework and Windows only
- Synchronous, blocking operations
- Outdated authentication methods
Migration overview
Step 1: Update NuGet packages - Replace WIT Client OM with modern REST client packages Step 2: Update authentication - Migrate to secure, modern authentication methods Step 3: Convert operations - Replace synchronous calls with asynchronous REST operations
For detailed code examples and step-by-step migration samples, see the GitHub Azure DevOps WIT Client OM Migration Guide.
Common scenarios migration table
The following table shows how to migrate common work item operations from legacy WIT Client OM to modern REST APIs:
Authentication migration
Legacy authentication (❌ Replace):
// WIT Client OM with basic authentication
using (var tpc = new TfsTeamProjectCollection(new Uri(collectionUri)))
{
tpc.Authenticate();
var workItemStore = tpc.GetService<WorkItemStore>();
}
Modern authentication (✅ Recommended):
// REST client with managed identity (for Azure-hosted apps)
var credentials = new VssAzureIdentityCredential();
using var connection = new VssConnection(new Uri(collectionUri), credentials);
var witClient = connection.GetClient<WorkItemTrackingHttpClient>();
// Alternative: Service principal for CI/CD
// var credentials = new VssServicePrincipalCredential(clientId, clientSecret, tenantId);
// Alternative: PAT for development/testing
// var credentials = new VssBasicCredential(string.Empty, personalAccessToken);
Next steps and resources
📖 Essential migration resources
- Modern .NET client library samples - Production-ready code examples with modern authentication
- Authentication guidance - Choose the right authentication method for your scenario
- .NET client libraries concepts - Understanding the modern client architecture
🔧 Code examples and tools
- Migration guide with code samples - GitHub repository with detailed migration examples
- Work Item Tracking REST API documentation - Complete API reference with examples
🆘 Support and community
- Azure DevOps Developer Community - Ask questions and get help
- Migration guide issues - Report missing scenarios or get specific help
🔄 Related migrations
- Migrate data from Azure DevOps Server to Azure DevOps Services - Service migration guidance
- Legacy SOAP client samples - Reference for other legacy client patterns
Tip
Start your migration: Begin with authentication guidance to choose the right approach, then see .NET client library samples for working code examples.