App Suite Releases
  • 8.47
  • 8.35
  • 7.10.6
Imprint
  • 8.47
  • 8.35
  • 7.10.6
Imprint
  • Release 8.52Upcoming
  • Release 8.51
  • Release 8.50
  • Release 8.49
  • Release 8.48
  • Release 8.47LTS
    • Noteworthy Changes
      • 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
  • Release 8.46
  • Release 8.45
  • Release 8.44
  • Release 8.43
  • Release 8.42
Maintained. Older releases are best effort.
Upcoming
Not released yet
LTS
Long-term support branch
An LTS version of this release is available.

App Suite Middleware

8.47.107 - 2026-06-23

Fixed

  • DB pool exhaustion during autoscaler scale-up
  • Add opt-in overload protection for cache-outage DB stampedes

8.47.106 - 2026-06-23

Fixed

  • ExistingUISettingsSecret checksum and document existing*Secret values
    • Backport of main commit ab96e610c2f to stable-8.47.
    • The existingUISettingsSecret was missing from core-mw.existingSecretsChecksum, so content changes to that secret did not trigger a rolling restart unlike the other existing* secrets. Added the missing block.
    • Also added a guide on the existing*Secret values to the chart README, clarified the additive-vs-replace behavior in the values.yaml comments, and bumped the chart version to 6.18.6.

8.47.105 - 2026-06-19

Fixed

  • Add missing import for LogProperties in TransportPerformer
  • Retry/back-off for retryable mail access errors when transporting scheduled mails
  • Stop DB heart-beat after a failed keep-alive instead of retrying on a dead connection

8.47.104 - 2026-06-03

Fixed

  • CP-572: Avoid full Redis key-space scan when closing sessions by user/context filter

8.47.103 - 2026-05-29

Fixed

  • IOL-2841: Reconnect mail access when attachment handling takes too long

8.47.102 - 2026-05-28

Fixed

  • Scheduled mail date_to_send returns null in action=all when IMAP server drops $CurrentlyScheduled user flag

8.47.101 - 2026-05-28

Fixed

  • Merge schema lists in Java to avoid collation mismatch in update task listing

8.47.100 - 2026-05-28

Fixed

  • Data: URL inline images rendered with empty src in display path

8.47.99 - 2026-05-21

Fixed

  • Movecontextdatabase fails on large contexts due to configdb wait_timeout

8.47.98 - 2026-05-21

Fixed

  • Use more generic error code in failure notification to avoid possibly exposing sensitive information

8.47.97 - 2026-05-21

Fixed

  • Re-verify cached schema state when blocking updates remain pending
  • Use more generic error code in failure notification to avoid possibly exposing sensitive information

8.47.96 - 2026-05-20

