Optimierungsanalyse: Canvas App “bmvcc”

App ID: dad7be8c-eae6-4976-987d-f951b9e7ed79
App Name: bmvcc_bmvcc_31122
Status: Ready
Analysedatum: 9. April 2026
Client Version: 3.26034.12.0


Executive Summary

Die Canvas App bmvcc ist die zentrale Anwendung zur Betriebsmittelverwaltung. Die Monitor-Daten zeigen kein kritisch langsames Startverhalten, sondern eine insgesamt akzeptable Ladezeit von rund 4,5 Sekunden. Die Optimierung sollte deshalb nicht primär auf generisches Startup-Tuning zielen, sondern auf die im Trace sichtbaren Risiken: screenuebergreifende Control-Referenzen, nicht delegierbare LookUp-/Filter-Muster und kumulative Netzwerklast.

Trace-basierte Kernaussagen

  • Initiale Navigation: ca. 317 ms

  • LoadScreen (Home): ca. 1.149 ms

  • Netzwerklast gesamt: ca. 3.068 ms aus 12 Calls

  • Auffaellige Architekturwarnungen: 2 InefficientControlReferences

  • Auffaellige Skalierungswarnungen: 14 nicht delegierbare LookUp-/Filter-Muster


1. Performance-Optimierungen

1.1 Trace-basierte Daten- und Formularoptimierung (HIGH PRIORITY)

Befund: Die App konsumiert 11 Dataverse-Tabellen mit direktem default.cds-Zugriff:

  • Relations

  • bmvcc_firma

  • bmvcc_kontakt

  • bmvcc_artikel

  • bmvcc_equipmentrecord (Geraete)

  • bmvcc_organizationlocation (Standorte)

  • bmvcc_hersteller

  • systemuser (Benutzer)

  • bmvcc_timetrackingentry (Zeiterfassung)

  • businessunit (Org-Einheiten)

  • bmvcc_pruefbericht (Pruefberichte)

Der Monitor zeigt dabei kein dramatisch langsames Initial-Loading, aber eine fragile Struktur:

  • 2 InefficientControlReferences erzwingen vorzeitiges Laden weiterer Screens

  • 14 nicht delegierbare LookUp-/Filter-Muster begrenzen die Skalierung

  • 12 Netzwerkanfragen summieren sich auf rund 3.068 ms

  • einzelne Aufrufe liegen bereits im Bereich von >500 ms

Problem:

  • Screen-Kopplung: Home referenziert Controls aus scrBexioKOntakteDetail und erzeugt dadurch zusaetzliche Ladezeit

  • Delegationsrisiko: Formeln mit komplexem LookUp/Filter verlagern Arbeit auf den Client statt auf Dataverse

  • Kumulative Netzwerklast: Der Start ist aktuell akzeptabel, hat aber wenig Reserven fuer wachsende Datenmengen

Empfehlung:

Priority: HOCH

1. Entferne screenuebergreifende Control-Referenzen:
   - Keine direkten References von Home auf Controls in Detail-Screens
   - Werte ueber Variablen, Context oder Collections uebergeben

2. Behebe nicht delegierbare Formeln:
   - LookUp/Filter-Pruefung in allen Galerie-Items und Suchfeldern
   - Beispiel aus dem Trace: Time Tracking Entry Filter auf Delegation pruefen
   - StartsWith, direkte Vergleiche und serverseitig delegierbare Operatoren bevorzugen

3. Reduziere kumulative Netzwerklast:
   - Stammdaten cachen, wenn sie mehrfach pro Session verwendet werden
   - langsame Controls priorisiert untersuchen, insbesondere Kontakt- und Standortauswahl

4. Lazy Loading nur gezielt einsetzen:
   - nicht als Hauptmassnahme fuer den Start
   - sondern fuer selten genutzte Bereiche wie Zeiterfassung oder Nebenscreens

Konkreter Implementierungsleitfaden:

