toast-icon ×

Microsoft Fabric Migration with Row-Level Security for Multi-Client Analytics

Overview

Our client, a B2B financial wellness and HR technology company, where we have worked on their data that delivers reporting to multiple business customers, partnered with NeenOpal to consolidate a fragmented reporting stack into a single, secure analytics platform. The client's finance and user-engagement data lived across MongoDB, AWS RDS, Google Sheets, and HubSpot, and was surfaced through standalone Power BI dashboards built on AWS. Serving each downstream client meant securely embedding a per-user filtered dashboard for external users logging into the client's portal, and app-owns-data embedding at that scale requires dedicated capacity. On shared, standalone Power BI the team had worked around this by building and maintaining a separate dashboard and semantic model for every client, which increased infrastructure cost and slowed delivery. NeenOpal designed and delivered a four-week Microsoft Fabric migration that unified every source into one governed semantic model with dynamic row-level security. By rebuilding the pipeline on a medallion architecture inside a Fabric Lakehouse and enforcing access with a single Power BI security role, the client replaced many duplicate dashboards with one unified report that automatically shows each user only the data they are permitted to see.

4

Weeks End-to-End Fabric Migration

1

Semantic Model Powering Every Client

100%

Role-Based Access Enforced by RLS

Customer Challenges

The client's reporting environment had grown organically across several platforms, and the need to securely embed per-user filtered dashboards for external portal users created a cascade of operational and cost problems that a Microsoft Fabric migration, with its dedicated capacity, was well positioned to solve.

Fragmented Multi-Source Data Stack

The client's data was spread across MongoDB, AWS RDS, Google Sheets, and HubSpot, and was moved into reporting using AWS Glue, S3, and a Power BI Gateway running on an EC2 instance. This fintech data captured finance activity and end-user engagement, but combining it reliably for each customer required significant manual pipeline effort.

Secure External Embedding Required Dedicated Capacity

The client needed to embed a single, per-user filtered dashboard for external users logging into their portal. This app-owns-data embedding requires dedicated capacity to run securely and at scale, which shared, standalone Power BI was not provisioned to deliver, so serving each client from one governed report was not viable on the existing setup.

Duplicate Dashboards for Every Client

To work around the missing security layer, the team maintained a separate dashboard for each downstream client. This duplication multiplied development and maintenance work, introduced version drift between reports, and made even small changes slow to roll out across the estate.

Rising Infrastructure and Licensing Cost

Running multiple semantic models across standalone Power BI, alongside a growing AWS RDS footprint, pushed infrastructure and licensing costs steadily higher. The client wanted a single reporting layer that removed this duplication without disturbing the AWS pipelines already in production.

Multi_Cloud ETL & BI Platform

Solutions

NeenOpal delivered the migration as a layered, cloud-native build on Microsoft Fabric, reusing the client's existing AWS raw data while adding a governed transformation, modeling, and security layer on top. Every workstream was designed to consolidate reporting without disrupting the pipelines already running in production.

01.

S3 Shortcut into the Fabric Lakehouse

NeenOpal used a Fabric S3 shortcut to access the client's existing raw data directly from the AWS S3 bucket, landing it as the bronze layer inside a Fabric Lakehouse. This approach reused the stable AWS raw layer as the single ingestion point and avoided duplicating storage during the Microsoft Fabric migration.

02.

Notebook-Driven Medallion Transformation

Using scheduled Fabric notebooks, the team transformed the bronze data into a cleansed silver layer and then into a reporting-ready gold layer. This medallion architecture standardized the data for analytics and preserved historical versions, so the client could quickly return to an earlier state of the data when needed.

03.

Single Semantic Model and Reporting Layer

On top of the gold layer, NeenOpal built one centralized semantic model that powered every Power BI report inside Fabric. Consolidating the previous multiple semantic models into a single reporting layer removed duplication and established a genuine single source of truth for all downstream clients.

04.

Dynamic Row-Level Security with DAX

The client supplied a mapping table linking each user email to the domains they were allowed to see. NeenOpal structured the model around a central client table containing every domain name, related outward to the rest of the model so a single filter could propagate across all tables. Because the mapping table contained duplicate rows where many users mapped to one domain, a standard one-to-many relationship was not possible. The team solved this inside the security role by writing DAX that filtered the central client table directly using the logged-in user principal name, rather than relying on a physical relationship, which delivered accurate dynamic row-level security without restructuring the model.

