🔷 Microsoft Azure

Free Designing and Implementing Microsoft DevOps Solutions (AZ-400) Study Resources

Most AZ-400 material is out of date. Microsoft revised the exam on 27 July 2026 — build and release pipelines now carry 50–55% of the marks — while popular guides still teach Azure AD, secret-based service connections, and task groups that YAML pipelines do not support. This hive was written against Microsoft Learn and GitHub's own documentation, current to August 2026. Disclaimer: an independent study resource, not affiliated with or endorsed by Microsoft. Content is AI-authored and grounded in first-party documentation; it has not been reviewed by a certified human subject-matter expert. 📚 What We Cover: All 86 exam objectives across the five current domains — processes and communications, source control, build and release pipelines, security and compliance, and instrumentation. 🛠️ Key Features: Blueprint-Weighted Mocks: 6 full-length exams cut to Microsoft's published domain ranges — 7/6/27/6/4 across 50 questions, 120 minutes, 70% benchmark. Every Question Format: 419 questions across multiple choice, multiple answer, true/false, matching and ordering — because a third of the real exam is multi-select. Scenario Practice: 6 architecture case studies, each a full scenario with four linked questions. Sourced, Not Guessed: every question cites first-party Microsoft or GitHub documentation. Depth on Demand: 453 flashcards, 194 lessons, quick notes and cram sheets, plus 16 topic quizzes and 5 unit checkpoints. Current Where It Counts: Microsoft Entra ID, GitHub Advanced Security for Azure DevOps, workload identity federation, Azure Machine Configuration, and Azure Deployment Environments.

419
Practice Questions
194
Study Notes
453
Flashcards
Start Studying — Free1 learners studying this hive

Designing and Implementing Microsoft DevOps Solutions (AZ-400) Study Notes & Guides

194 AI-generated study notes covering the full Designing and Implementing Microsoft DevOps Solutions (AZ-400) curriculum. Showing 10 complete guides below.

Lesson533 words

Agent and runner infrastructure

Read full article

Design and implement agent and runner infrastructure

Every job needs a machine. Choosing which machine is a cost, security and maintainability decision, and the exam tests the trade-off rather than the click-path.

The options

OptionOwnership and billingUse when
Microsoft-hostedMicrosoft-managed; current paid capacity uses parallel-job concurrency. The free hosted job has job and monthly minute limits; legacy per-minute plans still existStandard images and a fresh Microsoft-provided VM for each job
Self-hostedYou own the machine and tools. Azure DevOps Services uses self-hosted parallel-job capacity; Azure DevOps Server does not charge for self-hosted concurrencyDirect private connectivity, machine-bound tooling, or machine-local state
VM Scale Set agentsScale set in your Azure subscription; Azure-resource cost plus Services self-hosted parallel-job capacityTeam-managed autoscaling with a custom image
Managed DevOps PoolsFully managed; Azure-resource cost plus Services self-hosted parallel-job capacityMicrosoft's current recommendation when considering an autoscalable self-hosted pool
GitHub-hosted for Azure PipelinesMicrosoft-managed on GitHub-hosted infrastructure; per-minute PAYG with no free tierLarger machines when the preview is available in the organization's region

Microsoft-hosted agents exist only in Azure DevOps Services — they are not available in Azure DevOps Server. Azure DevOps Server therefore uses self-hosted agents. A hosted Azure DevOps Services pipeline can still deploy to an on-premises target when its agent has the required connectivity.

Why teams move to self-hosted

Three reasons recur, and they map directly to exam scenarios:

  1. Software that must be preinstalled or machine-bound, for example because of its licence. Hosted jobs can install other tools during a run.
  2. Direct private connectivity to a non-public endpoint or on-premises system.
  3. Machine-local persistence. Caches and configuration can survive between runs on a self-hosted agent.

A Microsoft-hosted agent gets a fresh VM for every job, whose filesystem is discarded afterward. That does not prohibit caching: Cache@2 can restore a server-backed dependency cache across pipeline runs. Choose self-hosted when the state must persist locally on the machine, not merely because a dependency restore is slow.

Billing models differ in kind, not just amount

Under Azure DevOps Services' current paid parallel-jobs model, Microsoft-hosted capacity is bought as concurrency. The free hosted job is limited to 1,800 minutes per month and 60 minutes per job; paid capacity removes the monthly limit and allows up to 360 minutes per job. Earlier customers can still be on a legacy per-minute plan.

GitHub-hosted agents for Azure Pipelines are a separate per-minute PAYG preview with no free tier, and availability is still rolling out by region.

Maintainability

Self-hosted is not free after setup. You own OS and tool maintenance, workspace hygiene, private connectivity, and least-privilege machine security. Keep the agent and operating system compatible; required agent-software updates can be automatic on supported systems, while an unsupported OS still requires a machine upgrade. Microsoft recommends considering Managed DevOps Pools instead of designing a new autoscalable VM Scale Set agent pool.

Primary sources

Quick Notes222 words

Agent and runner infrastructure — quick notes

Read full article

Agents and runners — quick notes

FactDetail
Microsoft-hosted availabilityAzure DevOps Services only — not Azure DevOps Server
Microsoft-hosted billingCurrent paid plan: parallel-job concurrency. Free hosted job: minute limits. Legacy per-minute plans exist
GitHub-hosted for PipelinesPreview, region-dependent, per-minute PAYG, no free tier
Microsoft-hosted stateFresh VM for every job; filesystem discarded afterward
Cross-run pipeline cacheCache@2 restores server-backed files such as dependencies
Self-hosted advantageCaches + configuration persist run to run
Self-hosted reasonsMachine-bound tooling · direct private connectivity · machine-local state
Elastic self-hostedVM Scale Set agents; Managed DevOps Pools now recommended
Managed/VMSS cost in ServicesAzure resources + self-hosted parallel-job capacity
Self-hosted maintenanceOwn OS/tools, workspace hygiene, least-privilege security; required agent updates can be automatic

Traps

  1. "Use Microsoft-hosted with Azure DevOps Server" — impossible; hosted is Services-only.
  2. "A fresh hosted job cannot reuse dependencies" — false; Cache@2 restores a pipeline cache.
  3. "Microsoft-hosted is never minute-limited" — false; distinguish paid current-plan concurrency from free and legacy minute limits.

Primary sources

Lesson255 words

Alerting on pipeline events

Read full article

Configure alerts for events in GitHub Actions and Azure Pipelines

Routes

PlatformMechanism
Azure PipelinesNotification subscriptions · service hooks · the Teams app
GitHub ActionsWorkflow notifications · webhooks · the Teams/Slack app

Either can also call out from within the run — a step that posts on failure — which is the flexible option when the condition is more specific than "the run failed".

What deserves an alert

The same discipline as everywhere else in this unit: alert on things a human must act on.

AlertDo not alert
main build brokenEvery successful run
Deployment awaiting approvalEvery stage transition
Release failed in productionEvery PR build result
Scheduled security scan failedEvery dependency update PR

The condition that gets forgotten

A step that reports failure must itself run on failure. Every step carries an implicit succeeded(), so a notification step placed after a failing step is skipped — the same defect as publishing test results without condition: succeededOrFailed().

yaml
- script: ./notify.sh condition: failed()

A failure notification that only fires on success is worse than none, because the silence is read as good news.

Route to an owner

An alert to a shared inbox nobody owns is not an alert. Route to a team with the ability to act, and make ownership explicit.

Primary sources

Quick Notes94 words

Alerting on pipeline events — quick notes

Read full article

Pipeline alerting — quick notes

PlatformMechanism
Azure PipelinesNotifications · service hooks · Teams app
GitHub ActionsNotifications · webhooks · Teams/Slack app
Alert onNot on
Broken mainEvery successful run
Awaiting approvalEvery stage transition
Production release failureEvery PR build

The classic bug: a notification step without condition: failed() (or succeededOrFailed()) is skipped when the thing it reports on fails. Silence then reads as good news.

Lesson241 words

Analyzing usage and application performance

Read full article

Analyze metrics by using collected telemetry

Usage tells you what to work on

QuestionTelemetry
Which features are used?Custom events, page views
Where do users abandon?Funnels, session flow
Who is affected by this error?Exception telemetry with user context

Usage data is what makes a hypothesis testable — it is the loop that closes feature flags and A/B testing back into a decision. Without it, "we shipped it" is the end of the story rather than the middle.

Performance analysis

Work from the user inward:

  1. Which operations are slow? Request duration by name, at p95 and p99.
  2. What are they waiting on? Dependency telemetry — database, HTTP, queue.
  3. Where inside the code? Traces and profiling.

Skipping to step 3 is the common mistake: it produces a detailed answer about something that was never the problem.

Aggregates hide people

An average conceals the tail, and a healthy overall error rate conceals a single customer failing every request. Segment — by operation, region, client version, tenant — because one broken tenant inside a 0.1% global error rate is invisible in the aggregate and total for that customer.

Correlate with deployments

Release annotations put deployments on the chart. Most performance regressions have a deployment immediately before them, and seeing the two together is the fastest available diagnosis.

Primary sources

Quick Notes73 words

Analyzing usage and application performance — quick notes

Read full article

Analyzing telemetry — quick notes

