Case study · nonprofit social services

Quality management approval and a business travel app with SharePoint and the Power Platform

For a nonprofit welfare organization, I rebuilt the approval process for quality management documents with SharePoint and 25 Power Automate flows. In addition, I built a canvas app for business travel requests and travel expense reports.

  • 12/2022 - 08/2024, then support as needed
  • more than 2,000 employees
  • Implementation
Industry
Social work and care (nonprofit welfare)
Company size
more than 2,000 employees
Scope
more than 80 services and facilities
Period
12/2022 - 08/2024, then support as needed
My role
Design, architecture, implementation, and subsequent support as needed
Type
Implementation

25

Power Automate flows in the quality management approval process

3

review stages before a quality management document is published

5

screens, 6 custom components, and around 570 controls in the canvas app

2

approval phases for the travel request and the expense report

01The situation

Where the project started.

The organization employs more than 2,000 people in over 80 services and facilities. Its quality management handbook comprises process descriptions, forms, and template documents that must be reviewed for content and formal requirements, then given final approval before publication. With the move of the intranet to SharePoint Online, this approval process was to be redesigned with Microsoft 365 and the Power Platform.

A first approach with a single document library and a customized form did not meet the requirements for permissions and usability. Each role was to see and edit only the documents and columns relevant to it. This cannot be implemented cleanly with built-in SharePoint features in a single library.

At the same time, business travel requests and travel expense reports were not fully digital. The request, approval by the manager, the expense report with receipts, and the handover to accounting were to be brought together in one continuous digital process.

Goals

  • Three-stage approval process for quality management documents with clearly separated roles (author, content review, formal review, and approval)
  • Permissions per role and review stage that result automatically from maintained lists of people
  • Traceable approvals with comments, time stamps, and an approval log
  • Regular review of published documents after an interval chosen by the organization
  • Business travel requests and travel expense reports in one app with approval, receipts, and an automatically generated expense voucher
  • Operation in dedicated Power Platform environments with test, production, and a documented solution

02Solution

What I designed and built.

Libraries for each role in the quality management approval process

I restructured the process: instead of one library with complex exceptions, there is a master library for published quality management documents and four working libraries for the author, content review, formal review, and approval. Each library shows only the columns that are relevant in that step and is accessible only to the respective role.

A document moves from stage to stage via Power Automate. The flow copies the file to the next library, transfers the metadata, sets the creator and editor correctly via the SharePoint REST API, and removes the file from the previous stage.

  • Master library plus four working libraries with around 30 documented columns each
  • Default view "My documents" per library, filtered to your own or assigned documents
  • Approval or rejection either via SharePoint content approval or a status field in the form
  • Comments per stage, additionally accumulated across all runs
  • Managed metadata for process assignment, lookup columns for business area, service area, and facility

Automatically maintained permissions

For each role, there is a SharePoint list with the authorized people and their business area. These lists also provide the choice values for the reviewer fields in the form. A nightly flow per role reconciles the members of the associated SharePoint group with the list via the REST API, removes people who are no longer authorized, and adds new ones.

  • Four SharePoint groups with their own permission levels per review role
  • Daily reconciliation at midnight via SharePoint REST (siteGroups, roleDefinitions)
  • Additional manual flow for correcting document permissions

Publication, Word templates, and approval log

After approval, the flow writes the document properties into the content controls of the Word template so that the header and footer always show the current status. The document is then published in the master library as a new major version, and an entry is created in the approval log.

The approval log stores all values at the time of approval as text. This way, the information is preserved even if a list entry or a user account changes later.

  • Filling the Word content controls with Word Online (Business)
  • Separate error path for an unsupported Word format with a notice to the responsible person
  • Publication notices sent immediately or grouped into a weekly notification
  • Notification to stored email distribution lists via child flows called over HTTP

Review of published documents

During the formal review, it is determined after how many months a document must be reviewed again. A daily flow identifies documents that are due and starts the review. In addition, an ad hoc review can be triggered via a yes/no field or manually. The document then goes back to the author or content review and goes through the approval process again.

  • Review periods of 6, 12, 18, 24, or 30 months (default 24)
  • Daily review flow that starts the review process through HTTP-triggered flows
  • Ad hoc review with up to four retries when reading the changes

Canvas app for business travel requests and travel expense reports

Based on a process analysis and a sketch, I built a canvas app with five screens: start, overview, travel request, travel expense report, and error view. The request and the expense report form one record that moves through the process via its status.

The app identifies managers through Office 365 Users, accounts for permissions such as submitting requests for other people, and calculates meal per diem allowances, deductions for provided meals, the mileage allowance, and travel and accommodation costs to arrive at the final reimbursement amount.

  • Five screens, six custom components (including app bar, quick search, tabs, and action bar)
  • Request overview with search, filter, and a view per role (requester, traveler, approver)
  • Copy function to create a new draft from an existing trip
  • Receipts as attachments directly on the request
  • Direct access to a request from the approval email via URL parameters
  • Central error handling via App.OnError and a dedicated error view

