Regions and Platforms
Regions and Platforms
Overview
Regions are the platform hosting boundary for subscriptions, usage, health, quotas, catalogue data, and platform integrations.
CMS v2 supports these platform types:
| Platform | Usage model |
|---|---|
| Azure Stack | Collected usage priced through CMS meters and SKUs. |
| Azure Local | Generated usage from Azure Local VM and disk allocation, priced through CMS. |
| Public Azure | Imported Azure cost records with CMS currency conversion and pass-through uplift. |
| CloudStack | Collected CloudStack usage priced through CMS offers and templates. |
Region Readiness
Region readiness controls whether a region can be used for subscription creation and operational actions. New or incomplete regions hide actions such as Admin Portal, Update Usage, and Refresh Health until setup is complete or a connection test succeeds.
Delete Region remains available for incomplete regions so failed setup can be cleaned up.
Tenant Access
Platform administrators can restrict a region to an allowed tenant list from the Tenant Access tab.
If a region has no tenant access rows, it is available to all tenants visible through the user's normal RBAC scope. If a region has one or more tenant access rows, subscription creation and dashboard health only include tenants explicitly allowed for that region after RBAC has already been applied.
Azure Stack
Azure Stack regions use provider credentials, readiness checks, health refresh, usage collection, SKU and meter catalogue data, quota templates, and subscription lifecycle actions.
Azure Stack regions include:
- A Settings tab with a Use Entra Registration Services toggle.
- A Secret Store setting for Key Vault or encrypted database certificate storage.
- Region health handling that marks the region degraded when admin calls time out or fail to connect.
- Optional region-scoped usage deletion for platform administrators.
Azure Local
Azure Local regions represent Azure Local clusters and reuse Azure app registration and certificate fields.
Azure Local usage collection discovers VM instances and disks through Azure Resource Manager and Azure Arc, resolves CMS subscription mapping by resource or resource group tags, and writes standard UsageData rows. Those rows then flow through pricing, billing, invoicing, and reporting.
Azure Local catalogue includes vCPU hour, memory GB hour, storage GB hour, GPU hour, and image hour meters. Image catalogue records reuse the template/pricing path so each image can be priced by image-hour.
Manual Review Required: The Azure Local feature backlog says Azure Local subscription details should not show an Azure Stack Portal button. Confirm the current portal behaviour before publishing this as resolved.
Public Azure
Public Azure regions collect Azure Cost Details or Consumption usage details for discovered Azure subscriptions. CMS maps Azure cost rows to CMS subscriptions using the configured resource group tag, defaulting to CmsSubscriptionId.
Unmapped or invalid Azure cost rows are routed to one fallback CMS subscription per Azure region. Azure final cost uses CMS currency conversion first, then applies the configured PassThroughIncrease.
Azure category mappings can be synced from observed billing records and applied to non-invoiced billing rows for a selected month.
Implementation Gap: Public Azure-specific alert categories and close/reopen flow are documented as pending. Live Cost Details compatibility against real discovered Azure subscriptions is also pending in the feature document.
CloudStack
CloudStack uses the CMS region and tenant model. Catalogue visibility depends on at least one CloudStack region existing. CloudStack billing and pricing use offers and templates, and subscription provisioning maps tenants to CloudStack domains and accounts.
Planned Behaviour: CloudStack Sync Access is listed as a backlog item. When implemented, CMS users should be automatically created under the tenant domain with reader or administrator access according to role.
Health and Operations
Region health can be refreshed manually by platform administrators and automatically by the platform-level RegionHealth scheduled job. Region capacity widgets show scoped capacity and health information without exposing platform-only configuration details to non-platform users.
Database and Deployment Notes
Take a MySQL backup before applying region, platform, tenant access, Azure Stack secret-store, Azure Local, Public Azure, or CloudStack scripts. The feature documents identify the relevant scripts for each platform.