Performance, in order: which operations are slow (p95/p99) → what are they waiting on (dependencies) → where in the code (traces).

  • Skipping to code profiling answers the wrong question in detail.
  • Aggregates hide people — segment by operation, region, version, tenant.
  • A healthy global error rate can hide one customer failing every request.
  • Correlate with release annotations — regressions usually follow a deployment.
Lesson294 words

Appropriate access levels

Read full article

Recommend appropriate access levels

Access levels and permissions are separate controls evaluated together. Access levels determine which web-portal features a user can access. Permissions determine which actions they may perform on the objects they can reach. Increasing an access level does not itself grant repository permission.

Azure DevOps access levels

LevelGets
StakeholderUnlimited free access. Work items, backlogs, dashboards, and Azure Pipelines feature access, including release viewing and approval; no Repos in private projects
BasicRepos, Pipelines, Boards, and Artifacts, subject to permissions. The first five users are free; the sixth and later users are paid unless another qualifying entitlement applies
Basic + Test PlansBasic plus test management
Visual Studio subscriberAccess through the subscription entitlement

Stakeholder fits a product owner who tracks a backlog or approves a release but does not need private-project Repos access. Existing public projects are a temporary exception: Stakeholders currently have full Repos access there. New public projects cannot be created, and existing public projects are scheduled to convert to private projects in 2027. Basic enables Repos features; repository permissions still determine actual code access.

GitHub

Use an outside collaborator when a contractor or partner needs selected organization repositories without becoming an organization member. Outside collaborators cannot join teams. With Enterprise Managed Users, this role is called repository collaborator.

Reviewing regularly

Use Microsoft Entra group rules to assign access levels where practical. Azure DevOps adjusts a user's access level when they leave the group. Regularly review the Group rules tab so assignments continue to match current needs.

Primary sources

Quick Notes180 words

Appropriate access levels — quick notes

Read full article

Access levels — quick notes

LevelGetsCost
StakeholderWork items, backlogs, dashboards, Azure Pipelines feature access, and release viewing/approval; no Repos in private projectsUnlimited free access
BasicRepos, Pipelines, Boards, and Artifacts, subject to permissionsFirst five users free; paid from the sixth unless another qualifying entitlement applies
Basic + Test PlansBasic plus test managementPaid or covered by a qualifying entitlement
  • Access level = available web-portal features. Permissions = allowed actions and objects.
  • Product owner or approver who does not need private-project Repos access → Stakeholder.
  • Existing public projects temporarily give Stakeholders full Repos access; conversion to private projects is scheduled for 2027.
  • GitHub contractor needing selected repositories without organization membership → outside collaborator; with Enterprise Managed Users, repository collaborator.
  • Prefer Microsoft Entra group rules where practical, and review the Group rules tab regularly.

Primary sources: https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/az-400 · https://learn.microsoft.com/en-us/azure/devops/organizations/security/stakeholder-access?view=azure-devops · https://learn.microsoft.com/en-us/azure/devops/organizations/security/access-levels?view=azure-devops · https://learn.microsoft.com/en-us/azure/devops/organizations/billing/buy-basic-access-add-users?view=azure-devops · https://learn.microsoft.com/en-us/azure/devops/organizations/security/about-permissions?view=azure-devops · https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/assign-access-levels-by-group-membership?view=azure-devops · https://learn.microsoft.com/en-us/azure/devops/organizations/projects/public-projects-retirement?view=azure-devops · https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization · https://docs.github.com/en/enterprise-cloud@latest/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization

Lesson277 words

Automating container scanning

Read full article

Automate container scanning

A container image bundles your application and an operating system userland. Both carry vulnerabilities, and they age differently: your code changes when you change it, the base image accumulates CVEs on someone else's schedule.

Two things to scan

TargetFinds
Base image and OS packagesCVEs in the distribution layers you inherited
Application code insideVulnerable patterns — CodeQL

Where scanning goes in the pipeline

Loading Diagram...
Figure 1 — Mermaid diagram

Scan before push so a vulnerable image never enters the registry, and scan in the registry continuously so an image that was clean at build time raises an alert when a new CVE lands. Both are needed for the same reason a quiet repository still needs Dependabot alerts: the code stopped changing, the threat landscape did not.

CodeQL in a container

Running CodeQL analysis inside a container is a documented objective, and it needs advanced setup — the generated workflow file is where you specify the container and the build. Default setup cannot express it.

The typical reason is a compiled language whose build environment lives in the container: CodeQL must observe the real build to analyse it, so the analysis has to run where that build runs.

Rebuilding is the fix

Most base-image findings are resolved by rebuilding on a patched base rather than by changing your code — which makes an automated periodic rebuild a security control, not merely hygiene.

Primary sources

Quick Notes96 words

Automating container scanning — quick notes

