# Installatie
## Helm Deployment
Voor het deployen van de applicatie met Helm:
1. Kopieer [`charts/datamigratie/values.yaml`](https://github.com/ICATT-Menselijk-Digitaal/Datamigratie/blob/main/charts/datamigratie/values.yaml) naar je eigen values bestand
2. Pas de waardes aan voor jouw omgeving (API keys, database, etc.)
3. Waardes die al goed staan kan je weglaten
4. Installeer met Helm:
```bash
helm install jouw-release-naam-voor-datamigratie oci://ghcr.io/icatt-menselijk-digitaal/datamigratie -f jouw-values.yaml
```
## Environment Variabelen
De applicatie gebruikt de onderstaande environment variabelen.
Let op: De API- en andere environment variabelen gebruiken dubbele underscores (`__`) voor .NET configuratie binding.
| Variabele | Uitleg |
| --------------------------------- | ------------------------------------------------------------------------------------------------ |
| `OpenZaakApi__BaseUrl` | De base url van de API's bij de Open Zaak-instantie, waar naartoe gemigreerd wordt. Meer informatie
Bijvoorbeeld https://openzaak.example.nl/ |
| `OpenZaakApi__ApiUser` | ClientID van Datamigratie in Open Zaak |
| `OpenZaakApi__ApiKey` | Client Secret van Datamigratie in Open Zaak |
| `DetApi__BaseUrl` | De base url van het API Endpoint in de DET Meer informatie
Bijvoorbeeld https://esuite-data-extractie-gcp2.example.nl/ |
| `DetApi__ApiKey` | API Key van Datamigratie in de DET |
| `Oidc__Authority` | Authority URL van de OIDC provider via welke gebruikers inloggen op Datamigratie |
| `Oidc__ClientId` | ClientID van de OIDC provider |
| `Oidc__ClientSecret` | Client Secret van de OIDC Provider |
| `Oidc__FunctioneelBeheerderRole` | Naam van de Rol die beheerfuncties mag uitvoeren in Datamigratie Meer informatie
Bijvoorbeeld DMT-Functioneel-Beheerder |
| `Oidc__NameClaimType` | De naam van de claim in het JWT token van de OpenID Connect Provider waarin de volledige naam van de ingelogde gebruiker staat |
| `Oidc__RoleClaimType` | De naam van de claim in het JWT token van de OpenID Connect Provider waarin de rollen van de ingelogde gebruiker staan. |
| `Oidc__EmailClaimType` | De naam van de claim in het JWT token van de OpenID Connect Provider waarin het e-mailadres van de ingelogde gebruiker staat. |
| | |
### Feature Flags
De applicatie gebruikt feature flags om bepaalde functionaliteit in of uit te schakelen. Deze kunnen geconfigureerd worden via environment variabelen.
| Flag | Environment Variable | Standaard | Beschrijving |
| ------------------- | --------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `EnableTestHelpers` | `FeatureFlags__EnableTestHelpers` | `false` | Schakelt test helper UI in voor batch selectie bij het mappen van grote aantallen documenttypes. Biedt een pre-selectie optie om het mapping proces te versnellen. |
### Migratie configuratie
| Optie | Environment Variable | Standaard | Beschrijving |
| ---------------------- | --------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ZaakConcurrencyLimit` | `Migration__ZaakConcurrencyLimit` | `1` | Aantal zaken dat gelijktijdig gemigreerd wordt. Een hogere waarde kan de migratiesnelheid verhogen, maar vergroot ook de belasting op de OpenZaak API. Aangezien de maximale waarde sterk afhankelijk is van de omgeving waarop de migratie wordt uitgevoerd adviseren wij om op een representatieve testomgeving verschillende waardes uit te proberen. Ter indicatie, de ontwikkelomgeving kon een limiet van 15 aan. Nb. boven een bepaalde waarde zal de migratiesnelheid waarschijnlijk niet meer toenemen. Het absolute maximum vinden, van wat technisch haalbaar is, heeft derhalve weinig toegevoegde waarde. Wanneer de waarde te hoog ingesteld wordt zullen er CircuitBreaker meldingen in de resultaten verschijnen. De migratie wordt dan automatisch stopgezet. |
| `RequestTimeoutSeconds` | `Migration__RequestTimeoutSeconds` | `30` | Timeout in seconden per HTTP-request naar externe API's. |
Een hogere `ZaakConcurrencyLimit` is niet altijd beter. Als de OpenZaak API overbelast raakt, gaat de ingebouwde circuit breaker open en krijg je `BrokenCircuitException`-fouten in de logs. Dit is een teken dat de waarde te hoog is. Verlaag in dat geval de waarde en herstart de migratie.
Als requests regelmatig een timeout krijgen terwijl de API wel bereikbaar is, kan het helpen om `RequestTimeoutSeconds` te verhogen. De standaardwaarde van 30 seconden is geschikt voor de meeste omgevingen.