# Microsoft Fabric Destination


<blockquote class="announcement">
  <div class="tip-quote">
    
    <div class="tip-text"><p>The <strong>Microsoft Fabric</strong> destination is in <strong>Private Beta</strong>, where we work with early users and customers to test new features and get feedback before making them generally available.</p>
<p>Reach out to <a href="mailto:support@rudderstack.com" >Customer Success</a> if you&rsquo;re interested in enabling this destination for your workspace.</p>
</div>
  </div>
</blockquote>

<p><a href="https://learn.microsoft.com/en-us/fabric/fundamentals" >Microsoft Fabric</a> is an analytics platform that provides data engineering, data warehousing, and business intelligence capabilities.</p>
<ul>
<li>See the <a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/warehouse-schema/" >Warehouse Schema</a> guide for more information on how events are mapped to tables in Microsoft Fabric.</li>
<li>Find the open source code for this destination in the <a href="https://github.com/rudderlabs/rudder-server/tree/main/warehouse/integrations/microsoft-fabric" >GitHub repository</a>.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="set-up-access-in-microsoft-fabric">Set up access in Microsoft Fabric</h2><p>Follow the steps in this section to set up access in Microsoft Fabric.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="1-create-a-warehouse-and-staging-lakehouse">1. Create a warehouse and staging lakehouse</h3><ol>
<li><a href="https://learn.microsoft.com/en-us/fabric/data-warehouse/tutorial-create-warehouse" >Create a Warehouse</a></li>
<li><a href="https://learn.microsoft.com/en-us/fabric/data-engineering/create-lakehouse" >Create a lakehouse</a> in the same region</li>
</ol>
<p>RudderStack stages data in the Lakehouse on <a href="https://learn.microsoft.com/en-us/fabric/onelake" >OneLake</a> before loading it into the warehouse.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="2-register-a-microsoft-entra-app">2. Register a Microsoft Entra app</h3><ol>
<li><a href="https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app" >Register an application in Microsoft Entra ID</a> to create the service principal.</li>
<li>Record the <strong>Tenant ID</strong> and <strong>Client ID</strong>.</li>
<li><a href="https://learn.microsoft.com/en-us/entra/identity-platform/how-to-add-credentials" >Add a client secret</a> and record it.</li>
</ol>

<blockquote class="warning">
  <div class="tip-quote">
    
    <div class="tip-text">Copy the client secret&rsquo;s <strong>Value</strong>, not its Secret ID. You can&rsquo;t retrieve the Value after leaving the client secret page.</div>
  </div>