Approval workflows with delegation and a travel expense voucher

Two flows control the approval, one for the travel request and one for the expense report. They start only at a specific status and use approvals with attachments. If a delegate is stored for the approver, the delegate is included, and the result distinguishes between the intended person and the person who actually decided.

After the expense report is approved, the flow generates a travel expense voucher from a Word template, converts it to PDF, and notifies accounting. Every 15 minutes, a third flow updates the status of trips that have ended.

  • Status-driven SharePoint triggers with trigger conditions
  • Exceptions to the approval process configurable per person
  • Timeout path after 30 days with a status change and notification
  • Travel expense voucher as a PDF from a Word template via Word Online (Business) and OneDrive
  • More than 380 actions in the three core flows

Environments, solutions, and operations

I developed the quality management flows in a sandbox and moved them to production after a beta test. The business travel solution moved from the default environment to a dedicated production environment and is now available as a Power Platform solution with connection references. Regular backups of all flows, the app, and the SharePoint lists are part of operations.

  • Environment detection in the app and flows so that links and identifiers are correct for each environment
  • Solution with six connection references (SharePoint, Outlook, Approvals, Entra ID, Word Online, and OneDrive)
  • Separation of the technical service account and the support account when switching to a new environment
  • Monthly backups of the flows over more than a year

03In detail

Apps, processes, and data at a glance.

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

Apps1

  • Business travel appCanvas app · 5 screensRequest, approval status, travel expense report with receipts, and an overview of all your own trips and those awaiting approval. Six custom components, around 570 controls, data in five SharePoint lists.

Cloud flows (selection)

  • Quality management: forward from author to content reviewTrigger: change of file properties (trigger condition on content approval or status)Checks required fields, fills Word content controls, moves the document to the next library, sets the creator and editor via REST, and notifies the reviewer.
  • Quality management: content review approved or rejectedTrigger: change of file propertiesTwo flows that forward the document to the formal review or return it to the author, including comment and email.
  • Quality management: formal review approved or rejectedTrigger: change of file propertiesTwo flows for forwarding to approval or returning to the content review.
  • Quality management: approval granted or rejectedTrigger: change of file propertiesPublishes the document as a new major version in the master library, writes the approval log, and starts the notification, or returns the document.
  • Quality management: reconcile SharePoint groups (4 flows)Trigger: schedule, daily at midnightReconciles the members of the SharePoint group with the permission list for each role via the REST API.
  • Quality management: maintain permission lists (4 flows)Trigger: when an item is created or modifiedAdds or updates entries in the role lists and reports errors by email.
  • Quality management: immediate and weekly notificationTrigger: manual or schedule, Mondays at noonStart flows call child flows via HTTP that send a summary of newly published documents to each email distribution list.
  • Quality management: review due, ad hoc, and executionTrigger: daily schedule, yes/no field, manual, or HTTPIdentifies documents that are due, starts the review, and returns documents with all reviewer information to the approval process.
  • Business travel: travel request approvalTrigger: list item modified, status "in review"Approvals with attachments, delegation rule, exceptions, notifications, and timeout after 30 days.
  • Business travel: expense report approvalTrigger: list item modified, status "submitted for reimbursement"Second approval, generation of the travel expense voucher as a PDF from a Word template, and notification of accounting.
  • Business travel: status change after the end of the tripTrigger: schedule every 15 minutesSets trips to the reimbursement status after they end and notifies the travelers.
  • Determine environmentTrigger: call from Power AppsReturns the current environment identifier to the app so that links and configuration match each environment.

Data model8

  • Quality management documents (master)SharePoint document libraryPublished quality management documents with version, review period, and responsible persons
  • Working libraries for author, content review, formal review, and approvalSharePoint document libraryOne library per review stage with its own permissions and around 30 columns
  • Permission lists per roleSharePoint listAuthorized people with their business area, the basis for group reconciliation and reviewer selection
  • Approval logSharePoint listStorage of all approval data as text values at the time of approval, with versioning and restricted editing rights
  • Publication email distribution listsSharePoint listRecipients for immediate and weekly publication notices
  • RequestSharePoint listTravel request and expense report in one record with 67 documented data fields and attachments
  • Business travel permissionsSharePoint listApprovers per person and switches for exceptions and acting on behalf of others
  • Person, country, transportation modes, and delegationsSharePoint listMaster data and selection options for the app and approval flows

Integrations6

  • SharePoint REST API for group memberships, permission levels, and setting the creator or editor
  • Office 365 Users and Microsoft Entra ID for user and manager data
  • Word Online (Business) and OneDrive for Business for content controls and PDF vouchers
  • Office 365 Outlook for notifications via a central sender mailbox
  • Approvals for approving travel requests and expense reports
  • Power Apps for Makers to display the app version