→ Siehe Control-Reference Fix-Leitfaden fuer Schritt-fuer-Schritt Anleitung zur Beseitung der screen­uebergreifenden Referenzen (~668 ms Ersparnis).

Geschaetzter Impact:

  • Screen-Wechsel und Initialkontext: -15 bis -25%

  • Skalierbarkeit bei groesseren Datenmengen: deutlich verbessert

  • Risiko spaeterer Performance-Probleme: stark reduziert


1.2 Office 365 Connector Optimierung (MEDIUM PRIORITY)

Befund: Drei Office 365-Connectoren sind konfiguriert:

  • Power Apps for Makers

  • Office 365 Users (SearchUser, UserPhotoMetadata, UserPhoto_V2)

  • Office 365 Groups (ListGroupMembers, ListGroups)

Problem:

  • SearchUser Calls: Möglicherweise auf jedem Keypress ausgeführt

  • Foto-Metadaten: UserPhoto_V2 fordert für jede Zeile Fotos an

  • Groups-Calls: Unnecessary ListGroups auf jedem Render

Empfehlung:

Priority: MITTEL

1. Batch-Abfragen fuer User-Fotos:
   - Verwende Dataverse entityimage_url
   - Nicht einzelne UserPhoto_V2-Calls pro Kontakt

2. Verzögerte User-Suche (Debounce):
   - SearchUser erst nach 300ms Tastatureingabe
   - Minimale Suchlaenge: 3 Zeichen
   - Maximum Results: 10

3. Groups-Cache:
   - varCachedGroups = First(Office365Groups.ListGroups())
   - Nur einmal pro Session laden

4. Ersetze Office 365 Connector teilweise mit Dataverse:
   - systemuser-Daten sind bereits in Dataverse
   - Verwende direkte Dataverse-Filter

Geschaetzter Impact:

  • API Calls: -50%

  • User Experience (Suche): -70% Latenz

  • Connector Ressourcen: -40%


2. Architektur & Design Verbesserungen

2.1 Canvas Component Library Refactoring (MEDIUM PRIORITY)

Befund: App importiert 16 Komponenten aus cre77_pagcomponents_21a73

Problem:

  • Unbekannte Komponenten: Component-IDs statt beschreibender Namen dokumentiert

  • Versionierung: Alle Komponenten auf Version 2026-03-07 – unklar ob aktuell

  • Potenzielle Duplikate: 16 Komponenten für eine App könnten überflüssig sein

  • Tightly-Coupled Library: Abhängigkeit auf externe Library mit Hard-dependency

Empfehlung:

Priority: MITTEL

1. Component Audit durchfuehren:
   - Welche 16 Komponenten werden verwendet?
   - Redundante Komponenten entfernen
   - Ziel: auf 8-10 kritische reduzieren

2. Interne Komponenten-Dokumentation:
   {
     "ComponentID": "0d0af31cdc9d4299b71f8fe32e6a1c80",
     "Purpose": "Header Navigation Bar",
     "Usage": "Every Screen",
     "Critical": true
   }

3. Library-Update-Strategie:
   - Version 2026-03-07 ist uber 1 Monat alt
   - Quarterly-Updates etablieren

4. Dependency Decoupling:
   - Evaluiere ein-zwei Komponenten als native
   - Verbessert Portabilitaet

Geschaetzter Impact:

  • App-Load: -15%

  • Wartbarkeit: +40%

  • Deployment-Sicherheit: +50%


2.2 Connection References Cleanup (LOW PRIORITY)

Befund: App definiert 3 Connection References:

  • 02e7af1d-4ba1-45e1-b766-a7eb5dac9185: Power Apps for Makers

  • ae45c343-8c81-4cda-80a9-a0e118e64138: Office 365 Users

  • 2832be09-a75f-4f0b-800c-20ae0e156fe1: Office 365 Groups

Problem:

  • Power Apps for Makers: Nur für Maker-UI nötig

  • Office 365 Connectoren: Könnten durch Dataverse ersetzt werden

