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 msNetzwerklast 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
InefficientControlReferenceserzwingen vorzeitiges Laden weiterer Screens14 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
scrBexioKOntakteDetailund erzeugt dadurch zusaetzliche LadezeitDelegationsrisiko: Formeln mit komplexem
LookUp/Filterverlagern Arbeit auf den Client statt auf DataverseKumulative 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 screenuebergreifenden 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?
Siehe Technische Details: technische-details.md
Canvas App Flows: fachliche-prozesse.md
Architecture Overview: architektur.md
Nächste Schritte:
Reviewe diese Empfehlungen im Team
Schaetze Aufwaende fuer Phase 1
Plane Sprint-Integration
Etabliere Monitoring vor Optimierungen