Power Platform Questions
1. Difference Between Canvas Apps and Model-Driven Apps in Power Apps
Canvas Apps and Model-Driven Apps are two different ways to build applications in Power Apps, and
they cater to different scenarios:
• Canvas Apps: These are apps that give you total control over the layout and user interface. You
design the app from scratch, deciding how everything looks and behaves. Think of it as creating
a web page or mobile app where you can drag and drop components (buttons, input fields,
images, etc.) to form a custom layout.
When to Choose Canvas Apps:
o Custom UI: When you need a highly customized user interface with specific colors,
layout, and design.
o Simplicity: When you want to focus on the specific tasks or actions that the user needs
to complete, without worrying too much about the data model behind the scenes.
o Flexibility: When your app needs to integrate with different data sources or require
complex custom logic.
Example: You might use a canvas app for a mobile app that allows a field agent to capture pictures,
notes, and GPS coordinates in the field. The layout of the app would be custom-designed for this
purpose.
• Model-Driven Apps: These apps are driven by data models. The user interface is generated
based on the data structure (tables and relationships) you define first. Model-driven apps
typically have a standardized UI but are designed to manage complex data and business
processes.
When to Choose Model-Driven Apps:
o Complex Business Logic: When you need to model complex business data and
relationships (e.g., CRM, project management).
o Data-Centric Applications: When you need to focus on structured data with
standardized forms and views (e.g., case management systems or sales pipelines).
o Automatic UI Generation: When you want to let Power Apps handle most of the design
for you based on the data model.
Example: If you're building a CRM system to track customer interactions, opportunities, and leads, a
model-driven app would be ideal. The app’s UI would adapt to the relationships between different data
entities like Contacts, Accounts, and Opportunities.
2. Power Automate and Error Handling
Error Handling in Power Automate is crucial to ensure that workflows can gracefully handle failures due
to issues like network errors, incorrect data input, or even unexpected changes in external systems.
• Error Handling Mechanisms:
o Configure Run After: In Power Automate, you can configure actions to run based on the
outcome of previous actions. For example, you can specify that an action should run
only after a successful completion, or after failure, or even if the action is skipped or
timed out.
o Scope with Error Handling: You can group actions into a Scope, which is a container for
a set of actions. You can set up error handling for the entire scope, specifying how to
respond if something within that scope fails.
o Retry Policy: Power Automate allows you to configure retry policies for individual
actions. For example, if an action fails due to a temporary issue like a network error,
Power Automate can automatically retry the action based on a set number of retries or
time intervals.
o Terminate Action: You can explicitly use the Terminate action to stop the flow if a
critical failure occurs and notify the relevant stakeholders or systems of the failure.
o Custom Error Messages: You can also define custom error messages to make it clearer
why a particular step failed.
Example of Error Handling: Imagine a flow that sends an email after a document is uploaded to
OneDrive. If the email fails to send (due to an issue like a full mailbox), you can set a retry policy or
notify the user to fix the issue and manually trigger the email.
3. Power BI Data Sources and Live Dashboards
Power BI connects to a wide variety of data sources, ensuring that you can visualize and analyze data
from multiple systems. The tool also provides ways to keep that data up-to-date, particularly for live
dashboards.
• Data Sources in Power BI:
o Cloud-based Services: Power BI can connect to services like Microsoft Azure,
Salesforce, Google Analytics, SharePoint, and OneDrive.
o On-premises Databases: It can also connect to on-premises data sources, such as SQL
Server, Oracle, or any custom database.
o Files and Spreadsheets: You can import data from Excel, CSV, or XML files.
o Web Data: You can retrieve data from web APIs or other online services.
• How Power BI Keeps Data Up-to-Date:
o DirectQuery: When using DirectQuery mode, Power BI doesn’t import data but instead
queries the data source directly every time the report is refreshed or interacted with.
This allows for real-time data without storing it locally.
o Scheduled Refresh: Power BI can schedule regular data refreshes from connected data
sources (e.g., hourly, daily). When the data in the source changes, the dashboard is
updated automatically on the next refresh cycle.
o Live Dashboards: If the underlying data is coming from a system that supports live
updates (such as real-time data from IoT sensors or financial systems), the Power BI
dashboard can reflect these changes immediately.
Example: A financial manager may have a live dashboard tracking stock prices. If the data is connected
via DirectQuery to a stock market API, the dashboard will update every time stock prices change.
4. How Power Virtual Agents Processes User Input and Training Bots
Power Virtual Agents allows you to build chatbots without needing to write code. The bot processes
user input by recognizing keywords or phrases and matching them to predefined topics and responses.
• How It Processes Input:
o Natural Language Understanding (NLU): When a user types in a query, Power Virtual
Agents uses built-in NLU to understand the intent behind the query. This means the bot
doesn’t just look for exact matches but tries to interpret the meaning.
o Topics: In Power Virtual Agents, you define "topics" that represent different categories
of conversations or tasks. Each topic is linked to a set of triggers (phrases or keywords)
and the actions the bot should take in response (such as providing an answer or calling a
Power Automate flow).
• Training the Bot:
o Trigger Phrases: You can provide sample phrases that the bot should respond to. For
example, if a user asks, “What’s the weather today?” the bot can be trained to trigger a
weather-related topic.
o Dialogues: Once the intent is recognized, the bot follows a predefined dialogue flow.
You can add responses (text, images, links) or actions (calling an API, triggering an
automation) as part of the conversation.
o Continuous Learning: Power Virtual Agents allows the bot to learn from user
interactions. If users frequently ask questions the bot doesn’t understand, you can
create new topics to improve its performance.
Example: If a user asks, "What’s the status of my order?", the bot could pull data from an integrated
system and respond with the most up-to-date information, or escalate the query to a human agent if
necessary.
5. Creating a Customer-Facing Portal with Power Pages
Power Pages is a tool for building external-facing websites or portals where users can interact with data,
submit forms, or access self-service features. Here’s how you can use Power Pages to create a customer-
facing portal and connect it to your backend systems:
• Creating the Portal:
o Design: Power Pages allows you to design your portal using a low-code design studio.
You can drag and drop components like text fields, buttons, and data tables to build
your page.
o Templates: Power Pages offers templates that help you get started quickly, such as
portals for customer support, knowledge bases, or event registration.
• Connecting to Backend Systems:
o Dataverse Integration: Power Pages is tightly integrated with Microsoft Dataverse, a
unified data platform that underpins Power Apps, Power Automate, and Power BI. You
can use Dataverse to securely store data and make it available to users via your portal.
o Authentication: You can configure authentication settings to allow users to log in to
your portal with their own credentials (e.g., Microsoft, LinkedIn, or custom
authentication providers).
o Forms and Submissions: You can design forms for customers to submit requests (e.g.,
support tickets or inquiries), and this data will be captured directly into your backend
systems like Dataverse.
o Logic Integration: You can use Power Automate to trigger workflows when a form is
submitted or a specific action is taken, like sending a confirmation email.
Example: A customer-facing portal for a retail company could allow customers to check the status of
their orders, submit product returns, or contact support. The portal would connect to Dataverse to pull
data like order status and store it after the customer submits a return request.
1. 20 Essential Theory Questions
Q1. In Power Apps, which function is used to retrieve a record by its ID from a data source?
Answer: A) Lookup
The Lookup function in Power Apps retrieves the first record in a table that matches a specific condition.
If you're looking to retrieve a record by its ID, you would use Lookup to specify the condition based on
the ID, e.g., Lookup(DataSource, ID = 123).
Q2. In Power Automate, what type of flow is triggered manually by a user action (like pressing a
button)?
Answer: C) Instant Flow
An Instant Flow in Power Automate is triggered manually by the user, usually through a button in the
Power Automate mobile app or a trigger inside a Power Apps app. It enables quick execution based on
user input or an action.
Q3. In Power BI, what is the name of the tool used to shape and clean your data before using it in a
report?
Answer: A) Power Query
Power Query is the data transformation and shaping tool within Power BI. It allows users to import,
clean, transform, and load data into the data model for further analysis.
Q4. In Power Apps, what function is used to submit a form's data to a data source?
Answer: A) SubmitForm
SubmitForm is used to submit data from a form control to a data source. It's typically used when you
want to save or update a record in a database or SharePoint list.
Q5. In Power Automate, which connector would you typically use to interact with SharePoint Lists?
Answer: C) SharePoint
The SharePoint connector in Power Automate allows users to automate tasks like creating, updating,
and deleting items in SharePoint lists and libraries.
Q6. In Power BI, which language is used for creating calculated columns and measures?
Answer: C) DAX
DAX (Data Analysis Expressions) is the formula language used in Power BI for creating calculated
columns, measures, and custom aggregations within the data model.
Q7. In Power Apps, what does the Reset function do to a control?
Answer: B) Resets the control's value to its default
The Reset function resets a control’s value to its original, default state. For example, a text input box
would clear any entered text.
Q8. In Power Automate, which action is used to stop a flow from proceeding and report a custom
error message?
Answer: A) Terminate
The Terminate action stops a flow and can return a custom status, such as “Succeeded” or “Failed,”
along with an optional error message.
Q9. In Power Apps, which function is best for creating a new record in a data source?
Answer: B) Patch
The Patch function is used to create, modify, or delete records in a data source. It’s versatile and can be
used to create a new record by providing a blank record as input.
Q10. Which service is the primary database behind Power Apps and Power Automate for storing
relational data?
Answer: B) Dataverse
Dataverse is a unified data platform used by Power Apps and Power Automate to store and manage
data securely. It allows you to build apps and automate processes using relational data.
Q11. In Power BI, what is "DAX" mainly used for?
Answer: C) Writing measures and calculated columns
DAX is used to create calculated columns and measures in Power BI to perform calculations on your data
model. It's essential for creating dynamic calculations based on the dataset.
Q12. What is the maximum default limit of rows retrieved from a data source in Power Apps without
delegation?
Answer: B) 500
By default, Power Apps limits non-delegated queries to 500 records to ensure app performance. This
limit can be adjusted in app settings.
Q13. In Power Virtual Agents, what defines how a chatbot reacts to a user’s question?
Answer: B) Topic
A "Topic" in Power Virtual Agents defines how a bot responds to specific user inputs or trigger phrases.
The bot uses topics to navigate the conversation flow.
Q14. In Power Automate, which action allows you to wait for a specified period of time before
continuing the flow?
Answer: A) Delay
The Delay action pauses the flow for a specified duration before proceeding to the next step. It can be
used to manage time-based processes.
Q15. In Power Apps, which control is used for displaying a list of items?
Answer: B) Gallery
The Gallery control is used to display a list or collection of items in Power Apps. It supports custom
layouts and allows you to display data from various sources.
Q16. In Power BI, what type of visualization would you use to compare different categories side-by-
side?
Answer: B) Bar Chart
A bar chart is ideal for comparing categories side-by-side. It allows for easy visual comparison of
different values within categories.
Q17. In Power Automate, what type of flow would you use to execute actions on a schedule (e.g., run
every day at a specific time)?
Answer: C) Scheduled Flow
A Scheduled Flow runs based on a defined schedule, such as every day at a specific time or after a set
interval.
Q18. In Power Apps, which of the following is the primary function of a Context Variable?
Answer: B) Stores data only within a single screen
Context variables in Power Apps are used to store values temporarily within a single screen, such as user
input or selection.
Q19. Which connector in Power Automate would you use to send an email with attachments from
OneDrive?
Answer: B) Office 365 Outlook
You would use the Office 365 Outlook connector in Power Automate to send emails from an Outlook
account with attachments, such as files from OneDrive.
Q20. In Power BI, what is the primary function of a "Measure"?
Answer: B) It calculates data using DAX expressions
A measure in Power BI is a dynamic calculation created using DAX expressions. It is used to calculate
aggregates, sums, averages, etc., based on the data model.
2. 20 Practical MCQs + 5 Scenarios (1 hour)
Q3. In Power BI, which of the following is used to create a dynamic relationship between tables in a
data model?
Answer: C) Relationships
Relationships in Power BI define how tables are connected. This enables the model to calculate
measures and display related data from multiple tables.
Q4. What is the maximum number of records that can be returned in Power Apps by default from a
data source without delegation?
Answer: A) 500
By default, Power Apps allows 500 records to be retrieved from a data source without delegation. This
limit can be adjusted based on app performance needs.
Q5. In Power Virtual Agents, which of these is used to define what the bot should do when it hears
certain trigger phrases?
Answer: A) Topics
Topics are used in Power Virtual Agents to define what actions the bot should take when it hears specific
trigger phrases.
Q6. In Power Automate, which action is used to wait for a specified period of time before continuing
the flow?
Answer: A) Delay
The Delay action pauses the flow for a set duration before moving to the next step in the flow.
Q7. In Power Apps, which control would you use to display a list of records from a data source?
Answer: C) Gallery
The Gallery control is used to display a collection of records from a data source in a visual, list-based
format.
Q8. In Power BI, what type of visualization would you use to compare different categories side-by-
side?
Answer: B) Bar Chart
A bar chart is ideal for comparing different categories side-by-side and displaying comparisons among
them.
Q9. In Power Automate, what type of flow would you use to execute actions on a schedule (e.g., run
every day at a specific time)?
Answer: C) Scheduled Flow
A Scheduled Flow runs automatically on a defined schedule, such as every day at a particular time.
Q10. In Power Apps, which of the following is the primary function of a Context Variable?
Answer: B) Stores data only within a single screen
Context variables are temporary data storage elements used within a single screen in Power Apps.
Q11. Which connector in Power Automate would you use to send an email with attachments from
OneDrive?
Answer: B) Office 365 Outlook
Office 365 Outlook is commonly used to send emails, including attachments, from OneDrive or other
storage locations.
Q12. In Power BI, what is the primary function of a "Measure"?
Answer: B) It calculates data using DAX expressions
A measure in Power BI is a formula that performs calculations on data using DAX, such as summing sales
or calculating averages.
Q13. In Power Apps, which function can be used to clear all records in a collection?
Answer: A) Clear
The Clear function removes all records from a collection in Power Apps.
Q14. In Power Automate, which type of flow can be triggered by an event such as the creation of a
new file in a folder?
Answer: B) Automated Flow
An Automated Flow is triggered by an event, like when a new file is added to a folder.
Q15. In Power Virtual Agents, how can a bot escalate a conversation to a live agent?
Answer: B) Use a Power Automate flow to transfer the chat
A Power Automate flow can be used to escalate the conversation from the chatbot to a live agent.
Q16. In Power BI, which visualization is ideal for showing how a single value changes over time, such
as stock prices or sales trends?
Answer: B) Line Chart
A line chart is ideal for showing changes in a single value over time, such as trends in stock prices or
sales.
Q17. In Power Automate, what does the "Apply to each" action allow you to do?
Answer: B) Run an action for each item in an array
The Apply to each action allows you to iterate over a list or array and apply actions for each item
individually.
Q18. In Power Apps, what function would you use to navigate from one screen to another?
Answer: A) Navigate
The Navigate function is used to transition from one screen to another in Power Apps.
Q19. In Power BI, which of the following is a best practice for building reports?
Answer: B) Ensure visual clarity and consistency
For clear and effective reports, it's important to maintain visual clarity and consistency across all visuals
in the report.
Q20. In Power Automate, which feature allows you to perform actions based on success, failure, or
timeout of a previous action?
Answer: A) Run After
The Run After feature allows you to set conditions based on the outcome of a previous action (success,
failure, etc.).
10 Practical Formula Exercises (30 minutes)
1. Power Apps: Filter a Gallery by Status = “Pending” Formula:
Filter(GalleryDataSource, Status = "Pending")
Explanation: The Filter function is used to retrieve records from the GalleryDataSource where the Status
field equals "Pending".
2. Power Automate: Parse the Email Body to Extract an Invoice Number Expression:
substring(triggerOutputs()?['body/Body'], indexOf(triggerOutputs()?['body/Body'], 'Invoice Number: ') +
16, 10)
Explanation: The substring function extracts part of the email body starting from the position right after
'Invoice Number: ' and grabs 10 characters, assuming the invoice number is of fixed length.
3. Power BI (DAX): Calculate Year-to-Date (YTD) Sales DAX Measure:
DAX
YTD Sales =
TOTALYTD(
SUM(Sales[Amount]),
Sales[Date]
Explanation: TOTALYTD calculates the cumulative sum of Sales[Amount] from the beginning of the year
up to the current date in Sales[Date].
4. Power Apps: Navigate to a Different Screen on Button Click Formula:
Navigate(ScreenName, [Link])
Explanation: The Navigate function is used to move to another screen (ScreenName) with a fade
transition effect.
5. Power Automate: Check if a SharePoint List Item is Overdue Expression:
if(formatDateTime(items('Get_items')?['DueDate'], 'yyyy-MM-dd') < formatDateTime(utcNow(), 'yyyy-
MM-dd'), true, false)
Explanation: The formatDateTime function compares the DueDate field from SharePoint against the
current date (utcNow()). If the due date is earlier than today, it returns true, indicating the item is
overdue.
6. Power BI (DAX): Extract the Month Name from a Date Field DAX Calculated Column:
DAX
MonthName = FORMAT(Sales[Date], "MMMM")
Explanation: The FORMAT function converts the Date column into the full month name (e.g., "January",
"February").
7. Power Apps: Set the Visibility of a Control Based on a Condition Formula:
If(Status = "Approved", true, false)
Explanation: The If function checks if the Status is "Approved". If true, it shows the control; otherwise, it
hides the control.
8. Power Automate: Trigger a Flow if Attachment Size is Greater Than 10MB Expression:
if(triggerOutputs()?['body/Size'] > 10485760, true, false)
Explanation: The if function checks whether the size of the attachment (in bytes) is greater than 10MB
(10MB = 10 * 1024 * 1024 = 10485760 bytes).
9. Power BI (DAX): Calculate Average Sales per Region DAX Measure:
DAX
Average Sales per Region =
AVERAGEX(
VALUES(Sales[Region]),
CALCULATE(SUM(Sales[Amount]))
Explanation: The AVERAGEX function calculates the average of Sales[Amount] for each region using
CALCULATE to sum the sales for each region.
10. Power Apps: Sort a Gallery by Date (Most Recent First) Formula:
Sort(GalleryDataSource, DateField, Descending)
Explanation: The Sort function orders the GalleryDataSource by DateField in descending order, showing
the most recent records first.
Here’s a concise breakdown of how each scenario can be implemented using the Power Platform:
Scenario 1: Employee Leave Request System
Tools Used: Power Apps, Power Automate, SharePoint
Steps:
1. Power Apps Form
o Create a Power Apps canvas app with fields: Employee Name, Leave Type, Start Date,
End Date, Reason.
o Connect the form to a SharePoint list (e.g., "Leave Requests").
2. SharePoint List
o Create columns matching the form fields and an additional “Status” column.
3. Power Automate Flow
o Trigger: When a new item is created in the SharePoint list.
o Action 1: Send approval email to the manager with Approve/Reject options.
o Action 2 (If approved): Update the SharePoint list “Status” to Approved and send a
confirmation email to the employee.
o Action 3 (If rejected): Update status to Rejected and notify the employee.
Scenario 2: Sales Report Dashboard
Tools Used: Power BI, SQL Server, SharePoint, Excel
Steps:
1. Data Sources
o Connect Power BI to the SQL Server using DirectQuery.
o Import Excel and SharePoint list data (using scheduled refresh if needed).
2. Data Modeling
o Normalize tables, create relationships between tables (sales, regions, salespeople).
3. Power BI Dashboard
o Visuals:
▪ Total Sales (card)
▪ Sales by Region (map/bar chart)
▪ Sales Trends (line chart)
o Add slicers for Region and Salesperson.
4. Access & Refresh
o Publish to Power BI Service.
o Schedule daily refresh for imported sources.
o Share with management via Power BI workspace or Microsoft Teams tab.
Scenario 3: Employee Onboarding Workflow
Tools Used: SharePoint, Power Automate, Microsoft Planner, Outlook
Steps:
1. SharePoint List
o Create a list called “New Hires” with fields: Name, Email, Start Date, Department,
Assigned Mentor.
2. Power Automate Flow
o Trigger: When a new item is added to the “New Hires” list.
o Actions:
▪ Send welcome email to the new employee.
▪ Create a task bucket in Planner with tasks: IT Setup, Desk Setup, Paperwork, etc.
▪ Send an email to the assigned mentor with meeting scheduling instructions.
▪ Monitor Planner task completion; notify HR when all are done (using loop/check
actions).
Scenario 4: Chatbot for IT Support
Tools Used: Power Virtual Agents, Power Automate, Microsoft Teams
Steps:
1. Power Virtual Agents Bot
o Design topics: “Password Reset”, “Software Installation”, “Wi-Fi Issues”, etc.
o Provide step-by-step guidance via chatbot responses.
2. Escalation Handling (Power Automate)
o Use a flow triggered by the bot when a user types "I need more help."
o Create a ticket in a SharePoint list or Service Desk system.
o Notify a human IT agent via Teams or email.
3. Integration
o Publish the bot to Microsoft Teams so employees can chat with it directly.
Scenario 5: Inventory Management System
Tools Used: Dataverse, Power Apps, Power Automate
Steps:
1. Dataverse Tables
o Create tables: Products (Name, Quantity, Threshold), Suppliers, Transactions
(Add/Remove, Quantity, Date).
2. Power Apps
o Build a responsive canvas app:
▪ Warehouse staff can add/remove stock.
▪ Managers can view and edit products.
3. Power Automate Flow
o Trigger: When a product's quantity is updated.
o Condition: If Quantity < Threshold, send an alert email to the manager.
4. User Experience
o Use gallery and form controls for simple navigation.
o Optimize for mobile: large buttons, minimal inputs, barcode scanning (if needed).
✅ Question 1: Power Apps – Sales Team Customer Interaction Tracker
Business Need Recap:
A mobile app for sales reps to log customer interactions, add notes, and schedule follow-ups, with data
stored in SharePoint.
Step-by-Step Expert Approach:
1. Data Architecture – SharePoint Lists (or Dataverse if scalable needs evolve):
• Customers List
Columns:
o Title (Customer Name)
o Email (Single Line)
o Phone (Single Line)
o Company (Single Line)
o Address (Multiple Lines or Location)
o Salesperson (Person/Group field)
• Interactions List
Columns:
o Customer (Lookup to Customers list)
o Interaction Date (Date/Time)
o Notes (Multiple lines of text)
o Follow-up Date (Date/Time)
o Logged By (Person/Group) — set to default to User().Email
2. Power Apps Canvas App – Mobile-Friendly Design:
• Design Mode: Phone Layout
• Theme: Consistent color scheme for brand alignment
• App Screens:
o Home Screen: Gallery showing customers
▪ Controls: SearchTextBox, Filter(Gallery, StartsWith(Title, [Link]))
▪ Button: “+ New Customer” → navigates to Add Customer form
o Customer Details Screen:
▪ Display customer info using a Display Form
▪ Gallery showing interactions filtered by selected customer:
Filter(Interactions, [Link] = [Link])
▪ Button: “+ Log Interaction” → navigates to New Interaction screen
o Log Interaction Screen:
▪ Form controls: Dropdown for Customer (prefilled), Notes, Dates
▪ Submit Button: Uses Patch() to write to Interactions list
▪ Add validation logic (e.g., no blank fields, valid future follow-up date)
o Follow-Up Screen:
▪ Filter: Filter(Interactions, FollowUpDate >= Today())
▪ Highlight overdue follow-ups with red font using conditional formatting
3. UX Enhancements:
• Use icons for intuitive navigation
• Display confirmation banners using Notify("Interaction Logged", [Link])
• Use User() to automatically track the salesperson logging interaction
• Offline support via SaveData and LoadData (if needed)
4. Security & Governance:
• Set SharePoint list permissions via SharePoint groups (e.g., only managers can edit customers)
• Use Power Apps role-based logic (e.g., hide admin features if User().Email not in admin list)
✅ Question 2: Power Automate – Invoice Approval Flow
Business Need Recap:
Trigger an approval workflow when a new invoice is uploaded to SharePoint. Notify the manager,
update finance system on approval, or notify the employee on rejection.
Step-by-Step Expert Flow Design:
1. Trigger:
• Trigger: When a file is created in a folder (SharePoint trigger)
Document Library: “Invoices”
Optional: Add metadata fields (InvoiceAmount, Department, UploadedBy) via a Document
Content Type
2. Get Submitter Info:
• Use “Get file properties” to extract custom metadata (e.g., submitter, invoice amount)
• Use “Get user profile (V2)” for submitter’s email if needed
3. Start Approval Process:
• Action: “Start and wait for an approval”
o Approval type: Approve/Reject – First to respond
o Assigned to: Manager (either hardcoded or derived from metadata)
o Include file link in approval email using linkToItem dynamic value
4. Condition Based on Outcome:
• If Outcome = Approved:
o Call HTTP request, custom connector, or Power Apps connector to finance system
o Log approval to a SharePoint list or Excel sheet for audit trail
• If Outcome = Rejected:
o Send rejection email to submitter using dynamic email from previous steps
5. Optional:
• Use parallel branches for complex logic
• Log every approval/rejection to Share
Questions
1. Desktop Flows vs RPA Cloud Flows
• Desktop flows (formerly “UI flows”) run on a specific Windows machine using the Power
Automate Desktop agent. They automate legacy Windows/Mac applications by simulating
mouse-clicks, keystrokes, file moves, etc.
• RPA Cloud flows run entirely in the cloud and can orchestrate both API-first connectors and
unattended attended desktop flows. You can mix API calls (e.g. Teams, SharePoint) with UI
automation.
When to use which?
• If you need to automate a Windows/Mac GUI locally → Desktop flow.
• If you need to combine GUI automation with cloud-only connectors, schedule centrally & run
unattended → RPA (a cloud flow with UI steps).
2. Branching and Logic in Flows
Power Automate offers several ways to branch logic:
Type Behavior When to use
Sequential (“one- Actions run in strict order, waiting for each to
Default simple workflows.
by-one”) finish.
Two or more branches start at the same time, When independent tasks can run
Parallel branch
running concurrently. in parallel.
Type Behavior When to use
Any action can “run after” multiple outcomes
Configure run after For retry/failure handling.
(Succeeded, Failed…).
Like a multi-way if/else: evaluates one When you have multiple discrete
Switch
expression, jumps to matching case. values to handle.
// Example: Switch on status
switch(outputs('Get_item')?['body/status'])
case 'New': …
case 'InProgress': …
default: …
3. “Old name of Intra ID”: Active Directory
Azure AD was originally called Windows Azure Active Directory. On-premises “Active Directory” (AD DS)
is the traditional Microsoft identity store.
4. Authentication in Power Platform
1. Delegated (user-context) OAuth: connects using your signed-in user’s credentials.
2. Application (service principal): using an Azure AD app registration + client secret or certificate.
3. Managed identity: for flows running on Azure services (Logic Apps).
4. Connection references: abstract connector instances from solutions, so you can rebind in each
environment.
Tip: Always prefer service principals for non-interactive workflows to avoid credential expiry.
5. Languages
• DAX (Data Analysis Expressions)
o Used in Power BI and Dataverse calculated columns/measures.
o Syntax example:
o TotalSales = SUMX( Sales, Sales[Quantity] * Sales[UnitPrice] )
o Use when: you need row-context evaluation, aggregations, time-intelligence.
• Power Fx (aka “Power Apps language”)
o Excel-like language for Canvas apps and model-driven custom controls.
o Syntax example:
o If( IsBlank( [Link] ), Notify("Enter a value"), SubmitForm(EditForm1) )
o Use when: building formulas for controls, validation, data operations.
6. Attachment Sizes in Canvas & Power Pages
• Canvas apps default limit: 8 MB per file upload control.
• Model-driven + Power Pages (Dataverse attachments) default: 32 MB.
• Enhance limit?
o In Dataverse: use SharePoint integration to store files in a SharePoint library
(unlimited).
o Or use Azure Blob Storage with an Azure Function / custom connector.
7. Conditions in Flows
• Simple If: one condition → two branches (Yes/No).
• Nested If: chain multiple Ifs.
• Switch: up to 50 cases.
• Configure run after: handle up to four statuses (Succeeded, Failed, Timed out, Skipped).
8. Forms: Where & How
Platform Designer Typical Use
Canvas App Form control (EditForm) Highly customized UI, rich formatting.
Model-driven Form editor in solution explorer CRUD forms over Dataverse tables.
Power Pages Form designer (portal studio) External-facing websites, secure portals.
9. Parent & Child Flows
• A parent flow can call a child flow using the “Run a Child Flow” action (requires a solution-
bound flow).
• Example: In Parent:
• - Run_a_Child_Flow:
• type: Child
• inputs:
• Flow: '/providers/.../childFlow'
• Parameters:
• OrderID: @{triggerBody()?['OrderID']}
• Use when: you have reusable logic (e.g. “SendApprovalEmail”) needed by multiple flows.
10. Sharing Solutions & Apps
• Canvas apps: Share via the Share button; assign User, Co-owner, or Environment Maker roles.
• Solutions: export as managed/unmanaged and import into another environment; can include
connection references.
• Roles: in Power Platform Admin Center you assign security roles (e.g. “Environment Maker”,
custom roles) at environment-level.
11. Param Function (Power Apps)
• Param("x") reads a query-string parameter from the app’s URL.
• Use case: open a Canvas app with ...?RecordID=123 and inside do:
• LookUp( Contacts, ContactID = Value( Param("RecordID") ) )
12. Components in Canvas Apps
• Reusable component = a mini-app (group of controls + Power Fx) you can drag into multiple
screens.
• Characteristics:
o Has input and output properties.
o Can encapsulate complex logic (e.g. custom date picker).
o Improves maintainability and consistency.
13. Compose Action in Power Automate
• Compose simply evaluates an expression or holds static JSON/text.
• Syntax example:
• inputs('Compose') = concat(triggerBody()?['FirstName'],' ',triggerBody()?['LastName'])
• Use when: you need to reuse a calculated value multiple times without recomputing.
14. Model-Driven Customization & CLI
• In Studio: use the form/view/solution designer to add fields, business rules, custom JavaScript.
• Power Platform CLI (pac):
• pac solution unpack --zipfile [Link] --folder ./unpacked
• pac model-driven customization set --entity Contact --forms main
• pac metadata lookup --environment {id}
• Use when automating CI/CD pipelines for your customizations.
15. Security Roles (Step-by-Step)
1. Go to Power Platform admin center.
2. Select your Environment → Settings → Users + permissions → Users.
3. Click a user → Manage roles.
4. Tick the desired Security roles.
5. Save.
Roles can be environment-wide (“Environment Maker”) or Dataverse table-specific (“Salesperson”).
16. Global vs Local Option Sets
• Global choice: defined once, reused by many tables/fields.
• Local choice: defined directly on one field.
• When to use?
o If several tables need the exact same set of options → global.
o If unique to one field → local.
17. Choice Fields Capacity
• You can have up to 145,000 options in a global choice set.
• A single table can host up to 500 choice fields.
18. Data Sources in Model-Driven
• Primary: Dataverse
• Virtual tables (DataVerse Virtual Entities) let you surface external data (SQL, OData) as if they
were Dataverse tables.
• Count: unlimited model-driven tables, but all native.
19. Storing Images & Documents
• Best practice: use SharePoint integration for heavy file storage; Dataverse attachments for
small files (< 32 MB).
• Alternative: Azure Blob via custom connector for unlimited, scalable storage.
20. Solution Types
• Unmanaged: editable, used during development.
• Managed: locked, used for distribution.
• Patch & Clone: incremental updates to managed solutions.
21. Managing User Access
1. Security roles (classic Dataverse privileges).
2. Teams: assign roles to teams, add users to teams.
3. Share individual records (record-level sharing).
4. Environment roles: Admin, Maker, Auditor.
5. Azure AD groups via Azure AD integration.
22. Power Pages (formerly Power Apps Portals)
22.1 What is Power Pages?
A low-code website builder on Dataverse that lets you create external-facing portals (customer sites,
partner hubs) with authentication, forms, lists, and custom pages—fully security-trimmed by Dataverse.
22.2 Key Features
• Responsive templates
• WYSIWYG page & form designer
• Table permissions & web roles
• Reusable content snippets (HTML/text blocks)
• Integrated login (Azure AD, LinkedIn, local sign-in)
22.3 vs. SharePoint Pages / CMS
Feature Power Pages SharePoint Pages / CMS
Data store Dataverse SharePoint lists/libraries
Security Table permissions, web roles SharePoint permissions
Extensibility PCF controls, Liquid templates SPFx, Web Parts
22.4 Websites You Can Build
• Customer self-service portals
• Community forums
• Partner onboarding sites
• Event registration microsites
22.5 Dataverse & Power Pages
• Pages surface Dataverse tables as lists and forms.
• Data stored in regular Dataverse tables, secured by table permissions.
22.6 Creating a Basic Form or List
1. In Portal Studio, drag a Form component → select your Dataverse table → choose form.
2. For a List, drag a List component → configure view, filters, pagination.
22.7 Site Contents & Content Snippets
• Site Contents: pages, forms, lists, templates, web files, web links—all managed under the
portal’s Content area.
• Content Snippets: reusable pieces of HTML or text you can insert into multiple pages (e.g.
footer, header, legal notice).
22.8 Submitting Data & Automate Integration
• Submission methods:
1. Portal forms (Dataverse-backed).
2. Liquid + JavaScript + custom API.
3. Webhooks to call Azure Functions.
• Power Automate: create a flow triggered by the Dataverse “When a record is created or
modified” connector—fires whenever a portal form submits.
22.9 Web Roles & Table Permissions
• Web roles: define “Portal user” vs “Admin” vs custom roles (e.g. “Partner”) in Portal
Management.
• Table permissions: grant Create/Read/Update/Delete per table for each web role to tightly
secure what each user can see.
22.10 Publishing Changes
• After editing in Portal Studio, click Publish (or Unpublish to revert)—this pushes your changes
live.
23. Types of Flows in Power Automate
1. Automated cloud flow – triggers on events (e.g. new email).
2. Instant cloud flow – manually triggered or via HTTP.
3. Scheduled flow – runs on a schedule.
4. Business process flow – guided, multi-stage processes in model-driven apps.
5. Desktop flow – UI automation on Windows/Mac.
6. Child flows – reusable sub-flows in solutions.
Here’s a detailed breakdown of the Power Pages concepts and their uses, including examples, syntaxes,
and practical applications where necessary. I’ve also ensured there are no duplicate questions:
🧠 Intermediate-Level Questions
1. What are site settings in Power Pages?
Site Settings in Power Pages are key-value pairs stored in Dataverse that define certain configurations of
your site, enabling users to control various aspects of the portal without modifying code. They are often
used to store settings like feature toggles, configuration options, or environment-specific values.
Example:
• Site settings can define whether a site allows user registration, whether a banner should be
shown, or which external service API key should be used.
Syntax for accessing Site Settings in Liquid:
{{ settings['Site/ShowPromoBanner'] }}
This would return the value of the site setting Site/ShowPromoBanner, which could be a boolean
(true/false).
2. What is a Web Template in Power Pages?
A Web Template in Power Pages is a container for reusable HTML content and Liquid code. It is stored in
Dataverse and can include dynamic content, such as data pulled from Dataverse, user-specific content,
or page-specific elements. Web templates are used as blueprints for rendering content on a page.
Example: You might have a web template that defines the layout for all your product pages, including a
header, footer, and a dynamic product listing pulled from Dataverse.
Liquid Example:
{% webtemplate 'ProductPageTemplate' %}
<h1>{{ [Link] }}</h1>
<p>{{ [Link] }}</p>
<p>Price: {{ [Link] | currency }}</p>
{% endwebtemplate %}
This example assumes you’ve created a ProductPageTemplate web template that outputs a specific
layout for displaying products dynamically.
3. How does Liquid work in Power Pages?
Liquid is a templating language used in Power Pages for dynamic content generation. It allows for the
embedding of Dataverse data into web pages, along with conditional logic, loops, and more. Liquid is
processed server-side, which means it helps populate pages with real-time data before the page is sent
to the client.
Example: To show a personalized message to a logged-in user:
{% if user %}
<p>Hello, {{ [Link] }}!</p>
{% else %}
<p>Welcome, guest. Please <a href="/login">log in</a> to access more features.</p>
{% endif %}
In this example, the Liquid code checks if the user is logged in and displays a personalized greeting.
4. What are Page Templates and how do you use them?
Page Templates in Power Pages define the structure and layout for pages within your portal. They
control which Web Template is used and can also define whether certain elements, like headers or
footers, are included.
Example: You might create a ContactUsPageTemplate for the contact page, which uses a web template
to display a contact form and additional contact information.
5. How do you secure a Power Pages portal?
Power Pages portals can be secured using Authentication and Authorization. This includes setting up
user authentication, defining roles, and controlling access to data.
Steps to secure a portal:
1. Authentication: Set up identity providers like Azure AD, Microsoft, Google, or LinkedIn to allow
users to sign in.
2. Authorization: Use Web Roles to define what users can access based on their role (e.g.,
“Admin”, “Customer”).
3. Web Page Access Control: Set permissions for individual pages to restrict access based on user
roles.
6. How do you configure authentication and identity providers (e.g., Azure AD, Microsoft, LinkedIn)?
You can configure Authentication in Power Pages using Identity Providers. Power Pages supports
OAuth2.0, SAML, and OpenID Connect for integrating with identity providers like Azure AD, Microsoft, or
LinkedIn.
Steps:
1. Go to Portal Management and select Authentication.
2. Choose an identity provider (e.g., Azure AD, LinkedIn).
3. Set up necessary keys, client secrets, and scopes.
Example with Azure AD: To set up Azure AD as an identity provider, you would:
1. Register your portal as an app in Azure AD.
2. Copy the Client ID, Tenant ID, and Client Secret.
3. Paste them into the Power Pages Authentication settings.
7. What are Web Files and Notes in Power Pages?
Web Files are used for static assets like images, CSS files, and JavaScript files. These files are stored in
Dataverse and associated with pages, while Notes are used for storing unstructured data (e.g.,
attachments) related to entities in Dataverse.
Example of a Web File:
• A logo uploaded as a Web File could be referenced in the header of your page.
Example of a Note:
• A customer’s feedback might be stored as a Note in the context of their contact record.
8. How do you implement dynamic content using Liquid in Power Pages?
You can implement dynamic content in Power Pages using Liquid by embedding dynamic data into your
templates.
Example: Displaying a list of all blog posts:
{% fetchxml posts %}
<fetch>
<entity name="blogpost">
<attribute name="title" />
<attribute name="date" />
<order attribute="date" descending="true" />
</entity>
</fetch>
{% endfetchxml %}
{% for post in posts %}
<h2>{{ [Link] }}</h2>
<p>{{ [Link] }}</p>
{% endfor %}
This fetches blog posts from Dataverse and lists them dynamically.
9. How do you customize the appearance of your site (themes, CSS, JavaScript)?
Power Pages allows for custom Themes to define the overall look of the portal. You can also upload your
own CSS and JavaScript files to further customize the appearance and behavior.
Steps:
1. Go to Design Studio > Themes to set the base theme (e.g., blue, dark).
2. For deeper customizations, upload custom CSS and JavaScript through the Web Files section.
Example: To add custom CSS for all buttons:
button {
background-color: #007bff;
color: white;
10. What is the role of the Web Page Access Control Rule?
The Web Page Access Control Rule defines which user roles can access specific pages on your portal. By
setting up these rules, you can ensure that only authorized users can view or edit certain content.
Example: To restrict access to an admin page, you would create a rule that only allows users in the
Admin role to view it.
🚀 Advanced-Level Questions
11. How do you customize Power Pages with HTML, CSS, JavaScript, and Liquid?
Power Pages allows deep customization through HTML, CSS, JavaScript, and Liquid. You can modify
page layouts, styles, and functionality by directly editing the content in the design studio or by using
custom web templates and JavaScript.
12. Explain how to call Power Automate flows from Power Pages.
You can call Power Automate flows from Power Pages using two main methods:
1. Dataverse triggers: Perform actions that trigger Power Automate flows (e.g., when a record is
created or updated).
2. HTTP triggers: Call a flow’s HTTP endpoint from JavaScript on the page.
Example (JavaScript calling flow via HTTP):
fetch('[Link] {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: [Link]({ contactId: userId })
});
13. How do you implement custom authentication in Power Pages (e.g., SAML or OpenID Connect)?
You can implement custom authentication in Power Pages by configuring external identity providers
using SAML or OpenID Connect. This is done in the portal’s authentication settings, where you provide
the metadata URL or client ID/secret for your identity provider.
14. How can you expose Dataverse data securely to anonymous users?
You can expose Dataverse data to anonymous users by setting up Table Permissions that allow the
Anonymous Users role to read certain records. You also need to configure the Web Page Access Control
to allow anonymous access to the corresponding pages.
15. How do you integrate external APIs or web services in Power Pages?
You can integrate external APIs into Power Pages by using JavaScript to make client-side API calls, or by
using Power Automate to handle backend integration tasks.
Example (JavaScript API call):
fetch('[Link] {
method: 'GET',
headers: { 'Authorization': 'Bearer API_KEY' }
})
.then(response => [Link]())
.then(data => {
[Link]('Weather:', data);
});
16. How do Web Roles and Table Permissions work together?
Web Roles define what pages and features a user can access, while Table Permissions define what data
a user can access. These two mechanisms work together to ensure that users can only access the data
they are authorized to see.
17. How do you track changes made on a portal (audit logs, telemetry)?
You can track changes in Power Pages by enabling Audit Logs in Dataverse for specific tables.
Additionally, telemetry can be tracked using Application Insights or other analytics tools for monitoring
user interactions and performance metrics.
18. How do you handle multilingual websites in Power Pages?
Power Pages supports multilingual content. You can create translations for web pages, form labels, and
other content by enabling the Multilingual feature and providing content in multiple languages.
19. How do you build a custom form using HTML instead of the out-of-the-box form designer?
You can create a custom HTML form by writing the HTML code yourself, then using JavaScript and the
Portal Web API to submit the form data to Dataverse.
20. What are the limitations of Power Pages, and how do you work around them?
Some limitations of Power Pages include:
• Limited server-side code execution.
• Performance concerns with complex queries.
• File size and storage limits.
You can work around these limitations by using Power Automate, Azure Functions, and external services
for heavy processing or storage.