A central hub of Azure cloud migration services and tools to discover, assess, and migrate workloads to the cloud.
Sorry you're dealing with this — it's a frustrating one because there's genuinely nothing you can do from the Portal or CLI once it gets into this state. But let me explain what actually happened and what your options are.
- What went wrong (the real reason) Looking at your error output, the timeout wasn't just a general slowness issue. The move hit its 4-hour limit specifically because the
NotificationAfterMoveFailedstep couldn't complete. That second phase is where Azure Resource Manager notifies dependent resource providers that the move happened — in your case, the MySQL control plane endpoint (merumysql.malaysiawest1-a.control.database.windows.net) never acknowledged the move of your Private Endpoint (pep-st-camani-blob-prod). This matters because according to the Azure networking move limitations docs, a private endpoint must be in a Succeeded state before a move is attempted — if the MySQL-linked private endpoint was in any non-Succeeded state going in, the notification phase would fail exactly like this. The result is that the rollback also didn't complete cleanly, which is why you're stuck: the RG never unlocked. Try this first — cancel the pending move via REST There's an ARM action specifically for this. Run this from Azure CLI:
This tells Resource Manager to abort the pending move operation and release the lock. It doesn't always work on an already-timed-out operation, but it's worth trying before escalating. If that doesn't work — open a support ticket, this requires backend cleanup Ifaz rest --method POST \ --uri "/subscriptions/<your-subscription-id>/resourceGroups/<stuck-rg-name>/cancelMoveResources?api-version=2021-04-01"cancelMoveResourcescomes back with an error or the RG is still locked, this is 100% a backend state issue. The internal operation state on the ARM side didn't clean up, and no user-facing tool can fix that. Open a support ticket here: https://portal.azure.com/#create/Microsoft.Support When filling it out, use:- Issue type: Technical
- Service: Resource Group
- Problem type: Managing Resource Groups
- Summary: "Resource group stuck in MovingResources state after ResourceMoveTimedOut — requires backend state cleanup"
- Your Subscription ID
- The Resource Group name that's stuck
- The approximate timestamp of the original move attempt
- The Correlation ID / Request ID from the failed Activity Log entry (this is the most important thing — it lets them find the stuck operation in internal logs)
- The error code:
ResourceMoveTimedOut/NotificationAfterMoveFailedtargetingMicrosoft.DBforMySQL/
Microsoft.DBforMySQL/flexibleServersprivate endpoints do support moves, but the private endpoint must be in Succeeded provisioning state before you initiate the move. If the linked MySQL Flexible Server or the private endpoint itself is in any transitional state, the notification phase will fail. Also worth knowing for the future: move operations lock both source and destination RGs for up to 4 hours. If you're moving a large batch of resources that includes networking + PaaS services with private endpoints, it's safer to break it into smaller batches — the docs recommend this too, since even sub-800-resource batches can time out if they involve complex provider dependencies. Hope thecancelMoveResourcescall clears it — but realistically given that the rollback also failed, you'll probably need the support ticket. Make sure you grab that Correlation ID before you contact them, it'll speed things up a lot. References: