> For the complete documentation index, see [llms.txt](https://docs.dorg.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dorg.pro/install-dorg/install-a-new-dorg/azure-preparation.md).

# Azure Preparation

Here the preparation steps to be executed by your Azure Administrator on your Azure Subscription.

***

### 1. Register the Resource Providers

A user with at least the Contributor role in the Azure Subscription must ensure that these providers are registered.<br>

* **Microsoft.Resources**\
  → Resource Groups and ARM deployment (Azure Resource Manager).
* **Microsoft.Network**\
  → Networking: VNet, Subnet, NSG, Private Endpoint, Private DNS, Peering, NIC, Public IP.
* **Microsoft.Storage**\
  → Storage Account, Blob Storage, File Shares.
* **Microsoft.App**\
  → Azure Container Apps and Managed Environments.
* **Microsoft.Cdn**\
  → Azure Front Door / CDN.
* **Microsoft.OperationalInsights**\
  → Log Analytics Workspace (monitoring and logs).
* **Microsoft.Compute**\
  → Virtual Machines
* **Microsoft.CognitiveServices**\
  → Azure AI / Cognitive Services (AIServices accounts).
* **Microsoft.Logic**\
  → Azure Logic Apps (workflow automation, scheduler start/stop).
* **Microsoft.Authorization**\
  → RBAC, role assignments, access control.
* **Microsoft.ManagedIdentity**\
  → Managed Identities (User Assigned / System Assigned).
* **Microsoft.DBforPostgreSQL**\
  → Azure Database for PostgreSQL (Flexible Server).
* **Microsoft.DocumentDB**\
  → Azure Cosmos DB
* **Microsoft.KeyVault**\
  → Azure Key Vault

Several of these providers are generally already registered.

#### Register with Azure Portal

1. Open **Azure Portal**\
   <https://portal.azure.com>
2. Go to **Subscriptions**
3. Select your **subscription**
4. In the left menu select **Resource providers**
5. Search the provider (example: `Microsoft.ContainerService`)
6. Click **Register** if not yet registere&#x64;**.**
7. Wait until **Status = Registered.**
8. Repeat for each missing provider.

#### Register with Azure CLI

* To get the list of registered providers:

```
az provider list --query "[?registrationState=='Registered'].namespace" -o table 
```

* To register a single provider:

```
az provider register --namespace <resource-name>
```

***

### 2. Ensure availability and quotas

These are the resources most likely to hit [**quota**](https://learn.microsoft.com/en-us/azure/quotas/quotas-overview) or **regional capacity** limits. For a first-time install in a new subscription, defaults are often sufficient; for shared or heavily used subscriptions, a quick check avoids failures.

| What to check                              | Where                                                                                                         | What to do if limited                                                                                                                                                                                                                             |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Azure Database for PostgreSQL**          | 3 Flexible Servers (Burstable B-series, e.g. B1ms, B2ms). vCore quota for Burstable tier.                     | Ensure region supports Flexible Server and Burstable SKUs; request “PostgreSQL” vCore quota if needed.                                                                                                                                            |
| **Azure AI Services (Cognitive Services)** | 1 account + 3 model deployments. TPM (tokens per minute) and deployment quotas; model availability in region. | <p>Ensure the region supports “Azure AI Services” and the required models; request quota increase if you hit limits:<br><em>gpt-5-nano</em>: 100.000 TPM<br><em>gpt-realtime</em>: 10.000 TPM<br><em>text-embedding-3-large</em>: 350.000 TPM</p> |
| **Azure Container Apps**                   | Several managed environments and container apps. vCPU/memory quotas per region.                               | Use a region where Container Apps is available; request “Container Apps” or “Managed Environment” quota if needed.                                                                                                                                |
| **Storage accounts**                       | Several accounts (Pulumi state, app storage). Default \~250 per region per subscription.                      | Unlikely to hit on first install; if you have many other storage accounts, request an increase.                                                                                                                                                   |
| **Key Vault**                              | 1 vault. Default typically 25 vaults per subscription.                                                        | Request increase if your subscription already has many vaults.                                                                                                                                                                                    |

#### 2a. Azure service quotas

Navigate to Azure Portal → Subscriptions → Your subscription → Usage + quotas. Search for the service and request an increase if you are near or at the limit. The key resources to check:

* Azure Database for PostgreSQL — click the "Azure Database for PostgreSQL" tile and search for standardBSFamily to verify Burstable B-series vCore availability. Request an increase if needed.
* Container Apps — verify vCPU/memory quotas per region.
* Storage accounts — default \~250 per region per subscription; unlikely to hit on first install.
* Key Vault — default typically 25 vaults per subscription.

#### 2b. AI model quotas (Cognitive Services)&#x20;

Cognitive Services quotas are not available in the subscription "Usage + quotas" page. To verify AI model availability and TPM/RPM limits, open Azure AI Foundry (ai.azure.com), navigate to an existing project in the target region, and check the Quota section in the management panel. Verify that the required models are available and have sufficient capacity:

* gpt-5-nano: 100,000 TPM
* gpt-realtime: 10,000 TPM
* text-embedding-3-large: 350,000 TPM If a model does not appear in the quota page for the selected region, it is not available in that region.

**If resources are unavailable due to regional capacity**\
Azure regions may temporarily lack capacity for specific SKUs or services, especially for **new subscriptions or high-demand resources**. If provisioning fails with errors such as `AllocationFailed`, `SkuNotAvailable`, or similar capacity-related messages, please contact us.

Reference:

* <https://learn.microsoft.com/en-us/azure/virtual-machines/allocation-failure>
* <https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/common-deployment-errors>

***

### 3. Create a Resource Group for Dorg

Create a **new, empty Resource Group** dedicated to Dorg components.

**Requirements:**

1. The Resource Group must not contain existing resources.
2. Use a dedicated name (e.g., `dorg-<dorgname>`).
3. Assign the resource group to `Sweden-Central` region.

{% hint style="warning" %}
Sweden-Central is the suggested and predefined region.\
If you feel troubles in installing in this region due to lack of Azure capacity, you can choose another EU region. Ensure to select the different region inside the Advanced settings in the Dorg Installer as well.
{% endhint %}

***

### 4. Assign Required Roles for the account that will run the Dorg Installer

The user executing the Dorg installer must have the following permissions:

<table><thead><tr><th width="239">Context</th><th>Role</th></tr></thead><tbody><tr><td>Entra ID</td><td>Cloud Application Administrator<br>(Resource Type = Directory)</td></tr><tr><td>Subscription</td><td>Reader</td></tr><tr><td>Subscription</td><td>User Access Administrator</td></tr><tr><td>Resource Group</td><td>Contributor</td></tr><tr><td>Resource Group</td><td>Key Vault Administrator</td></tr><tr><td>Resource Group</td><td>Storage Blob Data Owner</td></tr></tbody></table>

#### How to Assign Roles

1. Open the **Entra ID.**
2. Go to **Roles and administrators.**
3. **Add the role** Cloud Application Administrator to the user who will run the installer.
4. Open the target **Resource Group**.
5. Go to **Access Control (IAM)**.
6. Select **Add → Add role assignment**.
7. Assign each role to the user who will run the installer. Assignment Type, if requested, must be "Active".

***

### 5. Create the Dorg User (Microsoft Entra ID)

Create a dedicated user in **Microsoft Entra ID** for DORG.

#### User Requirements

* **Surname:** `Dorg`
* **Username (UPN):** `name.dorg@yourdomain`
  * Replace `name` with the agreed identifier.
  * Replace `yourdomain` with your Entra ID domain.
* The user must have one of the following Microsoft 365 licenses:
  * *Microsoft 365 Business Basic*
  * *Microsoft 365 Business Standard*
  * *Microsoft 365 Business Premium*
  * Any Office 365 E plan

#### Creation Procedure

1. Open **Microsoft Entra ID**.
2. Go to **Users → New user**.
3. Create a new user with:
   * First name: as defined by your naming policy
   * Last name: `Dorg`
   * Username: `name.dorg@yourdomain`
4. Assign a secure initial password.
5. Disable password expiration if required by your policy.

#### License Assignment&#xD;

1. Open Microsoft 365 Admin Center (admin.microsoft.com).
2. Go to Active users and select the newly created Dorg user.
3. Open the Licenses and apps tab.
4. Assign one of the eligible Microsoft 365 licenses listed above.
5. Save and confirm the license is active.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dorg.pro/install-dorg/install-a-new-dorg/azure-preparation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
