# Technische Detaildokumentation ## Ziel Diese Datei beschreibt die technische Struktur der Solution `bmvcc` auf Komponentenebene. ## Solution-Metadaten | Feld | Wert | | --- | --- | | Unique Name | `bmvcc` | | Beschreibung | `Betriebsmittelverwaltung` | | Version | `1.0.0.4` | | Publisher | `BMVCC` | | Prefix | `bmvcc` | | Managed | `0` | ## Repository-Struktur ```text bmvcc/ AppModuleSiteMaps/ CanvasApps/ Connectors/ Entities/ environmentvariabledefinitions/ Other/ Workflows/ ``` ## Dataverse-Tabellen ### Tabellenuebersicht | Ordner | Schema | Anzeigename | Collection | Beschreibung | | --- | --- | --- | --- | --- | | `bmvcc_Artikel` | `bmvcc_Artikel` | Artikel | Artikels | Produkt- und Artikelinformationen | | `bmvcc_bexiosyncerror` | `bmvcc_bexiosyncerror` | bexiosyncerror | bexiosyncerrors | Fehlerprotokoll fuer Bexio-Synchronisation | | `bmvcc_Configuration` | `bmvcc_Configuration` | Configuration | Configurations | Konfigurationsseiten | | `bmvcc_ConfigurationSetting` | `bmvcc_ConfigurationSetting` | Configuration Setting | Configuration Settings | Einstellungen je Konfigurationsseite | | `bmvcc_equipmentrecord` | `bmvcc_equipmentrecord` | Geraete | Geraetes | Geraetedetails und Status | | `bmvcc_firma` | `bmvcc_firma` | Firma | Firmas | Bexio-Firmenkontakte | | `bmvcc_Hersteller` | `bmvcc_Hersteller` | Hersteller | Herstellers | Herstellerstammdaten | | `bmvcc_Kontakt` | `bmvcc_Kontakt` | Kontakt | Kontakts | Person aus Bexio | | `bmvcc_organizationlocation` | `bmvcc_organizationlocation` | Standort | Standorts | Standortdaten | | `bmvcc_Pruefbericht` | `bmvcc_Pruefbericht` | Pruefbericht | Pruefberichts | Pruef- und Inspektionsdaten | | `bmvcc_relation` | `bmvcc_relation` | Relation | Relations | Beziehung zwischen Personen und Firmen | | `bmvcc_syncconfig` | `bmvcc_syncconfig` | syncconfig | syncconfigs | Steuerung von Synchronisationslaeufen | | `bmvcc_timetrackingentry` | `bmvcc_timetrackingentry` | Time Tracking Entry | Time Tracking Entry | Zeiterfassung | | `BusinessUnit` | `BusinessUnit` | Business Unit | Standard | Standard-Dataverse-Tabelle | ### Technische Beobachtungen zu Schluesseltabellen #### `bmvcc_equipmentrecord` Erkennbar sind unter anderem Felder fuer: - Artikelbezug - Geraete-ID und Autonummerierung - Archivierungs- und Statusinformationen - Herstellungs- und Pruefzeitpunkte - Standort- und Business-Unit-Zuordnungen - Seriennummern und gescannte Kennungen #### `bmvcc_Kontakt` Erkennbar sind unter anderem Felder fuer: - Bexio-ID - Adresse, Ort und Strasse - kontaktbezogene Lookup-Felder - fachliche Kontaktstammdaten aus Bexio ## Canvas Apps ### `bmvcc_bmvcc_31122` | Merkmal | Wert | | --- | --- | | Anzeigename | `bmvcc` | | Formfaktor | Tablet | | Status | Ready | | App-Version | `2026-04-03T07:35:51Z` | Verwendete Datenquellen: - `bmvcc_relation` - `bmvcc_firma` - `bmvcc_kontakt` - `bmvcc_artikel` - `bmvcc_equipmentrecord` - `bmvcc_organizationlocation` - `bmvcc_hersteller` - `systemuser` - `bmvcc_timetrackingentry` - `businessunit` - `bmvcc_pruefbericht` Zusatzabhaengigkeiten: - `Office 365 Users` - `Office 365 Groups` - `Power Apps for Makers` - Canvas Component Library `cre77_pagcomponents_21a73` ### `bmvcc_bexiokontakte_3103f` | Merkmal | Wert | | --- | --- | | Anzeigename | `bexiokontakte` | | Formfaktor | Tablet | | Status | Ready | Verwendete Datenquellen: - `bmvcc_relation` - `bmvcc_firma` ### `bmvcc_test1_6870a` | Merkmal | Wert | | --- | --- | | Anzeigename | `test1` | | Formfaktor | Tablet | | Status | Ready | Verwendete Datenquellen: - `bmvcc_equipmentrecord` ## Model-Driven Navigation | Site Map | Zweck | | --- | --- | | `bmvcc_configs` | Einfache Navigation auf `bmvcc_configuration` | | `bmvcc_kontakte` | Einfache Navigation auf `bmvcc_relation` | Die Site Maps enthalten nur sehr schlanke Navigationsstrukturen und wirken eher wie technische oder fruehe Navigationsartefakte als umfangreiche Model-Driven Apps. ## Custom Connector ### Connector-Metadaten | Feld | Wert | | --- | --- | | Name | `bmvcc_5Fbexiov3` | | Anzeigename | `BexioV3` | | Host | `api.bexio.com` | | Authentifizierung | OAuth2 | ### Erkennbare Operationen | OperationId | Methode | Pfad | Zweck | | --- | --- | --- | --- | | `Allekontakte` | `GET` | `/3.0/contact` | Liest Kontakte aus Bexio mit Fokus auf Personen | | `Contact_relation` | `GET` | `/2.0/contact_relation` | Liest Kontakt-Firmen-Beziehungen aus Bexio | ## Umgebungsvariablen | Schema | Typ | Details | | --- | --- | --- | | `bmvcc_env_BusinessUnitId` | Text | keine Default-Belegung im Export | | `bmvcc_env_Dataverse` | Datenquelle | verweist auf eine konkrete Dataverse-URL | | `bmvcc_env_SharePointSiteUrl` | Datenquelle | SharePoint-Dataset-Parameter | | `bmvcc_env_test` | Text | Testvariable | ## Workflows ### Workflow-Uebersicht | Flow-Name | Trigger-Typ | Frequenz/Planung | Eingabe-Tabellen | Ausgabe-Tabellen | Abhängigkeiten | | --- | --- | --- | --- | --- | --- | | **BexioSynchKontakte** | Zeitplan (Recurrence) | woechentlich | Bexio API (Contacts) | `bmvcc_firma`, `bmvcc_kontakt`, `bmvcc_syncconfig` | Bexio-Connector, Teams-Connector | | **BexioSynchRelation** | Zeitplan (Recurrence) | täglich um 04:00 (W. Europe Standard Time) | `bmvcc_kontakt`, `bmvcc_firma`, Bexio API (Relations) | `bmvcc_relation`, `bmvcc_bexiosyncerror` | Bexio-Connector, Teams-Connector | | **bmvcc-GeraeteArtikelMapTabelle** | Button-Trigger (manuell) | bei Bedarf | `bmvcc_equipmentrecord`, `bmvcc_Artikel` | `bmvcc_equipmentrecord` | Batch- und Zaehlerlogik | | **bmvcc-GeraetePruefberichtMapTabelle** | Button-Trigger (manuell) | bei Bedarf | `bmvcc_equipmentrecord`, `bmvcc_Pruefbericht` | `bmvcc_Pruefbericht` | keine besonderen | | **bmvcc-GeraetePruefberichtMapTabelleV2** | Button-Trigger (manuell) | bei Bedarf | `bmvcc_equipmentrecord`, `bmvcc_Pruefbericht` | `bmvcc_Pruefbericht` | UpdateOnlyRecord-Integration | | **bmvcc-GeraeteStandortMapTabelle** | Button-Trigger (manuell) | bei Bedarf | `bmvcc_organizationlocation` | `bmvcc_equipmentrecord` | ID-zu-GUID-Mapping | | **bmvcc-HerstellerArtikelMapTabelle2** | Button-Trigger (manuell) | bei Bedarf | `bmvcc_hersteller`, `bmvcc_Artikel` | `bmvcc_Artikel` | keine besonderen | | **bmvcc-HerstellerBusinessunitsetzen** | Button-Trigger (manuell) | bei Bedarf | Fremdorganisation (hart konfiguriert) | `bmvcc_hersteller` | ListRecordsWithOrganization, UpdateOnlyRecordWithOrganization | ### Geplante Flows #### `BexioSynchKontakte` Technische Merkmale: - Recurrence-Trigger, woechentlicher Lauf - nutzt Dataverse, Bexio-Connector und Teams - liest `bmvcc_syncconfig` - liest und aktualisiert `bmvcc_firma` und `bmvcc_kontakt` - schreibt Rueckmeldungen nach `bmvcc_syncconfig` #### `BexioSynchRelation` Technische Merkmale: - Recurrence-Trigger, taeglicher Lauf - geplanter Start um 04:00 Uhr, Zeitzone `W. Europe Standard Time` - liest Kontaktbeziehungen aus Bexio ueber `Contact_relation` - nutzt `bmvcc_kontakt`, `bmvcc_firma` und `bmvcc_relation` - schreibt Fehler nach `bmvcc_bexiosyncerror` - nutzt Teams fuer Benachrichtigungen ### Manuelle Flows #### `bmvcc-GeraeteArtikelMapTabelle` - manueller Button-Trigger - liest `bmvcc_equipmentrecord` und `bmvcc_Artikel` - setzt bzw. aktualisiert Artikelbeziehungen auf Geraeten - verwendet Batch- und Zaehlerlogik fuer Massenupdates #### `bmvcc-GeraetePruefberichtMapTabelle` - manueller Button-Trigger - liest `bmvcc_equipmentrecord` und `bmvcc_Pruefbericht` - setzt Lookup-Beziehungen zwischen Pruefbericht und Geraet #### `bmvcc-GeraetePruefberichtMapTabelleV2` - manueller Button-Trigger - ueberarbeitete Mapping-Variante mit expliziter Fehler- und Erfolgszaehlung - aktualisiert `bmvcc_Pruefbericht` ueber `UpdateOnlyRecord` #### `bmvcc-GeraeteStandortMapTabelle` - manueller Button-Trigger - liest `bmvcc_organizationlocation` - erzeugt eine Standort-ID-zu-GUID-Map - aktualisiert Standortbezuege auf `bmvcc_equipmentrecord` #### `bmvcc-HerstellerArtikelMapTabelle2` - manueller Button-Trigger - liest `bmvcc_hersteller` und `bmvcc_Artikel` - aktualisiert Herstellerbezuege auf Artikeln #### `bmvcc-HerstellerBusinessunitsetzen` - manueller Button-Trigger - nutzt `ListRecordsWithOrganization` und `UpdateOnlyRecordWithOrganization` - arbeitet gegen eine fest konfigurierte Fremdorganisation - setzt Besitzerzuordnungen fuer Herstellerdatensaetze ## Fehlende Abhaengigkeiten Laut Solution-Metadaten bestehen diese offenen Abhaengigkeiten: - `bmvcc_contact_adress` - `bmvcc_contact_type` - `bmvcc_country` - `bmvcc_language` - Canvas Component Library `cre77_pagcomponents_21a73` ## Technische Risiken - Feste Zielumgebungen in Flows reduzieren Portabilitaet. - Externe Abhaengigkeiten koennen den Import blockieren. - Connector- und Teams-Abhaengigkeiten muessen pro Umgebung neu validiert werden. - Die Haupt-App ist technisch die zentrale Komponente; Ausfall oder fehlende Library-Abhaengigkeit wirken sich direkt auf die Nutzbarkeit aus.