Case study · energy and cable industry

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.

  • 12/2025 - 09/2026
  • more than 10,000 employees
  • Implementation
Industry
Energy and cable industry
Company size
more than 10,000 employees
Scope
international; the QHSE application in scope serves several thousand users in many countries
Period
12/2025 - 09/2026
My role
Analysis, architecture and security design, implementation, and transition to operations
Type
Implementation

117

SharePoint lists with a coordinated indexing strategy

18

lookup columns of the migrated substance list restored

4

authentication models for external users evaluated

3

newly built canvas apps for hazardous substance management

12

cloud flows for data migration, document generation, and the approval process

11

linked Nintex workflows analyzed and converted into a matrix-driven model

01The situation

Where the project started.

The group operates several business applications based on Power Automate, Power Apps, and SharePoint. A group-wide QHSE application for recording safety observations and tracking actions consisted of a mobile capture app and a desktop application for management. The data was stored in more than 110 SharePoint lists set up separately by location. The application was to be moved, without functional changes, to an Azure-based target architecture with Azure SQL for several thousand users in many countries. For this, IT security required an auditable security and architecture design.

At the same time, a production site needed to migrate a on-premises SharePoint solution for hazardous substance management to SharePoint Online. The central substance list was linked via 18 lookup columns to reference lists for H and P statements and R and S phrases, hazard symbols, extinguishing agents, and first aid measures. These links could not be transferred directly. Label printing, operating instructions, and the multi-stage approval process for new substances had previously run on SharePoint forms and Nintex workflows; the approval process alone consisted of 11 linked workflows. These solutions were to be replaced by Power Automate and Power Apps.

Goals

  • An auditable security and Azure architecture design for the migration of the QHSE application as the basis for approval by IT security.
  • A viable authentication model for external users without an account in the corporate directory.
  • Stabilization of the existing SharePoint solution until it is replaced by the target architecture.
  • Restoration of the lookup relationships in the migrated substance list.
  • Replacement of label printing, creation of operating instructions, and the substance approval process with Power Automate and Power Apps in SharePoint Online.

02Solution

What I designed and built.

Security and Azure architecture design for the QHSE application

I analyzed the existing solution based on the functional documentation, the process description, and the exported Power Apps, and created an English-language architecture document with 12 chapters. The guiding principle was a platform-only migration without functional changes. The document describes the target architecture in layers, the role and permission model, and encryption, logging, backup, and operations. It served as the basis for coordination with architecture and IT security, and parts of it were incorporated into subsequent project documentation.

  • Microsoft Entra ID as the only identity provider with single sign-on, MFA, and Conditional Access
  • Combined permission model: app roles define what someone may do, and security groups define where (country, plant, or area)
  • Backend as the authoritative security boundary; the user interface only controls visibility
  • Azure SQL and Blob Storage without public access, access via private endpoints and managed identities, with secrets in Key Vault
  • Separate environments for development, test, and production, with outstanding issues and assumptions documented transparently

Authentication design for external users

During the security review, the requirement was added that external persons without an account in the corporate directory should also be given access. Access is provided via a centrally operated reverse proxy; the Azure resources remain private. I evaluated four models for this by security level, implementation effort, operating effort, scalability, and compliance with group standards.

  • Option 1: custom user management in Azure SQL, assessed as a high-risk fallback solution
  • Option 2: Entra B2B guest accounts, recommended in the short term
  • Option 3: Microsoft Entra External ID for larger or unknown user groups, in the medium term
  • Option 4: Zero Trust model with Conditional Access and continuous verification as the long-term target
  • Additional requirements for logging sign-ins, sessions, and access to protected resources

Indexing and structural analysis of the SharePoint lists

Until the replacement, the existing solution had to remain stable. I evaluated the filter, sort, and retrieval patterns in both Power Apps and derived an indexing strategy for the action, audit, and event log lists. I created the indexes consistently on 117 lists and recorded the results in a guide and a results document.

  • 8 indexes per action list, 12 per audit list, and 4 for the event log list, aligned with the actual queries of the apps
  • Differences in columns in individual action lists documented and assessed as non-critical for indexing and the target model
  • Helper lists that are only retrieved when needed deliberately excluded
  • Results prepared as the basis for the later data model in Azure SQL

