10 Decisions to Make Before You Create A Fabric Workspace

Microsoft FabricMicrosoft TechnologiesPower BI

Creating a Fabric workspace takes about 30 seconds. Restructuring workspaces after people have built content in them takes a lot longer. Moving content to another workspace usually means redeploying or recreating it, and anything bound to the old item IDs has to be rebound: reports connected to a semantic model, a notebook’s default lakehouse, pipeline activities, and shortcuts. Item-level shares, app content, and links people saved don’t carry over either.

Most of that rework is avoidable if you make a handful of design decisions before anyone starts building. None of these decisions has a single right answer. The right choice depends on your organization’s size, skills, security requirements, and how much self-service you want to support. But I’d much rather see them made deliberately, before the first workspace exists, than left at the defaults and discovered later. For each decision, I’ll cover the options, what should drive the choice, and the platform constraints that narrow it down.

The Fabric Workspace settings pane for a workspace named DataEng1. The left menu lists General, Workspace type, Azure connections, System storage, Git integration, Workspace identity, Outbound networking, Inbound networking, Encryption, and Monitoring, followed by collapsible sections for Power BI, Delegated Settings, OneLake, Databases, and Data Engineering/Science. The General page is open, showing the workspace image, name, description, and a Domain dropdown noting that each workspace can be assigned to one domain.
Workspace settings in Fabric. Git integration, workspace identity, networking, and domain assignment are all configured here, once per workspace.

1. Capacity and region

I put region first because it’s one of the hardest decisions to undo. Workspaces with non-movable Fabric items can’t be reassigned to a capacity in another region until those items are removed. You also can’t change the region of an existing capacity; you create a new capacity and move workspaces to it. If you enable tenant-level Private Link, the first Spark job or Lakehouse table operation in a workspace allocates a managed virtual network, and from then on that workspace can’t move to a capacity in another region at all. See decision 2 for more on Private Link.

What should drive the choice

  • Where your source data lives, and whether any integration requires region matching
  • Data residency requirements
  • Your tenant’s home region, and whether you’ll need a capacity outside it
  • Any requirements to isolate workloads, costs, or departments

Platform constraints

2. Network security posture

Some network controls change what your entire tenant can do, so this is one to settle before anyone builds anything. Inbound protection can be applied at the tenant level or the workspace level, and outbound connectivity to private resources is its own set of choices.

Options

  • Tenant-level inbound protection: Private Link and Block Public Internet Access
  • Workspace-level inbound protection: workspace Private Link and workspace IP firewall rules
  • Identity-based controls instead of network controls: Conditional Access policies requiring MFA, compliant devices, or named locations
  • Outbound access to private sources: managed private endpoints (which provision a managed virtual network), gateways, or trusted workspace access

What should drive the choice

  • What you’re actually protecting against: unauthorized access, data exfiltration, or a hard requirement that data never crosses the public internet. Only the last one requires Private Link.
  • Whether the restriction is needed for the whole tenant or only for specific workspaces
  • Which Fabric features your users need

Platform constraints

3. Who builds and owns content

Who builds and maintains content affects how many workspaces you need and who administers them, so it’s worth deciding before you design the workspace structure.

Options

  • Centralized: a central data or BI team builds everything
  • Self-service: departments build and maintain their own content
  • Hybrid: a central team owns shared data and models, and departments build on top of them

If you allow self-service, define what it includes. Supporting departments that build reports on centrally managed semantic models is very different from supporting departments that build their own lakehouses and pipelines.

What should drive the choice

  • Skill levels outside the central team
  • How much support the central team can provide
  • Governance maturity: whether you have standards, reviews, and monitoring in place to support self-service at scale

Platform constraints

4. How to split workspaces

A workspace is the boundary for a lot of settings at once. So when you decide how to divide content into workspaces, you’re really deciding on security, deployment, and cost boundaries.

Options

  • By subject area or data product
  • By department or business unit
  • By layer or function, such as separating data engineering items from reporting items
  • A combination, such as department plus layer

Whichever split you choose, environments multiply it. Each dev, test, and prod stage is usually its own workspace, so decide the split and the environment count together. See decision 5 for more on environments.

What should drive the choice

  • Who needs access to what. Workspace roles apply to every item in the workspace.
  • What gets deployed together. Content that’s released on a different schedule or by a different team usually belongs in a different workspace.
  • Which capacity the content should run on, for cost allocation or workload isolation
  • How many workspaces your team can realistically administer

Platform constraints

Each of these is set per workspace, not per item:

  • Capacity assignment
  • Git connection
  • Deployment pipeline stage
  • Domain assignment
  • Workspace identity
  • Workspace-level network settings
  • Org app (an org app contains content from a single workspace)

5. Environments

In Fabric, an environment is usually a separate workspace, so the number of environments you choose directly affects how many workspaces you create and manage.

Things to decide

  • Your standard number of stages, such as two (dev and prod), three (dev, test, and prod), or more
  • Whether each prod workspace gets its own dev workspace, or several prod workspaces share one dev workspace
  • Which workspaces need the full set of environments. Self-service workspaces might need only one or two, and experiments or proofs of concept can either start with multiple environments or get them once they’re headed to production.

