# Exchange-App

## Exchange-App

#### BuildingPro-Suites-App für die Microsoft-Exchange-Buchungsintegration

>

Erstellen Sie in Exchange eine Raumliste, machen Sie diese Räume in BuildingPro Suites als buchbare Assets verfügbar und ermöglichen Sie es Benutzern, die Räume direkt über BuildingPro Suites zu buchen.

### Konfiguration von Exchange Web Services (EWS)

Führen Sie diese Schritte für Exchange Online und hybride Installationen aus, bei denen Benutzer-E-Mails in Exchange Online gespeichert sind. *Für die lokale Installation des Exchange-Servers oder eine Hybridkonfiguration mit lokalen primären Konten überspringen Sie dieses Kapitel und holen Sie sich nur die NTLM-Anmeldedaten und die EWS-API-URL.*

> Bitte beachten Sie, dass EWS für Exchange Online am 1. Oktober 2026 eingestellt wird. Dies betrifft lokale Exchange-Server und Hybridkonfigurationen nicht. Weitere Details zur Einstellung finden Sie im [Exchange Team Blog](https://techcommunity.microsoft.com/t5/exchange-team-blog/retirement-of-exchange-web-services-in-exchange-online/ba-p/3924440).

#### Registrierung der Anwendung in Microsoft Entra

Um EWS mit der Exchange-App zu konfigurieren, führen Sie die folgenden Schritte aus, um sie in Microsoft Entra zu registrieren.

**1. Anwendungsregistrierung**

Navigieren Sie zu **Entra** und wählen Sie **App-Registrierungen**, dann wählen Sie **Eine Anwendung registrieren**. Sie müssen die Anwendungsdetails eingeben.

**2. Konfiguration der Berechtigungen**

**Anwendungsauthentifizierung (Impersonation)**

Für die Anwendungsauthentifizierung, die Impersonation unterstützt:

* Gehen Sie zu **API-Berechtigungen**.
* Fügen Sie die `full_access_as_app` Berechtigung hinzu und erteilen Sie die Administratoreinwilligung.

Hier ist ein Beispiel für die erforderliche Konfiguration im Anwendungsmanifest:

```json
"requiredResourceAccess": [
    {
        "resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
        "resourceAccess": [
            {
                "id": "dc890d15-9560-4a4c-9b7f-a736ec74ec40",
                "type": "Role"
            }
        ]
    }
]
```

**3. Erstellen von Geheimnissen zur Authentifizierung**

Um die Anwendung zu authentifizieren:

* Navigieren Sie zu **Zertifikate & Geheimnisse** in Entra.
* Wählen Sie **Neues Client-Geheimnis**.
* Speichern Sie das erzeugte Geheimnis sicher, da es für die Authentifizierung der Anwendung bei Microsoft-Diensten benötigt wird.

**Impersonation-Konfiguration über PowerShell**

Um die Impersonation und andere Einstellungen zu konfigurieren, die im Entra-Portal nicht verfügbar sind, müssen Sie PowerShell verwenden. Bitte beachten Sie, dass ohne Abonnement keine Online-PowerShell-Konsole verfügbar ist. Lokale PowerShell-Installationen unter Windows, Linux oder macOS können diese Konfigurationen verwalten:

* Stellen Sie sicher, dass die erforderlichen PowerShell-Module für die Verwaltung von Exchange installiert sind.
* Verwenden Sie Skripte, um Impersonation-Rechte oder andere Exchange-spezifische Einstellungen zu konfigurieren.

**PowerShell-Skripte für die Impersonation-Konfiguration**

1. **Stellen Sie eine Verbindung zu Exchange Online PowerShell her**:

<pre class="language-powershell"><code class="lang-powershell"><strong>$UserCredential = Get-Credential
</strong>$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking
</code></pre>

2. **Impersonation-Rechte zuweisen**:

```powershell
New-ManagementRoleAssignment –Name:impersonationAssignmentName –Role:ApplicationImpersonation –User:serviceAccount
```

3. **Impersonation-Rechte prüfen**:

```powershell
Get-ManagementRoleAssignment –RoleAssignee serviceAccount –Role ApplicationImpersonation –RoleAssigneeType User
```

Ersetzen Sie `serviceAccount` durch den Namen Ihres Dienstkontos oder Benutzers, der die Impersonation ausführt.

**Beenden der PowerShell-Sitzung**

Denken Sie daran, die PowerShell-Sitzung zu schließen, sobald Ihre Konfigurationsaufgaben abgeschlossen sind:

```powershell
Remove-PSSession $Session
```

### Installation

Die Exchange-App wird über den App Store in BuildingPro Suites installiert.

### Assets

Die Exchange-App erstellt automatisch alle Räume in der konfigurierten Raumliste. Sobald der Raum in BuildingPro Suites erstellt wurde, bleibt er dort bestehen, auch wenn er aus der Raumliste entfernt wird (die Buchungen werden dann jedoch nicht mehr synchronisiert). Ein Raum kann in BuildingPro Suites unabhängig umbenannt oder gelöscht werden. Immer wenn ein neuer Raum zur Raumliste hinzugefügt wird, wird er in BuildingPro Suites erstellt.

### Konfiguration

Die Exchange-App wird durch die Definition eines oder mehrerer Authentifizierungsanmeldedaten konfiguriert:

| Attribut          | Beschreibung                                                                                                                                                                |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `clientID`        | ClientID, erhalten im Entra Admin Center. (Nur für OAuth-Authentifizierung)                                                                                                 |
| `clientSecret`    | ClientSecret, erhalten im Entra Admin Center. (Nur für OAuth-Authentifizierung)                                                                                             |
| `tenantID`        | ID der Exchange-Online-Organisation (nur für OAuth-Authentifizierung)                                                                                                       |
| `ewsURL`          | URL der EWS-API (nur für NTLM-Authentifizierung)                                                                                                                            |
| `username`        | NTLM-Benutzername (nur für NTLM-Authentifizierung)                                                                                                                          |
| `password`        | NTLM-Passwort (nur für NTLM-Authentifizierung)                                                                                                                              |
| `serviceUserUPN`  | E-Mail-Adresse des Dienstbenutzers (zum Abfragen von Räumen, Erstellen anonymer Buchungen, ...)                                                                             |
| `roomListUPN`     | E-Mail der Raumliste, die die zu synchronisierenden Räume enthält. CAC wird deaktiviert, wenn es leer bleibt.                                                               |
| `bookingAppURL`   | URL der Buchungs-App. Verwenden Sie die aus dem folgenden Beispiel.                                                                                                         |
| `enable`          | Schalter zum Aktivieren oder Deaktivieren des Abrufs dieser Konfiguration.                                                                                                  |
| `refreshInterval` | Intervall in Sekunden für die Raumerkennung.                                                                                                                                |
| `requestTimeout`  | Zeitüberschreitung für API-Abfragen in Sekunden                                                                                                                             |
| `tenantIDs`       | Liste der Mandanten-IDs von BuildingPro Suites, für die diese App Daten erfassen soll. Für jede Mandanten-ID werden alle Assets automatisch in BuildingPro Suites erstellt. |

Die Konfiguration erfolgt über eine entsprechende JSON-Struktur. Als Beispiel kann die folgende JSON-Struktur verwendet werden, um einen Endpunkt für App-Berechtigungen zu definieren:

```json
{
  "clientId": "01234567-89ab-cdef-0123-456789abcdef",
  "clientSecret": "random-cl13nt-s3cr3t",
  "tenantId": "01234567-89ab-cdef-0123-456789abcdef",

  "ewsURL": "https://outlook.office365.com/EWS/Exchange.asmx",
  "username": "username",
  "password": "password",

  "serviceUserUPN": "eliona@example.com",
  "roomListUPN": "first.floor@example.com",

  "bookingAppURL": "http://booking:3000/v1",
  "enable": true,
  "refreshInterval": 60,
  "requestTimeout": 120,
  "tenantIDs": [
    "10"
  ]
}
```

Konfigurationen können in BuildingPro Suites mithilfe dieser Struktur unter `Apps > Exchange-App > Einstellungen`. Dazu wählen Sie den /configs-Endpunkt mit der POST-Methode aus.

Nach Abschluss der Konfiguration beginnt die App mit der kontinuierlichen Erstellung von Assets. Wenn alle erkannten Räume erstellt wurden, wird der Benutzer im Benachrichtigungssystem von BuildingPro Suites darüber informiert.

### Buchungssynchronisierung

Wenn die Exchange-App und die Booking-App korrekt konfiguriert sind, werden Buchungen in beide Richtungen zwischen dem Exchange-Server und BuildingPro Suites synchronisiert. Die Buchungen in BuildingPro Suites müssen auf den durch die kontinuierliche Asset-Erstellung erstellten Assets vorgenommen werden. Änderungen und Stornierungen vom Exchange-Server oder von BuildingPro Suites werden ebenfalls mit dem anderen Dienst synchronisiert.

Wenn bei der Synchronisierung von BuildingPro Suites zu Exchange ein Fehler auftritt (typischerweise, wenn der Raum die Einladung nicht akzeptiert), wird der Benutzer über Benachrichtigungen in BuildingPro Suites über das Problem informiert, und die Buchung in BuildingPro Suites wird storniert.

Wenn die Buchung von einem Benutzer ohne Exchange-Konto vorgenommen wird (oder eine Ad-hoc-Buchung ist), wird die Buchung vom Dienstbenutzer vorgenommen.

### Buchungszeit

Beim Erstellen oder Löschen einer Buchung aus BuildingPro Suites wird die Buchung innerhalb weniger Sekunden in Outlook sichtbar. Änderungen in Outlook werden alle mit BuildingPro Suites synchronisiert. `refreshInterval` Sekunden.

### Wiederkehrende Ereignisse

Wiederkehrende Ereignisse können in Outlook erstellt werden. Alle Vorkommen werden an BuildingPro Suites weitergeleitet und mit BuildingPro Suites synchronisiert. Benutzer in BuildingPro Suites können bestimmte Vorkommen stornieren.

Bitte beachten Sie, dass es eine Begrenzung gibt, wie weit im Voraus Ressourcen gebucht werden können. Die Begrenzung kann in der Exchange-Verwaltung für die Ressourcen konfiguriert werden.

### Mehrere Assets buchen

Während das Buchungs-Frontend nicht zulässt, mehrere Assets gleichzeitig zu buchen, kann Outlook dies. Die App synchronisiert die Mehrfachbuchung in BuildingPro Suites, und das Ereignis kann geändert oder storniert werden.