Reconstruction of the lookup columns after the migration

There was no direct way to transfer the lookup relationships of the substance list. I therefore restored the links from an exported helper list in which the values were stored as text in the format ID and display value. Three Power Automate flows read these values, split them into pairs, determine the IDs, and write them back to the lookup columns of the target list.

  • Processing of six lookup columns per run, 18 columns in total
  • Parallel processing with 20 concurrent runs and a short delay to avoid throttling
  • Multi-value lookup columns that the standard action could not update were updated via the SharePoint REST API (MERGE)
  • Before-and-after exports to verify the results

Canvas app for printing hazardous substance labels

The app replaces an old form that sent labels as an HTML file by email. Users select the substance, the label format, and the positions on the sheet to be printed, see a preview, and print directly from the app. This means that partially used label sheets can still be used.

  • Two A4 formats with 4 labels (99.1 x 139 mm) or 8 labels (99.1 x 67.7 mm)
  • HTML templates with positioning in millimeters; on the 4-label sheet, the content is rotated by 90 degrees
  • Placeholders for substance name, H statements, and symbols are filled via Power Fx; unselected positions are hidden
  • Old hazard symbol codes (for example Xi, F, or T) are mapped to the GHS pictograms; the pictograms are stored directly in the app
  • Power Automate as the data layer: load a lean substance list and retrieve details only for the selected substance via a REST query

Canvas app for creating operating instructions

For each combination of location (workplace or plant) and hazardous substance, the app generates operating instructions with the sections hazards, protective measures, what to do in the event of a fire, first aid, and disposal. The content comes from the substance list, eight reference lists, the location list, and the assignment of substances to locations with the respective mandatory and prohibition signs.

  • A detail flow with 81 actions resolves H and P statements and R and S phrases, symbols, extinguishing agents, and first aid information into structured JSON
  • Generation as an HTML file via a flow with storage in SharePoint and download. PDF output via the Power Fx PDF function, which Microsoft labels as experimental, is prepared but not enabled in the production version
  • Storage in a document library with a sequential version number in the file name and return of a sharing link
  • The date and version are written into the document automatically

Substance approval app with a matrix-driven approval process

I first reconstructed the previous approval process for new substances, changes of use, and supplier changes from the exported Nintex workflows. It consisted of 11 linked workflows with a clarification loop, a trial branch, a delivery specification, and 14-day monitoring when the supplier changes. From this, I developed a canvas app and a central dispatcher flow that reads the people responsible for each process step from a maintainable approval matrix.

  • Workflow analysis with a routing and handover matrix and a field and status model as the basis for rebuilding the process
  • 11 process steps in the approval matrix, from the assessment by those responsible for occupational safety and quality to the completion of the approval
  • Submit, approve, request clarification, and reject actions with matching email notifications
  • Comment history from the SharePoint version history instead of overwriting a single shared field
  • 183 existing requests from 2018 to 2025 as the data basis

Transition to the production environment and further tasks

I exported the three hazardous substance apps together with their flows as packages and moved them to the production environment. There, the connections run via a service account instead of personal accounts. As part of the same engagement, I also prepared a feasibility analysis for digital work instructions based on the Power Platform and designed and produced two English-language explainer videos on digitized logistics and production processes.

  • Package export of the app and associated flows per application
  • Switch of all connections to a service account
  • Feasibility analysis with an MVP scope, models for data, roles, and versions, and an effort estimate

03In detail

Apps, processes, and data at a glance.

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

Apps5

  • Hazardous substance label printingCanvas app · 3 screensSelection of substance, label format, and sheet positions with preview and printing via HTML templates with millimeter accuracy.
  • Hazardous substance operating instructionsCanvas app · 4 screensGeneration of operating instructions per location and substance as an HTML file with storage and versioning in SharePoint; PDF output is prepared.
  • Substance approvalCanvas app · 3 screensRequest form and processing of the multi-stage approval process with comment history, 257 controls.
  • Mobile capture of safety observations (existing, analyzed)Canvas app · 5 screensExisting app with 121 SharePoint data sources, the basis for indexing and the target architecture.
  • Management of observations and actions (existing, analyzed)Canvas app · 3 screensExisting desktop application with 122 SharePoint data sources and 6 flows, the basis for indexing and the target architecture.