Fixed

  • Externalize data: URL inline images into managed files
  • Sanitize illegal filename characters when saving mail attachments to Drive
    • The "Save to Drive" action (PUT /mail?action=attachment) only replaced "/" with "_" in the attachment file name, leaving other characters that are illegal in file-storage names (":", "", "?", "*", """, "<", ">", "|") to flow down into the storage layer which then rejected the request with FILE_NAME contains illegal characters.
    • Reuse FilenameValidationUtils.sanitizeName to replace every illegal character with "_", trim trailing dots/whitespace and fall back to a generated default name for reserved names; use MailMessageParser.generateFilename as the fallback so the original sequence id and MIME type drive the substitute name.
    • Adds FilenameValidationUtilsTest covering the colon scenario from the support ticket plus the existing replacement, trim, reserved-name and Unicode cases.
  • Send failure notification for scheduled mails even when transport setup fails
  • Surface legacy single-schema pools in listdatabaseschema and runallupdate

8.47.95 - 2026-05-20

Fixed

  • User proper order for charset and collation

8.47.94 - 2026-05-12

Fixed

  • Orphaned mail accounts with oauth=0 disappear from account list
    • Reject 0 as a valid OAuth account identifier across all mail account read/write paths (DB layer, cache codec, user-copy provisioning) and add an update task that migrates pre-existing 0 values to NULL.

8.47.93 - 2026-05-07

Fixed

  • Properly handle null values in jslob storage

8.47.92 - 2026-05-05

Fixed

  • Movecontextdatabase failed with "Table '<oxdb>.context' doesn't exist"
    • When disabling the context at the start of doMoveDatabaseContextInternal(), the source user-DB connection (oxDbWriteCon) was passed to myEnableDisableContext(), which executes UPDATE context SET enabled = 0. The context table only exists in configdb, so the statement was issued against the user schema (e.g. oxdatabase_444) and failed.
    • Pass null instead so myEnableDisableContext() acquires its own configdb write connection -- restoring the pre-e316526b33a behaviour of disable(ctx, reason). The mutual exclusion of concurrent provisioning is already handled by the surrounding context claim, so no transactional coupling with oxDbWriteCon is needed here.
    • Closes appsuite/platform/core#509
  • Invalidate cached MailAccess instances when mail account is changed
    • After a SOAP provisioning operation that changes a user's PrimaryEmail, the generated iOS/MacOS onboarding mobileconfig profile contained the previous login in IncomingMailServerUsername / OutgoingMailServerUsername, while EmailAddress reflected the new address. Cause: the node-local SingletonMailAccessCache holds MailAccess instances whose MailConfig has the login eagerly populated from the MailAccount and was not invalidated when the underlying MailAccount or user changed; the cache only expired via its idle timeout.
    • CachingMailAccountStorage.invalidateMailAccount(s) now also clears the node-local MailAccess cache for the affected user and broadcasts a cluster-wide invalidation event over the existing MAIL_SESSION_EVENTS channel, so other nodes drop their cached MailAccess instances too.
    • New MailAccessCacheInvalidator listens on the same channel and drops cached MailAccess entries on remote events.
    • New MailSessionCache.fireMailCacheInvalidationEvent publishes the event unconditionally (in contrast to clearFor, which only publishes when the publishing node has matching local sessions - not the case for the admin node performing SOAP provisioning).
    • Defense in depth: MailOnboardingProvider now refreshes the MailConfig via MailConfig.getConfig(...) analog to the existing TransportConfig refresh, so the onboarding plist is correct even if the cache invalidation does not reach this node.

8.47.91 - 2026-05-05

Fixed

  • Invalidate cached MailAccess instances when mail account is changed
    • After a SOAP provisioning operation that changes a user's PrimaryEmail, the
    • generated iOS/MacOS onboarding mobileconfig profile contained the previous
    • login in IncomingMailServerUsername / OutgoingMailServerUsername, while
    • EmailAddress reflected the new address. Cause: the node-local
    • SingletonMailAccessCache holds MailAccess instances whose MailConfig has
    • the login eagerly populated from the MailAccount and was not invalidated
    • when the underlying MailAccount or user changed; the cache only expired
    • via its idle timeout.
    • CachingMailAccountStorage.invalidateMailAccount(s) now also clears the
    • node-local MailAccess cache for the affected user and broadcasts a
    • cluster-wide invalidation event over the existing MAIL_SESSION_EVENTS
    • channel, so other nodes drop their cached MailAccess instances too.
    • New MailAccessCacheInvalidator listens on the same channel and drops
    • cached MailAccess entries on remote events.
    • New MailSessionCache.fireMailCacheInvalidationEvent publishes the event
    • unconditionally (in contrast to clearFor, which only publishes when the
    • publishing node has matching local sessions - not the case for the
    • admin node performing SOAP provisioning).
    • Defense in depth: MailOnboardingProvider now refreshes the MailConfig
    • via MailConfig.getConfig(...) analog to the existing TransportConfig
    • refresh, so the onboarding plist is correct even if the cache
    • invalidation does not reach this node.

8.47.90 - 2026-04-30

Changed

  • Added possibility to log all connection-using thread on "too many connections" error
    • Changed: Added possibility to log all connection-using thread on "too many connections" error - /appsuite/support#1363
    • Changed: Add jitter/offset to periodic (general) clean-up jobs to avoid start burst - /appsuite/support#1363
    • Fixed: Reduce configdb pressure of nightly cleanup runs - appsuite/support#1363
    • Mitigates the synchronized configdb-connection burst at the beginning of the nightly cleanup window that surfaces as DBP-0001 / "too many connections" against the cluster:
    • Mix a per-node salt (hostname + random component) into the deterministic per-job offset so that the same job is started in a different slot on every pod, preventing the cluster-wide synchronized burst that pure jobId.hashCode()-based offsets produced.
    • Make the per-job schema concurrency configurable via com.openexchange.database.cleanup.schemaConcurrencyLevel (default 4 instead of the previously hard-coded 10), which is the main multiplier for parallel configdb access per pod.
    • Add a global hard cap on concurrent configdb schema look-ups via com.openexchange.database.cleanup.maxConcurrentSchemaLookups (default 8), independent of concurrencylevel/schemaConcurrencyLevel.
    • Pre-resolve representativeContextId -> PoolAndSchema in a single batch lookup per cleanup run and pass it through to CleanUpJobRunnable, so per-schema cleanup no longer issues an additional configdb roundtrip per schema.
    • Add a soft submission ramp-up at the start of the schedule window via com.openexchange.database.cleanup.rampUpMillis (default 60s) on top of the existing jitter, eliminating the exact window-boundary spike independent of hash collisions.
    • Treat Category.CATEGORY_SERVICE_DOWN (e.g. DBP-0001 "Cannot get connection to config DB" / "Cannot create pooled object") as retry-able with exponential back-off and jitter both for per-schema execution and for uncached configdb schema look-ups, so the pool can recover instead of being hammered while saturated.

8.47.88 - 2026-04-28

Fixed

  • Limit number of concurrent transport attempts for scheduled mails
    • Changed: Avoid premature permit release - /appsuite/platform/core#497
    • Changed: Introduced simple SMTP connection pool & Use PIPELINING extension for MAIL-FROM and RCPT-TO commands - /appsuite/platform/core#497
    • Changed: Added configuration switch to allow per node/JVM to perform the check and transport of due scheduled mails - /appsuite/platform/core#497
    • Fixed: Limit number of concurrent transport attempts for scheduled mails - /appsuite/platform/core#497
    • Added property documentation

8.47.87 - 2026-04-24

Fixed

  • IAE-133: Orderly apply punycode decoding for OAUTHBEARER user name if "com.openexchange.mail.filter.punycode" is set to "true"

8.47.86 - 2026-04-22

Fixed

  • Prevent possible IMAP injection vulnerability

8.47.85 - 2026-04-21

Fixed

  • Avoid writing periodic save-points (by default) to avoid possible access problems

8.47.84 - 2026-04-16

Changed

  • Ensure consistent connection pool state

8.47.83 - 2026-04-15

Fixed

  • PBSR-1664: Orderly consider mail login resolver when dealing with a user's ACL name

8.47.82 - 2026-04-15

Changed

  • SCR-1691: Added command-line tools for mail signatures

8.47.81 - 2026-04-02

Fixed

  • Dont remove commit SHA

8.47.80 - 2026-04-02

Fixed

  • Removed accidental debug output remnants
    • Fixed: Removed accidental debug output remnants -
  • Don't drop stack trace if "includeStackTraceOnError=true" is present in request parameters

8.47.79 - 2026-03-27

Fixed

  • Don't drop stack trace if "includeStackTraceOnError=true" is present in request parameters

8.47.78 - 2026-03-26

Fixed

  • Detect Java version without additional JVM options

8.47.76 - 2026-03-25

Fixed

  • Keep user in recipient list when replying to a mail in a shared folder

8.47.74 - 2026-03-18

Fixed

  • Orderly keep URIs to external images

8.47.73 - 2026-03-17

Fixed

  • Ignore possible "file not found" error when moving entity-associated files due to deletion of that entity (e.g. user deletion)

8.47.71 - 2026-03-12

Added

  • Allowing to enable IMAP trace logging by request

8.47.70 - 2026-03-11

Fixed

  • Special handling when replying to a mail in a shared folder

8.47.69 - 2026-03-10

Changed

  • Some refactoring for Redis health check

Fixed

  • Added alternative faster symmetric encryption for less security use cases & rather fail-fast behavior for Reids connector policies

8.47.68 - 2026-03-04

Fixed

  • Pass proper thread context map on logout of a DAV session

8.47.67 - 2026-03-04

Fixed

  • Restored previous JAXB annotation for deputy module permissions

8.47.66 - 2026-03-04

Fixed

  • Use more robust compare-and-set implementation when acquiring a unique sequence identifier

8.47.65 - 2026-03-04

Fixed

  • Use more robust compare-and-set implementation when acquiring a unique sequence identifier

8.47.64 - 2026-03-04

Fixed

  • Added retry behavior in case a recoverable SQL error occurs that suggests restarting
  • Orderly consider user/context information when evaluating "com.openexchange.mail.filter.activated" property

8.47.63 - 2026-03-03

Fixed

  • Docker image missing stable-8.x tag when pushing release image

8.47.62 - 2026-03-03

Fixed

  • Docker image missing stable-8.x tag when pushing release image
    • The git version tag was created after buildahPushAllImages ran, so
    • releaseTags() could not resolve the version and omitted the stable-8.x
    • tag. Move the local tag re-creation before the push task.

8.47.61 - 2026-02-27

Fixed

  • Avoid too many recursive calls when compiling IMAP SEARCH expression from a search term instance

8.47.60 - 2026-02-27

Fixed

  • Avoid too many recursive calls when compiling IMAP SEARCH expression from a search term instance
  • Added config option to Redis-based session storage to control execution of timer tasks

8.47.55 - 2026-02-25

Added

  • INF-581: Always apply default HTTP headers in WebDAV responses, including new 'X-Powered-By' header
    • Added: INF-581: Always apply default HTTP headers in WebDAV responses,

8.47.54 - 2026-02-23

Fixed

  • Consider original request properties in undo action
    • fix: consider original request properties in undo action

8.47.53 - 2026-02-23

Fixed

  • IOL-2841: Periodically touch composition space cache during file upload to ensure it does not vanish from cache

8.47.52 - 2026-02-18

Added

  • IAE-122: Added OAuth token exchange for back-ground tasks
  • SCR-1641: Added Google Open Source library RE2/J
  • SCR-1645: Added possibility to replace external images in HTML content of a mail with a configurable path while discarding use of proxy Servlet

Changed

  • PBSR-1478: Accept a dedicated identifier referencing the account in whose standard Sent folder the message will be stored
  • SCR-1646: Updated OpenId Connect libraries
  • SCR-1647: Updated Netty libraries from v4.1.124 to v4.1.130
  • SCR-1648: Updated lettuce library from v6.5.5 to v6.8.2
  • SCR-1649: Updated Fabric8 libraries from v7.4.0 to v7.5.2
  • SCR-1650: Updated Jackson libraries from v2.19.2 to v2.21.0
  • SCR-1652: Updated the OSGi target platform bundle org.eclipse.osgi_3.23.200.v20250812-1847.jar to org.eclipse.osgi_3.24.0.v20251126-0427.jar
  • SCR-1653: Upgraded JSoup library from v1.21.1 to v1.22.1
  • SCR-1654: Updated Apache Mime4j libraries
  • SCR-1655: Update Apache Commons Codec from v.1.17.2 to v1.21.0
  • SCR-1656: Updated Apache Commons CLI library from v1.9.0 to v1.11.0
  • SCR-1657: Updated Apache Commons Collections4 library from v4.4 to v4.5.0
  • Support client-provided file name
  • Updated core-mw chart dependencies
    • Updated Gotenberg chart to v1.17.0
    • Updated Collabora image to v25.04.8.3.1
    • Updated Collabora chart to v1.1.56
  • Try to extract file name from request's path information and prefer it if present
  • More sophisticated mapping from Windows to Olson timezones
  • Selectively load user attendee data for post processing during DAV:sync-collection REPORT
  • Don't fail during mail compose if a referenced image could not be found
  • Include the hint on successful data export that some modules might not have exported
  • Catch and log errors when formatting iTIP annotations

Fixed

  • INU-5058: Correctly detect non-multipart iMIP messages
  • core#459): Drop invalid deputy permissions from result set
  • Avoid excessive parsing of corrupt E-Mail address string
  • Drop superfluous "InitialTombstoneCleanupUpdateTask" update task since there is a periodic execution
  • Support to drop/remove birthday (and anniversary) date field from user
  • Dropped Eclipse Collections and any of its usages
  • Orderly return 'CALDAV:same-organizer-in-all-components' precondition if applicable
  • Remember reply headers in composition space's meta data
  • Use DefaultAWSCredentialsProviderChain for AWS Identity and Access Management (IAM) credentials source
  • Added possibility to move a context to another database (pool) w/o using a surrounding transaction on config database to not block concurrent context provisioning
  • Try to obtain user identifier from thread's log properties to determine appropriate no-reply configuration
  • Verify schema state if fetched from (Redis) cache
  • Remove obsolete Hazelcast group password from core-mw Helm chart
Prev
App Suite UI
Next
Additional Components