05.

Service Principal Authentication and Embedding

For secure, automated authentication, NeenOpal configured a service principal in the Fabric connections and gateways page and granted it the required workspace and semantic model permissions. The service principal generated the embed token and passed each logged-in user's email as the effective identity, which is how Fabric evaluated and enforced the row-level security role at query time.

06.

Edge-Case Handling and Pipeline Continuity

During client testing, email addresses containing a plus symbol failed to resolve correctly, so the team adjusted the URL encoding logic to handle those identities reliably. Throughout the engagement, NeenOpal ensured the client's existing AWS data pipelines remained stable and undisturbed while the new Fabric reporting layer and requirement changes were introduced in parallel.

Consolidate Every Client Dashboard with Fabric

Get in touch

Services

Amazon EC2

Amazon EC2

Amazon S3

Amazon S3

AWS Glue

AWS Glue

Amazon RDS

Amazon RDS

Power BI

Power BI

Microsoft Fabric

Microsoft Fabric

HubSpot

HubSpot

Benefits

Single Dashboard for Every Client

The client replaced a fleet of duplicate reports with one unified dashboard that filters itself by the logged-in user's email. Reporting became faster to deliver and maintain, because a single change now propagates everywhere instead of being reworked across many separate dashboards.

Automated, Secure Role-Based Access

Dynamic row-level security now ensures every user sees only the data tied to their permitted domains. This governed access model removed the manual workarounds the client previously depended on and hardened the security posture of their shared analytics.

Historical Data Access and Fast Rollback

The medallion architecture inside Fabric preserved historical versions of the data across the bronze, silver, and gold layers. The team could quickly return to a previous state of the data, which improved auditability and reduced the risk associated with transformations.

Lower Infrastructure and Licensing Cost

Consolidating multiple semantic models and dashboards into a single reporting layer, while retiring redundant reporting infrastructure, reduced the client's ongoing AWS RDS and Power BI costs. The single-model approach delivered the same coverage with materially less to run and maintain.

Scalable Single Source of Truth

With one semantic model governed by row-level security, the client gained a scalable foundation that grows with their customer base without adding new dashboards. The platform is now positioned to onboard additional clients and data sources with minimal incremental effort.

Conclusion

With NeenOpal's support, the client transformed a fragmented, duplication-heavy reporting setup into a single governed analytics platform on Microsoft Fabric. By migrating raw data through an S3 shortcut into a medallion architecture, consolidating everything onto one semantic model, and enforcing dynamic row-level security through DAX and a service principal, NeenOpal delivered faster reporting, stronger security, and lower cost in a four-week engagement. The result is a scalable single source of truth that serves every client from one secure dashboard and provides a foundation for future growth.

FAQ

Common questions about this Microsoft Fabric migration and Power BI row-level security

What is a Microsoft Fabric migration and why move from standalone Power BI?

Fabric provides that capacity, and pairs it with a medallion architecture for historical data and a single semantic model with dynamic row-level security. Together, RLS and app-owns-data embedding let one governed dashboard serve every external user, which eliminates the need to maintain a separate dashboard per client rather than deleting anything automatically.

How does row-level security work in Microsoft Fabric?

Row-level security in Microsoft Fabric restricts the rows each user can see within a single shared report. In this project, a central client table was filtered by the logged-in user principal name using DAX inside a security role, and a service principal passed each user's email as the effective identity to enforce the correct filter at query time. This let one dashboard automatically show every user only the data mapped to their permitted domains.

Why use a medallion architecture and a single semantic model?

A medallion architecture organizes data into bronze, silver, and gold layers, which standardizes transformations, preserves historical versions, and simplifies rollback to earlier data states. Pairing it with a single semantic model creates one governed source of truth, which removes the cost and maintenance overhead of running multiple models and duplicate dashboards.

Authors

Author Image
Shubham Keshwani Senior Associate Consultant
Author Image
Hashim Ilyas SEO Specialist

Contact Us

We’d love to hear from you.

Lets discuss how we can transform your business with AI. Talk to our AI expert team. Lets do AI journey together.

Name
Email
Company