Sitelet https://github.com/jennisalerno23-byte/inventory-management-automation
Skip to content

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Inventory Management Automation

IT inventory management solution integrating Microsoft Lists, Power Apps, Power Automate, and Snipe-IT to simplify asset registration, updates, removals, approvals, and master-data synchronization.

The solution was designed to reduce manual work, improve data consistency, and provide a controlled interface for managing inventory records without requiring users to work directly inside Snipe-IT.


Problem

Inventory management was originally performed directly in Snipe-IT, which created several operational challenges:

  • Inconsistent naming of companies, locations, models, manufacturers, and suppliers.
  • Manual asset registration and updates.
  • Limited validation before data reached the inventory platform.
  • Risk of incomplete or incorrect information.
  • Difficulty maintaining standardized master data.
  • No centralized approval workflow for inventory changes.
  • Multiple assets had to be registered manually when several units of the same equipment were received.

The goal of this project was to provide a simpler and more controlled workflow while keeping Snipe-IT as the system of record.


Solution Overview

The solution introduces a Power Platform layer in front of Snipe-IT.

Users interact with a customized Power Apps interface, while requests are stored temporarily in Microsoft Lists and processed by Power Automate.

Power Automate communicates with the Snipe-IT REST API to create, update, delete, and retrieve inventory information.

A second automated flow synchronizes master data from Snipe-IT back into Microsoft Lists so that Power Apps always presents current options.

Power Apps main menu

Main Components

Component Purpose
Power Apps User interface for asset creation, modification, and removal requests
Microsoft Lists Temporary request and control layer
Power Automate Approvals, validation, API integration, notifications, and synchronization
Snipe-IT Inventory system of record
Snipe-IT REST API Integration layer used by Power Automate

Architecture

                    ┌─────────────────┐
                    │   Power Apps    │
                    │ Inventory Form  │
                    └────────┬────────┘
                             │
                             ▼
                    ┌─────────────────┐
                    │ Microsoft Lists │
                    │ Request Layer   │
                    └────────┬────────┘
                             │
                             ▼
                    ┌─────────────────┐
                    │ Power Automate  │
                    │ Main Workflow   │
                    └────────┬────────┘
                             │ REST API
                             ▼
                    ┌─────────────────┐
                    │    Snipe-IT     │
                    │ System of Record│
                    └────────┬────────┘
                             │
                             │ Scheduled master-data sync
                             ▼
                    ┌─────────────────┐
                    │ Power Automate  │
                    │ Master Sync     │
                    └────────┬────────┘
                             │
                             ▼
                    ┌─────────────────┐
                    │ Microsoft Lists │
                    │ Choice Fields   │
                    └─────────────────┘

Key Features

Asset Creation

The creation workflow supports:

  • Approval before inventory changes are applied.
  • Single or multiple asset creation.
  • Independent serial numbers for multiple assets.
  • Automatic validation between asset quantity and number of serials.
  • Support for N/A serial values when required.
  • Automatic Asset Tag generation.
  • Existing or newly created companies.
  • Existing or newly created locations.
  • Existing or newly created suppliers.
  • Existing or newly created manufacturers.
  • Existing or newly created models.
  • Automatic association with category and status information.
  • Optional purchase information.
  • Optional asset image upload.
  • Image validation limited to one file with a maximum size of 500 KB.
  • Confirmation and rejection notifications.

New asset registration form

Asset Modification

The modification workflow allows controlled updates to:

  • Asset status.
  • Asset location.

Before an approval is generated, the workflow validates that the submitted Asset Tag exists in Snipe-IT.

If the asset does not exist:

  • The approval is not generated.
  • The user receives an Asset Not Found notification.
  • The invalid request is removed from Microsoft Lists.
  • The flow terminates cleanly.

Existing asset values are preserved when they are not part of the requested modification.

Asset modification form

Asset Removal

The removal workflow also validates the Asset Tag before requesting approval.

If the asset exists:

  1. An approval request is generated.
  2. If approved, the asset is deleted through the Snipe-IT API.
  3. A confirmation email is sent.

If the asset does not exist, no approval is generated. The requester is notified and the invalid Microsoft Lists record is removed.


Validation and Error Handling

Several validation layers were implemented to reduce avoidable errors.

Power Apps Validation

The application prevents submission when required data is missing.

For new assets, quantity must:

  • Be numeric.
  • Be an integer.
  • Be greater than or equal to 1.

The number of serial values must also match the requested quantity.

Valid example:

Quantity: 3
Serials: SN001, SN002, SN003

Invalid example:

Quantity: 3
Serials: SN001, SN002

Values such as the following are also supported when a physical serial number is unavailable:

Quantity: 3
Serials: N/A, N/A, N/A

The Save button remains disabled until the required conditions are satisfied.

API Search Protection

Dynamic values used in Snipe-IT API search parameters are encoded with uriComponent().

This protects queries when names contain characters such as:

+  &  /  #  %  ?

The protection is used in dynamic searches for models, manufacturers, companies, locations, suppliers, and relevant modification lookups.

Asset Tag Validation

Snipe-IT may return HTTP 200 even when an Asset Tag does not exist, with a response similar to:

{
  "status": "error",
  "messages": "Asset not found"
}

For that reason, the workflow validates the API response body instead of relying only on the HTTP status code.

Invalid modification and removal requests are handled before an approval is generated.


Approval Workflows

Inventory operations are controlled through Power Automate approvals.

Creation Approval

Approval example

The creation approval presents the information required to authorize a new inventory record.

The content adapts to the request so that unnecessary fields are not displayed when they do not apply.

Modification Approval

Modification approvals display only the fields that are actually being changed.

For example, a status-only request does not display an empty location field.

Removal Approval

The removal approval identifies the Asset Tag and clearly warns that approval will remove the asset from Snipe-IT.

Rejected requests are removed from the temporary Microsoft Lists request layer, and the requester receives the rejection reason.


Master Data Synchronization

A second Power Automate flow synchronizes master data from Snipe-IT to Microsoft Lists every day at 2:00 AM.

The synchronized master data includes:

  • Companies
  • Locations
  • Models
  • Manufacturers
  • Suppliers

The flow retrieves the current records through the Snipe-IT REST API and updates the corresponding Microsoft Lists Choice fields.

Master data synchronization flow

Special options are preserved so users can request new master-data records when necessary:

NUEVA COMPAÑIA
NUEVA UBICACION
NUEVO MODELO
NUEVO FABRICANTE
NUEVO PROVEEDOR

This keeps the Power Apps dropdown values aligned with Snipe-IT without requiring manual maintenance of each Choice field.


Image Handling

Asset images are optional.

Power Apps restricts uploads to:

Maximum files: 1
Maximum size: 500 KB

When an image is provided, Power Automate prepares a multipart request and uploads the file to the corresponding Snipe-IT asset after creation.


Security

The Snipe-IT API credential is centralized in each Power Automate flow through:

varSnipeApiToken

HTTP actions dynamically build the authorization header from that value rather than storing a separate token in every HTTP action.

This simplifies future credential rotation and reduces duplicated credential configuration.

As part of the final validation:

  • A new API token was generated.
  • Both Power Automate flows were migrated to the new token.
  • Asset creation, modification, removal, and master-data synchronization were successfully tested.
  • The previous API token was revoked.

Security note: No API tokens, credentials, internal IP addresses, email addresses, or sensitive production data are included in this repository.


Repository Structure

  • Architecture and Workflow
    End-to-end architecture, request lifecycle, validation layers, and design decisions.

  • Microsoft Lists
    Temporary request layer, synchronized Choice fields, request lifecycle, and data structure.

  • Power Apps
    User interface, operating modes, required fields, validation logic, and attachment controls.

  • Power Automate
    Main automation flow, approvals, Asset Tag validation, API operations, error handling, and master-data synchronization.

  • Snipe-IT Integration
    REST API integration, asset operations, master-data endpoints, search handling, and security considerations.

  • images/
    Sanitized screenshots used throughout the documentation.


Technical Highlights

Main Power Automate routing

  • REST API integration with Snipe-IT.
  • Conditional approval workflows.
  • Dynamic creation of related master-data records.
  • Multiple asset creation from a single request.
  • Automatic Asset Tag generation.
  • Partial asset updates while preserving existing values.
  • Asset Tag pre-validation before modification and removal approvals.
  • Dynamic approval content.
  • Multipart image upload.
  • Scheduled master-data synchronization.
  • URL-safe API searches using uriComponent().
  • Centralized API credential configuration.
  • Controlled cleanup of rejected and invalid requests.

Limitations and Future Improvements

The current implementation was built around the available Microsoft 365 and Snipe-IT environment.

Potential future improvements include:

  • Moving secrets to a dedicated secret-management solution.
  • Packaging Power Platform components into a managed Solution.
  • Using environment variables for deployment across environments.
  • Creating a custom connector for the Snipe-IT API.
  • Improving historical master-data normalization.
  • Adding centralized execution and error monitoring.
  • Expanding asset modification capabilities if operational requirements change.

These are potential architectural improvements rather than requirements for the current implementation.


Snipe-IT Result

The approved request is ultimately reflected in Snipe-IT, which remains the system of record for the inventory.

Asset created in Snipe-IT


Project Status

Completed, functionally validated, and in operational use.

The following scenarios were tested successfully:

  • Single asset creation.
  • Multiple asset creation.
  • Quantity and serial validation.
  • Existing master-data selection.
  • Dynamic master-data creation.
  • Asset image upload.
  • Asset status modification.
  • Asset location modification.
  • Asset Tag validation.
  • Asset removal.
  • Approval rejection workflows.
  • Invalid Asset Tag handling.
  • Master-data synchronization.
  • API credential rotation.

The solution has also been successfully used in real inventory operations to register newly acquired assets. Approved requests were processed automatically and the corresponding asset records were created in Snipe-IT with their associated inventory data.

Operational validation of real asset update scenarios is still ongoing as equipment is deployed and inventory changes occur.

About

IT inventory management solution integrating Microsoft Lists, Power Apps, Power Automate, and Snipe-IT to automate asset tracking and management workflows.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors