← Back to list

Exception workflows that keep platform teams sane

A practical Azure governance guide for using exclusions, exemptions, and review cadence without turning edge cases into permanent drift.

Practical IT in System Weakness · 2026-05-02 19:56 · 50 claps · 4.7 min read paywalled
#devsecops #sre #cloud-computing #cybersecurity #microsoft
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud 🔒 · Cybersecurity

Exception workflows that keep platform teams sane

A practical Azure governance guide for using exclusions, exemptions, and review cadence without turning edge cases into permanent drift.

Platform teams rarely burn out because a policy blocked something once. They burn out because every exception becomes a custom negotiation, nobody agrees on the path forward, and temporary carve-outs never leave. A sane workflow gives engineers a real escape hatch while keeping governance trustworthy.

Why exception workflows exist

Good platform governance is not about winning every argument. It is about making the safe path normal, making the risky path visible, and making the temporary path reversible.

That is where exception workflows come in. They are not a loophole for avoiding standards. They are a control for handling real-world edge cases such as legacy workloads on a retirement plan, platform features that have not reached a region yet, or situations where the control intent is met through another method.

The workflow matters because the technical object is only half the story. The rest is ownership, business context, evidence, approval, timeboxing, and a review loop that actually removes old decisions instead of memorializing them forever.

The four controls people usually mix together

Azure gives you several ways to avoid or soften policy enforcement, but they are not interchangeable. Pick the wrong one, and you either hide risk or create extra admin noise.

Azure Policy Controls Comparison

Azure Policy Controls Comparison

Why this distinction matters: excluded scopes are part of the assignment design. Exemptions are explicit exceptions to an assignment. DoNotEnforce is useful for safe rollout, but it is not a substitute for a reviewable exception process.

The opinionated blueprint

Here is the version that keeps work moving without creating policy archaeology six months later.

Figure 1. A sane workflow moves from intake to exit. The review step is what makes the workflow trustworthy.

Figure 1. A sane workflow moves from intake to exit. The review step is what makes the workflow trustworthy.

1) Intake with evidence, not vibes

Start with a request form or ticket that forces the requester to name the policy assignment, scope, affected service, business driver, and target timeline. If they cannot say what they are asking to bypass, they are not ready for an exception.

Make the form ask one painful question: what happens if this is not approved? That separates true delivery blockers from convenience requests.

2) Triage the control choice before you approve anything

The fastest win is stopping teams from using exemptions as the default answer. Sometimes the better move is to narrow the assignment, add a notScope, or switch the rollout to DoNotEnforce while you validate impact. Use exemptions when the assignment is right but a specific case still needs a temporary or alternate path.

This is also where you decide whether the request is a Waiver or Mitigated case. Waiver means accepted non-compliance for now. Mitigated means the control intent is already satisfied through another method and you can prove it.

3) Keep scope narrow and make ownership obvious

Approve at the smallest scope that solves the problem. Do not exempt an entire subscription because one workload is blocked inside one resource group. Name both a business owner and a technical owner. One owns the risk. The other owns the implementation and cleanup.

If you cannot find those owners, stop. Missing ownership is usually a governance smell, not a paperwork issue.

4) Timebox the exception on day one

Waivers should have an expiration unless there is a very strong reason not to. Also set a review cadence before expiry. Expired exceptions should not surprise anyone.

Azure preserves the exemption object for record keeping after expiration, but the exemption is no longer honored. That is useful for audit history, but only if your reporting catches it.

5) Implement it as code and attach the change record

Create the exemption through your approved automation path instead of portal-only clicks. That keeps the request traceable, reviewable, and repeatable across environments. Record the change ticket, approver, and evidence links in metadata so the next reviewer is not starting blind.

If the policy assignment targets an initiative, be precise about whether the exemption applies to the whole initiative or only selected policy definition reference IDs.

6) Review, remove, or redesign the platform path

Every review should end with one of three outcomes: remove the exception, renew it with fresh evidence, or fix the platform so the exception is no longer needed. That last one matters most because repeated exemptions often reveal where the paved road is incomplete.

If the same request appears three times in a quarter, it probably belongs in your platform backlog, not your exception backlog.

The minimum fields every exemption should carry

This is the boring part that saves everyone later. Put these fields in your request form, your repo metadata, or both.

Minimum Fields for Exemption

Minimum Fields for Exemption

Six operator rules that keep the system sane

1. No owner, no exemption

A request without named business and technical owners should stop at triage.

2. Scope narrow or do not approve

Fix one workload, not an entire hierarchy, unless the whole hierarchy is the real problem.

3. Waivers should expire

Permanent waivers need senior scrutiny because they usually signal a standard that is not landing.

4. Mitigated means evidence

If the control intent is met another way, write down how and where that evidence lives.

5. Treat exceptions as code

Portal-only exceptions create drift because they are hard to review, compare, and reapply cleanly.

6. Repeated requests are platform feedback

When the same request keeps coming back, improve the paved road instead of normalizing the detour.

A practical first 30 days

If your current state is messy, do not start by designing the perfect form. Start by getting control of the backlog you already have.

First 30 Days Focus

First 30 Days Focus

Three common patterns and the better answer

Bottom line

The healthiest exception workflow is not the one with the nicest form. It is the one that keeps the paved road strong while giving real projects a controlled, reviewable way around a short-term blocker.

That means clear control selection, narrow scope, named owners, evidence, expiration, and a review loop that removes old decisions. Do those well, and platform teams stay credible. Skip them, and you end up with policy debt disguised as flexibility.


메타데이터
post_id
ed27f2e59e5a
slug
exception-workflows-that-keep-platform-teams-sane-ed27f2e59e5a
url
https://systemweakness.com/exception-workflows-that-keep-platform-teams-sane-ed27f2e59e5a
canonical_url
https://systemweakness.com/exception-workflows-that-keep-platform-teams-sane-ed27f2e59e5a
author_url
https://medium.com/@mrkoozer
status
ok
fetched_at
2026-06-23 06:34:20