The SPGuides IT desk lead asked me how many service requests were still open, and nobody could answer. The status lived in a text column where people typed Open, open, OPEN and Opened, so every count disagreed.
In this tutorial, we’ll create a Dataverse choice column on a Service Request table, then build a canvas app that shows the choice text, fills a dropdown with Choices(), filters by a choice, and saves single and multi-select choices with Patch() and an edit form.
We’ll also hit the Status name clash that breaks most choice formulas, plus errors, delegation, Power BI and formula columns. Here’s what we’re building, filtered to In Progress:

The gallery lists each request with its status, the dropdown filters by any status option, and the Close button and Affected Systems combo box write choices back to Dataverse.
Choice vs Choices, and Local vs Global Choices
If Dataverse is new to you, start with what Microsoft Dataverse is. A choice column (formerly called an option set or picklist) holds one value from a fixed list. Dataverse stores a number behind each label, so every filter and report agrees on what Open means.
A choices column is the same thing with Selecting multiple choices is allowed turned on, so a row can hold several values.
| Type | What it stores | Use it for |
|---|---|---|
| Choice (single) | One option, stored as a number with a text label | Status, Priority, Region |
| Choices (multi-select) | Several options from the same list | Affected systems, skills, tags |
| Local choice | Options that belong to one column on one table | Lists only one table needs |
| Global (synced) choice | One shared option list that many columns reuse | Departments used across tables |
| Yes/No | Two options backed by true/false | Approved, Active |
Decide on multi-select when you create the column; I add a second column rather than converting a live one. If users need to add their own values, or each value needs extra fields, use a lookup to another table instead.
Before You Start
You need a Power Apps environment with Dataverse and the Environment Maker or System Customizer role. I’m using a developer environment named Power Platform. The demo table is Service Request (Power Apps Studio calls it Service Requests, the plural name):
| Column | Type | Notes |
|---|---|---|
| Subject | Single line of text | Primary column |
| Status (cr85a_status) | Choice (local) | Open, In Progress, Closed |
| Priority | Choice (local) | Low, Medium, High |
| Affected Systems | Choices (multi-select, local) | Email, VPN, Laptop, Printer |
Sample rows, logged in October 2026: Network Issue (In Progress), Hardware Repair (In Progress), Login Issue (Closed), Password Reset (Open) and Software Update (Open).
One warning before you name anything: every Dataverse table al