canonical: https://jentic.com/apis/azure.com/azure-data-migration-service-resource-provider

# Microsoft Azure Azure Data Migration Service Resource Provider

The Azure Data Migration Service (DMS) Resource Provider API manages DMS service instances and the projects and tasks they execute to move databases into Azure. It exposes 26 endpoints covering service CRUD, project lifecycle, generic migration tasks with typed inputs and outputs, SKU listings, name availability checks, and quota usage. Tasks are deliberately generic so new migration scenarios can be added without provider updates.

## For AI agents

Provision Azure Data Migration Service instances, manage migration projects, and run typed migration tasks that move databases from on-premises or older platforms into Azure. Supports 26 endpoints across services, projects, tasks, SKUs, and usages.

## Scope

Does not provision target Azure SQL databases, run continuous ETL pipelines, or manage Azure Data Factory triggers - use for DMS service, project, and task lifecycle only.

## Capabilities

- Provision a Data Migration Service instance bound to a virtual network
- List DMS services across a subscription or scoped to a resource group
- Create migration projects under a service and group related migration tasks
- Run migration tasks with typed inputs (e.g. SQL Server to Azure SQL) and inspect outputs
- Cancel a running migration task without tearing down the project
- Check whether a candidate DMS service or project name is available in a region
- List supported SKUs and current quota usage for a region

## Use cases

### On-Prem SQL Server to Azure SQL Migration

Move a SQL Server database from an on-premises VM into Azure SQL Database using a DMS service joined to the customer VNet. The Resource Provider API provisions the service, creates a project with sourcePlatform=SQL and targetPlatform=SQLDB, and runs a typed migration task whose input describes connection strings and selected databases. The task's output reports per-database progress and any validation issues, replacing manual schema-and-data export workflows.

Example prompt: Create a DMS project named SqlToAzure under service acme-dms, then start a Migrate.SqlServer.AzureSqlDb task with the source SQL Server connection and the target Azure SQL Database name.

### Capacity and Region Planning

Pick the right region and SKU for a Data Migration Service before provisioning. The API exposes Skus_ListSkus and Usages_List endpoints that report supported SKU tiers per region and current subscription usage against quotas. Procurement and platform teams can call these read-only endpoints to choose Standard or Premium SKUs without raising support tickets.

Example prompt: Call Skus_ListSkus for subscription 1111-2222 and Usages_List for location=westeurope, then return the available Premium SKUs and remaining quota.

### Long-Running Migration Lifecycle Control

Drive a long-running migration end to end without portal interaction: create a project, start a task, poll its state, and cancel cleanly if a stop condition fires. The DMS API models tasks as resources with state and output fields, so an agent can implement deterministic polling and error-handling loops. Teams typically wrap this in a runbook that handles retries and notifications.

Example prompt: Create and start a migration task, poll the task resource until state is Succeeded or Failed, and call the cancel operation if state stays Running for longer than the configured timeout.

### Agent-Driven Migration Orchestration

A Jentic agent orchestrates a fleet of database migrations: it lists candidate sources, calls checkNameAvailability per service, creates DMS instances and projects, and starts the appropriate typed task per source platform. The agent uses the same 26 endpoints in this spec to coordinate the migration, replacing portal-driven runbooks with a structured tool-using loop.

Example prompt: For each entry in a migration plan list, check name availability, provision a DMS service if missing, create the project, and start a Migrate.SqlServer.AzureSqlDb task with the supplied connection details.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /subscriptions/{subscriptionId}/providers/Microsoft.DataMigration/services | List DMS services in a subscription |
| GET | /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services | List DMS services in a resource group |
| GET | /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName} | Get a single DMS service |
| DELETE | /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName} | Delete a DMS service |
| POST | /subscriptions/{subscriptionId}/providers/Microsoft.DataMigration/locations/{location}/checkNameAvailability | Check service or project name availability |
| GET | /subscriptions/{subscriptionId}/providers/Microsoft.DataMigration/skus | List supported DMS SKUs |
| GET | /subscriptions/{subscriptionId}/providers/Microsoft.DataMigration/locations/{location}/usages | Get DMS quota usages for a region |

## Key resources

- **services** — DMS service instance CRUD and listing within subscription or resource group
- **projects** — Migration projects grouped under a DMS service
- **tasks** — Generic migration tasks with typed inputs and outputs
- **skus** — Supported DMS SKU tiers per region
- **usages** — Quota usage information for DMS resources

## Why Jentic

- **Setup:** Wiring the Azure Data Migration Service Resource Provider by hand means registering an Azure AD app, exchanging OAuth 2.0 tokens for management.azure.com, assembling the right typed task input per migration scenario, and building the Azure Resource Manager plumbing that polls long-running tasks and retries on throttling. Through Jentic you install once, import the Azure Data Migration Service Resource Provider from the API Directory, store the Azure AD credential once, and your agent calls it.
- **Permission scoping:** This API puts the subscription, resource group, and service name in the URL path (for example /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}), so a rule can pin your agent to a specific migration service. You choose the operations it may call, so ones like deleting a DMS service or cancelling a running task are not included unless you add them.
- **Credential handling:** Your Azure AD credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'migrate a SQL Server database to Azure SQL' or 'check DMS quota usage in a region', and Jentic returns the matching tasks create-or-update operation with the full task input schema for that taskType so the agent does not assemble JSON from documentation.

## Related APIs

- **Azure SQL Database** — The most common destination for DMS migrations and the resource that hosts migrated databases.
- **Azure Data Factory Management** — Pipeline-based ETL service for ongoing data movement rather than one-time migrations.
- **Azure Data Catalog Resource Provider** — Provisions the catalog where migrated databases can be registered as discoverable assets.

## FAQ

### What authentication does the Azure Data Migration Service API use?

Azure Active Directory OAuth 2.0 via the azure_auth scheme (user_impersonation scope) on https://management.azure.com/. With Jentic, AAD client credentials live in your Jentic One instance and the agent receives a runtime bearer token rather than the secret.

### Can I migrate SQL Server to Azure SQL with this API?

Yes. Provision a DMS service via PUT under Microsoft.DataMigration/services, create a project, then start a typed task such as Migrate.SqlServer.AzureSqlDb with the source connection and target database name in the task's input block.

### What are the rate limits for the Azure DMS API?

Azure Resource Manager subscription throttling applies, typically 12,000 reads and 1,200 writes per hour per subscription. Long-running migration tasks themselves are not rate-limited by ARM; their progress is polled via the task resource's state field.

### How do I start a migration task through Jentic?

Search Jentic for "start azure database migration task", load the schema for the tasks createOrUpdate operation, set the typed input block (taskType plus connection details), and execute. Run it through Jentic One, the self-hosted execution layer to get an API key.

### How is connectivity to source databases handled?

The DMS service is joined to a customer-supplied virtual network at provisioning time. Connectivity from the service workers to source databases is the customer's responsibility through that VNet, including any required DNS, firewall, and ExpressRoute or VPN configuration.

### Why are tasks generic instead of typed per scenario?

The resource provider models tasks generically with a taskType, input, and output so Microsoft can add new migration scenarios (e.g. MongoDB to Cosmos DB) without versioning the resource provider. Clients pick the right taskType and matching input schema for the specific migration.

### Can I limit what my agent is allowed to do with the Azure Data Migration Service API?

Yes. Because you run Jentic One yourself, self-hosted, your own rules decide which operations and credentials the agent may use. This API puts the subscription, resource group, and service name in the URL path (for example /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.DataMigration/services/{serviceName}), so you can pin the agent to one specific migration service. You also choose the exact operations it may call, so destructive ones like deleting a DMS service or cancelling a running task stay out of reach unless you explicitly add them.
