Case study · metalworking

Digital quality inspection with Power Apps in precision machining

For a manufacturer of precision turned and milled parts, I designed and implemented a responsive canvas app for quality inspections in production. It determines which inspection characteristics are due for each machine, part, and inspection trigger, evaluates measured values against tolerances, and stores the results in an auditable form in SharePoint, with versioning and restricted editing rights. In addition, I advise on migrating an existing production app that has evolved over time into separate environments.

  • since 11/2025
  • more than 100 employees
  • Implementation
Industry
Metalworking - precision turned and milled parts
Company size
more than 100 employees
Scope
Supplier with customers in Germany and abroad, production in shifts
Period
since 11/2025
My role
Design, architecture, and implementation, as well as migration consulting
Type
Implementation

9

screens in the canvas app (as of 10/2026)

7

cloud flows in the Power Platform solution

4

inspection triggers: interval, restart, tool change, and tool change group

45

measuring instruments in the catalog for attribute and variable inspections

30

exported solution versions between 03/2026 and 10/2026

33

chapters in the strategy and migration paper for the existing app

01The situation

Where the project started.

The company manufactures precision turned and milled parts in shifts. Inspection plans were created per part in external inspection planning software and were available as Excel production inspection plans and as JSON and DFQ exports. They contain characteristic numbers, nominal dimensions, tolerances, measuring instruments, inspection intervals, tool positions, and special markings. Machine, part, and machine status data were already stored in an Azure SQL database.

The goal was an operator-focused solution that shows, at the machine, exactly which characteristics that are due at the current part counter, after a restart, or after a tool change. Existing MES, CAQ, or ERP systems were explicitly not to be replaced. Rugged Android devices are used in production; quality assurance and administration also work at the desktop.

At the same time, a production app that had grown internally over the years, with flows, Dataverse tables, and SQL dependencies, was partly spread across the default environment and a personal development context. It was to be moved in a controlled way into a structure of development, test, and production without disrupting ongoing operations.

Goals

  • Determine due inspection characteristics automatically from the inspection trigger, the inspection interval per characteristic, and the part counter
  • Guide users through recording measurements and immediately assess them against unilateral and bilateral tolerances (OK/NOK)
  • Document deviations with causes and actions from fixed catalogs and notify quality assurance automatically
  • Store inspection results in Microsoft 365 in an auditable form with versioning and restricted editing rights, without hitting SharePoint limits
  • Control roles for operators, quality assurance, and administration via Microsoft 365 groups
  • Deployment via solutions to separate test and production environments
  • Create a solid basis for the migration decision for the existing app

02Solution

What I designed and built.

Technical design and clickable mockup

Before implementation, I wrote a technical design. It defines the target architecture, MVP scope, deliberate exclusions, roles, operating model, and error and cancellation handling, and names platform limits such as delegation in Power Apps and the 5,000-item threshold in SharePoint. A questionnaire clarified outstanding issues with quality assurance.

For functional alignment, I built a tablet mockup in HTML, CSS, and JavaScript that loads real JSON inspection plans and demonstrates the inspection trigger, characteristic filtering, sorting, and deviation recording. The feedback from quality assurance went directly into the app.

  • MVP scope excluding measuring machine integration, Power BI, and CAQ features
  • Analysis of the Q-DAS transfer format (DFQ) and design of a lean intermediate JSON format
  • Device and UI strategy based on the existing production hardware

Responsive canvas app for guided inspection

In nine screens, the canvas app guides users from the selection through the characteristics overview and the individual inspection steps to the results overview and inspection history. When the operator selects a machine, the app loads the part currently running there from the machine status in SQL and suggests it. The layout is based on auto-layout containers and switches to a smartphone layout below a width of 700 pixels.

  • Preselection of the part currently being produced per machine from the machine status view
  • Load inspection plans as JSON via a flow and convert them into local collections with ParseJSON
  • Automatic OK/NOK evaluation for unilateral and bilateral tolerances, required information for NOK
  • Multiple inspections when several parts must be inspected per characteristic
  • Interim saving via a timer and resuming at the first open or incomplete inspection step
  • Catalogs for 45 measuring instruments, 8 deviation causes, and 7 actions

Inspection triggers, interval logic, and tool change groups