What should drive the choice

  • Whether you have people who will actually test in a test stage
  • The deployment tool you choose. See decision 6 for deployment options.
  • Workspace count. Every environment multiplies the number of workspaces to secure and administer.

Platform constraints

6. Source control and deployment

I recommend deciding how content moves between environments before developers start building. Retrofitting source control means reconciling existing items with a repo and reworking anything that hard-codes environment-specific values, such as workspace and lakehouse IDs.

Things to decide

  • Git provider: Azure DevOps or GitHub
  • Deployment tool: Fabric deployment pipelines, Git-based deployment with a tool like fabric-cicd, custom automation that calls the Fabric REST APIs (such as GitHub Actions or notebooks), or a combination
  • Branching: a branch per environment, or a single main branch deployed to each environment
  • Authentication for the Git connection, including whether it depends on an individual user’s credentials

What should drive the choice

  • Which item types you’ll build. Not every item type supports Git integration or deployment pipelines.
  • Whether your team already works in pull requests and build pipelines
  • How you’ll handle values that differ per environment (connections, lakehouse bindings, parameters)

Platform constraints

7. Naming conventions

Naming conventions are easiest to agree on before the first item is created. Once other items, connections, code, and reports reference an item, renaming it is tedious and error-prone.

Things to decide

  • Workspace names: whether they include department, subject, environment, or ownership type
  • Item names: whether to use type prefixes, which casing, and which separator
  • Data store objects: schema and table naming, including how medallion layers show up (if you use them)
  • Business-facing names: whether semantic model tables and columns use technical names or friendly names with spaces
  • Capacities, connections, and gateways, which admins see more than end users do

What should drive the choice

  • Who reads the name. End users browsing the OneLake catalog need different names than engineers writing code.
  • Consistency with standards you already use in Azure or SQL Server
  • What sorts and filters well in the workspace list and the OneLake catalog

Platform constraints

8. Domains

Domains are where some tenant-level governance settings can be delegated to the business. Discoverability in the OneLake catalog is helpful, but delegation is the bigger reason to think carefully about what your domains represent and who administers them.

Options

  • Domains by department or business unit
  • Domains by subject area or data product
  • A domain for shared, company-wide content alongside department domains
  • No domains yet, if you don’t need delegated governance or catalog filtering

What should drive the choice

  • Whether different parts of the business need different governance settings
  • Who should be a domain admin. Ideally, it’s someone who knows the data and the rules that apply to it.
  • Which workspace admins should be allowed to assign their workspaces to a domain (domain contributors)

Platform constraints

  • Settings that can be delegated to domain admins include a domain-level default sensitivity label and certification settings: whether certification is enabled, who the certifiers are, and the documentation URL.
  • Domain assignment doesn’t affect access. Permissions still come from workspace roles and item permissions.
  • A default domain can automatically assign new workspaces created by specified users or groups.
  • Tags can be created at the tenant scope or the domain scope. Domain-scoped tags are only available to items in workspaces assigned to that domain or its subdomains.

9. Access and distribution

I think about how builders get access separately from how consumers get content. Mixing the two, such as giving report consumers the Viewer role in a workspace full of engineering items, makes permissions harder to audit.

Options

  • Workspace roles (Admin, Member, Contributor, Viewer), assigned to groups rather than individuals
  • Direct item sharing
  • Workspace apps
  • Org apps

What should drive the choice

  • Whether consumers should see everything in a workspace or a curated subset
  • Licensing: whether consumers have Pro or PPU licenses, or rely on the content being on an F64 or larger capacity

Platform constraints

10. Classification

Sensitivity labels and tags do different jobs, and you can use both. Decide what each one represents before people start applying them inconsistently.

Things to decide

  • Which sensitivity labels apply to Fabric items, and whether a default label should apply by tenant or by domain
  • What tags represent: data content, project, cost center, lifecycle status, or something else
  • Who creates tags and who is expected to apply them
  • Whether tag names follow a pattern that makes them easy to filter

What should drive the choice

  • Labels drive protection. If a classification needs to restrict access or trigger data loss prevention, it belongs in a sensitivity label.
  • Tags are for organizing and finding content. They don’t enforce anything.
  • The questions people will ask when searching the OneLake catalog

Platform constraints

Before you click New workspace

Here are the questions I’d bring to a planning session:

  1. Which region should each capacity be in, and do any sources or features require a specific region?
  2. Which network controls do you actually need, and at which level?
  3. Who builds and maintains content, and how much self-service will you support?
  4. How will you split content into workspaces?
  5. How many environments do you need, and how do they map to workspaces?
  6. How will content move between environments, and where does it live in source control?
  7. What naming conventions will you use for workspaces, items, and objects?
  8. What do domains represent, and which settings will domain admins control?
  9. How do builders get access, and how do consumers get content?
  10. What do sensitivity labels and tags each represent?

You can change most of these answers later. It’s just much cheaper to answer them up front.

If you’re already working in Fabric, what do you wish you had decided before you started? Or which decision came back to bite you later? Let me know in the comments.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.