Configure Microsoft Fabric Workspace Settings: Spark, Domains, OneLake, Airflow
Microsoft Fabric workspace settings are the per-workspace controls that determine how Spark compute runs, which domain the workspace belongs to, how its OneLake data is organized and retained, and how Apache Airflow jobs execute — all configured by a workspace admin within the guardrails a capacity or tenant admin sets. DP-700 opens with this topic because everything else you build — Lakehouses, notebooks, pipelines, Eventhouses — inherits its behavior from these settings. The exam expects you to know which knob lives at which level: a workspace admin picks the default Spark pool and environment, a capacity admin decides whether custom pools are allowed at all, and a tenant admin creates domains and enables Airflow. You should also be able to weigh starter pools against custom pools, explain what an environment packages, and describe what happens to OneLake data when a workspace is deleted. Get the levels straight and a whole class of exam questions becomes free marks.
On this page8 sections
- Workspaces, capacities, and who controls what
- Spark workspace settings: starter pools vs custom pools
- Environments: runtimes, libraries, and Spark properties
- High concurrency mode: sharing Spark sessions
- Domain workspace settings: organizing workspaces by business area
- OneLake workspace settings and data retention
- Apache Airflow workspace settings
- Worked scenario: standing up a workspace the exam way
- Distinguish workspace admin, capacity admin, and tenant admin responsibilities for workspace configuration
- Configure Spark workspace settings, choosing between starter pools and custom pools with autoscale and node sizing
- Attach environments to a workspace to pin runtime versions, libraries, and Spark properties
- Enable high concurrency mode to share Spark sessions across notebooks and pipeline activities
- Assign workspaces to Fabric domains and explain what domain admins and contributors control
- Configure OneLake and Apache Airflow workspace settings, including retention behavior and Airflow pool sizing
Workspaces, capacities, and who controls what
A Fabric workspace is the container where a team creates and collaborates on items — Lakehouses, Warehouses, notebooks, data pipelines, Eventhouses, semantic models — and every workspace gets its compute from a capacity, the pool of purchased Fabric compute (an F SKU or a trial) that one or more workspaces share. Settings therefore live at three levels, and DP-700 loves to test which level owns which control.
The tenant admin works in the Fabric admin portal: enabling or disabling features tenant-wide (for example, whether users can create Apache Airflow jobs), creating domains, and setting governance policies such as workspace retention. The capacity admin manages the capacity a workspace is assigned to: which workspaces can use it, capacity-level Spark pools, and whether workspace admins are allowed to create their own customized pools. The workspace admin configures everything inside Workspace settings: license mode (which capacity the workspace runs on), the default Spark pool and environment, high concurrency, domain assignment (where permitted), Git integration, and Airflow pool configuration.
The pattern to remember: tenant admins decide whether a feature exists, capacity admins decide how much compute it may consume, and workspace admins decide how their team uses it. If an exam scenario says a workspace admin cannot create a custom Spark pool, the fix is at the capacity level — the capacity admin must allow customized workspace pools. If nobody in the tenant can create an Airflow job, the fix is a tenant setting. Answering these questions is mostly a matter of routing the symptom to the right admin.
Spark workspace settings: starter pools vs custom pools
Spark workspace settings decide which Spark pool backs the notebooks and Spark job definitions in the workspace, and the core choice is between the pre-warmed starter pool and a custom pool you shape yourself.
A starter pool is a Fabric-managed pool of pre-provisioned, always-ready medium nodes. Because the nodes are already warm, a session starts in seconds — ideal for interactive, exploratory notebook work. The trade-off is limited control: you take the node size and family Fabric provides. A custom pool is one you define: you choose the node family (memory optimized), node size (from small through extra-large tiers), enable autoscale to set minimum and maximum node counts, and enable dynamic executor allocation so Spark requests executors based on workload. Custom pools give predictable sizing for heavy jobs, but sessions cold-start, so expect minutes rather than seconds before code runs.
| Aspect | Starter pool | Custom pool |
|---|---|---|
| Session start | Seconds (pre-warmed nodes) | Minutes (cold start) |
| Node size and family | Fixed by Fabric | You choose size and family |
| Scaling | Managed for you | Autoscale min/max you define |
| Best for | Interactive exploration, demos | Sized production jobs, cost control |
| Who enables it | Available by default | Capacity admin must allow workspace customization |
Exam trigger words: fastest session start points to starter pools; specific node size, memory-heavy job, or control costs by capping nodes points to a custom pool with autoscale limits. And remember the dependency — workspace-level custom pools only exist if the capacity admin has enabled customized workspace pools.
Environments: runtimes, libraries, and Spark properties
An environment is a Fabric item that packages everything a Spark session needs beyond raw compute: the Spark runtime version, public libraries (for example from PyPI), custom libraries you upload (such as .whl, .jar, or .tar.gz files), Spark properties, and attached resources. Instead of running pip install at the top of every notebook — which slows every session and drifts between users — you install libraries once in an environment and attach it where needed.
In Spark workspace settings, a workspace admin selects the workspace default environment (and with it the default runtime version). Every notebook and Spark job definition in the workspace then inherits that environment unless the item explicitly attaches a different one. This is the standard pattern for team consistency: one curated environment with the approved library set, made the workspace default, with specialized environments attached per notebook only where a workload genuinely needs different packages or Spark properties.
Two behaviors are worth internalizing for the exam. First, environments bind a specific runtime version — if a scenario requires a newer Spark runtime, you change it on the environment (or the workspace default), not inside the notebook. Second, environment changes must be published before sessions pick them up, and sessions started under the old definition keep it until they restart. When a question describes a team whose notebooks fail because a library is missing on some sessions but not others, the clean answer is an environment attached as the workspace default — not inline installs scattered through notebook cells.
High concurrency mode: sharing Spark sessions
High concurrency mode lets multiple notebooks share a single Spark session instead of each notebook spinning up its own, cutting session start waits and reducing capacity consumption. Without it, every notebook you open starts a dedicated session — expensive when an engineer is hopping between five notebooks, and slow when each one has to acquire compute.
A workspace admin enables high concurrency in the Spark workspace settings. Once on, a user can start a high concurrency session from one notebook and attach further notebooks to that same session. Sharing has sensible boundaries: notebooks share a session only for the same user and only when they are compatible — matching environment and Spark configuration — so one user's packages and session state never bleed into another user's work. Within the shared session, each notebook still gets isolation for its variables through separate contexts.
High concurrency also extends to pipeline notebook activities: a data pipeline that runs several notebooks can execute them in one shared session rather than paying session startup for each activity. For an orchestrated nightly load that chains half a dozen small notebooks, this is often the single biggest wall-clock win available from configuration alone.
On the exam, the trigger is a scenario about reducing session startup time or lowering capacity usage when running many notebooks — especially many small notebooks in one pipeline. The answer is high concurrency mode, and the distractors are usually bigger nodes or more executors, which raise cost without addressing startup overhead.
Domain workspace settings: organizing workspaces by business area
A domain is a tenant-level grouping that collects related workspaces under a business area — Finance, Sales, Supply Chain — so a large organization can manage and discover data along business lines rather than as one flat list of workspaces. Domains are Fabric's building block for a data-mesh style operating model, and each domain can carry its own image and description so its data products are recognizable in the OneLake catalog.
The role split matters for DP-700. Only a Fabric (tenant) admin can create domains and appoint domain admins. Domain admins manage their own domain: its settings, its subdomains (domains can nest one level down for finer grouping), and who its domain contributors are. Contributors — and workspace admins, when the domain is configured to allow it — assign workspaces into the domain. A workspace belongs to at most one domain (or subdomain), and the assignment is visible in the workspace settings.
Two more capabilities show up in questions. A tenant admin can define a default domain rule so that workspaces created by particular users or groups are automatically assigned to the right domain — useful when hundreds of teams create workspaces and manual assignment will not scale. And certain tenant-level settings can be delegated to domain admins, letting, say, the Finance domain set its own certification policy without opening tenant settings to them.
Trigger words: group workspaces by business unit, federated governance, or data mesh all point at domains; who can create a domain is always the tenant admin, never the workspace admin.
OneLake workspace settings and data retention
OneLake is the single, tenant-wide data lake behind every Fabric workspace: there is exactly one OneLake per tenant, each workspace is a top-level container inside it, and every item in the workspace (Lakehouse, Warehouse, Eventhouse) stores its data under that container in open Delta Parquet format, addressable through the OneLake endpoint with a path of the form workspace/item/Tables or workspace/item/Files. Configuring OneLake at the workspace level is therefore mostly about how that container behaves, not about provisioning storage — there is nothing to provision.
The setting DP-700 probes most is retention. Deleting a workspace does not immediately destroy its OneLake data: the workspace enters a retention period during which an admin can restore it, and only when retention lapses is the data permanently removed. Tenant admins configure how long deleted workspaces are retained. The exam angle: if a scenario says a workspace was deleted last week and the team needs its Lakehouse back, the answer is workspace retention and admin restore — not a backup product, because the retention window is the recovery mechanism.
Workspace settings also govern how the workspace's OneLake data is reached and cached. Shortcuts let items reference data in other workspaces or external cloud storage without copying it, and enabling caching for shortcuts at the workspace level keeps recently read external data local — reducing latency and egress charges for shortcuts that cross cloud providers. Finally, remember the naming consequence: because the workspace name is part of every OneLake path, treat it as a stable identifier that downstream consumers and shortcut paths depend on.
Apache Airflow workspace settings
An Apache Airflow job is Fabric's managed Airflow offering: a workspace item that runs Airflow DAGs — Python-defined, code-first orchestration — without you standing up or patching any Airflow infrastructure. Teams that already think in DAGs, or that must orchestrate across systems in ways Fabric data pipelines cannot express, get the full Airflow programming model inside Fabric, billed against the workspace's capacity.
Two configuration layers matter. First, the feature is tenant-gated: a tenant admin must enable users to create and use Apache Airflow jobs before the item type appears at all. Second, the workspace-level Airflow settings shape the runtime: pool choice and sizing. As with Spark, Airflow offers a starter pool that starts on demand and deallocates after idle time — economical for intermittent or development use — versus a custom pool kept running for production schedules that cannot tolerate a pool warming up before a DAG triggers. You also configure compute size, extra nodes for parallel task capacity, and autoscale behavior.
Inside the item, you author or upload DAG files and supporting Python files, declare additional packages as requirements so the managed environment installs them, and can sync DAG files from a Git repository so orchestration code is version controlled like everything else. From a DAG, operators call Fabric items — for example triggering a data pipeline or notebook — so Airflow becomes the outer scheduler around Fabric workloads.
Exam triggers: code-first orchestration, existing Airflow DAGs to migrate, or Python-based scheduling point to an Apache Airflow job; the Airflow option is missing points to the tenant setting; production DAGs must start instantly points to a custom (always-on) pool over the starter pool.
Worked scenario: standing up a workspace the exam way
Put the pieces together with a scenario shaped like a DP-700 question set. A retail company creates a workspace called sales-analytics for a new data engineering team. Requirements: notebooks must start fast during development; the nightly transformation job needs memory-optimized nodes capped at a fixed maximum to control spend; every notebook needs the same forecasting library; the workspace must be discoverable under the company's Sales business area; and orchestration will reuse Airflow DAGs migrated from an existing deployment.
The configuration falls straight out of this lesson. Interactive speed → keep the starter pool as the default for development notebooks. The sized nightly job → ask the capacity admin to allow customized workspace pools, then create a custom pool on the memory-optimized family with autoscale minimum and maximum set to the agreed cap, and attach it to the production Spark job. Shared library → build an environment containing the forecasting package, publish it, and set it as the workspace default so every notebook inherits it. Business-area discovery → a domain contributor (or the workspace admin, if the domain allows it) assigns the workspace to the Sales domain; if no Sales domain exists, only the tenant admin can create it. Migrated DAGs → confirm the tenant setting for Airflow jobs is enabled, create an Apache Airflow job, sync the DAG files from Git, and choose a custom pool if production schedules need instant starts.
Notice that every requirement resolved to a setting at a specific level. That mapping — requirement, to setting, to the admin who owns it — is precisely the skill this objective examines.
Tip. DP-700 tests this topic almost entirely through level-routing and trade-off scenarios: given a requirement, pick the right setting and the right admin. Watch for trigger words — 'fastest session start' (starter pool), 'specific node size or cost cap' (custom pool with autoscale), 'same libraries in every notebook' (default environment), 'reduce session startup across many notebooks' (high concurrency), 'group workspaces by business unit' (domains), and 'recover a deleted workspace' (retention). Distractors usually offer the right feature at the wrong admin level, so always confirm who — tenant, capacity, or workspace admin — owns the control in the scenario.
- Tenant admins enable features and create domains; capacity admins control compute limits and whether custom pools are allowed; workspace admins configure their own workspace within those guardrails.
- Starter pools give session starts in seconds from pre-warmed nodes; custom pools give node family, size, and autoscale control but cold-start in minutes.
- Workspace-level custom Spark pools require the capacity admin to allow customized workspace pools first.
- Environments package runtime version, libraries, and Spark properties; set one as the workspace default instead of pip-installing in notebook cells.
- High concurrency mode shares one Spark session across a user's compatible notebooks and across pipeline notebook activities, cutting startup time and capacity use.
- Domains group workspaces by business area: tenant admins create domains, domain admins manage them, contributors assign workspaces, and a workspace belongs to one domain.
- Deleted workspaces keep their OneLake data through an admin-configurable retention period and can be restored before it lapses.
- Apache Airflow jobs are tenant-gated managed Airflow; pick a custom always-on pool when production DAGs cannot wait for a starter pool to warm up.
Frequently asked questions
What is the difference between a starter pool and a custom Spark pool in Microsoft Fabric?
A starter pool is a Fabric-managed pool of pre-warmed, medium-sized nodes that starts Spark sessions in seconds but offers no control over node size or family. A custom pool is one you define yourself — choosing the node family, node size, autoscale minimum and maximum, and dynamic executor allocation — which suits sized production workloads but cold-starts, so sessions take minutes to begin. Workspace admins can only create custom pools if the capacity admin has enabled customized workspace pools.
Who can create domains in Microsoft Fabric?
Only a Fabric tenant admin can create domains and appoint domain admins. Domain admins then manage their domain's settings and subdomains and assign domain contributors, who in turn assign workspaces into the domain. Workspace admins can assign their own workspace to a domain only when the domain is configured to allow it — they can never create the domain itself.
What happens to OneLake data when a Fabric workspace is deleted?
The workspace and its OneLake data enter a retention period rather than being destroyed immediately. During that window an administrator can restore the workspace, bringing back its items and data; after the retention period lapses the data is permanently removed. Tenant admins configure how long deleted workspaces are retained, so recovery from an accidental deletion is an admin restore, not a separate backup tool.
What is a Fabric environment and why use one instead of pip install in a notebook?
A Fabric environment is a reusable item that bundles a Spark runtime version, public and custom libraries, Spark properties, and resources. Attaching it as a workspace default gives every notebook and Spark job the same published, curated setup, whereas inline pip installs run on every session start, slow sessions down, and drift between users and notebooks. Environment changes take effect after publishing, on newly started sessions.
When should I use an Apache Airflow job instead of a Fabric data pipeline?
Use an Apache Airflow job when you need code-first, Python-defined DAG orchestration — typically because the team already has Airflow DAGs to migrate, needs Airflow's operator ecosystem, or wants orchestration logic in version-controlled Python. Fabric data pipelines remain the low-code default for orchestrating Fabric-native activities. Airflow jobs must be enabled by a tenant admin, and production DAGs that need instant starts should run on a custom always-on pool rather than the starter pool.
Why can't a workspace admin create a custom Spark pool in Fabric?
Because the capacity admin has not enabled customized workspace pools on the capacity the workspace runs on. Workspace-level custom pool creation is a capacity-gated permission: until the capacity admin allows it, workspace admins can only use the starter pool or pools defined at the capacity level. This admin-level dependency is a classic DP-700 troubleshooting question.
Sign up free to mark lessons complete, bookmark topics and track your exam readiness.