- .NET 8.0 SDK or later
- Azure CLI (for authentication) or access to Azure managed identity
- Windows, macOS, or Linux (cross-platform compatible)
- Azure subscription with access to:
- Azure Cosmos DB account
- Azure Monitor/Log Analytics workspace (optional, for enhanced metrics)
Your Azure account needs specific permissions to access Cosmos DB and Azure Monitor resources. For a complete list of required permissions and setup instructions, see the Azure Permissions Guide.
Quick Reference:
- Cosmos DB:
Cosmos DB Account Readerrole - Azure Monitor:
Log Analytics Readerrole (optional, for enhanced metrics) - Resource Groups:
Readerrole (for auto-discovery features)
git clone https://github.com/JoshLuedeman/cosmosdb-to-sql-migration-tool.git
cd cosmosdb-to-sql-migration-tooldotnet restoredotnet build --configuration Releasedotnet run -- --helpYou should see the application help information displaying available command-line options.
dotnet run -- --endpoint "https://your-cosmos-account.documents.azure.com:443/" --database "YourDatabase" --output "C:\Reports"dotnet run -- --endpoint "https://your-cosmos-account.documents.azure.com:443/" --all-databases --output "C:\Reports"After running, you'll find reports in a timestamped folder:
C:\Reports\
└── CosmosDB-Analysis_2025-08-21__14-30-45\
├── YourDatabase-Analysis.xlsx
└── Migration-Assessment.docx
Choose one of the following authentication methods:
# Install Azure CLI if not already installed
# https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
# Login to Azure
az login
# Set your subscription (optional)
az account set --subscription "your-subscription-id"When running on Azure VMs, Container Instances, or App Services, the application will automatically use managed identity.
Set environment variables:
export AZURE_CLIENT_ID="your-client-id"
export AZURE_CLIENT_SECRET="your-client-secret"
export AZURE_TENANT_ID="your-tenant-id"Copy the sample configuration:
cp appsettings.sample.json appsettings.jsonEdit appsettings.json with your specific Azure details:
{
"CosmosDb": {
"AccountEndpoint": "https://your-cosmos-account.documents.azure.com:443/",
"DatabaseName": "your-database-name",
"AnalysisContainers": ["container1", "container2"],
"PerformanceAnalysisMonths": 6
},
"AzureMonitor": {
"WorkspaceId": "your-log-analytics-workspace-id",
"EnableMetricsCollection": true
}
}Run a basic connectivity test:
dotnet run -- --test-connectionThis will verify:
- Azure authentication is working
- Cosmos DB access is configured correctly
- Azure Monitor connectivity is established
- Configuration Guide - Detailed configuration options
- Usage Guide - Running your first assessment
- Troubleshooting - If you encounter issues
Once setup is complete, run a quick assessment:
dotnet runThe application will:
- Connect to your Cosmos DB account
- Analyze specified containers
- Collect performance metrics
- Generate migration assessment
- Create Excel and Word reports in the
Reports/directory
- Never commit
appsettings.jsonwith real credentials to source control - Use Azure Key Vault for production credentials
- Enable managed identity when running on Azure
- Rotate credentials regularly
- Use least privilege access principles for Azure permissions