Power Apps — Step-by-Step Complete Course
A comprehensive guide from beginner to advanced with clear explanations and practical examples.
Author: ChatGPT (assisted)
Generated: October 21, 2025
Course Overview
This course covers Power Apps fundamentals, Canvas Apps and Model-Driven Apps, connecting to data
sources, Power Fx formulas, integrations with Power Automate, security, deployment, and advanced
topics.
Who is this for: beginner to intermediate users who want a structured, practical path to build
production-ready Power Apps.
Getting Started — Prerequisites & Setup
Microsoft 365 account with Power Apps license or trial.
Recommended browsers: latest Chrome or Edge.
Enable permissions for Dataverse or SharePoint depending on your chosen data source.
Install Power Apps Studio (web) and optionally Power Apps mobile app for testing.
Lesson 1 — Power Apps Types & When to Use Them
Canvas Apps: pixel-perfect UI, drag-and-drop, ideal for custom UX and mobile apps.
Model-Driven Apps: data-first, driven by Dataverse, ideal for complex business process apps and
CRM-like scenarios.
Portal Apps: external-facing websites to expose data to outside users securely.
Lesson 2 — Create Your First Canvas App (Step-by-Step)
Step 1: Sign in to Power Apps ([Link]
Step 2: Select 'Create' > 'Canvas app from blank' > Choose Tablet or Phone layout.
Step 3: App structure: Screens, Controls, Properties, Tree view, and Data panel.
Step 4: Add a label (Insert > Label), set Text property to 'Welcome to Power Apps'.
Step 5: Save and Publish: File > Save, then File > Publish to make it available to users.
Lesson 3 — Working with Controls (Examples & Properties)
Common controls: Label, Text input, Button, Gallery, Form, Dropdown, ComboBox, DatePicker, Toggle,
Slider.
Example: Add a TextInput named txtName and a Button. Set Button's OnSelect: Notify("Hello " &
[Link]).
Control properties: Text, Default, Items, OnSelect, Visible, DisplayMode — these are the primary ways
you control behavior.
Lesson 4 — Forms & Galleries (CRUD Operations)
Display Form vs Edit Form: Display for read-only, Edit for create/update.
Use a Gallery to list records and navigate to a Detail screen with a Form.
Example pattern: [Link] to identify record. OnSelect of Gallery: Navigate(DetailScreen, None,
{selectedRecord: ThisItem}).
Using SubmitForm(EditForm) to save changes and ResetForm() to clear.
Lesson 5 — Variables & Collections (State Management)
Context variables: UpdateContext({varName: value}) — scoped to the screen.
Global variables: Set(varName, value) — accessible across screens.
Collections: Collect(colName, {Field: Value}) or ClearCollect(colName, dataSource) to store tables
locally.
Example: OnStart property: ClearCollect(Products, '["Apple","Banana","Cherry"]') and use Products as
Items in a Gallery.
Lesson 6 — Power Fx Essentials (Functions with Examples)
If(condition, trueValue, falseValue) — conditional logic.
Switch(expression, case1, result1, case2, result2, Default) — multi-way branch.
LookUp(dataSource, condition, returnColumn) — returns first matching record.
Filter(dataSource, condition) — returns table of matching records (delegation applies).
Sort(table, column, Descending) and SortByColumns(dataSource, "ColumnName", If(SortDescending1,
Descending, Ascending)).
Patch(dataSource, Defaults(dataSource), {Title: [Link], Amount: Value([Link])}) — create
record example.
Lesson 7 — Delegation & Performance
Delegation: when working with large data sources (> 500 records), use delegation-friendly functions so
processing happens server-side.
Non-delegable functions: certain operations like Len, IsBlank in some contexts, certain LookUp patterns
may be non-delegable depending on connector.
Use delegable filters: Filter(SharePointList, StartsWith(Title, [Link])) instead of non-delegable
alternatives.
Use collections carefully; avoid Collecting entire large tables.
Lesson 8 — Connectors & Data Sources (SharePoint, Dataverse,
SQL, Excel)
SharePoint: quick to start; lists for simple apps; watch out for delegation limits.
Dataverse: structured, supports relationships, choice fields, business rules — recommended for
enterprise scenarios.
SQL Server: supports complex queries, requires gateway for on-premises.
Excel: acceptable for demos but not recommended for production due to concurrency and delegation
limits.
Lesson 9 — Working with SharePoint Lists (Practical)
Create a SharePoint list with columns: Title (Single line), Amount (Number), Date (Date), Status (Choice).
In Power Apps: Add data source > SharePoint > Choose site and list.
Use forms connected to SharePoint list and use Patch/SubmitForm to write data.
Example: Submit new expense — SubmitForm(ExpenseForm); OnSuccess: Notify("Submitted
successfully"); ResetForm(ExpenseForm).
Lesson 10 — Dataverse Fundamentals
Dataverse tables, columns, relationships, option sets (choices), business rules and flows.
Use model-driven apps when Dataverse is the backend for complex relational data.
Security roles and field-level security are managed in Dataverse.
Lesson 11 — Power Automate Integration (Samples & Steps)
Use a flow to send approval requests. Create flow with trigger 'Power Apps' and action 'Start and wait for
an approval'.
From Power Apps, call the flow: [Link](param1, param2) and handle response.
Example: Expense approval flow — When a user submits, call flow to email manager and update
SharePoint approval status.
Lesson 12 — Authentication & Security (Best Practices)
Use environment roles, Dataverse security roles, and Azure AD groups to control access.
Never store secrets in the app. Use Azure Key Vault via custom connectors for sensitive data.
Use User().Email to identify current user and show/hide UI elements appropriately.
Lesson 13 — Testing, Debugging & Error Handling
Use the Monitor tool in Power Apps (App settings > Advanced tools > Monitor) to inspect runtime
behavior.
Add Notify() messages for success/failure paths; check IsBlank, IsEmpty before operations.
Use Try/Catch patterns via IfError in Power Fx (IfError(Patch(...), Notify("Error"))).
Lesson 14 — Building a Sample Project (Expense Reimbursement
App) — Step-by-Step
Step 1: Create data source (SharePoint list named 'Expenses' with columns: Title, Amount, Date,
Category, ReceiptURL, Status, ApproverEmail).
Step 2: Build Canvas app: Home screen, Submit screen (form), Manager screen (gallery with pending
approvals), Admin screen (reports).
Step 3: On Submit: SubmitForm(ExpenseForm); then call flow to notify manager:
[Link](ExpenseID).
Step 4: Manager approves via flow link or Manager screen; update SharePoint Status to 'Approved' or
'Rejected'.
Step 5: Provide dashboard using galleries and charts (Power BI embedding optional).
Lesson 15 — Model-Driven Apps (When & How to Use)
Model-driven apps are built from data model in Dataverse. Create tables, define relationships and
business rules.
Use site maps, forms, views and charts to configure the UI.
Good for complex processes (CRM, Case Management).
Lesson 16 — Portals & External Users
Power Apps Portals allow external users to interact with data using authentication through Azure AD
B2C, GitHub, or other identity providers.
Use web roles and table permissions to secure portal content.
Lesson 17 — ALM & Deployment (Solution-aware Approach)
Use Solutions to package components (tables, apps, flows) for deployment across environments (Dev ->
Test -> Prod).
Use Power Platform Build Tools (Azure DevOps) or GitHub Actions for CI/CD.
Export/Import managed solutions for production deployments.
Lesson 18 — Advanced Topics & Integrations
Custom connectors for external APIs when standard connectors are not enough.
PCF (Power Apps Component Framework) to create custom UI components using TypeScript.
Embedding apps in Teams and SharePoint; connecting to Power BI via tile embedding.
Lesson 19 — Interview Prep & Common Questions
What is delegation and why does it matter? Provide examples.
Explain differences between Canvas and Model-driven apps.
How do you optimize performance for a large SharePoint list? (Use delegation, indexing, only load
required columns).
Explain Patch vs SubmitForm and when to use each.
Lesson 20 — Appendix: Common Power Fx Examples &
Cheatsheet
Set a global variable: Set(gUserName, User().FullName)
Update a context variable: UpdateContext({showPanel: true})
Collect/clear collection: ClearCollect(colProducts, Filter(Products, InStock = true))
Patch example for update: Patch(Employees, LookUp(Employees, ID = 5), {Title: "Senior Dev"})
Search example: Filter(Products, StartsWith(Title, [Link]))
Closing Notes & Next Steps
Practice by building small apps: To-do app, Expense app, Inventory tracker.
Explore Microsoft Learn modules and official Power Apps docs for deeper learning.
Consider certification: PL-100 (Microsoft Power Platform App Maker) for validation of skills.
Useful Resources (to search online)
Resource Description
Microsoft Learn - Power Apps Official guided learning modules
Power Apps Documentation API reference, connectors and tutorials
Power Fx reference Formulas and functions
Power Platform Community Forums and community solutions
GitHub - Power Platform Samples Samples and PCF components