Cloud flows (selection)

  • Migrate substance lookup columns (3 variants)Trigger: manualReads the exported text values, splits them into ID-value pairs, and writes back six lookup columns at a time, partly via the REST API (MERGE). 39 to 43 actions, 20 parallel runs.
  • Retrieve substance list (labels and operating instructions)Trigger: Power AppsReturns a lean substance list as JSON for selection in the app.
  • Substance details for labelsTrigger: Power AppsRetrieves the H statements and hazard symbols of the selected substance via a SharePoint REST query with resolved lookup columns.
  • Substance details for operating instructionsTrigger: Power Apps81 actions in 12 scopes; resolves all relevant lookup columns and returns structured JSON.
  • Save operating instructions as HTML or PDFTrigger: Power AppsStores the file in the document library and returns a sharing link.
  • Determine next file versionTrigger: Power AppsDetermines the sequential version number for the file name of the operating instructions.
  • Approval dispatcherTrigger: Power Apps52 actions: determines the target step, reads the people responsible from the approval matrix, and sends the matching email depending on the action (submit, approve, request clarification, and reject).
  • Retrieve comment historyTrigger: Power AppsReads the version history of a request via the REST API and filters the entries that contain comments.

Data model8

  • Action, audit, and event log lists per location (existing)SharePoint listMore than 110 lists of the QHSE application, indexed and analyzed as the starting point for the target model.
  • Observations, actions, and attachments (target model)SQLPlanned storage in Azure SQL and Azure Blob Storage with access only via the backend.
  • Substance listSharePoint listMaster data of the hazardous substances with 18 lookup columns.
  • Reference lists for H and P statements and R and S phrases, symbols, extinguishing agents, and first aidSharePoint listFull text and symbols for labels and operating instructions.
  • Assignment of substances to locationsSharePoint listLocation-specific information and mandatory and prohibition signs for the operating instructions.
  • Substance requestsSharePoint listRequests with status, suppliers, data sheet review, and comment history.
  • Approval matrixSharePoint listProcess step number and people responsible per step, maintainable without changing the flow.
  • Operating instructions librarySharePoint document libraryStorage of the generated documents with a version number.

Integrations6

  • SharePoint REST API with $expand for lookup columns, MERGE calls, and version history queries
  • Power Automate and Power Apps via JSON responses (ParseJSON)
  • Office 365 Users for selecting people and Office 365 Outlook for notifications
  • Microsoft Entra ID with app roles, groups, B2B, and External ID (design)
  • Azure SQL, Blob Storage, and Key Vault via private endpoints and managed identities (design)
  • Central reverse proxy as the only public entry point (design)

04Tricky parts

Challenges and how I solved them.

Substance list with too many lookup columns

With 18 lookup columns, the substance list exceeded the threshold for lookup columns in queries, and the standard connector sometimes returned only IDs. I used Power Automate as the data layer: the app loads only a lean substance list, and a flow retrieves the details of the selected substance via a REST query with $expand and returns them as JSON, which the app processes with ParseJSON.

Restoring lookup relationships after the migration

After the transfer, the links were only available as text in the format ID and display value. The flows split these values into pairs with split and chunk, determine the IDs, and write them back. Where the standard action did not accept multiple values, I used the REST API with MERGE.

Label printing from Power Apps with millimeter precision

Power Apps offers hardly any control over printing. I recreated the label sheets as HTML templates with absolute positioning in millimeters and calibrated the positions in several iterations. In the 4-label format, the content is rotated by 90 degrees. Individual positions can be deselected so that partially used sheets can still be used.

Converting a chain of 11 Nintex workflows into one model

The legacy process started sub-workflows from one another without waiting for them to finish, and overwrote comments in a single shared field. I fully analyzed the chain and replaced it with a dispatcher flow that reads the people responsible from an approval matrix. The comment history comes from the SharePoint version history and is thus preserved in full.

External users without compromising security

Custom user management in the database would have been the quickest to implement, but it would have shifted responsibility for passwords and identities into the application. I compared four models and recommended a phased plan: Entra B2B guest accounts in the short term, External ID in the medium term, and a Zero Trust model in the long term.

Aligning indexes with the actual queries