</blockquote>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="3-enable-service-principal-access-to-fabric-apis">3. Enable service principal access to Fabric APIs</h3><p>Ask your Fabric administrator to enable the tenant admin setting <a href="https://learn.microsoft.com/en-us/fabric/admin/service-admin-portal-developer#service-principals-can-use-fabric-apis" >Service principals can use Fabric APIs</a>.</p>
<p>If the setting applies only to specific security groups, add the app to an allowed group. This tenant-level setting often requires a different administrator than the person configuring RudderStack.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="4-assign-role-to-the-service-principal">4. Assign role to the service principal</h3><p>Assign the service principal the <strong>Contributor workspace role</strong> or higher.</p>
<p>Follow <a href="https://learn.microsoft.com/en-us/fabric/fundamentals/give-access-workspaces" >Give users access to workspaces</a> and assign the app to each workspace containing the warehouse or staging lakehouse.</p>
<p><strong>Contributor</strong> is the minimum supported role described in <a href="https://learn.microsoft.com/en-us/fabric/fundamentals/roles-workspaces" >Roles in workspaces</a> — Admin, Member, and Contributor roles are also sufficient.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h4 id="important-considerations">Important considerations</h4><p>Service principals can hold workspace roles and inherit the same permissions as users for Fabric API operations. Contributor grants <code>CONTROL</code> on each warehouse and SQL analytics endpoint, providing full read/write access, as described in <a href="https://learn.microsoft.com/en-us/fabric/data-warehouse/workspace-roles" >Workspace roles in Fabric Data Warehouse</a>.</p>
<p>Admin, Member, and Contributor can perform full CRUD operations on Lakehouse data, as described in <a href="https://learn.microsoft.com/en-us/fabric/data-engineering/workspace-roles-lakehouse" >Workspace roles in Lakehouse</a>. The lower Viewer role grants only <code>CONNECT</code> and <code>ReadData</code>, so it can&rsquo;t write data or run DDL statements. The workspace role therefore covers the Fabric REST API, OneLake, and SQL endpoint access required for the items in that workspace.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="5-let-rudderstack-create-and-maintain-the-schema">5. Let RudderStack create and maintain the schema</h3><p>RudderStack creates the namespace schema if it doesn&rsquo;t exist, creates tables, and alters them as the event schema evolves. You don&rsquo;t need to create the schema before configuring the destination.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="configure-microsoft-fabric-in-rudderstack">Configure Microsoft Fabric in RudderStack</h2><p>In the RudderStack dashboard, add <strong>Microsoft Fabric</strong> as a destination, give it a name, and connect it to your source. Configure the following settings.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="connection-settings">Connection settings</h3><table>
  <thead>
      <tr>
          <th>Setting</th>
          <th><div>Description</div></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Microsoft Fabric account</td>
          <td>Create or select a <strong>Service Principal</strong> account. This is the only supported authentication type. Enter the Tenant ID, Client ID, and Client Secret Value collected during access setup. See <a href="https://learn.microsoft.com/en-us/fabric/data-warehouse/entra-id-authentication" >Microsoft Entra authentication in Fabric Data Warehouse</a> for more information.</td>
      </tr>
      <tr>
          <td>Host</td>
          <td><a href="https://learn.microsoft.com/en-us/fabric/data-warehouse/how-to-connect" >Find the SQL connection string</a> in the warehouse settings in Fabric. It must end in <code>.fabric.microsoft.com</code>, for example, <code>abc123.datawarehouse.fabric.microsoft.com</code>.</td>
      </tr>
      <tr>
          <td>Warehouse name</td>
          <td>Enter the name of the Fabric warehouse where you want to load data.</td>
      </tr>
      <tr>
          <td>Workspace</td>
          <td>Select the workspace containing your staging Lakehouse. RudderStack populates this dropdown through the Fabric API. It remains empty until you complete the access setup above.</td>
      </tr>
      <tr>
          <td>Lakehouse</td>
          <td>Select the staging Lakehouse, which must be in the same region as your warehouse. RudderStack populates this dropdown through the Fabric API. It remains empty until you complete the access setup above.</td>
      </tr>
      <tr>
          <td>Namespace</td>
          <td>Enter the schema where RudderStack creates tables. <br /><br />
<blockquote class="warning">
  <div class="tip-quote">
    
    <div class="tip-text">You cannot change the <strong>Namespace</strong> after creating the destination.</div>
  </div>
</blockquote></td>
      </tr>
  </tbody>
</table>
<p>Note that:</p>
<ul>
<li>Microsoft Fabric supports <a href="https://www.rudderstack.com/docs/destinations/rudderstack-connection-modes/" >cloud mode</a> only for all source types.</li>
<li>Microsoft Fabric&rsquo;s default collation is case-sensitive, so identifiers retain their original case. Use the same capitalization when querying schemas, tables, and columns.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="sync-settings">Sync settings</h3><table>
  <thead>
      <tr>
          <th>Setting</th>
          <th><div>Description</div></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Sync frequency</td>
          <td>Select how often to sync data. The default is <strong>Every 3 hours</strong>. The 5-, 10-, and 15-minute options are not enabled by default. Contact <a href="mailto:support@rudderstack.com" >Customer Success</a> to request access.</td>
      </tr>
      <tr>
          <td>Sync starting at (Optional)</td>
          <td>Specify the time of day in UTC when the sync schedule starts.</td>
      </tr>
      <tr>
          <td>Exclude window (Optional)</td>
          <td>Specify a time range in UTC when RudderStack doesn&rsquo;t sync data.</td>
      </tr>
  </tbody>
