Back to Blog
power platform8 min read

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.

V
By Ventra Rocket
·Published on 1 March 2026
#Power Apps#Dataverse#Inventory#Low-Code#Microsoft 365

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 Number
  • product_name — Text (required)
  • sku — Text (unique)
  • category — Choice (Electronics, Clothing, Food, Other)
  • unit_price — Currency
  • reorder_point — Whole Number
  • current_stock — Whole Number

Stock Movements

  • movement_id — Auto Number
  • product — Lookup → Products
  • movement_type — Choice (Inbound, Outbound, Adjustment)
  • quantity — Whole Number
  • reference — Text (PO or SO number)
  • created_by — Lookup → Users
  • created_at — Date Time (auto)

Warehouses

  • warehouse_id — Auto Number
  • name — Text
  • location — Text
  • manager — 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:

  1. Add a Power BI Tile control
  2. Select your Workspace
  3. Select Dashboard: Inventory Overview
  4. 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.

Related Articles

Building an Inventory Management App with Power Apps | Ventra Rocket