Read full article

Container scanning — quick notes

TargetFinds
Base image / OS packagesInherited CVEs
Application code insideVulnerable patterns (CodeQL)
  • Scan before push → keep vulnerable images out of the registry.
  • Scan in the registry continuously → catch CVEs disclosed after build.
  • CodeQL in a container requires advanced setup — default setup cannot express it.
  • Most base-image findings are fixed by rebuilding on a patched base.

Trap: scanning only at build time. The image ages even when your code does not.

More Study Notes (184)

Automating documentation from Git history

191 words

Automating documentation from Git history — quick notes

55 words

AZ-400 — exam map — roadmap

403 words

Azure Boards and GitHub integration

222 words

Azure Boards and GitHub integration — quick notes

84 words

Azure Deployment Environments

344 words

Azure Deployment Environments — quick notes

197 words

Azure DevOps service connections and PATs

277 words

Azure DevOps service connections and PATs — quick notes

159 words

Azure Monitor and Logs with DevOps tools

213 words

Azure Monitor and Logs with DevOps tools — quick notes

80 words

Branch merging restrictions

255 words

Branch merging restrictions — quick notes

99 words

Checks and approvals with YAML environments

409 words

Checks and approvals with YAML environments — quick notes

206 words

Choosing a configuration management technology

247 words

Choosing a configuration management technology — quick notes

164 words

Choosing package management tools

301 words

Choosing package management tools — quick notes

109 words

Code coverage analysis

257 words

Code coverage analysis — quick notes

118 words

Complex pipeline scenarios

403 words

Complex pipeline scenarios — quick notes

168 words

Comprehensive testing strategy

340 words

Comprehensive testing strategy — quick notes

171 words

Configuring telemetry collection

224 words

Configuring telemetry collection — quick notes

91 words

Dashboards and flow metrics

246 words

Dashboards and flow metrics — quick notes

98 words

Defining an IaC strategy

314 words

Defining an IaC strategy — quick notes

137 words

Dependabot for licensing, vulnerabilities and versioning

276 words

Dependabot for licensing, vulnerabilities and versioning — quick notes

107 words

Dependency versioning strategy

281 words

Dependency versioning strategy — quick notes

143 words

Deploying containers, binaries and scripts

450 words

Deploying containers, binaries and scripts — quick notes

153 words

Deployment resiliency

287 words

Deployment resiliency — quick notes

144 words

Deployments including database tasks

472 words

Deployments including database tasks — quick notes

172 words

Deployment strategies

305 words

Deployment strategies — quick notes

138 words

Design and implement pipelines — cram sheet

397 words

Designing a branch strategy

220 words

Designing a branch strategy — quick notes

78 words

Desired state configuration for environments

416 words

Desired state configuration for environments — quick notes

172 words

Develop pipelines by using YAML

894 words

Distributed tracing

262 words

Distributed tracing — quick notes

96 words

Feature flags with Azure App Configuration

379 words

Feature flags with Azure App Configuration — quick notes

230 words

Feedback cycles

230 words

Feedback cycles — quick notes

82 words

Feeds, views and upstream packages

276 words

Feeds, views and upstream packages — quick notes

152 words

GitHub Advanced Security for GitHub and Azure DevOps

394 words

GitHub Advanced Security for GitHub and Azure DevOps — quick notes

179 words

GitHub authentication

316 words

GitHub authentication — quick notes

137 words

Hotfix path planning

272 words

Hotfix path planning — quick notes

136 words

Implementing a configuration management strategy

302 words

Implementing a configuration management strategy — quick notes

150 words

Implementing tests in a pipeline

328 words

Implementing tests in a pipeline — quick notes

139 words

Infrastructure performance indicators

227 words

Infrastructure performance indicators — quick notes

90 words

Integrating GHAS with Defender for Cloud

349 words

Integrating GHAS with Defender for Cloud — quick notes

144 words

Integrating GitHub repositories with Azure Pipelines

314 words

Integrating GitHub repositories with Azure Pipelines — quick notes

166 words

Integrating work tracking

237 words

Integrating work tracking — quick notes

90 words

Integration using webhooks

240 words

Integration using webhooks — quick notes

91 words

Job execution order, parallelism and multi-stage pipelines

285 words

Job execution order, parallelism and multi-stage pipelines — quick notes

103 words

Key Vault for secrets, keys and certificates

386 words

Key Vault for secrets, keys and certificates — quick notes

178 words

Kusto Query Language

238 words

Kusto Query Language — quick notes

90 words

Managing large files

275 words

Managing large files — quick notes

83 words

Metrics and queries for delivery

242 words

Metrics and queries for delivery — quick notes

98 words

Metrics and queries for development

239 words

Metrics and queries for development — quick notes