04Tricky parts

Challenges and how I solved them.

Column-level permissions without an add-on product

In a single library, SharePoint cannot share different columns and documents per review stage. I therefore distributed the process across five libraries and moved the document from stage to stage with a flow. I then set the creator and editor via a REST call so that the "My documents" view and the version history are correct.

Permissions from lists instead of manual maintenance

The business department only maintains lists of people. Four nightly flows read groups and permission levels via the SharePoint REST API and reconcile the members. As a result, the reviewer selection in the form and the actual access rights always match.

Metadata in the Word document

The headers and footers of the quality management documents should show the title, process, responsible persons, and status. To do this, the approval flow fills the content controls of the Word template with Word Online (Business). If this fails because of an older file format, the flow stops in a controlled way and notifies the responsible person.

Robust flows despite file locks

Documents are often still open when they are moved. In every flow, I separate processing and error handling into their own scopes, use delays before deleting, and allow up to four retries. Errors are sent by email with context to support.

Directly from the mailbox to the request

Approvers receive an email with a link that opens the app with the request number and role as URL parameters. The flows build this link per environment so that test and production are not mixed up.

Delegation and deadlines in the approval

Both approval phases read stored delegates, mark them in the request, and record who actually made the decision. If a request remains open for 30 days, a separate path resets the status and informs those involved.

Moving without loss of functionality

The business travel solution initially ran in the default environment. I moved it to a dedicated production environment and later to a new environment with separate service and support accounts. This required checking and updating connections, ownership, mailbox permissions, the Word template, and app links.

05Approach

Step by step to the result.

  1. 1

    Analysis and design (12/2022)

    Familiarization with the existing library, restructuring of the approval process, implementation design with libraries for each role, and an effort estimate per work package.

  2. 2

    Implementation of the quality management approval (12/2022 to 02/2023)

    Building the libraries, permission lists, and flows in a sandbox, documentation of the overall process, an on-site workshop, and a beta test with the business departments.

  3. 3

    Quality management go-live (03/2023)

    Moving the flows to production, migrating the libraries and lists, adding notification and review.

  4. 4

    Business travel app (03/2023 to 06/2023)

    Process analysis, sketch, process flow diagram, and data model, followed by the canvas app and approval workflows, beta test from 05/2023.

  5. 5

    Expansion and operations (07/2023 to 01/2024)

    Travel expense voucher as a PDF, central sender mailbox, move to the production environment, documentation of the data fields, and task management via Planner.

  6. 6

    Support and further development as needed (after 08/2024)

    Adjustments as needed, error analyses, separation of accounts, and a move to a new Power Platform environment, as well as analysis of a further use case.

06Result

What works differently today.

  • The three-stage quality management approval process has been in production on SharePoint Online since 03/2023 with 25 Power Automate flows (as of 07/2024).
  • Expense vouchers are generated automatically as PDFs and go to accounting together with the receipts.
  • After the move to a new Power Platform environment in 10/2026, the client confirmed a successful functional test.

Technologies

  • Microsoft SharePoint Online (document libraries, lists, content approval, managed metadata)
  • Microsoft Power Automate (cloud flows, approvals)
  • Microsoft Power Apps (canvas app)
  • Microsoft Word (document templates with content controls)
  • Word Online (Business) and OneDrive for Business
  • SharePoint REST API
  • Office 365 Users and Microsoft Entra ID
  • Office 365 Outlook
  • Power Platform solutions with connection references

Demonstrated skills

  • Process analysis and design of multi-stage approval processes
  • SharePoint permission models with groups, permission levels, and the REST API
  • Power Automate with trigger conditions, child flows, error handling, and retry logic
  • Document automation with Word content controls and PDF generation
  • Canvas apps with components, deep links, and central error handling
  • Approvals with delegation and deadlines
  • Environment strategy, solutions, and connection references in the Power Platform
  • Long-term support and further development of production solutions

07Questions and answers

Frequently asked questions

How can different permissions per review stage be implemented in SharePoint?
In a single library, columns cannot be hidden per role. A proven approach is one library per review stage with its own permissions and a master library for published documents. Power Automate moves the document, including its metadata, from stage to stage.
How does SharePoint metadata get into a Word document?
Word templates can contain content controls that Power Automate fills with the action for populating a Word template. This way, the title, responsible persons, or review date appear in the header and footer. Error handling for documents in older formats is important.
Why a canvas app for business travel requests instead of a SharePoint form?
Requests and expense reports need calculations, role-dependent views, and receipts attached to one record. A canvas app presents this clearly and can be opened directly with the correct request from approval emails. The data still stays in SharePoint lists.
What should you consider when moving a Power Platform solution to another environment?
In addition to the app and flows, connections, owners, mailbox permissions, templates, and hard-coded links must be checked. A solution with connection references and a dedicated technical service account simplify the move. A targeted test of individual functions, such as sending emails, is part of it.

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.