Build a Case Management App with Power Apps
Design a model-driven app with Dataverse tables, a business process flow, and business rules.
Introduction
30 Second Summary
Every support team deals with the same chaos. Cases come in, some get lost, and critical ones sit untouched because nobody knew which stage they were at.
In this project, you will build a Case Management app in Microsoft Power Apps that tracks, prioritizes, and resolves customer cases through a guided multi-stage process.
What You'll Build
You will open your finished app in the browser, create a new case, and watch a visual stage bar guide you from Intake through Investigation to Resolution while business rules automatically enforce data quality along the way.
By the end of this project, you'll have:
- A model-driven app where you create case records, assign priorities, and track each case through a three-stage resolution process.
- A business process flow bar at the top of every case that blocks advancement to the next stage until required fields are filled in.
- A business rule that automatically marks Resolution Notes as required the moment you set a case's status to Resolved. No code needed.
- Secret Mission: Build a dashboard with a chart that shows case distribution by priority and status at a glance.
Are there any prerequisites?
You need a work or school email address backed by Microsoft Entra ID to sign up for the Power Apps 30-day trial. A personal Gmail or Outlook.com address will not work.
Basic familiarity with database concepts (tables, columns, relationships) is helpful but not strictly required.
Before We Start
Before we dive in, let's lock in what you're about to build and why it matters. This step is your chance to articulate the goal before any hands-on work begins.
Sign Up and Create Your Solution
Every model-driven app lives inside a Power Apps environment backed by Dataverse. Without an environment and a database, there is nowhere to store your tables, business logic, or the app itself.
In this step, you will sign up for a free Power Apps trial and create a solution container called "Case Management." The solution groups all your components together so they are easy to manage, export, and move between environments.
In this step, get ready to:
- Sign up for the Power Apps 30-day trial.
- Create a "Case Management" solution using the CDS Default Publisher.
- Confirm the solution is empty and ready for components.
Sign up for the Power Apps trial
Power Apps offers a free 30-day trial that gives you full access to model-driven apps and Dataverse. You need a work or school email backed by Microsoft Entra ID to activate the trial.
- Open your browser and navigate to powerapps.microsoft.com.
- Select Try free on the page.
- Enter your work or school email address and select Submit.
- If Power Apps recognizes your organizational credentials, follow the prompts to finish signing in.
- Once signed in, you will land on the Power Apps home page at make.powerapps.com.
What is a Power Apps environment?
An environment is an isolated space that stores your apps, tables, flows, and data. Each environment can have its own Dataverse database. You can think of it like a project workspace where everything for one initiative lives together.
- Confirm you have a Dataverse-enabled environment by selecting the environment picker in the top-right area of the page.
- If you see a prompt that says Need your own environment?, select Try it now to create a developer environment with Dataverse.
- Once your environment is ready, you should see it listed in the environment picker with a Dataverse database attached.
Can't sign up or seeing an error?
Personal email addresses (Gmail, Outlook.com, Hotmail) cannot be used for the Power Apps trial. You need a work or school email backed by Microsoft Entra ID.
If your organization has disabled self-service trials, contact your IT administrator to request a Power Apps license. Help me troubleshoot my Power Apps sign-up issue.
Create your Case Management solution
A solution in Power Apps is a container that packages tables, apps, flows, and other components into one transportable unit. Building inside a solution is the recommended practice for any real project.
- In the left navigation pane of make.powerapps.com, select Solutions. If you do not see it, select the ...More menu and then select Solutions.
- Select New solution on the command bar.
- In the Display name field, enter Case Management.
- In the Publisher dropdown, select CDS Default Publisher.
- Select Create.
Why use a solution instead of the default?
The default solution in Power Apps cannot be exported to other environments. By creating your own solution, you keep all your components in one portable package. This makes it easy to back up your work, migrate it, or share it with a team.
Confirm your solution is empty and ready
Before you build anything, take a moment to verify the solution exists and is in the right state.
- In the Solutions list, locate your Case Management solution and select it to open it.
What do you expect to see inside the solution right now?
You should see an empty components list with no tables, apps, or flows. This is correct. You have a clean container ready to receive the custom tables and logic you will build in the next steps.
Don't see your solution in the list?
Make sure you are in the correct environment by checking the environment picker in the top-right corner. Solutions are environment-specific, so switching environments will show a different list.
If you accidentally closed the creation pane without selecting Create, the solution was not saved. Select New solution again and repeat the steps. Help me find my missing solution.
Your environment is ready and your solution container is in place. Next up, you will build the data model that powers your Case Management app.
Build the Data Model in Dataverse
A model-driven app draws its forms, views, and logic directly from the data layer beneath it. Without well-defined tables and relationships, the app has nothing to display or guide users through.
In this step you will create two custom tables (Case and Contact), add columns that capture the information a support team needs, and link the tables with a relationship so every case points back to a customer.
In this step, get ready to:
- Create the Case and Contact tables inside your solution.
- Add priority, status, category, description, and resolution notes columns to the Case table.
- Link Contact to Case with a lookup relationship.
Create the Case and Contact tables
Every piece of data your app manages lives in a Dataverse table. You need a Case table to store support requests and a Contact table to store the people who submit them.
- Inside the Case Management solution, select New on the command bar, then select Table, then select Set advanced properties.
- In the Properties tab, set Display name to Case.
- Set Plural display name to Cases.
- Expand Advanced options.
- Set Record ownership to User or team.
- Select the Business process flows (fields will be created) checkbox.
- Select Save.
Why enable business process flows now?
This checkbox adds system columns that a business process flow needs to attach to the table. You cannot undo this setting after saving, but you will need it in a later step when you build the Case Resolution Process.
Your Case table now appears in the solution. Repeat the same process for the Contact table.
- Return to your solution by selecting Case Management in the breadcrumb at the top of the page.
- Select New on the command bar, then Table, then Set advanced properties.
- Set Display name to Contact.
- Set Plural display name to Contacts.
- Expand Advanced options.
- Set Record ownership to User or team.
- Select the Business process flows (fields will be created) checkbox.
- Select Save.
Return to your solution. You should now see both the Case and Contact tables listed as components.
Don't see both tables in the solution?
Make sure you created each table from inside the Case Management solution (not from the top-level Tables area). Tables created outside a solution are not automatically added to it.
If a table is missing, open your solution, select Add existing, then Table, and add the missing table.
Help me add my tables to the solution.
Add columns to the Case table
The Case table needs columns that capture the priority, status, category, description, and resolution notes for each support request.
- Open the Case table from your solution.
- In the Schema area, select Columns.
- Select New column on the command bar.
Start with the Priority column.
- Set Display name to Priority.
- Set Data type to Choice.
- Under the choice options, select New choice and add four items: Low, Medium, High, Critical.
- Select Save.
The Priority column now appears in the Columns list. Create the Status column next.
- Select New column again.
- Set Display name to Status.
- Set Data type to Choice.
- Add four items: New, In Progress, Resolved, Closed.
- Select Save.
Now create the Category column.
- Select New column.
- Set Display name to Category.
- Set Data type to Choice.
- Add three items: Billing, Technical, General.
- Select Save.
Three choice columns down. Confirm they all appear in the Columns list before continuing.
Now add two text columns for freeform input.
- Select New column.
- Set Display name to Description.
- Set Data type to Text, then change the format to Multiple lines of text.
- Select Save.
- Select New column one more time.
- Set Display name to Resolution Notes.
- Set Data type to Text, then change the format to Multiple lines of text.
- Select Save.
You should now see Priority, Status, Category, Description, and Resolution Notes listed under Columns (alongside the system-generated columns like Name and Created On).
What does each column represent?
- Priority tells the team how urgent the case is (Low through Critical).
- Status tracks where the case sits in its lifecycle (New, In Progress, Resolved, Closed).
- Category groups cases by topic so the team can route them.
- Description captures the customer's problem in their own words.
- Resolution Notes documents how the case was resolved.
Column not appearing after save?
Refresh the browser page and check the Columns list again. If you accidentally set the wrong data type, you cannot change it after saving. Delete the column and recreate it with the correct type.
Help me fix a column with the wrong data type.
Create the Contact-to-Case relationship
Each case is filed by a customer. A lookup column on the Case table creates a one-to-many relationship where one Contact can have many Cases.
- While still in the Case table, select Relationships in the Schema area.
- Select New relationship on the command bar, then select Many-to-one.
- In the relationship panel, set Related (One) table to Contact.
- Change the Lookup column display name to Customer.
- Select Done.
- Select Save table to persist the relationship.
What is a many-to-one relationship?
Choosing Many-to-one from the Case table means many Case records can point to one Contact record. This is the same as a one-to-many from Contact to Case.
The relationship automatically adds a Lookup column (named Customer) to the Case table. When a user creates a Case, they pick the related Contact from a dropdown.
Before you move on, verify the full data model is in place.
What do you expect to see when you open the Case table's Columns tab and Relationships tab?
- Open the Case table and select Columns.
- Confirm you see Priority, Status, Category, Description, Resolution Notes, and Customer in the list.
- Select Relationships in the Schema area.
- Confirm the Contact-to-Case relationship (with the Customer lookup column) appears.
Customer column not showing?
Return to Relationships and check whether the relationship was saved. If you selected Done but did not select Save table, the relationship was discarded. Recreate it and make sure to save.
Help me fix my missing Customer lookup column.
Your data model is complete. Next up, you will build the model-driven app on top of these tables and see the auto-generated forms and views come to life.
Create the Model-Driven App and Test the Barebones Version
You have two custom tables and a relationship connecting them. That is enough to spin up a working app.
In this step you will create a model-driven app, wire it to your tables, and test it. The app will technically work. But you will notice a gap: there is nothing stopping a user from skipping steps or saving incomplete data.
In this step, get ready to:
- Create a model-driven app called Case Manager inside your solution.
- Add Dataverse table pages for Case and Contact.
- Publish, run, and test the app by creating sample records.
Create the model-driven app
A model-driven app auto-generates responsive forms and views from your data model. You point it at your tables and it builds the UI for you.
- Return to your Case Management solution in make.powerapps.com.
- Select New on the command bar.
- Select App, then select Model-driven app.
- In the Name field, enter Case Manager.
- Select Create.
The app designer loads with an empty canvas and a command bar at the top.
What is the app designer?
The app designer is Power Apps' visual builder for model-driven apps. The left pane shows your pages and navigation. The centre shows a live preview of your app. The command bar gives you Add page, Save, Publish, and Play actions.
Add table pages for Case and Contact
Each Dataverse table page gives your app two things: a view (the record list) and a form (for creating and editing individual records).
- Select Add page on the command bar.
- Select Dataverse table, then select Next.
- From the list of tables, select Case and Contact.
- Select Add.
The left Pages pane now shows both tables under Navigation. The preview pane updates to display the Case table view.
Why both tables in one step?
The app designer lets you multi-select tables when adding pages. Both arrive with their default views and forms already configured, so there is nothing extra to set up.
Publish and test the barebones app
Your app exists in the designer, but it is not yet runnable. Publishing makes it available to play.
- Select Save on the command bar.
- Select Publish on the command bar.
- Select Play on the command bar. The app opens in a new browser tab.
You should see the Case table's Active Cases view. The left navigation lists both Cases and Contacts.
- Create a sample Contact record by selecting Contacts in the left navigation, then selecting + New.
- Enter a first name and last name, then select Save & Close.
- Create a sample Case record by selecting Cases in the left navigation, then selecting + New.
- Fill in Priority, Status, Category, Description, and the Customer lookup (choose the Contact you just created).
- Select Save & Close.
Before you move on, take a look at the top of the Case form. Do you see any kind of guided process bar?
You do not. There is no visual guidance telling a user which steps to complete or in what order. There is also nothing stopping someone from setting Status to Resolved and leaving Resolution Notes empty. The app works, but it has gaps.
Why does this matter?
In a real support team, an unguided form leads to incomplete data. Agents skip fields, jump straight to resolution, or forget to record key details. The next two steps add a business process flow and a business rule to close these gaps automatically.
App not loading or showing an error?
Make sure you selected both Save and Publish before selecting Play. The Play button only works after the app is published.
If you see a permissions error, confirm your user has a System Customizer or Environment Maker security role in this environment.
Why can't I play my model-driven app?
Your app is live and functional. Next up, you will add a business process flow that puts a guided stage bar at the top of every Case record, walking users from Intake through Investigation to Resolution.
Add a Business Process Flow
In the previous step, you published a working Case Manager app. You can create records and fill in columns. But there is nothing stopping users from skipping steps or entering incomplete data.
A business process flow solves this by adding a visual stage bar at the top of the form. It walks users through a defined sequence from Intake through Investigation to Resolution, and required steps at each stage block advancement until they are filled in.
In this step, get ready to:
- Create a business process flow in your solution.
- Configure three stages with required steps.
- Activate the flow and verify the stage bar appears on Case records.
Create the business process flow
You will create a new process inside your solution that is linked to the Case table.
- Return to your Case Management solution in make.powerapps.com.
- Select New on the command bar.
- Select Automation.
- Select Process.
- Select Business process flow.
- In the dialog that appears, enter Case Resolution Process as the Display name.
- In the Table dropdown, select your Case table.
- Select Create.
The BPF designer opens with a single default stage already on the canvas.
What is the BPF designer?
The designer is a visual canvas where you drag and drop Stage and Step components to build your process. The Components tab on the right provides the building blocks, and the Properties tab lets you configure each one.
Configure the three stages
You will rename the default stage to Intake, then add two more stages for Investigation and Resolution. Each stage gets required steps that map to columns on the Case table.
- Select the default stage that is already on the canvas.
- In the Properties tab on the right, set the Display Name to Intake.
- Select Apply.
- Select Details in the lower-right corner of the Intake stage to expand its steps.
- Drag a Step component from the Components tab into the Intake stage.
- Select the new step and set its Display Name to Customer.
- In the Data Field dropdown, select the Customer lookup column.
- Check Required, then select Apply.
- Drag a second Step component into the Intake stage.
- Set Display Name to Category, select the Category column from the Data Field dropdown, check Required, and select Apply.
You should now see the Intake stage with two steps listed beneath it. Next you will add the Investigation stage.
- Drag a Stage component from the Components tab and drop it on the + sign to the right of the Intake stage.
- Select the new stage, set Display Name to Investigation, and select Apply.
- Select Details on the Investigation stage.
- Add a Step with Display Name set to Priority, Data Field set to the Priority column, Required checked, then select Apply.
- Add another Step with Display Name set to Description, Data Field set to the Description column, Required checked, then select Apply.
Two stages are now visible on the canvas. Time to add the final Resolution stage.
- Drag another Stage component onto the + sign to the right of the Investigation stage.
- Set Display Name to Resolution and select Apply.
- Select Details on the Resolution stage.
- Add a Step with Display Name set to Status, Data Field set to the Status column, Required checked, then select Apply.
- Add a final Step with Display Name set to Resolution Notes, Data Field set to the Resolution Notes column, Required checked, then select Apply.
What is stage-gating?
When you mark a step as Required, users cannot advance to the next stage until they fill in that column. This is called stage-gating. It ensures that critical information is captured at each phase before moving forward.
Activate the flow and verify it in the app
The BPF is currently in a draft state. You need to validate and activate it before it appears on Case records.
- Select Validate on the action bar at the top of the designer.
- Confirm there are no errors. If validation passes, you will see a success message.
- Select Activate on the action bar.
- In the confirmation dialog, select Activate again to confirm.
Your business process flow is now live. The next thing to do is republish the app and test it.
- Navigate back to your Case Management solution.
- Open the Case Manager app in the app designer.
- Select Publish to republish the app with the new BPF included.
Before you open the app to test, think about this: what do you expect to see at the top of a new Case record now that the BPF is activated?
- Select Play to run the app.
- Select + New to create a new Case record.
The business process flow bar appears at the top of the form with three stages: Intake, Investigation, and Resolution. The Intake stage is active and shows the Customer and Category steps.
- Try selecting Next Stage without filling in the Customer and Category fields.
The stage blocks you from advancing because the required steps are not filled in. This is the stage-gating in action.
Don't see the stage bar on the Case form?
- Make sure the BPF is activated, not still in draft. Return to the solution, open the Case Resolution Process, and check its status.
- Confirm you republished the Case Manager app after activating the BPF.
- Try closing and reopening the app, or clear your browser cache and reload the page.
Still stuck? Why isn't my business process flow showing on the Case form?
Your Case Manager app now guides users through a structured process. In the next step, you will add a business rule that enforces field-level logic the BPF alone cannot cover.
Add a Business Rule
Your business process flow now guides users through three clear stages. But the BPF only enforces requirements within its own stage bar.
If a user directly changes the Status field on the form to "Resolved" without advancing through the BPF stages, nothing stops them from leaving Resolution Notes empty. A business rule catches this gap by enforcing field-level logic regardless of how the user navigates the form.
In this step, get ready to:
- Create a business rule on the Case table.
- Configure a condition and action that enforce Resolution Notes when Status equals Resolved.
- Activate and test the rule in your app.
Create a new business rule
The business rule lives on the Case table itself. You create it from within your solution so it stays packaged with all your other components.
- In make.powerapps.com, select Solutions on the left navigation pane.
- Open your Case Management solution.
- Select the Case table to open it.
- Select New, then under Customizations, select Business rule.
The business rule designer opens in a new window with a single condition already created for you.
What is a business rule?
A business rule lets you apply form logic (making fields required, showing or hiding them, setting values) without writing any code. The rule evaluates a condition every time a record is opened or a field value changes, then fires an action if the condition is met.
Configure the condition and action
You need to name the rule, set its scope, define what triggers it, and tell it what to do when the condition is true.
- In the top-right Properties pane, set the Business Rule Name to Require Resolution Notes.
- Set the Scope dropdown to Entity.
- Select the Condition component on the designer canvas (it already exists by default).
- In the Properties tab on the right, set Field to Status, Operator to Equals, and Value to Resolved.
- Select Apply.
Now add the action that fires when this condition is met.
- From the Components tab, drag an Action component to the plus sign next to the checkmark on your condition (this is the "true" path).
- Select the new Action component on the canvas.
- In the Properties tab, set Type to Set Business Required.
- Set Field to Resolution Notes.
- Select Apply.
Why set scope to Entity?
Entity scope means the rule runs on all forms AND on the server side. This ensures the logic is enforced even if a different form or an API call updates the record. Form-level scope would only protect the specific form you choose.
Validate, save, and activate the rule
The rule is configured but not yet live. You need to validate it for errors, save it, and then activate it from outside the designer.
- Select Validate on the action bar at the top of the designer.
- Confirm you see a success message with no errors.
- Select Save on the action bar.
Why can't I activate from the designer?
Power Apps requires you to activate business rules from the Solution Explorer window, not from within the designer. After saving, you need to close the designer and return to your solution to activate the rule.
- Close the business rule designer tab or window to return to your solution.
- In the Solution Explorer window, find your Require Resolution Notes business rule in the list.
- Select the rule, then select Activate.
- Confirm the activation when prompted.
Your rule is now active. Time to test it.
Don't see the Activate option?
Make sure you saved the rule before closing the designer. If the rule does not appear in the solution component list, re-open the Case table in your solution and look under the Business rules area.
Why can't I find my business rule to activate it?
Test the business rule in your app
The real proof is whether the rule blocks a save when it should. You will set Status to Resolved and try to save without filling Resolution Notes.
- Open your Case Manager app by selecting Play from your solution.
- Open an existing Case record (or create a new one).
- Change the Status field to Resolved.
- Leave Resolution Notes empty.
Before you try to save, what do you think will happen? Will the record save successfully, or will something block it?
- Select Save.
The form displays a validation error on the Resolution Notes field, preventing the save. The field is now marked as required because Status equals Resolved.
- Now change Status back to New or In Progress.
- Confirm that Resolution Notes is no longer required (the red asterisk disappears).
What just happened?
The business rule evaluates the Status field in real time. When Status equals Resolved, Resolution Notes becomes a required field. When Status changes to any other value, the requirement is lifted. This logic runs without any code and applies to every Case form in the app.
Rule not enforcing the required field?
Make sure the rule shows as Active (not Draft) in your solution. Also confirm that the Resolution Notes column is present on the Case form. A business rule cannot enforce a field that is not on the form.
Help me troubleshoot my business rule not working.
Secret mission
Build a Cases Dashboard
Your Case Manager app tracks cases effectively, but managers have no at-a-glance view of workload distribution. Can you build a dashboard with a chart that answers 'how many cases sit at each priority level?' without opening individual records?
Clean Up Your Resources
Clean Up Your Resources
Decide whether to keep your resources running, pause them to come back later, or delete them entirely. This project runs on the Power Apps 30-day trial, so there are no ongoing costs during that period.
Resources you used:
- Power Apps trial environment with Dataverse database (no cost during 30-day trial).
- "Case Management" solution containing: Case table, Contact table, Case Manager app, Case Resolution Process business process flow, Require Resolution Notes business rule, and Cases by Priority chart.
Keep everything running
No action needed. Choose this if you are still actively building or exploring your app.
- Your trial lasts 30 days. After that, sign up for the free Power Apps Developer Plan at aka.ms/PowerAppsDevPlan to keep your environment indefinitely for development and testing.
- The Developer Plan requires a work or school email and gives you a dedicated environment at no cost.
Pause - I'll come back to this later
No action needed. The environment stays available until the trial expires.
- Your trial environment and all its components remain intact and accessible for the full 30-day period.
- If you want to keep building after the trial expires, sign up for the free Power Apps Developer Plan at aka.ms/PowerAppsDevPlan before the trial ends.
Delete - I don't want to use this again
Remove your environment entirely. This deletes the Case Management solution and all components inside it.
- Go to the Power Platform admin center at admin.powerplatform.microsoft.com.
- Select Environments in the left navigation.
- Select your environment from the list.
- Select Delete on the command bar and confirm the deletion.
- This permanently removes the environment, Dataverse database, and all solutions, tables, apps, flows, and rules inside it.
Nice Work!
Nice Work!
You just built a fully functional Case Management app in Power Apps. From data modeling to automated business logic, you created an enterprise-grade solution without writing a single line of code.
You've learned how to:
- Built a custom data model in Dataverse with two tables, custom columns, and a one-to-many relationship, then published a model-driven app that auto-generates responsive forms and views from your data model.
- Designed a three-stage business process flow (Intake, Investigation, Resolution) that guides users through case resolution step by step.
- Implemented a business rule that enforces required fields based on record status, catching data gaps the process flow alone cannot prevent.
- Secret Mission: Built a dashboard with a chart visualizing case distribution by priority and status.
Ready to quiz yourself?