95 words

Metrics and queries for operations

246 words

Metrics and queries for operations — quick notes

85 words

Metrics and queries for project planning

243 words

Metrics and queries for project planning — quick notes

111 words

Metrics and queries for security

243 words

Metrics and queries for security — quick notes

104 words

Metrics and queries for testing

248 words

Metrics and queries for testing — quick notes

106 words

Microsoft Defender for Cloud DevOps Security

298 words

Microsoft Defender for Cloud DevOps Security — quick notes

118 words

Migrating classic pipelines to YAML

300 words

Migrating classic pipelines to YAML — quick notes

175 words

Minimising downtime

249 words

Minimising downtime — quick notes

129 words

Monitoring in GitHub

236 words

Monitoring in GitHub — quick notes

85 words

Monitoring pipeline health

225 words

Monitoring pipeline health — quick notes

97 words

Optimising a pipeline

389 words

Optimising a pipeline — quick notes

166 words

Optimising pipeline concurrency

295 words

Optimising pipeline concurrency — quick notes

144 words

Permissions and roles in GitHub

231 words

Permissions and roles in GitHub — quick notes

116 words

Permissions and security groups in Azure DevOps

265 words

Permissions and security groups in Azure DevOps — quick notes

165 words

Pipeline trigger rules

393 words

Pipeline trigger rules — quick notes

205 words

Preventing leakage of sensitive information

346 words

Preventing leakage of sensitive information — quick notes

165 words

Projects and teams in Azure DevOps

290 words

Projects and teams in Azure DevOps — quick notes

145 words

Pull request workflow

233 words

Pull request workflow — quick notes

76 words

Quality and release gates

323 words

Quality and release gates — quick notes

130 words

Recovering data with Git

239 words

Recovering data with Git — quick notes

84 words

Release documentation

208 words

Release documentation — quick notes

76 words

Reliably ordered dependency deployments

224 words

Reliably ordered dependency deployments — quick notes

95 words

Removing data from source control

283 words

Removing data from source control — quick notes

99 words

Repository permissions

215 words

Repository permissions — quick notes

62 words

Retention strategy

364 words

Retention strategy — quick notes

141 words

Reusable pipeline elements

313 words

Reusable pipeline elements — quick notes

170 words

Scaling and optimizing a Git repository

266 words

Scaling and optimizing a Git repository — quick notes

106 words

Secretless authentication

368 words

Secretless authentication — quick notes

185 words

Security and compliance scanning strategy

348 words

Security and compliance scanning strategy — quick notes

143 words

Selecting a deployment automation solution

499 words

Selecting a deployment automation solution — quick notes

168 words

Sensitive files during deployment

321 words

Sensitive files during deployment — quick notes

129 words

Service principals and managed identities

308 words

Service principals and managed identities — quick notes

142 words

Source, bug and quality traceability

242 words

Source, bug and quality traceability — quick notes

104 words

Structuring the flow of work

231 words

Structuring the flow of work — quick notes

85 words

Teams integration

221 words

Teams integration — quick notes

73 words

Topic 1.1 — Traceability and flow of work — cram sheet

241 words

Topic 1.2 — Metrics and queries — cram sheet

312 words

Topic 1.3 — Collaboration and communication — cram sheet

243 words

Topic 2.1 — Branching strategies — cram sheet

250 words

Topic 2.2 — Managing repositories — cram sheet

333 words

Topic 3.1 — Package management — cram sheet

258 words

Topic 3.2 — Testing strategy — cram sheet

208 words

Topic 3.4 — Deployments — cram sheet

382 words

Topic 3.5 — Infrastructure as code — cram sheet

259 words

Topic 3.6 — Maintaining pipelines — cram sheet

325 words

Topic 4.1 — Authentication and authorization — cram sheet

281 words

Topic 4.2 — Managing sensitive information — cram sheet

288 words

Topic 4.3 — Security and compliance scanning — cram sheet

323 words

Topic 5.1 — Configuring monitoring — cram sheet

260 words

Topic 5.2 — Analyzing metrics — cram sheet

280 words

Unit 1 — Processes and communications — roadmap

221 words

Unit 2 — Source control strategy — roadmap

205 words

Unit 3 — Build and release pipelines — roadmap

270 words

Unit 4 — Security and compliance — roadmap

222 words

Unit 5 — Instrumentation strategy — roadmap

215 words

Using tags

235 words

Using tags — quick notes

62 words

Versioning pipeline artifacts

290 words

Versioning pipeline artifacts — quick notes

131 words

Wikis and process diagrams

207 words

Wikis and process diagrams — quick notes

86 words

YAML pipelines — quick notes

255 words

Ready to practice? Jump straight in — no sign-up needed.

