Building an Inventory Management App with Power Apps
A practical guide to building a full-featured inventory management app with Microsoft Power Apps — Dataverse data model, barcode scanning, Power Automate alerts, and Power BI reporting.
Power Apps enables organisations to build business applications without a large development team. This guide walks through building a complete inventory management app: stock in/out transactions, barcode scanning, low-stock alerts, and real-time reporting.
1. Data Model Design with Dataverse
Dataverse is the Power Platform's backend database, optimised for business applications.
Tables to Create
Products
product_id— Auto Numberproduct_name— Text (required)sku— Text (unique)category— Choice (Electronics, Clothing, Food, Other)unit_price— Currencyreorder_point— Whole Numbercurrent_stock— Whole Number
Stock Movements
movement_id— Auto Numberproduct— Lookup → Productsmovement_type— Choice (Inbound, Outbound, Adjustment)quantity— Whole Numberreference— Text (PO or SO number)created_by— Lookup → Userscreated_at— Date Time (auto)
Warehouses
warehouse_id— Auto Numbername— Textlocation— Textmanager— Lookup → Users
2. Building the Main Screens
Home Screen — Overview Dashboard
Use a Gallery control to display low-stock products:
// Formula for "Low Stock Alert" Gallery
Filter(
Products,
current_stock <= reorder_point,
status = "Active"
)
Add a Chart control for stock by category:
// Data source for Pie Chart
GroupBy(
Products,
"category",
"Products"
)
Stock In Screen
Barcode Scanner control (available in Canvas App on mobile):
// OnScan property of BarcodeReader
Set(
varScannedProduct,
LookUp(Products, sku = BarcodeReader1.Value)
);
If(
IsBlank(varScannedProduct),
Notify("Product not found: " & BarcodeReader1.Value, NotificationType.Error),
Navigate(StockInDetail, ScreenTransition.Slide)
)
3. Stock-In Transaction Formula
// OnSelect of "Confirm Stock In" button
If(
IsBlank(txtQuantity.Text) || Value(txtQuantity.Text) <= 0,
Notify("Please enter a valid quantity", NotificationType.Warning),
// Create stock movement record
Patch(
'Stock Movements',
Defaults('Stock Movements'),
{
product: varScannedProduct,
movement_type: "Inbound",
quantity: Value(txtQuantity.Text),
reference: txtReference.Text,
notes: txtNotes.Text
}
);
// Update product stock level
Patch(
Products,
varScannedProduct,
{
current_stock: varScannedProduct.current_stock + Value(txtQuantity.Text)
}
);
Notify(
"Stock updated: " & txtQuantity.Text & " " & varScannedProduct.product_name,
NotificationType.Success
);
Navigate(HomeScreen, ScreenTransition.Fade)
)
4. Power Automate Integration for Alerts
Create a flow to send automated alerts when stock falls below the reorder point.
Trigger: When a row is modified (Dataverse) — Products table
Condition: current_stock <= reorder_point
Actions: Send email + Teams message to the warehouse manager.
Call the flow from Power Apps:
If(
updatedProduct.current_stock <= updatedProduct.reorder_point,
LowStockAlertFlow.Run(
updatedProduct.product_name,
Text(updatedProduct.current_stock),
Text(updatedProduct.reorder_point),
updatedProduct.manager.'Primary Email'
)
)
5. Embedded Power BI Reports
Embed a Power BI report directly inside your Power Apps canvas:
- Add a Power BI Tile control
- Select your Workspace
- Select Dashboard: Inventory Overview
- Select Tile: Stock Level Chart
Users can view real-time analytics without leaving the app.
6. Role-Based Access with Azure AD Groups
// Check role on App.OnStart
Set(
varUserRole,
Switch(
User().Email,
"admin@company.com", "Admin",
If(
!IsBlank(LookUp(WarehouseManagers, email = User().Email)),
"Manager",
"Staff"
)
)
);
// Show/hide features based on role
Visible(btnAdjustStock) = varUserRole in ["Admin", "Manager"]
Conclusion
Power Apps enables building a fully featured inventory management app in 1–2 weeks, at a fraction of the cost of traditional ERP software. Combined with Dataverse, Power Automate, and Power BI, your organisation gains a complete inventory system deeply integrated with Microsoft 365. Ventra Rocket delivers end-to-end Power Platform solutions tailored to your business processes.