Instead of indexing across the board, I evaluated the filter and sort expressions in the existing apps. This resulted in fixed index sets for each list type, which I created consistently on 117 lists.

05Approach

Step by step to the result.

  1. 1

    Current-state analysis and architecture design (12/2025 to 01/2026)

    Onboarding, analysis of the functional documentation and the exported apps, creation of the security and Azure architecture document in coordination with the project leads.

  2. 2

    SharePoint optimization (01/2026)

    Evaluation of the app queries, optimization guide, indexing of 117 lists, and results documentation.

  3. 3

    Security review and external authentication (02/2026 to 04/2026)

    Revision after the review, evaluation of four authentication models, and coordination on certificates and the reverse proxy.

  4. 4

    Hazardous substance data migration (02/2026 to 03/2026)

    Inventory of the migrated site and reconstruction of the lookup columns with three migration flows.

  5. 5

    Label and operating instructions apps (03/2026 to 04/2026)

    Analysis of the legacy forms and HTML layouts, building the apps and flows, and coordination with the business users.

  6. 6

    Substance approval (04/2026)

    Analysis of the Nintex workflows, design of the approval matrix and status model, building the app and dispatcher flow.

  7. 7

    Transition to production (06/2026)

    Package export, import into the production environment, and switch of the connections to a service account.

06Result

What works differently today.

  • An auditable security and Azure architecture design is available and served as the basis for coordination with architecture and IT security. Parts of it were incorporated into the client's project documentation.
  • External access options have been evaluated, and a phased plan is available to support the decision.
  • 117 SharePoint lists of the existing application are consistently indexed and documented.
  • The lookup relationships of the migrated substance list have been restored.
  • Three canvas apps with a total of nine associated flows for label printing, operating instructions, and substance approval were built and moved to the production environment.

Technologies

  • Microsoft Power Automate (cloud flows)
  • Microsoft Power Apps (canvas apps)
  • Microsoft SharePoint Online
  • Microsoft SharePoint (on-premises source system)
  • SharePoint REST API
  • Microsoft Entra ID (app roles, B2B, External ID, Conditional Access)
  • Microsoft Azure (App Service, Azure SQL, Blob Storage, Key Vault, private endpoints)
  • Office 365 Users and Office 365 Outlook
  • Power Fx (ParseJSON)
  • HTML/CSS
  • Nintex Workflow (analysis of the legacy system)

Demonstrated skills

  • Security and architecture design for migrating Power Platform applications to Azure
  • Permission and identity models with Microsoft Entra ID for internal and external users
  • Replacing Nintex workflows with Power Automate
  • Power Automate as a data layer over the SharePoint REST API
  • Performance optimization of SharePoint lists for Power Apps
  • Migration from on-premises SharePoint to SharePoint Online including lookup columns
  • Document generation and precise printing from Power Apps with HTML

07Questions and answers

Frequently asked questions

How do you migrate SharePoint lists with many lookup columns to SharePoint Online?
Lookup columns refer to IDs in other lists that can change during a migration. A proven approach is to also save the values as text with the ID and display value and then use Power Automate to restore the links selectively. For multi-value columns, the SharePoint REST API is often more reliable than the standard action.
Can you print labels precisely with Power Apps?
Yes, if the layout is built not with standard controls but as an HTML template with dimensions in millimeters. The positions should be calibrated with real label sheets. Individual positions can be hidden so that partially used sheets remain usable.
When is it worth moving from Power Apps and SharePoint to an Azure application?
Typical reasons are a very large number of users, many countries, growing data volumes in many lists, and stricter requirements for security and logging. Before the rebuild, there should be a security and architecture design that defines identity, permissions, data storage, and operations. Until the replacement, targeted indexes help keep the existing solution stable.
How can Nintex workflows be replaced with Power Automate?
First, the entire workflow chain should be documented with all handovers, roles, and status values. Instead of rebuilding each sub-workflow individually, a central flow can control the steps and read the people responsible from a maintainable matrix. This simplifies maintenance and later changes to the process.

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 Metalworking - precision turned and milled partssince 11/2025 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. more than 100 employees Power Automate (cloud flows)Power Apps (canvas app, responsive design)SharePoint OnlineAzure SQLEntra ID and Microsoft 365 groups 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.