</table>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="load-behavior">Load behavior</h3><table>
  <thead>
      <tr>
          <th>Setting</th>
          <th>Default</th>
          <th><div>Description</div></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Warehouse append</td>
          <td>On</td>
          <td>Disable this setting to use merge operations. Merging avoids duplicate rows but can increase warehouse operation time.</td>
      </tr>
      <tr>
          <td>Skip Users table</td>
          <td>On</td>
          <td>Sends <code>identify</code> events to the <a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/warehouse-schema/#schema" ><code>identifies</code></a> table without creating or updating the <a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/warehouse-schema/#schema" ><code>users</code></a> table. Disable it to load both tables.</td>
      </tr>
      <tr>
          <td>Skip Tracks table</td>
          <td>Off</td>
          <td>Enable this setting to skip sending event data to the <a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/warehouse-schema/#schema" ><code>tracks</code></a> table.</td>
      </tr>
      <tr>
          <td>Clean up staged files after successful sync</td>
          <td>On</td>
          <td>Deletes staged OneLake files after a successful sync.</td>
      </tr>
  </tbody>
</table>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="ips-to-allowlist">IPs to allowlist</h2>

<p>To enable network access to RudderStack, allowlist the following RudderStack IPs depending on your region and <a href="https://www.rudderstack.com/pricing" >RudderStack plan</a>:</p>
<table>
      <tr>
        <th>Plan</th>
        <th colspan="3"><center>Region</center></th>
      </tr>
      <tr>
        <td></td>
        <td><b><center>US</center></b></td>
        <td><b><center>EU</center></b></td>
        <td><b><center>IN</center></b></td>
      </tr>
      <tr>
        <td>Free and Growth</td>
        <td><ul><li>3.216.35.97</li><li>18.214.35.254</li><li>23.20.96.9</li><li>34.198.90.241</li><li>34.211.241.254</li><li>52.38.160.231</li><li>54.147.40.62</li></ul></td>
        <td><ul><li>3.123.104.182</li><li>3.125.132.33</li><li>18.198.90.215</li><li>18.196.167.201</li></ul></td>
        <td><center>Not applicable</center></td>
      </tr>
      <tr>
        <td>Enterprise</td>
        <td><ul><li>3.216.35.97</li><li>34.198.90.241</li><li>44.236.60.231</li><li>54.147.40.62</li><li>100.20.239.77</li></ul></td>
        <td><ul><li>3.66.99.198</li><li>3.64.201.167</li><li>3.123.104.182</li><li>3.125.132.33</li></ul></td>
        <td><ul><li>3.7.235.227</li><li>13.200.113.188</li><li>35.154.198.69</li><li>3.6.122.214</li></ul></td>
      </tr>
</table>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text"><p>All the outbound traffic is routed through these RudderStack IPs.</p>
<p>Rudder Lookout connects to your warehouse from three of the US addresses: <code>3.216.35.97</code>, <code>34.198.90.241</code>, and <code>54.147.40.62</code>. Lookout uses these addresses for workspaces in every region. If you use Lookout with an EU or IN workspace, allow them too. See <a href="https://www.rudderstack.com/docs/activate/lookout/integrations/warehouses/#allow-lookout-to-reach-your-warehouse" >Allow Lookout to reach your warehouse</a>.</p>
</div>
  </div>
</blockquote>

</html>

<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="consent-settings">Consent settings</h3><table>
  <thead>
      <tr>
          <th>Setting</th>
          <th><div>Description</div></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Consent management settings</td>
          <td>Configure the consent management settings for the specified source by choosing the <strong>Consent management provider</strong> from the dropdown and entering the relevant consent category IDs. <br /><br />See <a href="https://www.rudderstack.com/docs/data-governance/consent-management/" >Consent Management in RudderStack</a> for more information on this feature.</td>
      </tr>
  </tbody>
</table>

