# Connect to Azure

## Azure Integration Overview

Integrate Azure with Finout to generate comprehensive cost and usage reports tailored to your organization's needs. Configure Finout to create detailed reports using Azure data, either for specific subscriptions or across your entire organization. This integration allows for in-depth analysis and management of expenses, offering valuable insights into cost allocation and usage trends across your Azure infrastructure. See [Azure documentation](https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-improved-exports) to learn more about creating and managing cost management exports.

**Azure Configuration Workflow:**

1. [Create a Service Principal for Finout](#h_caeb06e4d5)
2. [Create the Billing Export](#h_b1296fde84)
3. [Grant Finout Read-Only Permission from the Export Storage](#h_3457a15897)
4. [Connect Azure Advisor to Finout](#h_81357dba78)
5. [Integrate Azure with Finout](#h_81357dba78-1)

## 1. Create a Service Principal for Finout <a href="#h_caeb06e4d5" id="h_caeb06e4d5"></a>

Integration with Azure is achieved using an [Azure service principal](https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/service-accounts-principal).\
\
There are two options:\
a. [Create a service principle using the CLI.](#h_39705424de)

b. [Create a service principal using the Azure portal](#h_9306e184ac) and [set up an authentication](#h_d5c901358e).

#### a. Create a service principal using the CLI <a href="#h_39705424de" id="h_39705424de"></a>

1. From the CLI, type the following:

```json
az ad sp create-for-rbac -n "finout"
```

2. You will receive an output similar to the following:

```json
{
  "appId": "3c666g0g6-8cb8-8b33-cba6-abc7676a8989",
  "displayName": "finout",
  "password": "789************************",
  "tenant": "6666b777-ba88-44a9-a4aa-666ccb222a91"
}
```

{% hint style="warning" %}
**Important**: Save the following details to use in the Finout console (step 5):

* appId → Application (client) ID
* tenant → Directory (tenant) ID
* password → Application password (Client Secret
  {% endhint %}

#### b. Create a service principal using the Azure portal <a href="#h_9306e184ac" id="h_9306e184ac"></a>

1. From your Azure portal, search for and select **Azure Active Directory**.
2. Select **App registrations**, then click **New registration.**<br>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FkwAq7lBndX3jlf13T2lE%2Fimage.png?alt=media&#x26;token=e5a40787-27e3-41cc-bd46-eb1904ba17f3" alt=""><figcaption></figcaption></figure>
3. Name the application (For example, "Finout").
4. Leave the default values in the rest of the parameters and click **Register**.
5. The **Overview** page provides two of the credentials required for the Finout console (step 4) the **Application (client) ID** and the **Directory (tenant) ID**.<br>

   <div align="left"><figure><img src="https://finout.intercom-attachments.eu/i/o/6277242/a6670f0def974ac7ae240810/36-ftrPjoZM62-euWYBLmz30upVfzSUpNrH-W7dqSKuiueHek7yDSuQdxOQ_sBR5NaNhipU0LmO_cXMWKCyTC6w3OQhWTp3CdtNvg07vn2PiTcxQ8ZRWdYjOA2035sJaUpaCMY4wJtgpcgIAr7PZUDw?expires=1725353100&#x26;signature=827903fb482a5e54a176e5746e436ed208a27526a9e8c21d9ba19e86c1168aec&#x26;req=1tdowlr%2Brnsp0xr0v9tnpJz832knGZjLCCFvpe6WxHwRzXNE2ItQkfGpiQxe%0AEjdMjdPQxRDOm2M%3D%0A" alt="" width="563"><figcaption></figcaption></figure></div>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FqWmURbL8jEtJQOolrF8O%2Funknown.png?alt=media&#x26;token=c2f1d7e5-1b66-4a5c-8bbb-5329541602ef" alt=""><figcaption></figcaption></figure>

   <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>Important: Save the following details to use in the Finout console (step 4):</p><ul><li>appId → Application (client) ID</li><li>tenant → Directory (tenant) ID</li></ul></div>

#### b-2 Set up the authentication <a href="#h_d5c901358e" id="h_d5c901358e"></a>

For the Finout integration, use the **password-based authentication (application secret)** method by following these steps:\
​

1. Select **Certificates & secrets** from the left-hand menu on the app registration page.

   <figure><img src="https://finout.intercom-attachments.eu/i/o/6277243/a6a513b91a2744be0c00a3fd/O0brJDUQh8XhFFwVY4ZV-hMrYa2AbsCabQadhEX72VIvq6W5gSIHu6eNtGxIK9hVle9RumKFcVrqXZty7Or3R6q7CP4NHtLqiAUiqV1jOnFUmgBE5mwZdkvj6wmFoRpXE29rI08YNVr9SPu2YOIYPy0?expires=1725353100&#x26;signature=dd85dbb8d7490c54ec1ae6b5a56a4e3a4e1b2717fb33358a20ee5de7593dbf9b&#x26;req=1tdowlr%2Br3sp0xr0v9tnpA80LpyXaLnONbm9j7GxXmd%2BC15NaY0YhHFxlTMA%0A" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2Fa5nXoqlF28PpcLJ7kyal%2Funknown.png?alt=media&#x26;token=f5a15507-5356-4bcc-a797-10f681f055f5" alt=""><figcaption></figcaption></figure>
2. Click **+ New client secrets** to create a new client secret.
3. Select an expiration time frame, add a description, and then click **Add**.<br>

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>Note</strong>: If the secret is set to expire, you must remember to renew the credentials and reconfigure it in the Finout console.</p></div>
4. Copy the **Value** from the Client secret to the **Application secret** field in the Finout console (step 4).<br>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2Fn0BGwM5G5rrOGhCms2kH%2Fimage.png?alt=media&#x26;token=1f2316ec-6390-45e9-bfcf-bfe03b8714e8" alt=""><figcaption></figcaption></figure>

## 2. Create the Billing Export <a href="#h_b1296fde84" id="h_b1296fde84"></a>

In this step, create the export for the billing scope and grant Finout read-only access to these export files.

{% hint style="warning" %}
**Important**: Ensure you're on the billing scope when performing the following step.\
To ensure you're on the billing scope, check the text on your cost management screen that states **Billing account.**
{% endhint %}

{% hint style="info" %}
**Note:** When creating an export for the billing scope, you can choose to configure Azure settings by **overwriting the same file** or by **generating a new file** **for each run**.
{% endhint %}

#### Create the report exports on the billing scope: <a href="#h_5b555b6c74" id="h_5b555b6c74"></a>

<div align="left"><figure><img src="https://downloads.intercomcdn.eu/i/o/18754229/f1624da53aa878622844ffd8/image.png?expires=1725353100&#x26;signature=9096b835db34dbd4e57e461dfd9f2c331275102c6bd271c98cb2b34f983da5b6&#x26;req=0d1owFz4rj5k2hL085Zhofcm2WvWowl9Lh7FtEwtXlA8TOlm8ELt6YMzjTJK%0Aqdts6%2BwtH%2BUb%2F%2F9r%0A" alt=""><figcaption></figcaption></figure></div>

The reports must be exported twice, once for each of the following cost types:

1. Actual cost
2. Amortized cost

You should provide a different directory for both exports, but both exports must be exported to the same container.

**To create an export in your Azure portal:**

<div align="left"><figure><img src="https://downloads.intercomcdn.eu/i/o/18754169/0ca25c8f9c200b4e66b2ce45/image.png?expires=1725353100&#x26;signature=d4b99d0a7cd3d34f708139dace5bb9f3a1d07091fb021ac88e8714881c39f4bc&#x26;req=0d1owFz7qj5k2hL085ZhoeAU36cJkVGJkauQUl6RKbeZAFTBfp7R%2F4SDPOh8%0AerPJ%2FzE1LDZY5qdp%0A" alt=""><figcaption></figcaption></figure></div>

1. In Azure, navigate to **Cost Management.**

   <div align="left"><figure><img src="https://downloads.intercomcdn.eu/i/o/18754062/702b4dfc9e4fea30dc467dc5/image.png?expires=1725353100&#x26;signature=73fb914bfdc87f3208f15effc7466b45b3deac3777dcf7fb418d6f5f718784e8&#x26;req=0d1owFz6qjVk2hL085ZhofjS2T%2BDFUO4oEN25Mc%2Fz%2BSxNxX%2B7Z%2BJ5F8DCX8p%0Aag%3D%3D%0A" alt=""><figcaption></figcaption></figure></div>
2. Click **Exports** in the left-hand menu.

   <div align="left"><figure><img src="https://downloads.intercomcdn.eu/i/o/18754081/a5a018ce0118e5d85f2a6389/image.png?expires=1725353100&#x26;signature=dcc312d4480221ef63949723675ee537c1660586f9fd50caa3baa24c49d2d585&#x26;req=0d1owFz6pDZk2hL085ZhoWL5%2BNn9XGxyS1mWuUOCuRSw72XsjqxVsjojNhGr%0AHg%3D%3D%0A" alt=""><figcaption></figcaption></figure></div>
3. From the **Export** screen, click **+ Create**.\
   The **New export** page appears.

   <figure><img src="https://downloads.intercomcdn.eu/i/o/18754215/c1a54be856ad4fb8afe80999/image.png?expires=1725353100&#x26;signature=49b1bc359899591655d41e2bf5662e98cd1d2b37ebe9575a246d805d6d272dc2&#x26;req=0d1owFz4rTJk2hL085Zhod%2Bd21cZ%2F57EB4aAEETibbA2O%2FcJ71C4gtXcG40e%0AvQ%3D%3D%0A" alt=""><figcaption></figcaption></figure>
4. Click **Cost and Usage** (actual or amortized).<br>

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>​<strong>Note</strong>: The reports must be exported twice, once for each cost type. You should provide a different directory for both exports, but both exports must be exported to the same container.</p></div>

   \
   You are brought to the **Datasets** tab.<br>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FJOtAWKxgA7YGzdGCQOY4%2Fimage.png?alt=media&#x26;token=a386a047-0eb4-4aa1-ab18-54cd85f9f0fa" alt=""><figcaption></figcaption></figure>
5. Add the **Export Profile** name and click **Next**.\
   You are brought to the **Destination** tab.

   <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p><strong>Important</strong>:<br>- Ensure that the Format is CSV.<br>- Ensure that the Compression type is None.</p></div>

   \
   Fill in the details required on the destination page.<br>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FkrooAmurIHTiHzusmjuQ%2Fimage.png?alt=media&#x26;token=dbf8f902-727e-42bc-80e9-ebc800f1391a" alt=""><figcaption></figcaption></figure>

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>Note</strong>: Save the following details to add to Finout (step 4):<br>-Storage Account</p><p>-Container</p><p>-Actual Cost Directory and Export Name</p><p>-Amortized Cost Directory and Export Name</p></div>
6. Click **Next**.\
   You are brought to the **Review and Create** tab.
7. Review the summary and click **Create**.
8. After the export is created, select it from the export page and click **Run now**.

## 3. Grant Finout Read-Only Permission from the Export Storage <a href="#h_3457a15897" id="h_3457a15897"></a>

Grant read-only permission by using Azure CLI or the Azure portal.

#### Grant permissions using Azure CLI <a href="#h_e6ae8d8d37" id="h_e6ae8d8d37"></a>

* Type the following command in your CLI and fill in the parameters according to the role and storage details:

  ```
  az role assignment create --assignee <app_id> --role "Storage Blob Data Reader" --scope /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>/blobServices/default/containers/<container_name>
  ```

#### Grant permissions using the Azure portal <a href="#h_6c5103e70c" id="h_6c5103e70c"></a>

1. From your **Storage account** page, click **Containers** and select the export container.
2. Select **Access control** (IAM).
3. Click **+Add** and then click **Add role assignment**.
4. Search for **Storage blob data reader**, select it, and then click **Next**.
5. Click + **Select members** and find the Finout service principal.
6. Select the Finout service principal and click **Select**.
7. Click **Review + Assign**.

{% hint style="info" %}
This step is currently in Alpha.
{% endhint %}

## **4. Connect Azure Advisor to Finout**  <a href="#h_81357dba78" id="h_81357dba78"></a>

Connect a subscription scope in two ways: Use the [**Azure Portal**](#using-the-azure-portal) or the [**Azure CLI**](#using-azure-cli)**.**

#### **Using the Azure Portal:**

1. In your Azure portal, go to **Subscriptions** and then select your subscription.

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FfSGNf6st9ROu45R0PioZ%2Fimage.png?alt=media&#x26;token=bd8e20a5-7949-4ab4-92c6-ddcb90896847" alt=""><figcaption></figcaption></figure>
2. Click **Access control (IAM)**, **+ Add**, then **Add role assignment**.

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FTTMzfOQpznkJ1W4VDoBF%2Fimage.png?alt=media&#x26;token=d62d2882-0712-4413-9f9c-7fbf369c98ae" alt=""><figcaption></figcaption></figure>
3. Choose **Reader** and click **Next**.<br>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FjO8w6qBXxQrg3NflyVfz%2Fimage.png?alt=media&#x26;token=4f3f0cfd-dd8d-4a24-9431-43c8b6fc84d5" alt=""><figcaption></figcaption></figure>
4. Under **Members**, select your **Finout service principal**.
5. Click **Review + assign**.

#### Using Azure CLI:

1. Copy this command:

   ```json
   az role assignment create --assignee <appId> --role Reader
   --scope /subscriptions/<subscription_id>
   ```
2. Replace placeholders   \
   ● Replace <mark style="color:green;">\<appId></mark> with your Finout Service Principal App ID.   \
   ● Replace <mark style="color:green;">\<subscription\_id></mark> with the ID of the Azure subscription you want to   \
   connect.
3. Run this command separately for every subscription you want   &#x20;Finout to access.

## 5. Integrate Azure with Finout <a href="#h_81357dba78" id="h_81357dba78"></a>

1. Navigate to **Settings > Cost Centers** and click **Add cost center**.\
   The **Connect Accounts** window appears.

   <div align="left"><figure><img src="https://downloads.intercomcdn.eu/i/o/18755693/e2031fa8acdd7b163c58ecd8/image.png?expires=1725353100&#x26;signature=e27654f3c6f02fbec8fe5d26c24718a0f434537c1ecab605f7038e73469dd182&#x26;req=0d1owF38pTRk2hL085ZhoWdvlGpvjxpq1CEFSLWXXbFkCHwWNZmErl9J8xsb%0AOA%3D%3D%0A" alt="" width="563"><figcaption></figcaption></figure></div>
2. In Azure, click **Connect Now**.\
   The Azure integration window appears.<br>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2F9RgYgSHlA46GOqEZWSH7%2Fimage.png?alt=media&#x26;token=f9fbad1f-fe2e-4240-92e2-172cd5886c67" alt=""><figcaption></figcaption></figure>
3. Add the details saved from [step 1](#h_caeb06e4d5) and click **Next**.\
   You are brought to the **Create the billing export** step.

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FAcgfUNklfKXs12GXP600%2Fimage.png?alt=media&#x26;token=8e9984e5-c086-42e9-8ba7-6706deb079d8" alt=""><figcaption></figcaption></figure>
4. Add the details saved from [step 2](#h_b1296fde84) and click **Next**.

   <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p><strong>Important</strong>: To successfully finish the Azure integration with Finout, ensure the export files exist in the given container.</p></div>

   \
   You are brought to the **Connect Azure Advisor Recommendations** step.<br>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FNl4LwZqh2t1qvARzICzz%2Fimage.png?alt=media&#x26;token=ffad869e-f624-47fa-930e-3bd645a0c04c" alt=""><figcaption></figcaption></figure>
5. Mark, **I've granted the reader role to the Finout Service Principal** and click **Next**.\
   Your cost center has been created. You will receive an email notification once the data is retrieved and the setup is complete.<br>

## Historical Backfill Export

Finout supports **two methods** for backfilling historical Azure cost and usage data:

**1.** **Standard Backfill via Blob Storage (Recommended)**\
\
This is the default and preferred method. Finout accesses your Azure Blob Storage using the permissions granted during Cost Center onboarding. From there, it pulls historical amortized and actual cost and usage files—even for periods prior to the Cost Center's integration—ensuring a complete and continuous cost history.

If you want Finout to backfill data for a specific period, contact Finout support and specify the desired date range in complete calendar months. Support will then access the container and import the data into your account.

{% hint style="info" %}
**Note**: You must ask Finout support to fetch this as it is not fetched automatically.
{% endhint %}

**2.Alternative: Manual One-Time Export**

If historical files are **not available** in your Blob Storage, you can generate a **Finout-supported manual Azure export** using Azure’s Cost and Usage Export feature.\
This one-time export should include amortized and/or actual cost data and must be uploaded to the same Blob Storage Finout has access to. Once uploaded, Finout will automatically detect the files, fetch the data, and ingest it into your account for the desired backfill period.

This manual method should be used **only when the standard Blob Storage backfill is not possible**.

{% hint style="info" %}
**Prerequisite**: \
You must have one of the following Azure permissions:

* Owner/Contributor role
* A custom role with:
  * Microsoft.Authorization/roleAssignments/write
  * Microsoft.Authorization/permissions/read
    {% endhint %}

1. **Open the Azure Portal**\
   Go to your [Azure Portal](https://portal.azure.com/) and navigate to **Cost Management and Billing**.
2. **Navigate to Exports**:
   1. Select the relevant **billing scope.**
   2. In the left sidebar, click **Exports.**
   3. Click **Create New Export.**<br>

      <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcUuFQk2x-xpyljKjB75DhcxYNve99zMwSqGPVb6lNrzR6AZKKEkJ5ViMidRB7ABsEJH4SyTZSJ7gnnY1wjYhO7a1vnA1vfxZ38LhYvE1e1qJdkvJMvjWLg7yFZEWyhtTxwfjcstg?key=vFnz9sLuyFFZ6of2mDOGHg" alt=""><figcaption></figcaption></figure>
   4. Choose **Cost and usage (actual + amortized) export.**<br>
3. **Create Actual and Amortized Exports**

   <div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p><strong>Note</strong>: You will need to create two separate exports:</p><ul><li>One for Actual Cost and Usage</li><li>One for Amortized Cost and Usage</li></ul></div>

   1. Choose an  **Export Name / Prefix.**<br>

      <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdLHhDDm-MDoG1IzDUlgqDscJC9OQdI0m648D-gJstSYd7dZqbDKK08TpXadnyuGkxGzw2w0l23n0ZmzPNkClLc1PufZ2MlEMVVmSErQD9S0PBCZ2DUvz5-7MvPaxRPrq0iu0u-mg?key=vFnz9sLuyFFZ6of2mDOGHg" alt=""><figcaption></figcaption></figure>
   2. Edit the **Export information**:<br>

      <div align="left"><figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FAHsYvXNsFWjMw2n2xJ2M%2Fimage.png?alt=media&#x26;token=bc016d3d-204a-4251-83e4-4133b1da559d" alt=""><figcaption></figcaption></figure></div>

      1. Choose a **Data Type**
      2. Add an **Export Name**
      3. Choose a **Domain version**
      4. **Frequency**: One-time
      5. **Time Period**: A full calendar month

         <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p><strong>Important</strong>: <em><strong>Azure allows exporting only one month at a time. To export additional months, repeat the process.</strong></em></p></div>
      6. Add an **Export description**
4. **Set Destination**<br>

   <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXej0I4TLqj_YTRtPA2ddLTLLqzdLjJni_3FGmGQlHb6rUhedPAXQvEbBRD-s8741Qw40rrX0KJY5i9T_ZfX3AKdHR0k_ahrxiJ5vp2r3_K8Fw0O40-olJ92zbU6Y2bYlQoGcSpl3Q?key=vFnz9sLuyFFZ6of2mDOGHg" alt=""><figcaption></figcaption></figure>

   1. **Storage Type**: Azure Blob Storage
   2. **Destination and storage**: Use existing
   3. Enter your **Subscription** and **Storage account**.
   4. **Container**: Select an existing container in your Azure account — this must be the same one you granted Finout access to during the Azure Cost Center onboarding. This container stores your billing data.
   5. **Directory**: make sure to export the actual file and the amortized file into **different** directories.&#x20;
   6. **Format**: CSV
   7. **Compression type**: Gzip
   8. Enable **Overwrite data**
5. **Review and Create**

   After creating both exports, ensure both actual and amortized appear in the export list.<br>

   <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXefKrexXdPnULpggzVBojQzeExcyRRG__Pm-jvD76qZEvFzIHa0JPsu8gDWqg1K5p6fXFkGk9lRSWyFyUIlU6xtXVj0saAPGa8fklgb8Mm0crpbET_quNY54bcdptb6t36FOpL5oQ?key=vFnz9sLuyFFZ6of2mDOGHg" alt=""><figcaption></figcaption></figure>
6. Run the **Export.**<br>

   <div data-gb-custom-block data-tag="hint" data-style="success" class="hint hint-success"><p><strong>Note</strong>: You will need to run two separate exports:</p><ul><li>One for Actual Cost and Usage</li><li>One for Amortized Cost and Usage</li></ul></div>

   1. In Exports, click ![](https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FyhZRCqQIET1AYyFHzkD5%2Fimage.png?alt=media\&token=bcaa8904-adcd-48c2-bc11-0400e8e631b4) on the right side of each export.\
      \
      ![](https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FDy7LgkCIEh571WmEW8ET%2Fimage.png?alt=media\&token=13591901-9cb4-4ed6-8ce3-71492bbfb842)<br>
   2. Select **Run now** and choose the relevant month.
7. **Locate and Share Files**:\
   Once complete, both files will be available in the Blob Storage container you specified. Contact Finout support and they will then access the container and import the data into your account.

(Optional) Create the same export for additional months:

1. In Exports, click ![](https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FyhZRCqQIET1AYyFHzkD5%2Fimage.png?alt=media\&token=bcaa8904-adcd-48c2-bc11-0400e8e631b4) on the right side of each export.\
   ![](https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FilHr7oNDM77mLdGaWRR4%2Fimage.png?alt=media\&token=c4fe2152-e417-4b6b-9326-c8c7314c3b56)
2. Click **Export for selected dates**, and configure another full calendar month.<br>

   <figure><img src="https://3858159242-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWqjB2puKXPDR7L86FX2e%2Fuploads%2FpZ65GoBbMR5543nDYSGb%2Fimage.png?alt=media&#x26;token=ca31138b-23c1-4255-a404-b6125c565d53" alt=""><figcaption></figcaption></figure>
3. Click **Execute** and then **Run the exports**.

## FAQs

* **What does the Azure Advisor integration in CostGuard do?**\
  It brings Azure’s native cost optimization recommendations directly into CostGuard. This allows you to review and act on Azure insights side-by-side with recommendations from other providers within a unified interface, eliminating the need to switch between multiple tools or dashboards.
* **What’s required to enable Azure Advisor?**\
  Complete the Azure onboarding to authorize Finout’s access to Azure Advisor. That’s the only prerequisite. To enable Azure Advisor integration in CostGuard, you must complete the Azure onboarding process, which authorizes Finout’s access to Azure Advisor. This includes following the step-by-step instructions from the [Azure onboarding documentation](https://docs.finout.io/billing-integrations/cloud-providers/connect-to-azure) to configure the connection in your Azure Portal or via the Azure CLI. Once onboarding is finalized, CostGuard will automatically begin pulling Azure Advisor recommendations.
* **When will I see the recommendations?**\
  Once onboarding is complete, Azure Advisor recommendations will appear in CostGuard on the following scheduled scan (typically the following day). It will continue to update automatically and appear alongside your other provider recommendations.
* **Can I use a custom role limited only to Azure Advisor permissions for the Finout integration?**

  Yes. You can use a **read-only custom role** scoped specifically to Azure Advisor.

  To allow Finout to read Azure Advisor recommendations, the following action is sufficient:

  ```
  Microsoft.Advisor/recommendations/read
  ```

  Assign this role to the service principal used by Finout for the Azure Advisor integration.
* **Can I assign the role at the Management Group level instead of per subscription?**

  Yes. You can assign either the **Reader** role or your Azure Advisor–scoped **custom role** at the **Management Group** level.

  This lets Finout access Azure Advisor data for all subscriptions under that Management Group. However, make sure that the **same subscriptions are also onboarded to Finout billing**. Otherwise, you may see Azure Advisor recommendations for resources that do **not** have matching billing data in Finout, which can limit cost insights.
* **Will Finout automatically discover all subscriptions under the Management Group, including future ones?**

  Yes. When you assign the role at the **Management Group** level, Finout will automatically discover:

  * All **current** subscriptions under that Management Group
  * Any **future** subscriptions added to that Management Group

  As long as those subscriptions are also connected to Finout billing, their Azure Advisor recommendations will be available in Finout.
* **Can I use certificate-based authentication instead of client secrets?**

  No. Finout **currently supports client secrets only** for authenticating the Azure integration.

  You must configure the service principal with a client secret; certificate-based authentication is not currently supported.


---

# Agent Instructions: 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:

```
GET https://docs.finout.io/billing-integrations/cloud-providers/connect-to-azure.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