The inspection app distinguishes between interval, restart, tool change, and group change inspections. The inspection interval is read per characteristic from the inspection plan and compared with the number of parts produced since the last matching inspection, that is, the current part counter minus the part counter at that inspection. From the interval onward, a characteristic counts as due, from 80% as due soon. For a tool change, only the characteristics of the selected tool positions are queried, each as a last-part and first-part inspection.

  • A separate basis for determining when each characteristic is due, rather than one for the entire inspection
  • Completed tool change and group inspections with a part counter count toward the interval
  • Sorting by production logic: first/last part, then measuring instruments in inspection plan order, and then characteristic number

Power Automate flows for storage, roles, and notification

The background business processes run on cloud flows with the Power Apps trigger (V2). Each flow has separate processing and error scopes. The error scope filters failed actions, sends an error email, and returns a defined code to the app.

  • Create or update the inspection result as a JSON file and set metadata
  • Role determination via membership in three Microsoft 365 groups
  • Quality assurance notification by HTML email for NOK, controlled by trigger conditions and a sent flag
  • Uniform flow configuration for environment and tenant as an object variable

Closing a production run without changing historical counters

For a new production order, the part counter was to start over without rewriting old inspection data. I solved this with a production run: a flow with 77 actions checks required information and permissions, looks up the open records of the machine-part combination, requires exactly one unique run identifier, and blocks the closing as long as an inspection is still open. Only then is the run closed, with every step recorded in a log list.

  • Separate return codes for success, open inspection, no open run, ambiguous run, missing permission, and technical error
  • Pagination up to 5,000 records and parallel processing when closing
  • Available only to quality assurance and administration

Automatic archiving to stay below the SharePoint threshold

As the number of inspection results grew, the queries approached the 5,000-item threshold. For this, I built an archiving flow that moves completed inspections into a separate archive library after two months. It runs on Sundays between midnight and 6 a.m. in 10-minute steps with 50 files each and also checks itself whether the time window is active.

  • Analysis mode, which only counts and logs candidates, and archive mode
  • Log statuses STARTED, COMPLETED, COMPLETED-WITH-ERRORS, and FAILED with cutoff date, quantities, and batch identifier
  • Errors per file handled separately from overall technical errors, with quantity reconciliation at the end

Solutions, environments, and permissions

The inspection app and all flows are in one solution with connection references. Between March and October 2026, 30 solution versions were created and deployed as managed solutions to test and production. During the rollout, I worked with IT to set up run-only access, connections, and flow permissions so that operators do not need maker or administrator rights.

Migration plan for an existing production app

For the existing production app with modules such as placing parts on hold and scrap, machine status and OEE, fault reporting, shift handover, and group planning, I prepared a technical pre-assessment and a strategy and migration paper with 33 chapters. I analyzed the app file with 26 screens, 11 embedded flows, 7 Dataverse tables, and several SQL databases.

The paper describes the target state, solution strategy, managed and unmanaged solutions, the design for connections, identities, and service accounts, environment variables, permissions, initial licensing guidance, data lifecycle, App checker findings, a risk register, and test, cutover, and rollback plans. Management then confirmed the target state with three environments and manual solution deployment.

Integration with Business Central

I am currently building Power Automate flows to connect an app built with Power Apps to Microsoft Dynamics 365 Business Central. The SQL integration and app development are handled by the client's internal IT or development staff.

03In detail

Apps, processes, and data at a glance.

Names and content are described in neutral terms - I never name clients.

Apps2

  • App for guided quality inspectionsCanvas app · 9 screensResponsive app for tablet, smartphone, and desktop: selection of machine, part, and inspection trigger, guided inspection steps with tolerance evaluation, deviation recording, inspection overview, closing of production runs, and role control. 466 controls and a navigation component.
  • Existing production app (object of analysis)Canvas app · 26 screensInternally developed app for placing parts on hold, machine status, shift handover, and fault reports. I analyzed it for the migration; I did not develop it.

Cloud flows7

  • Determine a user's roleTrigger: Power Apps (V2)Checks membership in three Microsoft 365 groups and returns administrator, quality assurance, operator, or unknown to the app.
  • Load inspection plan per partTrigger: Power Apps (V2)Looks up the active JSON inspection plan of a part in the document library and returns the file content to the app.
  • Save inspection result as JSONTrigger: Power Apps (V2)Creates or updates the result file, controlled by the SharePoint ID or production run, and sets status and counter metadata.
  • Quality assurance notification for deviationsTrigger: SharePoint: when a file is modified (properties only), with trigger conditionsStarts only for a completed inspection with NOK characteristics in the open production run, sends an HTML email with inspection details, and flags the email as sent so that no duplicate emails are sent.
  • Close production runTrigger: Power Apps (V2)77 actions: input validation, role check, uniqueness of the run, block for open inspections, closing, and logging with structured return codes.
  • Archiving of completed inspectionsTrigger: recurrence, Sundays midnight to 6 a.m. every 10 minutesMoves completed inspections to the archive after two months in blocks of 50 files, with analysis mode, log list, and error handling (55 actions).
  • Correct the metadata of an inspectionTrigger: manualHelper flow for targeted correction of the metadata of individual inspection results.

