App Suite Releases
  • 8.47
  • 8.35
  • 7.10.6
Imprint
  • 8.47
  • 8.35
  • 7.10.6
Imprint
  • Release 8.51
    • Noteworthy Changes
      • Important Changes
      • App Suite Middleware
    • Changelogs
      • App Suite UI
      • App Suite Middleware
      • Additional Components
        • AI Service
        • OX Guard UI
        • Switchboard
        • Changelog
    • Helm Charts
      • AI-Service documentation
      • App Suite Stack Chart
      • Helm Chart core-cacheservice
      • Helm Chart core-documentconverter
      • Helm Chart core-imageconverter
      • core-mw
      • UI Service
      • Switchboard
  • Release 8.50
  • Release 8.49
  • Release 8.48
  • Release 8.47
  • Release 8.46

App Suite Middleware

8.51.119 - 2026-07-23

Fixed

  • Report exact attachment sizes for composition space drafts (support#1585)

8.51.117 - 2026-07-23

Fixed

  • Do not queue messages for a second, delayed publication when message buffering is disabled (support#1584)

8.51.116 - 2026-07-23

Fixed

  • Do not queue messages for a second, delayed publication when message buffering is disabled (support#1584)

8.51.115 - 2026-07-23

Fixed

  • Obtain property "com.openexchange.imap.considerSubscribedInListExtended" via IIMAPProperties to gain config-cascade and per-account support (support#1543)

8.51.114 - 2026-07-23

Fixed

  • Propagate affected folders in folder map invalidation messages so remote nodes drop them for every user (support#1584)

8.51.113 - 2026-07-22

Fixed

  • Never skip sender validation when transmitting via action=new (support#1531)

8.51.112 - 2026-07-22

Fixed

  • Property "com.openexchange.imap.considerSubscribedInListExtended" (true/false/probe) to obtain subscription state from separate LSUB when the \Subscribed attribute of LIST-EXTENDED responses is untrustworthy (support#1543)

8.51.111 - 2026-07-22

Fixed

  • Repoint usm/eas checkout URLs to gitlab.com
  • Property "com.openexchange.imap.considerSubscribedInListExtended" (true/false/probe) to obtain subscription state from separate LSUB when the \Subscribed attribute of LIST-EXTENDED responses is untrustworthy (support#1543)

8.51.110 - 2026-07-22

Fixed

  • Repoint openapi plugins to gitlab.com registry and bump to latest

8.51.109 - 2026-07-22

Fixed

  • Tolerate missing parent folder during IMAP default folder check (support#1129)

8.51.108 - 2026-07-22

Fixed

  • Tolerate missing parent folder during IMAP default folder check (support#1129)
  • Single-pass, escaping URI token compression to keep proxy registrations round-trip safe (support#1582)

8.51.107 - 2026-07-22

Fixed

  • Throw FOLDER_NOT_FOUND instead of NPE for missing calendar folder (support#1577)
  • Guard composite LDAP filter construction against non-representable search term operands (support#1578)
  • Single-pass, escaping URI token compression to keep proxy registrations round-trip safe (support#1582)

8.51.106 - 2026-07-21

Fixed

  • Drop RFC 2965 $-prefixed framing cookies in servlet bridge (support#1560)

8.51.105 - 2026-07-21

Fixed

  • Await a concurrently running sibling bulk pre-cache instead of skipping it (support#1522)

8.51.104 - 2026-07-21

Fixed

  • Await a concurrently running sibling bulk pre-cache instead of skipping it (support#1522)

8.51.102 - 2026-07-21

Fixed

  • Reuse GETACL results across folder-tree rebuilds (support#1522)

8.51.99 - 2026-07-16

Added

  • MW translation updates 8.51

Changed

  • SCR-1793: Harden Redis connection lifecycle against stale/orphaned connected clients

Fixed

  • Correct case-insensitive match and quieten expected 'mailbox does not exist' on MYRIGHTS
  • Scoped Entity2ACL look-up caches to the requesting session and account
  • Keep emitting user_id 0 for non-user contacts to preserve HTTP-API compatibility (support#1438)
  • Populate internal user id consistently in results from LDAP contacts provider (support#1542)
    • The context id required to resolve a requested internal user id is fetched implicitly again throughout the search- and auto-complete flows, and the caching layer no longer exposes the internal 0 sentinel, no longer overrides live-resolved identifiers with unresolvable cached data, and yields complete fallback results.
  • Restored xs:date/nillable for SOAP birthday and anniversary (support#1551)
  • Bump About-box default copyright year to 2026 (support#1553)
  • Store DB-assignment and schema-update-state cache entries as plain per-context/per-schema keys instead of one global group hash (support#1562)

8.51.98 - 2026-07-09

Fixed

  • Avoided doomed GETMETADATA on virtual namespace placeholders (support#1543)

8.51.94 - 2026-07-07

Fixed

  • Preserved shared/deputy mailbox visibility with consolidated LIST-EXTENDED folder listing (support#1543)

8.51.93 - 2026-07-03

Fixed

  • Rename changesharedaccount CLI tool documentation and help text to updatesharedaccount

8.51.92 - 2026-07-02

Fixed

  • PBSR-1766: Indicate correct account prefix for folder ids in mail filter rules of non-primary accounts

8.51.91 - 2026-07-02

Fixed

  • Detect synthetic sessions by origin, not instanceof
    • A ServerSessionAdapter wrapping a GeneratedSession is not instanceof GeneratedSession, so scheduling transport skipped its no-reply fallback and tried to OAuth-authenticate a token-less session. Check Origin.SYNTHETIC.
    • Fixed: Detect synthetic sessions by origin, not instanceof 2f49794e @

8.51.89 - 2026-07-01

Added

  • INU-5112: Checktablelayout tool to reconcile schema layout against CreateTableService reference
  • PBSR-1688: Include 'Sensitivity' header in scheduling and notification mails if applicable
  • SCR-1583: Per-user Filters for LDAP Contacts Provider
  • SCR-1714: PBSR-1613: REST Interface to Retrieve Effective Shared Account Permissions
  • SCR-1726: Sanitize_css" parameter for /mail?action=get
  • Virtual threads for the Grizzly HTTP worker pool and request-driven fan-outs
  • Made user provisioning site-aware
    • This includes a grpc connection between sites
  • Return oidc id token to edge-auth
  • "replace_external_images" parameter for /mail?action=get
  • Documentation on outgoing calendar scheduling messages and notifications
  • Handle shares via external authentication service
  • Added new scopes for basic access and elevated access
    • Introduced the scopes "basic" which allow access to all basic functionality and "elevated" which allows access to everything including password changes and similar.
    • The basic scope is used as a fallback if no scope is defined for edge authentication.
  • External auth redeemToken action
  • GRPC implementation for listBytypes for OXUser
  • Oidc login handler, common bundle and new endpoint
  • Poc for external auth login servlet
    • Added: added oauth in flight implementation
    • Added in flight handler with basic auth impl
  • Register rmi services as Remote + some cleanup
    • Add o-x-reseller-grpc package to list
  • Translation updates 8.50
    • all languages but Latvian
  • Introduced cross site bundle and push routing (core#353)
    • introduced new bundle co.ox.multisite
    • introduced new MultiSiteService
    • implemented routing for dovecot push messages (mail and calendar)

Changed

  • Export com.openexchange.admin.rmi.exceptions from freshly introduced com.openexchange.rmi.common, adding new bundles to seperate (grpc) provisioning between 'admin' and 'non-admin' tools to establish a cleaner packaging and keep the option to disable the admin feature.
  • SCR-1724: Upgraded OSGi core library in target platform (com.openexchange.bundles)
  • External auth refactorings
    • Simplified the response json structure
    • Some code cleanup + renamings
    • Added missing javadoc
  • Make Grpc core bundles extensible
    • introduced extension interfaces which allows to separate bundles. This allows more flexible packaging
  • Require c.o.multisite.enabled for grpc based communication
    • To prevent excessive database load I adjusted the delegate logic with the AbstractSiteAwareService to check the c.o.multisite.enabled property first
  • Some renaming + javadoc + minor adjustments
  • Use correct redirect for shares with password
  • Bound OXWorker platform-pool default and enable DB pool waiter cap (core#520)
  • Add owner-trace diagnostic logging for filestore snippets (support#1329)

Removed

  • Deleted obsolet request analyzer test
  • Removed com.google.common.collect export that caused cyclic imports
  • Removed obsolet request analyzer framework

Fixed

  • CP-572: Avoid full Redis key-space scan when closing sessions by user/context filter
  • INU-5112: Utf8mb4 conversion skips columns inheriting their charset from the table default
  • IOL-2841: Reconnect mail access when attachment handling takes too long
  • Re-add UpdateTaskV2 import lost in rebase
  • Liquibase migration failed on MariaDB with "Unknown column 'EXPRESSION'"
  • Minor preparations before merging activeactive into main
  • Orderly determine existingUISettingsSecret checksum and document existing*Secret values
    • 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.22.2.
  • Addressed some grpc converter issues
  • Adjusted packaging for removed request analyzer
  • Adjusted tests
    • Reduce wait time for no reply checks
    • Add timeout to avoid race condition for second precision checks
  • Did some grpc based refactoring/cleanup
    • Simplified the grpc based extension registration by removing all unnecessary trackers
  • Pin the JDOM SAX parser to Apache Xerces for deterministic XML parsing
    • JDOMParserImpl built its SAXBuilder via the default engine, i.e. SAXParserFactory.newInstance(). In the OSGi runtime that JAXP discovery resolves - depending on the thread-context classloader - to either the JDK built-in parser or the repackaged Apache Xerces (com.openexchange.xerces), which disagree on how a disabled-but-referenced external entity is handled. That non-determinism surfaced as a flaky DAV REPORT status (e.g. com.openexchange.dav.caldav.bugs.Bug30359Test intermittently getting 400 instead of 207). Pin the parser to Apache Xerces explicitly so the behavior is deterministic and independent of the JDK version; the XXE hardening (empty entity resolver, external entities and external DTD disabled) is unchanged.
  • Remove duplicate tracking
  • Remove legacy remote registration
    • fix: Breaking recursive calls of getService for optional gRPC services, some refactoring
    • Remove null==value check before setting valueSet bool flags
    • Fix unmarshalling of proto map for userAttributesMap in toRmiUser() converter
    • Adjust segmenter endpoint definition to match actual segmenter service
    • Remove old RMI registrations which shall be replaced by site-aware RMI
    • Make Site-Aware Services always start. Remove remaining Remote registrations
  • Some additional cleanup + refactoring
    • Remove session ids from response
    • Use login instead of formlogin
  • Some more hardening for edge authentication
    • Adjusted form login handling
  • Deny Write-Access for Guest Users in Public Calendar Folders (core#516)
    • SCR-1717: Deny Write-Access for Guest Users in Public Calendar Folders
    • SCR-1718: Update Task to Downscope Unsupported Guest Permissions
  • Normalize ACL rights before checking their equality (core#522)
  • Make del_user recovery-data insert idempotent via ON DUPLICATE KEY UPDATE to allow user deletion despite stale recovery rows (core#523)
  • Take over intermediate participation status from incoming COUNTER proposals (core#524)
  • Data: URL inline images rendered with empty src in display path (support#931)
  • Recover attachment file name truncated at first space (support#1148)
  • Calendar notifications not sent for delegate edits on shared calendars (support#1439)
  • Reply set wrong From/To for ambiguous alias on IDN domain (support#1440)
  • Merge schema lists in Java to avoid collation mismatch in update task listing (support#1467)
  • Skip non-applicable deputy modules on read instead of failing with DEPUTY-0006 (support#1474)
  • Recover from read-only replica after Redis Sentinel fail-over (support#1482)
  • Retry/back-off for retryable mail access errors when transporting scheduled mails (support#1495)
  • Stop DB heart-beat after a failed keep-alive instead of retrying on a dead connection (support#1501)
  • Mimic Browser access to external image protected by Akamai (support#1504)
  • Delete db_cluster child row before db_pool parent on database unregistration (support#1506)
  • Make a failed scheduled-mail failure-notification visible (support#1515)
  • Add opt-in overload protection for cache-outage DB stampedes (support#1517)
  • Quota retrieval fails on global DB due to missing committedFiles column (support#1518)
  • Clarify CLI error when provisioning credentials are missing (support#1519)
  • Timezone-dependent off-by-a-day in IMAP date search (support#1521)
  • Reuse one IMAP connection per endpoint when serializing folder counts (support#1522)
  • Task notification mail labels medium priority as "Normal" instead of "Medium" (support#1524)
  • Task notifications not sent for attachment changes (support#1527)
  • Validate From/Sender ownership on mail bounce (support#1531)
Prev
App Suite UI
Next
Additional Components