> ## Documentation Index
> Fetch the complete documentation index at: https://domoinc-openapi-sync-dataflows.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Power BI MSAL Writeback Connector

## Intro

Power BI is a business analytics service by Microsoft. It aims to provide interactive visualizations and business intelligence capabilities with an interface simple enough for end users to create their own reports and dashboards. You need an installed Microsoft Azure app to use the Power BI Writeback connector. To learn more about the Power BI API, visit their page ([https://docs.microsoft.com/en-us/rest/api/power-bi/](https://docs.microsoft.com/en-us/rest/api/power-bi/ "https://docs.microsoft.com/en-us/rest/api/power-bi/") ).

You configure your Domo-Sharepoint connection in the Data Center. This topic discusses the fields and menus that are specific to the Power BI Writeback connector user interface. General information for adding DataSets, setting update schedules, and editing DataSet information is discussed in [Adding a DataSet Using a Connector](https://domo-support.domo.com/s/article/360063090013?language=en_US "Adding a DataSet Using a Connector").

<Note>
  **Note:** The owner of a writeback dataset must also be an owner or co-owner of the input dataset.
</Note>

## Prerequisites

To configure this connector, you must have the following:

* An installed Microsoft Azure app.
* The Client ID and Client Secret for your Azure app.
* The Tenant ID for your Azure app. This is generated when you create your Azure app.
* The username and password for your Azure Active Directory.

#### To obtain the Azure App Client ID:

1. Go to
   [https://portal.azure.com](https://portal.azure.com/ "https://portal.azure.com").

2. Select
   **Azure Active Directory > App registrations**.

3. Find and click on your web app.

4. The "application ID" is your **Client ID**.

#### To obtain a new Azure App Client secret:

1. Go to
   [https://portal.azure.com](https://portal.azure.com/ "https://portal.azure.com").

2. Select
   **Azure Active Directory > App registrations**.

3. Find and click on your web app.

4. Open
   **Certificates and secrets**.

5. Click
   **+New client secret**.

6. Provide the client secret description and the expiry period for your secret. Click
   **Add**.

7. Your new client secret will appear. Copy it and paste in your Domo connector Client Secret field.

#### To obtain the Tenant ID:

1. Login to the Azure Portal ([https://portal.azure.com](https://portal.azure.com "https://protal.azure.com") ).

2. Navigate to
   **Azure Active Directory >> Properties**.

3. Copy the
   **Directory ID**. The directory ID is your **Tenant ID**.

### Creating an Azure App for Enterprise OAuth

To create a Microsoft Azure app, do the following:

1. Log into
   [https://portal.azure.com](https://portal.azure.com/ "https://portal.azure.com").

2. Click on
   **App registrations**.

<Frame>
  <img alt="App_Regi-New.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8v.png?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=2f513d9f851eeb97133a295d6b813970" width="847" height="83" data-path="images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8v.png" />
</Frame>

3. Click
   **New registration**.

4. Enter the application name and select the supported account type as below. Enter the Redirect URI for Web as **[https://oauth.domo.com/api/data/v1/oauth/providers/power-bi-writeback/exchange](https://oauth.domo.com/api/data/v1/oauth/providers/power-bi-writeback/exchange)**.

<Frame>
  <img alt="Redirect_URI.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8t.png?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=6bf288ee607399e9863a86cc4ebe9c71" width="897" height="157" data-path="images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8t.png" />
</Frame>

5. Click
   **Register**. Once the application is registered, you can view the Client ID (application ID), client secret, and tenant ID.

6. Once the application is registered, assign the required API permissions for your application.

7. Click **API Permissions > +Add a permission**.

8. Request API Permissions page will appear displaying the commonly used APIs.

9. Select the API, and add the Delegated and Application permissions.

<Frame>
  <img alt="API_Permissions.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8r.png?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=958642eddfc0fd0605516d9ffd48fe4f" width="885" height="178" data-path="images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8r.png" />
</Frame>

10. Click on
    **Grant admin consent**, then click **Yes** to allow the admin consent for your permissions. The added permissions will appear in the **Configured permissions** section with their details.

11. Now, click on
    **Certificates & Secrets**. Certificates can be used as secrets to prove the application’s identity when requesting a token. Also, can be referred to as public keys.

12. Click on
    **+ New Client Secret** button.

<Frame>
  <img alt="New_Client_Secret.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8w.png?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=f6c0f675e9089eeb6efecff9f64983d9" width="847" height="124" data-path="images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8w.png" />
</Frame>

13. Specify the client secret description and the expiry period for your client secret, and click **Add**.

14. Copy the **value** and paste it into the **Client Secret** field in the Connector credentials section in Domo.

<Frame>
  <img alt="Client_Secret_Value.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8s.png?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=b2a41bb14da5f4f2af3c57cf54c51742" width="847" height="185" data-path="images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8s.png" />
</Frame>

<Note>
  **Note:** Ensure to copy the Value and *not* the Secret ID.
</Note>

### Enabling the 'Allow public client flows'

1. Go to
   [https://portal.azure.com](https://portal.azure.com/ "https://portal.azure.com").

2. Select
   **Azure Active Directory > App registrations**.

3. Find and click on your web app.

4. Click on
   **Authentication**.

5. Enable the following mobile and desktop flows by selecting
   **YES**.

<Frame>
  <img alt="Allow_Public_Client_Flows.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8q.png?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=9cca1e3168df3060d7ec572954008824" width="1503" height="696" data-path="images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8q.png" />
</Frame>

### Granting Admin consent in App registration

1. Go to
   [https://portal.azure.com](https://portal.azure.com/ "https://portal.azure.com").

2. Select
   **Azure Active Directory > App registrations**.

3. Find and click on your web app that you want to enable the admin consent for.

4. Select API permissions.

5. Review the permissions that the application requires. If you agree, select
   **Grant admin consent**.

<Frame>
  <img alt="Grant_Admin_Consent.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/Ngw9EP6XM24-mr0f/images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8u.png?fit=max&auto=format&n=Ngw9EP6XM24-mr0f&q=85&s=66849b7a24a91350db7c56836e072cbc" width="1849" height="616" data-path="images/kb/ka0Vq0000002gb3-00N5w00000Ri7BU-0EM5w000005vO8u.png" />
</Frame>

### REST API limitations

Ensure to check the following list of limitations before using the push datasets APIs:

* 75 max columns
* 75 max tables
* 10,000 max rows per single POST rows request
* 1,000,000 rows added per hour per dataset
* 5 max pending POST rows requests per dataset
* 120 POST rows requests per minute per dataset
* If a table contains 250,000 or more rows, 120 POST rows requests per hour per dataset
* 200,000 max rows  stored per table in FIFO dataset
* 5,000,000 max rows stored per table in 'none retention policy' dataset
* 4,000 characters per value for string column in POST rows operation

## Configuring the Connection

This section enumerates the options in the **Credentials** and **Details** panes in the Power BI Writeback Connector page. The components of the other panes in this page, **Scheduling** and **Name & Describe Your DataSet**, are universal across most Connector types and are discussed in greater length in [Adding a DataSet Using a Connector](https://domo-support.domo.com/s/article/360042926274?language=en_US "Adding a DataSet Using a Connector").

### Credentials Pane

This pane contains fields for entering credentials to connect to your Power BI account. The following table describes what is needed for each field:

<table border="1" cellpadding="1" cellspacing="1" data-aura-rendered-by="33:195;a"><thead><tr><th colspan="1" rowspan="1"><p><span class="s1"> Field </span></p></th><th colspan="1" rowspan="1"><p><span class="s1"> Description </span></p></th></tr></thead><tbody><tr><td colspan="1" rowspan="1"> Azure Application Client ID </td><td colspan="1" rowspan="1"> Enter the client ID (GUID) of the client web app obtained from Azure Active Directory configuration. For more information, see <span> " </span> Obtaining the Azure App Client ID". </td></tr><tr><td colspan="1" rowspan="1"> Azure Application Client Secret </td><td colspan="1" rowspan="1"> Enter the secret key of the client web app. For more information, see "Obtaining the Azure App Client Secret". </td></tr><tr><td colspan="1" rowspan="1"> Azure Tenant ID </td><td colspan="1" rowspan="1"> Enter your Tenant ID. For more information, see <span> " </span> Obtaining the Tenant ID". </td></tr><tr><td colspan="1" rowspan="1"> Username </td><td colspan="1" rowspan="1"> Enter your Azure Active Directory username. </td></tr><tr><td colspan="1" rowspan="1"> Password </td><td colspan="1" rowspan="1"> Enter your Azure Active Directory password. </td></tr></tbody></table>

For more information about obtaining these credentials, see [Prerequisites](#h_04264b0c-3d07-4765-accb-0708e0e6d456 "Prerequisites"), above.

Once you have entered valid Power BI credentials, you can use the same account any time you go to set up a new new Domo-Power BI connection. You can manage connector accounts in the **Accounts** tab in the Data Center. For more information about this tab, see [Manage Connector Accounts](https://domo-support.domo.com/s/article/360042926054?language=en_US "Manage Connector Accounts").

### Details Pane

This pane contains a number of fields for specifying your data and indicating where it's going.

<table border="1" cellpadding="1" cellspacing="1" data-aura-rendered-by="33:195;a"><thead><tr><th colspan="1" rowspan="1"><p> Menu </p></th><th colspan="1" rowspan="1"><p> Description </p></th></tr></thead><tbody><tr><td colspan="1" rowspan="1"><p> Input DataSet ID </p></td><td colspan="1" rowspan="1"><p> Enter the DataSet ID (GUID) for the DataSet you want to copy to Sharepoint Online. You can find the ID by opening the details view for the DataSet in the Data Center and looking at the portion of the URL following data sources/. For example, in the URL <span class="mt-font-courier-new"><a href="https://mycompany.domo.com/datasources/845305d8-da3d-4107-a9d6-13ef3f86d4a4/details/overview" rel="noopener" target="_blank"> [https://mycompany.domo.com/datasources/845305d8-da3d-4107-a9d6-13ef3f86d4a4/details/overview](https://mycompany.domo.com/datasources/845305d8-da3d-4107-a9d6-13ef3f86d4a4/details/overview) </a></span>, the DataSet ID is 845305d8-da3d-4107-a9d6-13ef3f86d4a4. </p></td></tr><tr><td colspan="1" rowspan="1"> Select Group </td><td colspan="1" rowspan="1"> Select the group. This is a mandatory field. <br /> To learn more about Power BI groups, visit Microsoft's documentation refer to <a class="link-https" href="https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-grouping-and-binning" target="_blank" title="https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-grouping-and-binning"> [https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-grouping-and-binning/](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-grouping-and-binning/) </a>. </td></tr><tr><td colspan="1" rowspan="1"> Enter Dataset Name </td><td colspan="1" rowspan="1"> Enter the dataset name. </td></tr><tr><td colspan="1" rowspan="1"> Enter Table Name </td><td colspan="1" rowspan="1"> Enter the table name. </td></tr></tbody></table>

### Other Panes

For information about the remaining sections of the connector interface, including how to configure scheduling, retry, and update options, see [Adding a DataSet Using a Connector](https://domo-support.domo.com/s/article/360042926274?language=en_US "Adding a DataSet Using a Connector").

## Troubleshooting

* Make sure your authentication remains valid.
* Review the configuration to make sure that all required items have been selected.
* Review the Connector history for error messages.
* In rare cases, you may be requesting too much information and reaching API limitations or timeouts. If this is the case, you can review the history of the Connector run to see the error message and duration. If this is the case, you can reduce the number of accounts that are being pulled, choose a smaller number of metrics for the report that you are pulling, or reduce the timeframe that you are trying to pull.