Data model6

  • Inspection plansSharePoint document libraryJSON inspection plans per part with an active flag
  • Inspection resultsSharePoint document libraryJSON inspection results with a header and characteristic rows, plus metadata on status, production run, inspector, machine, part, number of NOK results, and notification
  • Inspection result archiveSharePoint document libraryArchived completed inspections with archive timestamp, batch identifier, and reason
  • Production run logSharePoint listRequests and results when closing production runs
  • Archiving logSharePoint listArchiving runs with mode, cutoff date, quantities, status, and message
  • Machines, parts, and machine statusSQLRead access to views in Azure SQL for selection and prefilling

Integrations6

  • Azure SQL: views for machines, parts, and current machine status (read-only, filtered with delegation)
  • JSON exports from inspection planning software as the inspection plan source
  • Q-DAS transfer format (DFQ): analysis and design of an intermediate JSON format
  • Microsoft 365 groups for role determination
  • Office 365 Outlook for quality assurance notifications and error emails
  • Microsoft Dynamics 365 Business Central via Power Automate (ongoing)

04Tricky parts

Challenges and how I solved them.

Due status per characteristic instead of per inspection

An inspection contains many characteristics with different intervals. I read the interval per characteristic from the tags of the inspection plan, look up the part counter of exactly this characteristic in the JSON of the last matching inspection, and calculate from it whether it is due, due soon (from 80%), or not yet due. Completed tool change and group inspections with a part counter are included.

Inspection sequence according to production logic

The operator should not have to jump between measuring instruments. I generate helper keys and sort in several levels: first the first or last part, then measuring instrument groups in the order of their first occurrence in the inspection plan, and then the characteristic number numerically. The inspection steps are then renumbered.

New production order without touching the history

Instead of resetting part counters, there is a production run with a status. The closing flow requires exactly one unique run identifier, blocks if inspections are open, and returns a separate return code to the app for each case. Historical measured values and counters remain unchanged.

SharePoint threshold of 5,000 items

When the active inspection results exceeded the threshold, part counters and due statuses no longer loaded reliably. I built a scheduled archiving flow with analysis mode, block processing, a log list, and its own time window that moves completed inspections after two months. Open inspections always remain active.

No duplicate quality assurance emails

The notification is tied to file changes and would trigger with every save. Trigger conditions only let the flow start for a completed inspection with NOK in the open run, and a sent flag in the metadata prevents a second email.

Permissions without admin rights for operators

Errors when calling a flow were not in the flow itself but due to missing permissions on the solution-aware flow record. I looked separately at the business app role, app sharing, run-only access, and connection permissions and worked with IT to reduce the permissions to what is necessary.

05Approach

Step by step to the result.

  1. 1

    Kickoff and onboarding (11/2025 to 12/2025)

    Project start with quality assurance, IT, and internal development, account setup, first demo app and demo flows, review of the SQL databases.

  2. 2

    Design and mockup (01/2026 to 02/2026)

    Technical design with MVP scope, questionnaire, HTML mockup with real inspection plans, analysis of the DFQ format, and several rounds of alignment with quality assurance.

  3. 3

    Implementation (03/2026 to 05/2026)

    Building the canvas app, SQL integration, role and permission model, solution and environments, saving process, resuming inspections, tool change groups, and smartphone layout.

  4. 4

    Pilot and fine-tuning (06/2026 to 07/2026)

    Iterative adjustments based on feedback from production and quality assurance, part counter correction, performance tests, and sorting of inspection steps by production logic.

  5. 5

    Go-live and operations (08/2026 to 10/2026)

    Transition to the production environment, closing of production runs, archiving, and permission analysis together with IT.

  6. 6

    Migration consulting (since 05/2026)

    Technical pre-assessment of the existing app, strategy and migration paper, and a decision paper for management as the basis for later implementation.

06Result