Take practice tests, review flashcards, and read study notes right now.

Take a Practice Test

Designing and Implementing Microsoft DevOps Solutions (AZ-400) Practice Questions

Try 15 sample questions from a bank of 419. Answers and detailed explanations included.

Q1medium

What most likely explains the gap between a two-day cycle time and a month-long wait?

A.

The team is slow to complete work once started

B.

Work waits in the backlog before anyone starts it, which lead time captures and cycle time does not

C.

Deployments are infrequent

D.

The dashboard is misconfigured

Show answer & explanation

Correct Answer: B

Lead time runs from work item creation; cycle time runs from the start of active work. The gap between them is queue time.

A contradicts the two-day cycle time. C and D are possible in principle but neither explains the specific arithmetic. The actionable conclusion is about intake and work-in-progress limits, not team speed — and reporting cycle time alone is what let an overloaded team look excellent.

Answer: B

Q2medium

A team has cut build time from 12 minutes to 3, but delivery has not sped up. Which metric should they examine next?

A.

Lines of code per developer

B.

Time to first review on pull requests

C.

Number of commits per day

D.

Code coverage percentage

Show answer & explanation

Correct Answer: B

Build duration is highly visible and easy to optimise; review latency is usually several times larger and rarely on a dashboard. A three-minute build sitting behind an eleven-hour wait for a first review is not a fast pipeline.

A and C measure individual output and degrade collaboration when targeted. D measures test breadth, not flow.

Answer: B

Q3hard

After adopting OIDC, a team finds that any workflow in the organisation can assume the production cloud role. What was configured incorrectly?

A.

The cloud trust relationship was not scoped to specific token claims such as repository and environment

B.

The OIDC token lifetime was set too long

C.

The workflow is missing a permissions: block

D.

The runner is self-hosted rather than GitHub-hosted

Show answer & explanation

Correct Answer: A

A is correct. Cloud trust must constrain the token's audience and subject claims to the intended workflow identity. An environment appears in the subject only when the job references one. Repositories created after 2026-07-15 use an immutable default subject containing owner and repository IDs; older repositories may retain the previous format until opt-in, rename, or transfer. Configure trust to match the subject actually emitted for the repository.

C is a different failure: without permissions: id-token: write, the job cannot request the OIDC JWT. That permission grants neither repository nor cloud-resource write access and cannot make provider-side trust broader. B and D do not explain organization-wide role assumption.

Answer: A

Q4medium

Why does a slot swap avoid the cold-start delay that a direct deployment to production causes?

A.

The swap restarts the production instance with more memory

B.

Swaps are performed during a maintenance window

C.

The staging instance is already running and warmed before it becomes production

D.

Traffic is queued at the load balancer until the app responds

Show answer & explanation

Correct Answer: C

App Service warms the source-slot workers to the production scale while the production target remains online. After successful warm-up, it switches the slots' routing rules. That sequence avoids swap downtime.

A misdescribes the mechanism. B is a scheduling choice that does not perform warm-up. D describes buffering rather than the documented warm-source/routing-switch sequence.

Answer: C

Q5hard

Why did enabling Git LFS fail to reduce clone time?

A.

LFS applies only to files above 100 MB

B.

LFS changes storage from that point onward; the existing binaries remain in history at full size

C.

LFS requires a separate licence

D.

LFS only works on Azure Repos, not other providers

Show answer & explanation

Correct Answer: B

Enabling LFS affects how files are stored going forward. Everything already committed stays in history, and every clone still fetches it — so clone time is unchanged.

Shrinking existing history requires rewriting it, which changes every commit hash and forces a coordinated re-clone, and the constraints say that cannot happen this quarter.

A, C and D describe limitations LFS does not have.

Answer: B

Q6medium

A busy repository receives many pushes while a 20-minute build is running, and each push queues another run. The team wants one run covering the accumulated commits once the current build finishes. What should you configure?

A.

batch: true on the CI trigger

B.

A path filter to reduce the number of qualifying commits

C.

always: false on a scheduled trigger

D.

Reduce the parallel job count so runs queue naturally

Show answer & explanation

Correct Answer: A

batch: true is exactly this feature: while a run is in progress, further commits accumulate and are built together in a single run when the current one completes.

B reduces which commits qualify but does nothing about batching the ones that do. C concerns scheduled runs, not CI. D throttles by starving capacity — the runs still queue individually, they just wait longer.

Answer: A

Q7medium

A VM needs its own unique identity, and that identity must become unusable automatically when the VM is deleted. Which identity type fits?

A.

A user-assigned managed identity

B.

A service principal with a certificate

C.

A system-assigned managed identity

D.

A GitHub App installation token

Show answer & explanation

Correct Answer: C