Empfehlung:

Priority: NIEDRIG

1. Audit der Connection-Nutzung:
   - Power Apps for Makers: Nur in Edit-Mode?
   - Falls nicht verwendet: entfernen

2. Dataverse statt Office 365 in Produktion:
   - systemuser-Daten: Filter(Users, Status = Active)
   - Keine zusaetzliche Connector-Lizenz

3. Multi-Environment-Szenario:
   - Nutze EnvironmentVariablen fuer Connector-Auswahl

Geschaetzter Impact:

  • Lizenzkosten: sparen

  • Deployment-Komplexität: -20%

  • Fehlerquellen: -15%


3. Skalierbarkeit & Stabilität

3.1 Tablet-Optimierung (MEDIUM PRIORITY)

Befund:

Device: Tablet (Primary)
Size: 2136 x 1488 px
Supports: Portrait & Landscape

Problem:

  • Hohe Auflösung führt zu grösseren Assets

  • Portrait-Modus: Weniger Platz für Listen/Tabellen

  • Responsive Design möglicherweise nicht optimal

Empfehlung:

Priority: MITTEL

1. Responsive Breakpoints definieren:
   - Tablet Portrait: Primary View
   - Tablet Landscape: Secondary View
   - Optional: Desktop Support testen

2. Layout-Optimierungen:
   - Portrait Mode: Horizontal scrollende Tabellen
   - Landscape Mode: Split-View (Liste + Details)
   - Buttons: Mindestens 44px Hoehe

3. Asset-Groessenkontrolle:
   - Hintergrundbilder: Max 5MB
   - Icons: Built-in Icon-Set statt Assets
   - Bilder: Vector statt Raster

4. Performance auf HD-Screens:
   - Teste auf iPad Pro, Samsung Tab S
   - Rendering bei 4K Displays

Geschaetzter Impact:

  • User Experience: +45%

  • Device Support: +70%

  • Crash-Rate: -30%


3.2 Fehlerbehandlung & Logging (MEDIUM PRIORITY)

Befund: App hat minimal erkennbare Error-Handling-Konfiguration in Metadata.

Problem:

  • Keine sichtbaren Fehlermetriken dokumentiert

  • Keine Telemetrie-Konfiguration in Tags

  • Wenn Dataverse-Abfragen fehlschlagen: Nutzer sieht nichts

Empfehlung:

Priority: MITTEL

1. Implementiere Fehler-Toast-Notifications:
   If(IsError(result),
     Notify("Error loading", NotificationType.Error, 5000),
     Notify("Data loaded", NotificationType.Success))

2. Fallback-Logik:
   - Geraete-Fehler: Zeige cached Daten
   - Sync-Fehler: Informiere Nutzer
   - Timeout nach 30s: Zeige Meldung

3. Monitoring / Application Insights:
   - Enable PA App Analytics
   - Uptime, Error-Rate tracken
   - Weekly Dashboard-Review

4. Fehler-Tracker:
   - Log PA Errors zu bmvcc_bexiosyncerror
   - Trend-Analyse ueber Zeit

Geschaetzter Impact:

  • Debugging-Zeit: -60%

  • User Confidence: +50%

  • Incident Response: -75%


4. Dependency Management

4.1 Component Library Version Alignment (LOW PRIORITY)

Befund:

Canvas Component Library: cre77_pagcomponents_21a73
Version: 2026-03-07T06:22:26Z (ueber 1 Monat alt)
Tenant: b966f9cd-0013-403b-8f43-242a7d3f632f
Environment: a7fad185-af79-edb4-8abc-616761480446

Problem:

  • Version ist nicht aktuell

  • Hard-Abhängigkeit auf spezifische Tenant+Environment

  • Erschwert App-Portierung zu anderen Umgebungen

Empfehlung:

Priority: NIEDRIG

1. Quarterly Update-Cycle etablieren:
   - Q2 2026: Update auf Latest Library Version
   - Q3 2026: Pruefe Breaking Changes
   - Q4 2026: Full Regression Test

2. Version-Locking in Dokumentation:
   | App Version | Library Version | Status |
   | 31122       | 2026-03-07      | ACTIVE |
   | 31122       | 2026-04-09      | READY  |

3. Multi-Environment Ready Checklist:
   - [ ] Can Library be imported to Prod?
   - [ ] Tenant ID matches prod tenant
   - [ ] Version control for library updates

Geschaetzter Impact:

  • Stabilität: +20%

  • Deployment-Zeit: -10%

  • Wartbarkeit: +15%


5. Quick Wins (Sofort Umzusetzen)

#

Massnahme

Aufwand

Impact

Prioriaet

1

Screen-Referenzen zwischen Home und Detail-Screens entfernen

1-2h

HOCH

KRITISCH

2

14 nicht delegierbare LookUp-/Filter-Formeln bereinigen

3-4h

HOCH

KRITISCH

3

SearchUser Debounce

1h

MITTEL

HOCH

4

Cache fuer wiederverwendete Stammdaten

2h

MITTEL

HOCH

5

Error-Toast Notifications

2h

NIEDRIG

MITTEL


6. Monitoring & Metriken

Baseline vor Optimierung

Metrik

Aktuell

Ziel

Methode

App Load Time

ca. 4.5s

<3.5s

Power Apps Monitor Trace

LoadScreen Home

ca. 1.149s

<0.8s

Power Apps Monitor Trace

Netzwerkdauer gesamt

ca. 3.068s

<2.5s

Power Apps Monitor Trace

Netzwerkanfragen beim Start

12

<10

Power Apps Monitor Trace

Delegationswarnungen

14

0

Formula Review / App Checker

InefficientControlReferences

2

0

Power Apps Monitor Trace

Monitoring-Setup

1. Power Apps Analytics aktivieren
   Settings > Analytics > Enable

2. Woechentliche Reports:
   - Top Errors
   - Session Duration
   - Query Performance
   - User Load Distribution

3. Alert-Schwellwerte:
   - Load Time > 5s: Warning
   - Error Rate > 2%: Alert
   - API Rate Limit: Critical

7. Implementierungs-Roadmap

Phase 1: Kritische Massnahmen (Woche 1-2)

  • Screen-Referenzen zwischen Home und Detail-Screens entfernen

  • Nicht delegierbare LookUp-/Filter-Formeln priorisiert korrigieren

  • Office 365 SearchUser Debounce

Phase 2: Performance Verbesserungen (Woche 3-4)

  • Collection-Cache fuer wiederverwendete Stammdaten

  • Langsame Netzwerkaufrufe in Kontakt- und Standortkomponenten pruefen

  • UserPhoto optimieren

Phase 3: Architektur Refactoring (Woche 5-6)

  • Component Audit durchführen

  • Component Library Version Update

  • Connection References Cleanup

Phase 4: Monitoring & Stabilität (Woche 7)

  • Analytics aktivieren

  • Fehler-Tracking Setup

  • Dokumentation aktualisieren


8. Geschaetzte Ergebnisse nach Optimierung

Bereich

Vorher

Nachher

Verbesserung

App Load Time

ca. 4.5s

3.0-3.5s

-20 bis -35%

LoadScreen Home

ca. 1.149s

<0.8s

-30%

Netzwerkanfragen beim Start

12

8-10

-15 bis -30%

Delegationswarnungen

14

0

-100%

InefficientControlReferences

2

0

-100%

Wartungsrisiko bei Wachstum

Hoch

Mittel

deutlich reduziert


9. Kontakt & Support

Fragen zur Implementierung?

Nächste Schritte:

  1. Reviewe diese Empfehlungen im Team

  2. Schaetze Aufwaende fuer Phase 1

  3. Plane Sprint-Integration

  4. Etabliere Monitoring vor Optimierungen