App Suite Releases
  • 8.47
  • 8.35
  • 7.10.6
Imprint
  • 8.47
  • 8.35
  • 7.10.6
Imprint
  • Release 8.47
    • Noteworthy Changes
      • Important Changes
      • Key Features Since 8.35
      • Upgrade Guide: 8.35 to 8.47
      • Important Changes
      • App Suite Middleware
  • Changelogs
    • App Suite UI
    • App Suite Middleware
    • Additional Components
      • AI Service
      • OX Guard UI
      • Switchboard
  • Helm Charts
    • AI-Service documentation
    • App Suite Stack Chart
    • Helm Chart core-cacheservice
    • Helm Chart core-documentconverter
    • Helm Chart core-imageconverter
    • core-mw
    • Switchboard

Upgrade Guide: 8.35 to 8.47

This page lists all breaking changes, required actions, and important behavioral changes accumulated across releases 8.36 through 8.47. Items are grouped by topic and ordered by impact.

JWT Authentication Migration

Introduced in 8.46

The Core UI service now handles JWT issuing, replacing Switchboard for this functionality. Switchboard token and JWKS endpoints are deprecated.

Core UI Configuration

Enable JWT issuing in Core UI with the following Helm values:

jwt:
  enabled: true
  hostname: "your-appsuite-domain.example.com"
appsuite:
  api: "http://main-core-mw-http-api/<appRoot>/api"

Middleware Configuration

The middleware property com.openexchange.tokenlogin.applications must include core-ui as an additional application.

Custom VirtualService Route

If you are using a custom VirtualService, add a new route for the Core UI service:

- match:
  - uri:
      prefix: /<appRoot>/ui
  name: core-ui
  rewrite:
    uri: /ui  # only needed when appRoot is set
  route:
  - destination:
      host: main-core-ui.<namespace>.svc.cluster.local
      port:
        number: 80

Service JWT Configuration

All services that consume JWTs must include the appRoot in their oidc.issuer configuration:

ComponentConfiguration
Core UIjwt.enabled: true, jwt.hostname, appsuite.api
AI Serviceoidc.issuer: "https://<hostname>/<appRoot>" (renamed from jwks.domain)
Switchboardoidc.issuer: "https://<hostname>/<appRoot>"

Multiple issuers can be comma-separated. Services automatically discover JWKS endpoints via OpenID Configuration. For detailed migration steps, see the migration guide.

Core UI Architecture Change

Introduced in 8.46

The Core UI has migrated from a static nginx-based container to a dynamic Node.js service. This requires resource adjustments:

  • Memory: Default is 256Mi for both request and limit (up from the nginx defaults).
  • CPU: A CPU request is defined, but no CPU limit is set. This allows the service to handle short CPU bursts without being throttled. Set a limit (commonly 1 CPU) if required by cluster policies.
  • Instance count: The Helm chart defaults to two instances. For just serving static files, you can reduce to one.
  • BIMI: When the BIMI feature is enabled, Core UI requires a database to cache BIMI records and logos.

Istio Configuration Update

Introduced in 8.45

The Istio configuration has been updated. Ensure you have a supported version of Istio installed before upgrading. See requirements and Istio configuration details.

Ingress NGINX Deprecation

Announced in 8.45, reiterated in 8.46 and 8.47

Upstream support for Ingress NGINX ceased at the end of March 2026, and the project has been retired. OX App Suite v8 support for Ingress NGINX is also discontinued. See the Kubernetes blog post for background.

Redis Connection Pool Default Change

Introduced in 8.37

The Redis connector now defaults to shared connection mode (com.openexchange.redis.connection.pool.mode = shared), where a single connection is used concurrently by multiple threads. This leverages NIO and asynchronous capabilities of the underlying Lettuce client for better performance and lower I/O overhead. The previous behavior used dedicated connections (one per thread).

If you experience unexpected Redis behavior after upgrading, you can revert to the previous mode:

com.openexchange.redis.connection.pool.mode: dedicated

The number of shared connections is controlled by com.openexchange.redis.connection.pool.numSharedConnections (default 8).

Prev
Key Features Since 8.35
Next
Important Changes