A system-assigned managed identity belongs to the VM, and Azure deletes its service principal with the VM. Any stale Azure RBAC role-assignment record requires separate cleanup.

A is standalone and persists. B has an independent lifecycle. D authenticates as a GitHub App installation and is not an Azure VM identity.

Answer: C

Q8medium

An auditor asks what evidence exists that a specific release was tested. Builds succeed but the pipeline never publishes test results. What can you show?

A.

Full test evidence, since a successful build implies tests passed

B.

Only that the build's steps exited successfully — there is no retained test evidence

C.

The test results, recoverable from the agent's filesystem

D.

Coverage data, which is published separately by default

Show answer & explanation

Correct Answer: B

Without a publish step, a successful build proves only that its steps exited zero. There is no retained record of which tests ran, how many, or what they asserted.

A conflates exit status with evidence. C is not a durable artefact — hosted agents are discarded after the run. D is wrong: coverage is published by its own task and is not automatic.

This is why publishing results — with condition: succeededOrFailed() — is a traceability requirement and not merely a reporting nicety.

Answer: B

Q9hard

In name: $(Date:yyyyMMdd)$(Rev:.r), what does $(Rev:.r) contribute?

A.

The revision number of the source commit

B.

The count of pipelines in the project

C.

The Git tag applied to the build

D.

An auto-incrementing counter that resets whenever the rest of the name changes

Show answer & explanation

Correct Answer: D

$(Rev:.r) is a special token that increments automatically and resets when the remainder of the run name changes. With a date prefix that means the first run on a given day is .1, the second .2, and the counter restarts the next day.

A confuses it with the source revision — it has no relationship to the commit. B and C describe unrelated values.

Also worth keeping straight: Build.BuildId is an internal, immutable Run ID unique within the Azure DevOps organization, while Build.BuildNumber is this formatted run name.

Answer: D

Q10hard

Which measure improves clone time for developers who work in one directory, without rewriting history?

A.

Squashing all history into a single commit

B.

Scalar, applying partial clone and sparse checkout

C.

Increasing clone depth

D.

Splitting the repository into submodules

Show answer & explanation

Correct Answer: B

Partial clone defers downloading file contents until needed and sparse checkout materialises only the directories a developer works in — which is exactly the stated pattern. Neither requires rewriting history, so the re-clone constraint is respected.

A is a history rewrite by another name. C increases what is downloaded. D is a restructure that also breaks clones and does not by itself shrink what is fetched.

Answer: B

Q11hard

A repository shows no Dependabot alerts despite using several outdated packages. What should you check first?

A.

Whether Actions usage insights are enabled

B.

Whether the repository has any releases published

C.

Whether traffic insights are being collected

D.

Whether the dependency graph is detecting the manifest, since it is what determines which advisories apply

Show answer & explanation

Correct Answer: D

The dependency graph is how GitHub knows what the project depends on, and therefore which advisories are relevant. If a manifest is not detected or parsed, no dependencies are known and no alerts can be raised.

The dangerous property is that this looks exactly like having no vulnerabilities — a silent absence rather than an error. A, B and C are unrelated to advisory matching.

Answer: D

Q12medium

When the team can eventually coordinate a rewrite, what must they plan for?

A.

Every commit hash changes from the rewrite point, so all clones must be re-created

B.

Branch policies must be recreated

C.

The repository becomes read-only for 24 hours

D.

Only the default branch is affected

Show answer & explanation

Correct Answer: A

A rewrite produces new commit objects with new hashes, so existing clones no longer share ancestry and cannot be reconciled — everyone re-clones. Open pull requests and tags may also need recreating, and forks or mirrors retain the old objects unless handled.

B, C and D are not consequences of the rewrite.

Answer: A

Q13hard

A severe bug is found in a feature that shipped behind a feature flag and is enabled for all users. What is the fastest safe mitigation?

A.

Redeploy the previous build from the pipeline

B.

Swap the deployment slot back to the prior version

C.

Turn the feature flag off

D.

Roll back the database migration

Show answer & explanation

Correct Answer: C

The point of a feature flag is that a feature's availability changes without redeploying any code — the documentation calls this an instant kill switch.

A rebuilds and redeploys, taking minutes at best. B is fast but reverts the entire release, including unrelated fixes that shipped alongside. D is unrelated and potentially destructive.

This is the payoff for decoupling release from deployment: mitigation becomes a configuration change.

Answer: C

Q14easy

For an agent-pool job, which hierarchy level is the scheduled unit whose steps run sequentially on its assigned agent?

A.

Stage

B.

Step

C.

Job

D.

Pipeline

Show answer & explanation

Correct Answer: C

A job is the scheduling unit. For an agent-pool job, its steps run sequentially on the assigned agent and share that workspace.

