Forum Discussion

vijith_mar's avatar
vijith_mar
Icon for Helper I rankHelper I
1 day ago

Architectural Advice: D365 load - Cross Region Fabric link Issue

Hi everyone,

We are facing a dilemma due to a shift in our production infrastructure strategy and would love some architectural advice to avoid major rework.

Our Current Setup (Dev/UAT):

• Dataverse / D365 Environment: Located in Europe.

• Fabric Capacity & Workspaces: Located in Europe.

• Status: We have already completed the configuration and development in this environment using the native Link to Microsoft Fabric feature. Everything is working perfectly.

The Production Challenge:

For our Production rollout, leadership wants our main Fabric capacity to reside in the UAE region because Fabric capacity has recently become available there. However, our Production Dataverse environment will remain in Europe.

Because the native Link to Microsoft Fabric strictly requires Dataverse and the Fabric capacity to be in the same Azure geography, we cannot link Prod Dataverse directly to a UAE Fabric workspace. Changing our entire integration approach right now would mean throwing away our completed development and starting over.

To leverage our current work, we are considering this workaround:

1. Create a Staging Workspace in Europe (matching the Dataverse region) using a small/minimal capacity.

2. Establish the native Link to Microsoft Fabric from the Prod Dataverse environment into this European Staging Workspace.

3. In our main UAE Production Workspace, create OneLake Shortcuts pointing back to the tables synced in the European Staging Workspace.

Before we commit to this, we need clarity on a few points:

• Is this the best workaround to preserve our current development effort, or does spanning data across Europe and the UAE via OneLake shortcuts introduce severe bottlenecks?

• Direct Lake & Query Performance: If we build Power BI reports using Direct Lake mode out of the UAE workspace, will the cross-region network latency (Europe to UAE) degrade report loading times for our end-users?

• Licensing Cost Overhead: Does the European staging workspace require a high-tier capacity just to pass data through, or can we run it on a minimal F-SKU (like an F2) just to anchor the Dataverse link?

• Alternative Pipelines: If shortcuts across these specific regions are discouraged, should we bite the bullet and rewrite the backend using a Fabric Data Factory Copy Pipeline to physically move data from Europe to the UAE?

We would appreciate any insights from anyone who has managed a Europe-to-UAE fabric bridge, or from the Microsoft product team on how to handle this gracefully.

Thanks in advance!

