What it does
Customer Insights - Data either keeps your imported data, unified profiles and segment output in Microsoft-managed storage that comes with the licence, or writes it to an Azure Data Lake Storage Gen2 account you own and pay for. Separately, it can read Delta tables directly out of Microsoft Fabric OneLake, which puts the source-side compute and storage on your Fabric bill rather than the Customer Insights one.
Key facts
- Bring-your-own storage means you pay all the storage costs. Microsoft states this plainly on the page — it is not bundled back into the Customer Insights entitlement.
- The storage account cannot be changed after environment creation. Get it right at setup or rebuild the environment.
- The storage account must be in the same Azure region as the Customer Insights environment. Where you are attaching to an existing Dataverse organisation, all the environments have to sit in the same region.
- Hierarchical namespace must be enabled on the account, and the configuring admin needs Storage Blob Data Contributor or Storage Blob Data Owner on the account or on the
customerinsightscontainer. - One Dataverse organisation maps to one Azure storage account. There is no sharing an account across orgs.
- Automatic Dynamics 365 linking is not supported with bring-your-own storage. If you need it, stay on Customer Insights storage.
- Data sharing with Dataverse from your own lake is preview and needs real setup: reader and contributor security groups created by a tenant admin, then the
CreateSecurityGroups.ps1andByolSetup.ps1scripts from Microsoft's GitHub repo, whose output string you paste in during environment creation. Storage Blob Data Reader is the minimum for the sharing path. - Data sharing does not work if the storage account sits behind a firewall. Private Link is available for the ingestion path but the Dataverse sharing case is called out separately.
- The Fabric OneLake connector is generally available. It reads Delta tables from a Fabric workspace without copying to a staging area, and supports shortcuts to Delta tables outside the target workspace.
- OneLake prerequisites are administrative, not licensing: external access to OneLake enabled by a Fabric admin, service principals allowed to call Fabric APIs, and the Dynamics 365 AI for Customer Insights service principal added to the workspace as at least Contributor. The workspace must be in the same Microsoft Entra tenant.
- Microsoft does not publish a required Fabric capacity SKU for this. The reads land against whatever capacity your lakehouse already runs on, and that cost is yours.
- Fabric limits worth knowing before you promise anything: one OneLake data source per workspace, Delta format only (no CSV, no plain Parquet), no Fabric Data Warehouse tables, and no Delta features needing
minReaderVersionabove 2. The upgrade path for existing Azure Data Lake Delta table data sources is due by October 2026.
When to use / skip
Default to Customer Insights storage. It is included, needs no configuration, and keeps the automatic Dynamics 365 linking that clients quietly rely on. Most projects that reach for their own lake do it out of habit rather than requirement.
Take your own storage when there is a real data-residency, retention or downstream-access requirement — a platform team that needs unified profile output in the same lake as everything else, or a compliance position that rules out Microsoft-managed. Be honest that you are trading a free managed store for an Azure bill and a one-way decision.
Fabric OneLake is a different question: it is about where source data lives, not where output goes. If the client already has a lakehouse, reading it directly beats an export-and-reingest pipeline.
Configuration decisions
- Microsoft-managed storage or your own Gen2 account, decided at environment creation and not revisited.
- If your own: which subscription and resource group, and whether to authenticate by Azure subscription selection or by account key.
- Whether Dataverse data sharing is in scope, since that pulls in security groups, PowerShell setup and a tenant admin, and is still preview.
- Region alignment across the Customer Insights environment, the storage account and any existing Dataverse organisation — one decision covering three things.
- Whether the storage account will sit behind a firewall, and if so whether Private Link covers every path you need.
- For Fabric sources, who owns the workspace, who grants the service principal Contributor, and which team's capacity absorbs the read load.
Gotchas
- The storage account choice is permanent. People assume it is a connection string they can repoint later; it is not, and the recovery is a new environment plus a configuration copy.
- Losing automatic Dynamics 365 linking is the surprise that hurts most on bring-your-own projects, because it usually surfaces after unification is built.
- The storage bill lands on a different team's Azure subscription from the one that bought the Customer Insights licence. Flag it during design or someone gets an unpleasant month-end.
- Firewalled storage plus Dataverse sharing is a combination that simply does not work. Deciding on the firewall first and the sharing second is the wrong order.
- Fabric Delta log retention has to outlast your refresh cadence. If
delta.logRetentionDurationanddelta.deletedFileRetentionDurationare shorter than the gap between runs, refreshes fail and the cause is not obvious from the Customer Insights side. - Schema changes on Fabric Delta tables generally break the refresh. A lakehouse team that ships column changes freely will break your data source without knowing.
Consultant notes
- Ask early who pays for Azure. If the answer is "a different budget", raise bring-your-own storage as a cost conversation before it is a technical one.
- Demo the Data storage step of environment creation with the client's platform team in the room. It is a two-minute screen that settles a fortnight of debate.
- Push back on bring-your-own storage requested for tidiness alone. Make someone name the requirement; if they cannot, take the managed store and the linking that comes with it.
- Before go-live on a Fabric source, agree a change-notification arrangement with whoever owns the lakehouse. Schema drift is the failure mode you will spend the most time on.
- Check the storage account region against the environment region during build, not at the end. It is quick to verify and expensive to discover late.
Worth another look when the Azure Data Lake to Fabric OneLake data source upgrade path lands, or if Dataverse data sharing from your own lake goes GA.