A stage contains jobs, and a step is a script or task inside a job. Not every job consumes exactly one agent: server jobs are agentless, while deployment lifecycle hooks can resolve to separate agent or server jobs and VM hooks run against their targets.

Answer: C

Q15easy

A GitHub-backed YAML pipeline contains build steps but no trigger or pr section. Disable implied YAML CI trigger is off, and no pipeline UI trigger override applies. When does it run?

A.

Only when started manually

B.

On commits to the default branch only

C.

On commits to any branch, and on pull requests to any branch

D.

Never — a trigger is required

Show answer & explanation

Correct Answer: C

Under the stated conditions, omitted CI configuration enables pushes to every branch, and omitted YAML PR configuration enables pull requests to any branch for GitHub. Use trigger: none and pr: none to disable those triggers.

The provider matters: YAML PR triggers are supported for GitHub and Bitbucket Cloud. Azure Repos Git uses branch-policy build validation instead.

Answer: C

These are 15 of 419 questions available. Take a practice test →

Designing and Implementing Microsoft DevOps Solutions (AZ-400) Flashcards

453 flashcards for spaced-repetition study. Showing 30 sample cards below.

Agent and runner infrastructure(8 cards shown)

Question

Microsoft-hosted agent availability

Answer

Azure DevOps Services only. Not available in Azure DevOps Server.

Question

Microsoft-hosted billing model

Answer

Paid current-plan capacity: parallel jobs (concurrency-based). The free hosted job has minute limits; legacy per-minute plans still exist.

Question

GitHub-hosted agents for Azure Pipelines (preview)

Answer

Per-minute PAYG, no free tier, larger configurations; availability is still rolling out by region.

Question

State on a Microsoft-hosted agent

Answer

Fresh VM for every job; its filesystem is discarded afterward. Use Cache@2 for server-backed cross-run caches.

Question

Main speed advantage of self-hosted

Answer

Machine-level caches and configuration persist run to run.

Question

Three reasons to go self-hosted

Answer

Custom/licensed software · private network access · warm caches.

Question

Elastic self-hosted capacity

Answer

VM Scale Set agents — but Managed DevOps Pools is the current recommendation.

Question

What you own with self-hosted

Answer

Own OS/tool maintenance, workspace hygiene, and least-privilege machine security; keep the agent compatible, though required agent updates can be automatic.

Alerting on pipeline events(4 cards shown)

Question

Why a failure notifier never fires

Answer

Missing condition: failed() — implicit succeeded() skips it.

Question

Why that bug is dangerous

Answer

Silence is read as good news.

Question

Alert on

Answer

Broken main · awaiting approval · production failure.

Question

Alert routing

Answer

To a team that can act — ownership must be explicit.

Analyzing usage and application performance(4 cards shown)

Question

Performance investigation order

Answer

Slow operations (p95/p99) → dependencies → code.

Question

Common analysis mistake

Answer

Profiling code before checking dependencies.

Question

Why segment telemetry

Answer

Aggregates hide people — one tenant can fail entirely.

Question

Fastest regression diagnosis

Answer

Correlate with release annotations.

Appropriate access levels(4 cards shown)

Question

Stakeholder access

Answer

Unlimited free access: work items/backlogs/dashboards plus release viewing/approval; no Azure Repos in private projects.

Question

Approver who never touches code

Answer

Stakeholder.

Question

Access level vs permissions

Answer

Level = which features (licensing). Permissions = what you may do.

Question

GitHub contractor needing selected repositories without organization membership

Answer

Outside collaborator; with Enterprise Managed Users, repository collaborator.

Automating container scanning(5 cards shown)

Question

Two container scan targets

Answer

Base image / OS packages, and the application code inside.

Question

Scan before push

Answer

Keeps vulnerable images out of the registry.

Question

Continuous registry scanning

Answer

Catches CVEs disclosed after the image was built.

Question

CodeQL inside a container

Answer

Requires advanced setup — default cannot express it.

Question

Usual fix for base-layer CVEs

Answer

Rebuild on a patched base image.

Automating documentation from Git history(5 cards shown)

Question

Conventional Commits value

Answer

Makes history machine-readable.

Question

BREAKING CHANGE: implies

Answer

A major version increment.

Question

feat: / fix: imply

Answer

Minor / patch.

Question

Why enforce in PR validation

Answer

An unenforced convention decays and the automation goes wrong silently.

Question

What automation cannot supply

Answer

The why.

Showing 30 of 453 flashcards. Study all flashcards →

Ready to ace Designing and Implementing Microsoft DevOps Solutions (AZ-400)?

Access all 419 practice questions, study notes, and flashcards — no sign-up required.

Start Studying — Free