Guides · 119
What are you trying to do?
Fix a problem
68The error or symptom in front of you, and the fix.Networking & VMs
Azure virtual network explained for app builders: subnets, private endpoints and DNS in one picture
The Azure virtual network explained for people who build apps, flows and agents rather than networks: what a VNet and its subnets are, how network security groups decide, why a private endpoint needs DNS, the new private-subnet default, and how Power Platform plugs in.
Networking & VMs
"Exceeding approved quota" when you create an Azure VM: which quota, and how to raise it
"Operation could not be completed as it results in exceeding approved quota" means your subscription's vCPU limit for that VM family or region is used up, not that Azure is full. Read which quota the error names, check usage, request the increase, and tell it apart from AllocationFailed and SkuNotAvailable.
Networking & VMs
Azure VM has no outbound internet access: private subnets are the new default
A new Azure VM that can't reach the internet, activate Windows or install updates is usually in a private subnet, which new virtual networks now get by default. How to tell, which explicit way out to add (NAT Gateway for most), and the stop-and-deallocate step people miss.
Networking & VMs
Power Platform virtual network support: the pre-flight checklist for regions, subnets and delegation
Power Platform virtual network support lets plug-ins and connectors reach private Azure resources through a subnet you delegate. Check these before you switch it on: Managed Environments, the paired Azure regions, subnet size, which connectors are supported, DNS, and what happens to calls to the public internet.
Networking & VMs
Private endpoint DNS from on-premises: DNS Private Resolver or a forwarder in Azure
Your VPN or ExpressRoute is up, yet on-premises machines still get the public IP for a private endpoint, because your DNS servers can't reach Azure's resolver. Set up DNS Private Resolver's inbound endpoint and a conditional forwarder, the subnet it needs, and how to test each hop.
Networking & VMs
Private endpoint resolves to a public IP: fix private DNS step by step
When a private endpoint resolves to a public IP, or to NXDOMAIN, the endpoint itself is usually fine and DNS never reached your private zone. Five checks in order, from nslookup to the zone link, the A record and custom DNS servers, with the fix for each.
Copilot Studio
Connect an MCP server to Copilot Studio and give your agent real tools
Model Context Protocol lets one server hand your agent a whole toolbox that stays in sync. How to connect an MCP server in Copilot Studio, pick the right authentication, and the limits and policies that govern it.
Dataverse
Dataverse for Teams is retiring: upgrade your environments before they're deleted
Dataverse for Teams environments are deprecated — unupgraded ones were suspended on September 15, 2026 and are decommissioned on October 30, 2027. How to find yours, upgrade them to Dataverse, and what the upgrade changes.
Governance & admin
Dataverse storage capacity full? Find the culprit and free real space
What to do when the tenant hits its Dataverse storage capacity: read the report, know which of the three storage types is actually full, clean up the tables that balloon, and when buying capacity is the right answer.
Governance & admin
The Power Apps Developer Plan deadline: keep your environment past December 15
Unmanaged developer environments — including the free Power Apps Developer Plan's — are deprecated: suspended from December 15, 2026 and deleted from January 15, 2027. Here is exactly how to keep your work.
Power Apps
Canvas app performance: find what's slow and fix it at the source
The documented causes behind slow canvas app performance — OnStart bloat, N+1 queries, cross-screen references, collection abuse — how to find each with Monitor and App Checker, and the fix Microsoft recommends.
Power Apps
Power Apps offline mode: set up a canvas app that works without a connection
Turn on offline-first for a Dataverse canvas app, build the offline profile that keeps sync fast, and know the hard limits — no SharePoint, no flows, no browsers — before you promise offline to anyone.
Power Apps
Move to the Power Apps grid control before the old grids go away
The Editable Grid and read-only grid controls are deprecated since March 2026. How to find where your model-driven apps still use them and switch each view and subgrid to the Power Apps grid control.
Power BI
Fabric capacity throttling: why reports suddenly crawl, and how surge protection helps
What actually happens when a Fabric capacity overloads — the three throttling stages behind slow reports and rejected refreshes — and how to set surge protection thresholds so background jobs give way before users feel it.
Power BI
Fix "the key didn't match any rows in the table" in Power BI
Power BI's key didn't match any rows in the table error decoded: the three documented causes — a renamed source table, missing privileges, or mixed credentials — and the schema-refresh fix that actually clears it.
Power BI
Build a Gantt chart in Power BI with the new native visual
Power BI's October 2026 update finally ships a Gantt chart as a core visual, in preview. How to turn it on, feed it tasks, milestones and progress, group and colour it, and where its limits are.
Power BI
Power BI write back, finally native: translytical task flows explained
Buttons in a Power BI report that update the database — translytical task flows pair Fabric user data functions with data function buttons and input slicers, so readers can write back without leaving the report.
AI & agents
Azure OpenAI 429 errors: why you're throttled below quota, and how to fix it
A 429 from Azure OpenAI rarely means you're out of quota. The rate limit counts estimated tokens including max_tokens, checks requests in one to ten second windows, and can be cut temporarily on shared capacity. Read the headers, then fix the real cause.
AI & agents
Azure OpenAI content filter errors: handle blocked prompts and cut-off answers
Azure OpenAI's content filter stops a request in two different ways: a 400 for a blocked prompt, and a 200 whose answer was cut. Handle both in code, read the annotations, know what the default guardrail does, and tune it in Foundry instead of fighting it.
AI & agents
Foundry Agent Service: build an agent, and move off the Assistants API
Build a prompt agent in Foundry Agent Service, then follow the migration path from the Azure OpenAI Assistants API: threads become conversations, runs become responses, a tool rewrites most of the code, and a few tools don't carry over.
AI & agents
Microsoft Foundry from zero: deploy a model, set quota and call it safely
Set up Microsoft Foundry from nothing: create the resource and a project, deploy a model with the right deployment type and quota, give your team the roles that actually let them build, and make the first call with Entra ID instead of a key.
Apps & integration
AKS upgrade failed: fix the pod disruption budget and capacity blockers
When an AKS upgrade failed, the cause is almost always a pod disruption budget that allows zero disruptions, two budgets on one pod, or no capacity for surge nodes. Read the UpgradeFailed message, fix the budget or the surge settings, and reconcile the cluster, with the undrainable-node and automatic-budget options for next time.
AI & agents
RAG with Azure AI Search: give your Foundry agent your documents
Ground a Microsoft Foundry agent in your own documents with Azure AI Search: pick between the one-index search tool and a Foundry IQ knowledge base, build a vector index the agent can cite, connect it without keys, and fix the usual no-citations and 403 problems.
Apps & integration
App Service 502 and 503 errors: a diagnosis flow from symptom to fix
App Service 502 and 503 errors nearly always mean the app itself is slow, out of memory or CPU, or crashing on start. This diagnosis flow goes from the first symptom to the fix: check service health, read the metrics, use Diagnose and solve problems and Kudu, then mitigate with scale, auto-heal or a restart.
Apps & integration
Azure Functions .NET in-process model ends on 10 November 2026: the migration checklist
Support for the Azure Functions .NET in-process model ends on 10 November 2026. This migration checklist finds the apps that still use it, converts the project, packages, Program.cs, bindings and logging to the isolated worker model, and deploys through a staging slot without an outage.
Apps & integration
Container Apps deployment failures: ImagePullBackOff, failing probes, the wrong target port and identity 403s
Azure Container Apps deployment failures come from a short list: ImagePullBackOff and registry sign-in, a container that crashes on start, health probes that fail, an ingress target port that doesn't match, empty secrets, and a managed identity without the right role. Here is the symptom table, the fix for each, and the six CLI commands that find the cause.
Data & storage
Azure Blob tiers and a lifecycle management policy without the early-deletion bill
Cool, cold and archive cost less per gigabyte and each has a minimum stay, 30, 90 and 180 days, charged pro rata when a blob is deleted, overwritten or moved earlier. A lifecycle management policy runs once a day and takes up to a day to start. The tier to upload into, the rules that don't bounce blobs back and forth, how last-access tracking works, and what archive really costs in time.
Data & storage
Azure Blob storage 403 not authorized, decoded: permission mismatch, network block, shared key or SAS
Every Blob storage 403 carries a second code that says which of four things refused it: AuthorizationPermissionMismatch (the identity or SAS lacks a data permission), AuthorizationFailure (a firewall, private endpoint or network rule), KeyBasedAuthenticationNotPermitted (shared key is off), or a SAS that's wrong in a field. What each means, the role that fixes it, the waits, and the DNS check most people skip.
Data & storage
Azure SQL serverless: the first connection fails with error 40613, and the auto-pause settings behind it
A paused serverless database answers its first connection with error 40613 and resumes in the background, usually within a minute; everything after that is about retries and the auto-pause delay. The retry settings per driver that ride out the resume, what stops a database pausing at all, how to see the sessions holding it open, and when serverless costs more than provisioned.
Data & storage
Cosmos DB 429 request rate too large: when it is fine, and how to find the hot partition
A 429 from Cosmos DB means one second's request units ran out. If 1 to 5 percent of requests get one and latency is fine, that's a full tank, not a fault, and the SDKs retry up to nine times before your app hears about it. Above that, the cause is total load, a hot partition, metadata calls or a transient error, each with its own fix. The metrics to open, the log query that names the partition key, and what autoscale does and doesn't do.
Data & storage
Power Apps to Azure SQL with Entra ID, not a shared connection: the secure setup
The SQL Server connector signs in four ways and only Microsoft Entra ID Integrated tells the database who the user is; a shared SQL login is client-side security, whatever filters the app has. The setup: an Entra admin on the server, database users from the external provider, row-level security on the signed-in name, secure implicit connections for the apps that must keep a login, and the delegation limits to design around.
Identity & security
Break-glass accounts and Conditional Access without locking yourself out
How to run Conditional Access without ever locking the administrators out: two cloud-only break-glass accounts with passkeys, excluded from blocking policies and alerted on every sign-in; every new policy in report-only mode first and checked with the What If tool; and a quarterly drill so the accounts work on the day they're needed.
Identity & security
Azure mandatory MFA is enforced: fix the scripts, pipelines and service accounts it broke
Azure mandatory MFA now applies to every user account that creates, updates or deletes resources from the CLI, PowerShell, pipelines, IaC tools and the REST API, and the last postponement ended on 1 July 2026. What the errors look like, how to find the user accounts your scripts and pipelines sign in with, and how to move each one to a managed or workload identity.
Identity & security
Azure managed identities explained: connect services without secrets
Azure managed identities explained for people who have to make one work: system-assigned or user-assigned, how the SDK gets a token, what to do on your laptop where there is no managed identity, the role assignment in Bicep that doesn't fail on the first deploy, and the errors with their fixes.
Identity & security
Azure 403 after assigning a role: control plane vs data plane, scopes and propagation
You assigned the role and Azure still says 403. Nearly always one of four things: the role is control plane and the call is data plane, the scope is wrong, the assignment hasn't propagated yet, or a firewall or private endpoint is answering before RBAC does. The data-plane role per service, the waiting times, and how to tell which one you have.
Azure + Power Platform
Deploy Power Platform solutions with Azure DevOps or GitHub
When to build a Power Platform deployment pipeline in Azure DevOps or GitHub instead of pipelines in Power Platform, how to connect it with a service principal, and the four steps every pipeline runs: export, unpack, check and import.
Azure + Power Platform
Azure Function custom connector with Entra ID sign-in, step by step
Call your Azure Function from Power Apps and Power Automate through a custom connector with Entra ID sign-in: two app registrations, the connector's security settings, and the fixes for AADSTS50011 and 401.
Azure + Power Platform
Use a Foundry model in Copilot Studio prompts, and keep it governed
Connect a model you deployed in Microsoft Foundry to a prompt in Copilot Studio, avoid the endpoint and model-version traps, and govern it with data policies and Foundry's content filters.
Azure + Power Platform
Fix "User is not authorized to read secrets" in Key Vault variables
Saving a Secret environment variable fails with "User is not authorized to read secrets". Give you and Dataverse the Key Vault Secrets User role, switch the vault to Azure RBAC, and check the network.
Azure + Power Platform
Alerts for failed Power Automate flows in Application Insights
Send Power Automate telemetry to Application Insights, alert on failed flow runs and actions across an environment, and start from KQL queries for the failures that matter.
Azure + Power Platform
Power Platform pay-as-you-go on Azure: set it up and stay in budget
Power Platform pay-as-you-go bills an environment's app users, premium flow runs and extra Dataverse storage to an Azure subscription. Set up the billing plan, know what each meter counts, and watch the cost in Azure.
Copilot Studio
Call a Copilot Studio agent from Power Automate and pass it the data it needs
Use Execute Agent and wait to send a Copilot Studio agent an email's subject, sender and received time from Power Automate, then act on its reply. Includes JSON replies, follow-up questions, which agents work and the limits.
Power Automate
Change a Power Automate flow's owner when someone leaves
Change the owner of a Power Automate flow when someone leaves, in or out of a solution, and recover orphaned flows whose owner's account is gone. Also covers the leaver's connections, licences, service principal owners and flows made with personal accounts.
Power Apps
Patch a SharePoint Person column from Power Apps, plus Choice and Lookup columns
Power Apps Patch fails on a SharePoint Person column, a Choice or a Lookup because each needs a record, not text. Copy-ready formulas for every complex column, single and multi-select, plus the errors and how to read them.
Power Automate
List rows present in a table only returns 256 rows? Fix it, plus dates and filters
The Excel action List rows present in a table only returns 256 rows by default, shows dates as numbers like 45567, and rejects most filters. Here's how to get every row, real dates and filters that work, and when to stop using Excel.
Power Automate
Power Automate: send email from a shared mailbox, and fix the permission errors
To make Power Automate send email from a shared mailbox, use the shared mailbox action and give the connection's account Send As. Here's the setup, which permission does what, and the fixes for 'You do not have the permission to send the message on behalf of the specified user'.
Copilot Studio
Ground a Copilot Studio agent on Dataverse tables: setup, notes and files, and why it answers generically
Add Dataverse tables as knowledge in Copilot Studio so the agent answers from your own records, with each user seeing only what they're allowed to. The prerequisites, the 15-table limit, notes and attached files (preview), and the fixes when the agent ignores the source.
Copilot Studio
Your first agent: instructions, knowledge and testing
Build a Copilot Studio agent that answers questions from your own content, and test it properly before anyone else sees it. Instructions that work, knowledge that's scoped, and a repeatable test set.
Dataverse
Design your first Dataverse schema
Table names you can't change, an ownership setting you can't undo, and a lookup that reveals names to people who shouldn't see them. The decisions to get right before you create your first Dataverse table, worked through on a real example.
Governance & admin
Why did I get a Dataverse capacity email? What it means and what to do
Weekly 'running low' or 'over capacity' emails about Dataverse storage, often in tenants that never meant to use Dataverse. Where the usage comes from, how borrowing between database, file and log works, what's blocked when you're over, the new sandbox restrictions, and how to get back under.
Power Apps
Delegation in Power Apps: why your gallery stops at 500 rows
Your app shows some records but not others, and there is no error. Here is why delegation causes it, how to spot it, and the formula rewrites that fix it.
Power Apps
Save Power Apps attachments and photos to a SharePoint library
Canvas apps can't write files to a SharePoint library on their own. The pattern that works: a Power Apps (V2) flow with a File input, called with an attachment, a camera photo or a generated PDF. Plus list attachments with no flow, and the Dataverse file column.
Power Automate
502 Bad Gateway and other random failures in Power Automate: retry, wait or report
A flow that worked for months starts failing at random with 502, 500, 503 or 504. How to tell a temporary service problem from your own fault, set retries that actually help, make the flow survive the next outage, and report it with the evidence support needs.
Power Automate
Approvals that don't stall: reminders, escalation and an audit trail
An approval flow with no timeout waits until the run limit kills it, and nobody is told. Here is how to add a deadline, reminders, escalation to a second approver, and a record of every decision.
Power Automate
Desktop flow won't run from the cloud: 'connection not found', session and credential errors fixed
The machine runtime says Connected, but the cloud flow can't run the desktop flow. The checks for machine, connection, session and credentials, and the fix for common error codes such as MachineNotFound, WindowsIdentityIncorrect and AttendedUserSessionNotActive.
Power Automate
Dynamic content missing? Parse JSON, nested arrays and loops explained
Why a field you know exists doesn't appear in the dynamic content picker, why Apply to each appears out of nowhere, and how to read any value from webhook or HTTP JSON with Parse JSON or a safe expression.
Power Automate
Files and attachments in flows: email attachments, Forms uploads and list attachments to SharePoint
Save email attachments, Microsoft Forms uploads and SharePoint list attachments into a library folder. The trigger settings that matter, how to skip signature images, why .msg attachments don't show up, and the fixes for empty files and 400 Bad Request.
Power Automate
Get more than 5,000 SharePoint items in Power Automate
Why Get items returns 100 rows, stops at 5,000 or fails with 'exceeds the list view threshold', and the four fixes in order: Top Count, pagination, indexed columns, and a loop for lists beyond 100,000 items.
Power Automate
Move a cloud flow into a solution, and fix 'missing dependencies' on import
Why flows belong in solutions, how to add existing flows (one at a time or in bulk), what to set up so they deploy cleanly, and how to read and fix 'Import failed due to missing dependencies'.
Power Automate
Restore a deleted flow in Power Automate (cloud and desktop flows)
Deleted a cloud flow by mistake? You have 21 days. How an admin gets it back with a button flow or PowerShell, what to do after it's restored, how to recover a deleted desktop flow, and how to make sure you never need to.
Power Automate
Why didn't my flow trigger? A checklist that finds the cause
Your Power Automate flow is on, the item was created, nothing ran. Ten checks in the order that finds the cause fastest: flow status, run history, trigger conditions, polling delays, connections, data policies, admin mode, licences and suspension rules.
Power BI
Incremental refresh: set it up, and prove it's working
Load only the recent part of a big Power BI table on each refresh. RangeStart and RangeEnd, the policy settings in plain words, the query-folding trap that quietly loads everything, the republishing rule, and four ways to confirm each refresh really is incremental.
Power BI
Move, upgrade or share an on-premises data gateway without breaking refresh
Move a gateway to new servers, add a second member to a cluster, update it month by month, and give people access to the gateway and its connections. Plus why someone 'can't see the gateway', and what to check when it's unreachable.
Power BI
Refresh on your terms: table-level refresh, automatic retries and refreshing from Power Automate
Refresh only the Power BI table that changed, refresh data without pulling in schema changes, retry failed refreshes automatically, and trigger refresh from Power Automate when the data is ready instead of on a fixed clock. With the limits for each.
Power BI
Build a star schema from messy exports
One wide export loaded as one Power BI table works until the report grows. Here is how to split a flat file into fact and dimension tables in Power Query, step by step, so the model stays fast and the numbers stay right.
Power BI
Why are my totals wrong? Filter context explained
Every row in the table looks right and the total doesn't add up. It isn't a bug: Power BI recalculates the total rather than adding the rows. Here is why, and four patterns that make totals behave.
Power Pages
Build your first Power Pages site on Dataverse
Create a Power Pages site that lists, creates and updates Dataverse records for signed-in visitors, with security set up properly from the first page instead of bolted on before launch.
Power Pages
Invite users to a Power Pages site: invitation codes, emails and fixes
Let only the people you choose sign up. Create single or group invitations that assign web roles on redemption, send them, make the site invitation-only so nobody can bypass the code, and fix the usual problems: no email, wrong address, 'email already in use'.
Choose a tool
11Decide before you build.Apps & integration
Azure Functions hosting plans: Flex Consumption, Premium or Consumption, and leaving Linux Consumption by 2028
Which Azure Functions hosting plan to pick in 2026: Flex Consumption is the serverless default, Premium is for always-warm or long-running apps, Consumption is legacy and its Linux form retires on 30 September 2028. With the limits that decide it, and the migration to Flex Consumption step by step.
Apps & integration
Where should my code run on Azure? App Service vs Functions vs Container Apps vs AKS
App Service vs Functions vs Container Apps vs AKS, decided in four questions: do you have an existing app to move, is the work event-driven, do you ship containers, and do you need the Kubernetes API. With Microsoft's own tables on skills, scale, networking and cost, and the mistakes each choice invites.
Data & storage
Which Azure data store? Azure SQL, Cosmos DB, Blob Storage, PostgreSQL, or Dataverse and Fabric
Azure SQL vs Cosmos DB is the question people type, and it's rarely the one that decides it. Four questions do: does Power Apps own the data (then it's Dataverse), is it files or rows, are the rows relational or documents at global scale, and is this really analytics (then it's Fabric). The answer to each, a comparison table, and the traps.
Azure + Power Platform
Dataverse to Fabric: Link to Fabric or Azure Synapse Link
Get Dataverse data into Fabric with Link to Fabric or Azure Synapse Link: what each one copies and costs, which to choose, and what the Delta Lake export closing to new customers on 15 October 2026 means for you.
Azure + Power Platform
Logic Apps vs Power Automate: which to use, with limits and licensing
Logic Apps vs Power Automate: the same designer, different owners, limits, licensing and lifecycle. A decision table, the hard limits side by side, and when to use both together.
Copilot Studio
Knowledge sources compared: SharePoint, websites, Dataverse and files
Where a Copilot Studio agent gets its answers decides who can see what, how fresh the answers are, and how much you have to maintain. A side-by-side comparison of the main knowledge sources and when to use each.
Dataverse
Dataverse or SharePoint lists? An honest comparison
SharePoint lists are free with Microsoft 365 and quick to start. Dataverse costs more and does far more. Where each one wins, where lists quietly break down, and how to decide before you build.
Power Apps
Canvas app or model-driven app? A decision guide
Canvas apps give you full control of the screen, and model-driven apps give you speed and consistency on Dataverse. Five questions to pick the right one, plus when to use both.
Power Automate
Cloud flow, agent flow or desktop flow? Which one to build
Three kinds of flow, three ways to pay. What each is for, how it's licensed or billed, what it can't do, and a quick way to pick: connectors and APIs, an agent's tools, or clicking through an app that has no API.
Power Automate
Cloud flows or Azure Logic Apps?
Power Automate and Azure Logic Apps share a designer and many connectors, but they're built for different owners, scales and controls. How to choose, and when to move a flow across.
Power Pages
Power Pages or a SharePoint site?
SharePoint is for your organisation and the guests it invites; Power Pages is for the public and for external users at scale. How to tell which you need, what each one costs, and when you need both.
Design patterns
12Structures that hold up as things grow.Identity & security
Azure access in one picture: Entra ID, RBAC and managed identities
Azure access has three parts that people mix up: Entra ID says who you are, Azure RBAC says what you may do and at what scope, and managed identities let your services do it without secrets. One picture, the two kinds of role, the two planes, and the five places access goes wrong.
Azure + Power Platform
When your Power Platform solution needs Azure: the services worth knowing
Power Platform and Azure integration on one page: which Azure service to reach for when an app, flow or agent outgrows the platform, from custom connectors and Key Vault to private networks, events, search, monitoring, billing and deployment.
Copilot Studio
Grounding an agent safely: what to connect and what to keep out
A Copilot Studio agent doesn't create new access, but it makes existing access easy to use. Oversharing that nobody noticed in SharePoint becomes an answer anyone can ask for. A pattern for connecting knowledge and tools without leaking what shouldn't leak.
Dataverse
Security roles, business units and teams without the tangle
Dataverse security is powerful and easy to get into a knot. A pattern for roles, business units and teams that gives each person exactly the access they need, stays readable as the organisation grows, and avoids the one mistake you can't undo.
Power Apps
Named formulas and components: a structure that scales
Most slow, fragile Power Apps canvas apps share one cause: everything lives in App.OnStart and copied controls. Here is a structure built on named formulas, user-defined functions and a component library.
Power Automate
Child flows that fail well: inputs, results, errors and connections
Child flow error handling that works: split a big flow without losing track of failures. Set up the child so it always reports back, let the parent decide what to do, avoid the 'child workflows only support embedded connections' error, and license it correctly.
Power Automate
Reminder emails for items due soon: a daily flow that gets dates right
Send a reminder a set number of days before a SharePoint due date. A daily scheduled flow that works in your time zone, filters the list efficiently, avoids double-sending, and can send one digest per person instead of a flood of emails.
Power Automate
Try, catch and finally: error handling with scopes
In Power Automate, a failed action just stops the flow by default, and the owner may never hear about it. The try-catch-finally pattern with scopes makes every failure visible, logged and handled.
Power Automate
UI elements that survive changes: robust selectors for desktop flows
UI element not found in a Power Automate desktop flow after an app update, a new window title or a different screen? Make selectors that keep working: find what changes, remove the dynamic parts, add fallback selectors, wait for the screen, and repair quickly when it does break.
Power BI
Dynamic row-level security with USERPRINCIPALNAME that actually filters
Dynamic row-level security in Power BI: one role, and every user sees only their rows. Build the user-mapping table, put the filter on the right table, avoid the bidirectional trap, assign people in the service, and test it properly, including guest users and why 'Test as role' can fool you.
Power BI
One semantic model, many reports
When every report brings its own copy of the data, every report defines revenue a little differently. One shared semantic model for multiple reports fixes that. Here is how to set one up, let people build on it, and keep it trustworthy.
Power Pages
Web roles and table permissions: securing portal data
On a Power Pages site, Dataverse security roles don't protect your data; web roles and table permissions do. A pattern for deciding who can see and change which records, and the shortcuts that quietly expose everything.
Measure
6Know whether it's working.Copilot Studio
Agent KPIs: resolution rate, escalation rate and answer quality
Session counts show an agent is being used, not that it helps. How Copilot Studio defines resolution, escalation and abandonment, the traps in those definitions, and how to measure answer quality and value honestly.
Dataverse
Data quality KPIs: completeness, duplicates and freshness
Every report and agent built on Dataverse is only as good as the rows underneath it. Four KPIs that show whether the data can be trusted, how to measure each one, and which Dataverse features stop the problems at the source.
Power Apps
Measuring Power Apps adoption: users, retention and time saved
Launches and active users tell you an app was opened, not that it helped. Six KPIs that show whether a Power Apps app is adopted and worth it, where each number comes from, and how to report time saved honestly.
Power Automate
Flow health KPIs: success rate, failure causes and hours saved
A flow that fails quietly costs more than no flow at all. Five KPIs that show whether your automations are healthy and paying off, where to get each number, and the traps in the built-in reports.
Power BI
Designing a KPI card: target, trend and context
A big number on its own tells people nothing: they can't tell if 1.2M is good. A Power BI KPI card needs a target, a trend and enough context to read it correctly. Here is how to design one in Power BI, with the DAX behind it.
Power Pages
Portal KPIs: sign-ups, self-service rate and form completion
A portal is worth having if it takes work off the team behind it. Five KPIs that show whether a Power Pages site is doing that, where each number comes from, and why your analytics and your licence report will never quite agree.
Quick reference
22Error codes, limits and cheat sheets to keep open.Governance & admin
Microsoft Copilot licensing explained: Copilot Chat, the $30 add-on, Copilot Studio and what E3/E5 already include
Every Copilot licence untangled — what Microsoft 365 E3 and E5 users get at no extra cost, what the $30 Microsoft 365 Copilot add-on actually adds, how Copilot Studio's credits, trials and the viral trial work, and which option costs more for your usage.
Governance & admin
Power Apps licensing explained: Premium, per app, pay-as-you-go and the Microsoft 365 trap
Which licence a Power Apps user actually needs, what the Microsoft 365 rights really cover, what changed with the per app plan — and the February 2027 enforcement date that will lock unlicensed users out.
Governance & admin
What is Microsoft Agent 365? The control plane for your organisation's AI agents
Agents are multiplying faster than governance. Microsoft Agent 365 is the registry and control plane that observes, governs and secures them — what it does, who needs the licence, and what admins can see without one.
Power Apps
Power Apps interview questions (2026): clear answers, examples and follow-ups
Power Apps interview questions for 2026, each with a 30-second answer, the detail a strong answer adds and a likely follow-up. Covers delegation, forms, performance, ALM, scenario and behavioural questions, and what changed in 2026.
Power Automate
Power Automate interview questions (2026): answers, expressions and scenarios
Power Automate interview questions with answers you could give out loud, the reasoning behind them and the likely follow-up. Covers triggers, expressions, loops and limits, error handling, approvals, solutions, desktop flows, scenarios and 2026 changes.
Power Automate
Power Automate licensing explained: Premium, Process, and what Microsoft 365 includes
Which licence a flow actually runs under — the user's seed, Premium, or a Process licence on the flow itself — plus the RPA bot entitlements and the legacy plans to stop renewing.
Power BI
Power BI licensing: Free vs Pro vs Premium Per User vs Fabric capacity
Who needs which Power BI licence — Free, Pro or Premium Per User — when a Fabric capacity changes the answer, and the F64 threshold that lets viewers stay free.
AI & agents
Microsoft Foundry for people who learned Azure OpenAI: what changed and what to migrate
A migration map from Azure OpenAI to Microsoft Foundry: every renamed thing side by side, the retirement dates that matter (the Assistants API, the azure-ai-inference package, stored completions), what to change in your code and resources, and what you can leave alone.
Identity & security
AADSTS sign-in errors decoded: the codes you'll actually meet
Microsoft's list of AADSTS sign-in errors runs to hundreds of codes. These are the thirty or so that appear in real apps, connectors and pipelines, grouped by what's wrong (the app registration, consent, the credential, the user, MFA and Conditional Access, federated credentials), each with the cause and the one fix.
Copilot Studio
Copilot Studio licensing and Copilot Credits: who needs a licence, and what uses credits
Makers need a licence; the people chatting with your agent usually don't. How Copilot Credits are bought and spent, what each feature costs, what's free for Microsoft 365 Copilot users, how the GitHub Copilot harness bills differently, and what happens when credits run out.
Copilot Studio
Copilot Studio knowledge: limits, sign-in rules and why the agent finds nothing
Every knowledge-source limit in one place (websites, SharePoint, files, Dataverse), the sign-in setting each channel needs, and a checklist for when an agent answers 'I don't know' or won't publish.
Dataverse
Dataverse access cheat sheet: privileges, access levels and 'missing privilege' errors
How Dataverse decides whether someone can see or change a row, what each privilege and access level really grants, and the fix for every common access error, from 'missing privilege' to 'can't open the environment'.
Governance & admin
Data policy (DLP) checklist: design, roll out and support Power Platform data policies
How Power Platform data policies decide what makers can connect, the rules that surprise admins (combined policies, unblockable connectors, HTTP and child flows), a safe rollout checklist, and what to do when a policy suspends a flow.
Power Apps
Delegation cheat sheet: what works on SharePoint, Dataverse and SQL Server
Which Power Apps functions and operators run on the data source, and which quietly stop at 500 rows, for SharePoint, Dataverse and SQL Server, with the delegable rewrite for each common trap.
Power Automate
Approval actions compared: start and wait, create plus wait, types, sequential and parallel
Which approval action and approval type to use, what each one waits for, what outputs you get, and the limits that trip people up: attachments, Markdown in Teams, the same approver twice, and flows stuck between create and wait.
Power Automate
Cloud flow error codes: what each one means and how to fix it
Every common Power Automate error, from 401 and 429 to ExpressionEvaluationFailed and FlowRunQuotaExceeded: what it means, how to confirm the cause in run history, the fix, and how to stop it happening again.
Power Automate
OData filter query cheat sheet for SharePoint, Dataverse and SQL Server
Copy-ready filter queries for Get items (SharePoint), List rows (Dataverse) and Get rows (SQL Server): operators, text, dates, lookups and choices, what each source doesn't support, and the errors that mean your syntax is off.
Power BI
Power BI permissions cheat sheet: workspace roles, apps, Read and Build
Who can see, edit, share and build on what. Workspace roles side by side, the four semantic model permissions, how apps and sharing grant access, what RLS does and doesn't restrict, and answers to the questions people ask every week.
Power BI
Refresh failed: a Power BI checklist from first look to fix
Why a Power BI semantic model stops refreshing, in the order to check it: credentials, gateway, privacy levels, time-outs, size limits and paused schedules, with the fix for each and the limits that cause them.
Power Pages
Power Pages licensing explained: who counts as an authenticated or anonymous user
How Power Pages counts users each month, who is never counted, and how internal staff with Power Apps or Dynamics 365 licences are handled. Plus subscription packs versus pay-as-you-go, the pages and visitors that are exempt, and where to watch consumption.
Power Pages
Power Pages Web API cheat sheet: setup, site settings, the wildcard change and error codes
Everything to make /_api calls work: the site settings per table, why Webapi/<table>/fields = * stopped working on 14 September 2026 and how to fix it, the CSRF token wrapper, table permissions, what the Web API can't do, and every status and error code with its fix.
Power Pages
Power Pages data security checklist: table permissions, web roles and sign-in
A pre-launch and troubleshooting checklist for Power Pages: the access types and privileges in table permissions, the settings that leave data open to anonymous visitors, and the fixes for common sign-in and permission errors.