App Suite Middleware
8.24.0 - 2024-04-03
Added
- MW-2174: Make
com.openexchange.user.contactCollectOnMailAccess
andcom.openexchange.user.contactCollectOnMailTransport
config-cascade aware. - MW-2251: Added REST-API and job to create pre-assembled contexts. Expose metrics for currently existing pre-assembled contexts
- See also MW-2252
- MW-2261: Optionally Exclude Disabled Contexts in
listcontext
Changed
- MW-2109: Migrated from GCM to FCM for drive events and generic PNS
- Added the Firebase SDK
- Removed old GCM implementation and bundles
- MW-2220: Improve example script to create certificates
- MWB-1582: Preliminary introduce new strings when sharing address books
- MWB-1800: Enforce table order in JOINs if applicable
- MWB-2488: Documentation for on behalf scheduling
- SCR-1366: Updated Spring Framework from v5.3.21 to v6.1.4
- SCR-1367: Allow implementations of BasicAuthenticatorPluginInterface to signal commencing with the next candidate
- SCR-1370: Added option to Redis configuration to specify a compression method
Removed
- MW-2075: Removed property allowContentDispositionInline
- MW-2284: Kerberos support
Fixed
- MWB-2525: Fixed wrong imports in commons compress. Will be fixed upstream with 1.27.0
- MWB-2545: Use correct variable to pass number of contexts to pre-assemble
Details
3rd Party Libraries/License Change
SCR-1366
Summary: Updated Spring Framework
Updated Spring Framework from v5.3.21 to v6.1.4 in bundle com.openexchange.xml
spring-beans-6.1.4.jar
spring-core-6.1.4.jar
spring-jcl-6.1.4.jar
API - Java
SCR-1367
Summary: Slightly incompatible update to BasicAuthenticatorPluginInterface
In order to gain more flexibility in case of multiple Plugins implementing BasicAuthenticatorPluginInterface
and to introduce Context-Admin capability for regular users using the provisioning APIs, the return type of the three methods
isOwnerOfContext()
isMasterOfContext()
isMasterOfContext()
will be changed from the primitive type boolean to Optional<Boolean>
also supporting the third state empty to ignore the result and skip to the next plugin.
API - REST
SCR-1368
Summary: New REST API endpoint /admin/v1/contexts/pre-assemble to pre-assemble contexts
The concept of pre-assembled contexts consists of the asynchronous pre-creation of deactivated contexts that will be reused (and adapted to the provided settings) during the usual createcontext
call. Pre-assembled contexts are characterized by being deactivated with reason_id
equals 666
and their name beginning with the preassembled-
prefix followed by an UUID.
In order to pick up pre-assembled contexts during regular provisioning operations, context skeletons need to be inserted into the database first. This can be achieved in two ways, by calling a REST API or via a background job.
The REST API is located at http://oxhost:8009/admin/v1/contexts/pre-assemble
. Pre-assembled contexts can be generated by a POST request using master authentication with a body containing a JSON object describing the schema name and how many context skeletons should be created. Optionally you can add the id of the filestore that should be used for the pre-assembled context by defining filestore_id
parameter.
Example:
POST /admin/v1/contexts/pre-assemble HTTP/1.1
Content-Type: application/json
Authorization: Basic amFuOmphbg==
User-Agent: PostmanRuntime/7.36.3
Accept: */*
Cache-Control: no-cache
Postman-Token: 3992936c-9d95-43c6-beb7-8b110e0088e2
Host: devenv.oxmw.io:8009
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 41
{
"number":4,"schema": "oxuserdb_5"
}
HTTP/1.1 200 OK
Server: grizzly/2.4.4
X-Robots-Tag: none
Content-Type: application/json; charset=UTF-8
Content-Length: 52
{
"contextIds": [
11832,
11833,
11834,
11835
],
"errors": []
}
The response contains a JSON array of identifiers of the created pre-assembled contexts at field contextIds
. Any errors that might have occurred when inserting the data are supplied in the errors
array as well. In case of fatal errors, a response status different from HTTP 200
will be returned depending on the error that occurred. Please have a look at the full REST API description of the endpoint for more details.
Configuration
SCR-1370
Summary: Added option to Redis configuration to specify a compression method
Added lean property to Redis configuration to specify a compression method
com.openexchange.redis.compressionType
The compression type to globally compress/decompress any data written to/read from Redis end-point according to specified type. Allowed type:snappy
,gzip
,deflate
andnone
. Enabling or disabling compression is backward-compatible; meaning any previously written uncompressed data can still be decoded as well as any previously compressed data (provided that compression gets turned off later on). Default value isnone
. Neither config-cascade aware nor reloadable.com.openexchange.redis.minimumCompressionSize
The minimum size for a data chunk in bytes for being considered for compression. Only effective if"com.openexchange.redis.compressionType"
is set to not"none"
.
SCR-1360
Summary: New lean properties for background job to create pre-assembled contexts
New lean and non-reloadable properties to configure the background job that creates pre-assembled contexts:
com.openexchange.admin.context.preassembly.job.enabled
, defaults tofalse
. Whether background job is active or notcom.openexchange.admin.context.preassembly.job.schedule
, defaults toMon-Sun 0-4
. The pattern specifying when to execute context the pre-assemble job. The default time zone of the Java virtual machine is assumed, which is typically the system's default time zone; unless theuser.timezone
property is set otherwise.com.openexchange.admin.context.preassembly.job.contextsPerSchema
, defaults to100
. Configures the number of pre-assembled contexts that should exist per schema after the job was executed. This number will never be exceeded by using the background job. Of course it is possible to exceed this limit by using the REST API.com.openexchange.admin.context.preassembly.job.contextLimitFactor
, defaults to0.9
. Configures the maximum filling level of schemas when adding pre-assembled contexts via periodic background job, as a factor of CONTEXTS_PER_SCHEMA. I. e. pre-assembly is only performed until the total number of contexts exceeds<factor> * <contexts_per_schema>
.com.openexchange.admin.context.preassembly.job.frequency
, defaults to3600000
(1 hour). The frequency in milliseconds when to check for new job executions within configured schedule.com.openexchange.admin.context.preassembly.job.executionDelay
, defaults to86400000
(1 day). The (minimum) delay between repeated executions of the pre-assembly job in milliseconds.
SCR-1331
Summary: Added lean property 'com.openexchange.admin.context.preassembly.enabled'
Added lean property com.openexchange.admin.context.preassembly.enabled
to enable using pre-assembled contexts instead of creating new contexts. Pre-assembled contexts must exist in database before enabling! Defaults to false
.
SCR-1292
Summary: Dropped the 'com.openexchange.drive.events.gcm.key' property
Dropped the com.openexchange.drive.events.gcm.key
property. Introduced the com.openexchange.drive.events.fcm.keyPath
property as a replacement.
SCR-1290
Summary: Dropped the 'key' attribute in the 'pushClientConfig'
Dropped the key
attribute in the pushClientConfig
config file for the _type
fcm
. Introduced the keyPath
attribute, which defines the full path of the FCM key file.
SCR-1289
Summary: Renamed .gcm. properties to .fcm.
Affected properties are:
com.openexchange.drive.events.gcm.enabled
com.openexchange.drive.events.gcm.clientId
com.openexchange.pns.transport.gcm.enabled.*
The new properties are now available under a new qualified name:
com.openexchange.drive.events.fcm.enabled
com.openexchange.drive.events.fcm.clientId
com.openexchange.pns.transport.fcm.enabled.*
Database
SCR-1288
Summary: Rename 'serviceId' and 'transport' values from GCM to FCM
Due to deprecation and end-of-life of GCM, we need to switch to FCM, hence the rename of the serviceId and transport values in the database.
Packaging/Bundles
SCR-1369
Summary: Removal of Kerberos Authentication
The Kerberos authentication integration that was available via supplementary package open-xchange-authentication-kerberos
was removed.
See SCR-1315 for the deprecation with version 8.19.
SCR-1314
Summary: Introduced new FCM bundles
Added the following FCM-related bundles:
com.google.firebase
com.openexchange.drive.events.fcm
com.openexchange.pns.transport.fcm
SCR-1313
Summary: Removed GCM bundles
Removed the following GCM-related bundles:
com.google.android.gcm
com.openexchange.drive.events.gcm
com.openexchange.pns.transport.gcm