This page relates to the release notes of Nuxeo Server and related addons for LTS 2025 cycle. It will list the improvements and features that are successively shipped with the 2025.x releases.
What's New in LTS 2025.25 / LTS 2025-HF25
CMIS: Cannot Use JOIN and CONTAINS Clause in Same Query
CMISQL queries combining a JOIN and a CONTAINS() clause no longer fail.
Add a Cache to TokenAuthenticationService
Added a cache for token authentication lookups, avoiding a directory query on every authenticated request.
Defaults to 5 minutes / 1000 entries, configurable via the nuxeo.conf properties nuxeo.tokenauth.cache.ttl, nuxeo.tokenauth.cache.maxSize, and nuxeo.tokenauth.cache.concurrencyLevel.
Take Into Account the Search Pattern on Multi-Directories
Fix substringMatchType (subinitial / subany / subfinal) not being honored by user/group search when the user or group directory is a multi-directory (nuxeo.directory.type=multi).
Fire blobDigestUpdated Even if Digest Is Not Computed Due to Threshold
A blobDigestSkipped event is fired when digest is not computed due to threshold.
Prevent OAuth2 Service Provider Creation Without authorizationServerURL
Fixed OAuth2 service provider creation/update accepting a blank authorization server URL.
S3BlobStoreConfiguration: Fix Spurious Versioning Warn When KeyStrategyDocId Is Not Used
Review cloud blob providers versioning config at startup and apply a fail-fast strategy when KeyStrategyDocId is used without cloud-storage versioning.
Expose the System Change Token on DocumentModel API
The systemChangeToken is now exposed at DocumentModel level.
Enhance Exclusiveness Handling in BulkService by Returning a 409 HTTP Status
Return a 409 status code if an exclusive Bulk Action is already running.
Change CacheDescriptor#ttl to java.time.Duration for Explicit Unit
Cache TTL can now be expressed as a Duration string (for example, 5m, 1h, 30s) instead of a plain number of minutes.
The <ttl> element of a cache contribution (CacheService/caches extension point) now accepts a java.time.Duration compatible string in addition to the legacy plain number (still interpreted as minutes for backward compatibility). This makes the unit explicit and allows sub-minute precision, which was previously impossible.
Example:
<extension target="org.nuxeo.ecm.core.cache.CacheService" point="caches">
<cache name="my-cache" class="org.nuxeo.ecm.core.cache.InMemoryCacheImpl">
<ttl>5m</ttl>
<option name="maxSize">1000</option>
</cache>
</extension>
On the Java side, CacheDescriptor#getTTL()/setTTL(Long) are deprecated in favor of getTTLAsDuration()/setTTL(Duration).
Security Fixes
This release also contains security fixes.
LTS 2025 Release Notes summary
| Version | Release date |
|---|---|
| LTS 2025.25 / 2025-HF25 | 2026-09-14 |
| LTS 2025.24 / 2025-HF24 | 2026-08-24 |
| LTS 2025.23 / 2025-HF23 | 2026-08-03 |
| LTS 2025.22 / 2025-HF22 | 2026-07-21 |
| LTS 2025.21 / 2025-HF21 | 2026-06-22 |
| LTS 2025.20 / 2025-HF20 | 2026-06-01 |
| LTS 2025.19 / 2025-HF19 | 2026-05-11 |
| LTS 2025.18 / 2025-HF18 | 2026-04-20 |
| LTS 2025.17 / 2025-HF17 | 2026-03-30 |
| LTS 2025.16 / 2025-HF16 | 2026-03-09 |
| LTS 2025.15 / 2025-HF15 | 2026-02-16 |
| LTS 2025.14 / 2025-HF14 | 2026-01-26 |
| LTS 2025.13 / 2025-HF13 | 2026-01-12 |
| LTS 2025.12 / 2025-HF12 | 2025-12-15 |
| LTS 2025.11 / 2025-HF11 | 2025-11-24 |
| LTS 2025.10 / 2025-HF10 | 2025-11-03 |
| LTS 2025.9 / 2025-HF09 | 2025-10-13 |
| LTS 2025.8 / 2025-HF08 | 2025-09-22 |
| LTS 2025.7 / 2025-HF07 | 2025-09-01 |
| LTS 2025.6 / 2025-HF06 | 2025-08-11 |
| LTS 2025.5 / 2025-HF05 | 2025-07-21 |
| LTS 2025.4 / 2025-HF04 | 2025-06-30 |
| LTS 2025.3 / 2025-HF03 | 2025-06-02 |
| LTS 2025.2 / 2025-HF02 | 2025-05-12 |
| LTS 2025.1 / 2025-HF01 | 2025-04-21 |
| LTS 2025.0 / 2025-HF0 | 2025-03-31 |