What works differently today.

  • The inspection app is deployed via solutions to the test and production environments and is in operation.
  • Identification of due characteristics, tolerance evaluation, deviation recording, and quality assurance notification are handled digitally in the app instead of via printed inspection plans.
  • Archiving runs automatically every week and moves completed inspections so that the active set stays below the SharePoint threshold.
  • A basis for decision-making is available for the existing app. The target state with development, test, and production and the manual solution deployment have been confirmed.

Technologies

  • Microsoft Power Automate (cloud flows)
  • Microsoft Power Apps (canvas app, responsive design)
  • Microsoft SharePoint Online
  • Microsoft Azure SQL
  • Microsoft Entra ID and Microsoft 365 groups
  • Microsoft Power Platform solutions (ALM)
  • Office 365 Outlook
  • Microsoft Dataverse
  • Microsoft Dynamics 365 Business Central
  • JSON
  • Q-DAS DFQ (analysis)

Demonstrated skills

  • Designing inspection apps for the shop floor with Power Apps canvas apps and Power Fx
  • Processing nested JSON structures in Power Automate and Power Apps
  • Business logic for inspection intervals, part counters, and tool changes
  • Robust flows with error scopes, return codes, and logging
  • Handling SharePoint thresholds and delegation
  • Responsive design for tablet, smartphone, and desktop
  • Solution-based ALM and permission analysis
  • Current-state assessment and migration strategy for Power Platform landscapes that have grown over time

07Questions and answers

Frequently asked questions

Can SharePoint store inspection results once there are more than 5,000 items?
Yes, a library can hold far more items. What is critical are queries and views over 5,000 items. I therefore work with indexed, filtered queries and archive completed records on a schedule into a separate library so that the active set stays small.
How can inspection intervals per characteristic be mapped in Power Apps?
The interval is defined for each characteristic, not for the inspection as a whole. The inspection app compares the current part counter value with the value recorded when that specific characteristic was last inspected and shows only characteristics due for inspection. An early warning level helps group inspections efficiently.
Can Power Apps read DFQ files directly?
No, DFQ is a line-based key-value format that Power Automate and Power Apps cannot process natively. It makes sense to convert it into a lean JSON format that clearly describes characteristics, tolerances, and inspection details.
Why take inventory before migrating an app built with Power Apps that has evolved over time?
An app file contains neither all background flows nor data, connections, permissions, or document templates. Only an inventory reveals dependencies, personal ownership, and risks and makes a move with a test and rollback plan possible.

08More case studies

More projects in detail.

Specialist retailer of fireplaces and stoves with delivery and installationsince 02/2022 Order processing for a stove retailer with Power Apps and SharePoint For almost five years, I developed the central order processing system for a fireplace and stove retailer with several companies and locations, based on SharePoint, Power Automate, and Power Apps, and I still support it today. Quotes with digital signatures, invoices and payment reminders via sevDesk, Planner tasks, customer surveys with Forms, Power BI, and a mobile installation report on tablets all work together. The solution gave rise to the industry platform FLAMOX365. more than 50 employees SharePoint Online (lists and libraries)Power Automate (cloud flows)Power Automate approvalsPower Apps (canvas apps)Forms (customer surveys) Read case study Industry06/2026 - 09/2026 Order approval in manufacturing with Power Automate and SharePoint For a manufacturing company, I implemented a multi-stage approval process for customer orders with Power Automate and SharePoint. Engineering, installation, order management, purchasing, and a second purchasing review handle approvals in sequence; rejections are routed back to the appropriate step with a required explanation. Nine flows, eight SharePoint lists, escalation, and an audit trail form the core system. Part of a group of companies with more than 12,000 employees Power Automate (cloud flows)Power Automate ApprovalsSharePoint Online (lists)Office 365 OutlookPower Platform solutions (managed and unmanaged) Read case study Energy and cable industry12/2025 - 09/2026 SharePoint migration, Power Apps, and Azure in the cable industry For an international group in the energy and cable industry, I supported the migration of SharePoint and Power Platform applications. I developed the security and Azure architecture concept for a QHSE application and rebuilt three Power Apps for hazardous substance management, replacing an on-premises SharePoint solution with Nintex workflows. more than 10,000 employees Power Automate (cloud flows)Power Apps (canvas apps)SharePoint OnlineOn-premises SharePoint (source system)SharePoint REST API Read case study

A similar project? Let's talk.

Tell me where things get stuck today - in a free, no-obligation initial consultation via Microsoft Teams, we will clarify what the Power Platform can do for your process and what a sensible first step looks like.