# Exchange-App

## Exchange-App

#### Eliona App zur Microsoft Exchange Buchungsintegration

>

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

### Konfiguration der Exchange Web Services (EWS)

Folgen Sie diesen Schritten für Exchange Online und hybride Installationen, bei denen Benutzer-E-Mails in Exchange Online gespeichert sind. *Für die lokale Installation des Exchange-Servers oder eine hybride Konfiguration mit lokalen Erstkonten überspringen Sie dieses Kapitel und besorgen Sie sich nur die NTLM-Anmeldeinformationen und die EWS-API-URL.*

> Bitte beachten Sie, dass EWS für Exchange Online am 1. Oktober 2026 eingestellt wird. Dies betrifft keine lokalen Exchange-Server und hybriden Konfigurationen. 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, folgen Sie den unten stehenden Schritten, um sie in Microsoft Entra zu registrieren.

**1. Registrierung der Anwendung**

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

**2. Konfiguration der Berechtigungen**

**Anwendungs-Authentifizierung (Impersonation)**

Für die Anwendungs-Authentifizierung, die Impersonation unterstützt:

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

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. Generieren von Geheimnissen für die Authentifizierung**

Um die Anwendung zu authentifizieren:

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

**Konfiguration der Impersonation über PowerShell**

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

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

**PowerShell-Skripte zur Konfiguration der Impersonation**

1. **Verbindung zu Exchange Online PowerShell herstellen**:

```powershell
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking
```

2. **Zuweisen von Impersonation-Rechten**:

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

3. **Überprüfen der Impersonation-Rechte**:

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

Ersetzen Sie `serviceAccount` durch den Namen Ihres Servicekontos oder Benutzers, der die Impersonation durchführen wird.

**Trennen 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 Eliona installiert.

### Assets

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

### Konfiguration

Die Exchange-App wird durch die Definition einer oder mehrerer Authentifizierungsanmeldeinformationen konfiguriert:

| Attribut          | Beschreibung                                                                                                                               |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `clientID`        | ClientID, die im Entra Admin Center erhalten wurde. (Nur für OAuth-Authentifizierung)                                                      |
| `clientSecret`    | ClientSecret, das im Entra Admin Center erhalten wurde. (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 Servicebenutzers (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 unten stehenden Beispiel.                                                                  |
| `enable`          | Flag zum Aktivieren oder Deaktivieren des Abrufens dieser Konfiguration.                                                                   |
| `refreshInterval` | Intervall in Sekunden für die Raumerkennung.                                                                                               |
| `requestTimeout`  | API-Abfragezeitlimit in Sekunden                                                                                                           |
| `projectIDs`      | Liste der Eliona-Projekt-IDs, für die diese App Daten sammeln soll. Für jede Projekt-ID werden alle Assets automatisch in Eliona 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,
  "projectIDs": [
    "10"
  ]
}
```

Konfigurationen können mithilfe dieser Struktur in Eliona unter `Apps > Exchange app > Einstellungen` erstellt werden. Wählen Sie dazu den /configs Endpunkt mit der POST-Methode aus.

Nach Abschluss der Konfiguration startet die App die kontinuierliche Asset-Erstellung. Wenn alle erkannten Räume erstellt wurden, wird der Benutzer darüber im Benachrichtigungssystem von Eliona informiert.

### Buchungssynchronisation

Wenn die Exchange-App und die Buchungs-App ordnungsgemäß konfiguriert sind, werden die Buchungen in beide Richtungen zwischen dem Exchange-Server und Eliona synchronisiert. Die Buchungen in Eliona müssen auf den durch die kontinuierliche Asset-Erstellung erstellten Assets erfolgen. Änderungen und Stornierungen von entweder dem Exchange-Server oder Eliona werden auch mit dem anderen Dienst synchronisiert.

Falls ein Fehler bei der Synchronisation von Eliona zu Exchange auftritt (typischerweise, wenn der Raum die Einladung nicht akzeptiert), wird der Benutzer über das Problem mithilfe der Eliona-Benachrichtigungen informiert und die Buchung in Eliona wird storniert.

Wenn die Buchung von einem Benutzer ohne Exchange-Konto (oder eine Ad-hoc-Buchung) vorgenommen wird, wird die Buchung vom Servicebenutzer durchgeführt.

### Buchungszeit

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

### Wiederkehrende Ereignisse

Wiederkehrende Ereignisse können in Outlook erstellt werden. Alle Vorkommen werden an Eliona weitergegeben und synchronisiert. Benutzer in Eliona können bestimmte Vorkommen stornieren.

Beachten Sie, dass es ein Limit gibt, wie weit im Voraus die Ressourcen gebucht werden können. Das Limit ist in der Exchange-Verwaltung für die Ressourcen konfigurierbar.

### Buchung mehrerer Assets

Während das Buchungs-Frontend nicht erlaubt, mehrere Assets gleichzeitig

zu buchen, ermöglicht Outlook dies. Die App synchronisiert die Mehrfachbuchung in Eliona und das Ereignis kann geändert oder storniert werden.