3 Replies

  • v-abhinavmu's avatar
    v-abhinavmu
    Icon for Community Support rankCommunity Support

    Hi vijith_mar​,
    Thanks for reaching out to the Microsoft Fabric Community forum.

    Your proposed approach is worth evaluating, particularly if you want to retain the native Dataverse-to-Fabric integration while serving production analytics from a UAE-based Fabric workspace.

    1. European staging workspace with OneLake shortcuts

    Microsoft's Link to Microsoft Fabric documentation specifies that the Dataverse environment and Fabric capacity must be in the same Azure geographical region. The integration creates a lakehouse and shortcuts for the selected Dataverse tables.

    OneLake shortcuts can reference data across Fabric workspaces without creating another copy. This makes the proposed staging approach worth testing. However, Microsoft's documentation does not establish the performance characteristics of this specific Europe-to-UAE architecture, so validate it with representative data volumes and workloads before adopting it for production.


    2. Direct Lake performance

    Direct Lake semantic models can read supported Delta tables through OneLake shortcuts. Direct Lake is designed for high-performance analytics, but actual performance depends on factors including Delta table optimization, capacity resources, and the workload.
    I recommend testing report responsiveness and query performance with the proposed cross-region setup rather than assuming that performance will be unaffected.

    3. Is F2 capacity sufficient?

    An F2 capacity provides 2 Capacity Units (CUs). However, the appropriate SKU depends on the workload, and the documentation does not establish that F2 is sufficient for every Dataverse synchronization scenario.
    Use the Fabric Capacity Metrics app to monitor utilization during representative synchronization and reporting workloads, then adjust the capacity based on the observed demand.

    4. Alternative: Copy the data to the UAE

    If keeping production data physically within the UAE is a priority, consider using a Fabric Data Factory pipeline to copy the required data from the European staging lakehouse to a UAE lakehouse.
    Copy activity supports moving data between data stores and provides settings to configure and optimize copy operations. This approach would also require you to manage pipeline execution, refresh frequency, data freshness, and the associated compute and storage requirements.
    Recommendation

    I would compare the two approaches in a proof of concept:
    •    OneLake shortcuts: Evaluate the simplicity of accessing the European data from the UAE workspace without creating another data copy.
    •    Physical data copy: Evaluate whether maintaining a separate UAE copy better meets your data residency, freshness, and performance requirements.

    Measure report performance, synchronization or pipeline duration, and capacity utilization before selecting the production architecture. This will help determine whether the shortcut approach meets your requirements or whether physically copying the data to the UAE is more appropriate.

    For more details, please refer to the below Official Microsoft documentation :

    •  Configure your environment and link to Microsoft Fabric - Power Apps | Microsoft Learn
    •  Unify Data Sources With OneLake Shortcuts - Microsoft Fabric | Microsoft Learn
    •  Direct Lake overview - Microsoft Fabric | Microsoft Learn
    •  Plan your capacity size - Microsoft Fabric | Microsoft Learn
    •  How to copy data using copy activity - Microsoft Fabric | Microsoft Learn

    I hope this helps. Please feel free to reach out if you have any further questions.
    Thank you.

  • What about loading D365 data to fabric using API? Can we get exact same tables using this aproach?what is your opinion on this?

  • jubinsoni's avatar
    jubinsoni
    Icon for Continued Contributor rankContinued Contributor

    Hi vijith_mar​,

    Your staging-workspace idea is a sound way to keep the Fabric Link work. I'd change one thing: don't let reports read across regions through the shortcuts. Use the shortcuts as the Bronze entry point, and materialize Silver/Gold in the UAE so everything users touch is local.

    Europe (small F SKU)                  UAE (main capacity)
    Dataverse -> Link to Fabric            Bronze lakehouse: shortcuts -> EU Fabric Link tables
      (staging workspace)                     |  notebooks / pipelines read via shortcut (cross-region, batch)
                                              v
                                           Silver / Gold lakehouse (physical Delta tables in UAE)
                                              v
                                           Direct Lake semantic models + reports (all local)

    Why this split matters for your questions:

    Direct Lake on cross-region shortcuts
      -> column data is pulled across regions when the model loads/pages it in
         (after refresh/framing and on cold queries), so first-load latency is what users feel
      -> on UAE-local Gold tables that cost disappears
    cross-region reads happen once per load, in your notebooks, on a schedule you control
      -> instead of on every report open
    the EU staging capacity only anchors the link
      -> compute for the Silver/Gold notebooks runs on the UAE capacity reading the shortcuts,
         so a small SKU in Europe is generally enough (validate with Capacity Metrics)

    A minimal incremental copy from the shortcut into UAE Silver (using SinkModifiedOn from Fabric Link):

    from delta.tables import DeltaTable
    from pyspark.sql import functions as F
    
    src = spark.read.table("bronze_eu.account")                      # shortcut to EU table
    last = (spark.read.table("silver.account").agg(F.max("SinkModifiedOn")).first()[0]
            if spark.catalog.tableExists("silver.account") else None)
    inc = src if last is None else src.filter(F.col("SinkModifiedOn") > last)
    
    (DeltaTable.forName(spark, "silver.account").alias("t")
       .merge(inc.alias("s"), "t.Id = s.Id")
       .whenMatchedUpdateAll().whenNotMatchedInsertAll().execute())

    Two non-technical checks before committing: data residency (copying EU Dataverse data into UAE storage may need sign-off from legal/compliance), and cross-region data transfer costs, which grow with how often you read through the shortcut. That's another reason to read incrementally on a schedule rather than at query time.

    So my overall approach would be:

    keep EU staging workspace + Fabric Link (small SKU)
    -> UAE Bronze = shortcuts, read incrementally by notebooks
    -> UAE Silver/Gold as physical Delta -> Direct Lake on local tables
    -> confirm residency + transfer cost before go-live

    AI-assisted drafting: AI was used to help structure and phrase this response. I reviewed and validated the technical content before posting.