App Suite Middleware
8.24.0 - 2024-04-03
Added
- MW-2174: Make
com.openexchange.user.contactCollectOnMailAccessandcom.openexchange.user.contactCollectOnMailTransportconfig-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.jarspring-core-6.1.4.jarspring-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.compressionTypeThe compression type to globally compress/decompress any data written to/read from Redis end-point according to specified type. Allowed type:snappy,gzip,deflateandnone. 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.minimumCompressionSizeThe 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.timezoneproperty 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.enabledcom.openexchange.drive.events.gcm.clientIdcom.openexchange.pns.transport.gcm.enabled.*
The new properties are now available under a new qualified name:
com.openexchange.drive.events.fcm.enabledcom.openexchange.drive.events.fcm.clientIdcom.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.firebasecom.openexchange.drive.events.fcmcom.openexchange.pns.transport.fcm
SCR-1313
Summary: Removed GCM bundles
Removed the following GCM-related bundles:
com.google.android.gcmcom.openexchange.drive.events.gcmcom.openexchange.pns.transport.gcm