Release Notes
1 Administration
Default compression mode: Zstandard
With the current FirstSpirit version, the Zstandard compression mode is the default value for FirstSpirit protocol compression.
This applies to new API connections, client connection settings, and servlets (web.xml).
If the connection parameters have already been defined differently, the settings are not affected.
2 Administration / Modules
Announcement: Migration to Jakarta EE 6.0
The migration to Jakarta EE 6.0 is an essential step to ensure the security of web applications.
Support and current timeline
Here is the current plan:
2023-06Beta-version of the FirstSpirit JakartaEE Edition is available for testing (available via Support)2023-08Stable release (2023.9) with support for automatic migration2024-08Support for automatic migration is removed with FirstSpirit 2024.9
The FirstSpirit installation may be affected if any of the following conditions apply:
- The FirstSpirit installation is not maintained in the Crownpeak Cloud and deploys web-applications to an application server like Apache Tomcat.
- A custom module is used that contains a WebApp component with code that uses the legacy JavaEE API, such as the Servlet API.
- A custom module is used that contains a WebApp component with dependencies that use the old JavaEE API, e.g.,
Spring Boot 2.x.
The module used could be affected if at least one of the following conditions applies:
- The module contains a WebApp component with code that uses the old JavaEE API, e.g., the Servlet API.
- The module contains a WebApp component with dependencies which use the old JavaEE API, e.g.,
Spring Boot 2.x.
More information and updates can be found in the Crownpeak Community and the detailed Jakarta FAQ.
Contact Customer Support Team if you have questions or feedback regarding the migration.
3 FirstSpirit Content Experience Tools (CXT)
Latest module versions
FirstSpirit 2023.8 supports the following module versions for FirstSpirit Content Experience Tools.
| Module / file name | Version number |
FirstSpirit CXT Plattformplatform-[version].fsm | 4.0.0 |
FirstSpirit CXT DAP Bridgedataservice-[version].fsm | 1.44.13 |
FirstSpirit CXT FragmentCreatorfragment-creator-[version].fsm | 4.0.8 |
FirstSpirit Fragment DAPfragmentdap-[version].fsm | 1.40.21 |
FirstSpirit Media DAPmediadap-[version].fsm | 1.31.12 |
FirstSpirit PageRef DAPpagerefdap-[version].fsm | 1.9.12 |
FirstSpirit Markdown Editormarkdown-editor-[version].fsm | 1.29.11 |
FirstSpirit Tagging Editortagging-editor-[version].fsm | 1.29.11 |
FirstSpirit CXT FragmentCreator - CaaS Integrationcaas-integration-[version].fsm | 1.31.11 |
4 Module Development, Scripts, API
Events for SEO URL Storage changes
With the current FirstSpirit version it is possible to get corresponding events via SEO URL changes (class de.espirit.firstspirit.event.UrlEvent) using the EventBusAgent (FirstSpirit Developer API, Package de.espirit.firstspirit.agency).
Example script:
import de.espirit.firstspirit.agency.BrokerAgent;
import de.espirit.firstspirit.event.UrlEvent;
import de.espirit.firstspirit.agency.EventBusAgent;
import java.util.function.Consumer;
eventListener = new Consumer<UrlEvent>() {
void accept(event) {
...
}
};
brokerAgent = context.requireSpecialist(BrokerAgent.TYPE);
specialistsBroker = brokerAgent.getBrokerByProjectName("<Projectname>");
eventBusAgent = specialistsBroker.requireSpecialist(EventBusAgent.TYPE);
eventBusAgent.register(UrlEvent.BUS_IDENTIFIER, eventListener);
// optional
Thread.sleep(<time>);
eventBusAgent.unregister(UrlEvent.BUS_IDENTIFIER, eventListener);The last two lines are optional and are only needed if the events are not to be listened to permanently.
5 Security
CSP header configurable for the FirstSpirit Root WebApp
By setting a Content Security Policy via the CSP header, the allowed sources of content such as scripts, stylesheets, images, fonts, and more can be defined.
The CSP header can be configured via the SecurityFilter using the ContentSecurityPolicyHeader parameter.
The ContentSecurityPolicyHeader parameter can be configured in the following files and is evaluated with the following priority:
web.xmlof the WebApp [highest priority]fs-server.conf- Java System-Property
- OS Environment Property [lowest priority]
Default value of the CSP header:
default-src 'self'; object-src 'none'; style-src 'self'; form-action 'self';
script-src 'self' 'nonce-$NONCE' $UPGRADE_INSECURE $FRAME_ANCESTORSThe following placeholders can be used in the configuration:
$NONCE- the nonce value valid for the current HTTP request$FRAME_ANCESTORS- allowed frame embedding according to theframeOptionsHeaderproperty fromfs-server.conf.
The replacement with default settings:; frame-ancestors 'self'
IfALLOW_ALLis set, the replacement is an empty string.$UPGRADE_INSECURE- upgrade-insecure-requests according to what is set for theSecurityFilterin theTransportSecurityparameter or its default value.
The default value isKEEP_SECURE.
The replacement with default settings:- for an HTTPS request:
; upgrade-insecure-requests - for an HTTP request the substitution is an empty string
- for an HTTPS request:
web.xml of the WebApp
Default configuration:
<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>de.espirit.firstspirit.io.servlet.SecurityFilter</filter-class>
<init-param>
<param-name>ContentSecurityPolicyHeader</param-name>
<param-value>default-src 'self'; object-src 'none'; style-src 'self';
form-action 'self';
script-src 'self' 'nonce-$NONCE' $UPGRADE_INSECURE $FRAME_ANCESTORS
</param-value>
</init-param>
</filter>An empty value disables the CSP header:
<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>de.espirit.firstspirit.io.servlet.SecurityFilter</filter-class>
<init-param>
<param-name>ContentSecurityPolicyHeader</param-name>
<param-value></param-value>
</init-param>
</filter>fs-server.conf
Default configuration:
securityFilter.ContentSecurityPolicyHeader=default-src 'self'; object-src 'none';
style-src 'self'; form-action 'self';
script-src 'self' 'nonce-$NONCE' $UPGRADE_INSECURE $FRAME_ANCESTORSAn empty value disables the CSP header:
securityFilter.ContentSecurityPolicyHeader=Java System-Property
fs-wrapper.isolated.confsetenv.shfile of Tomcat
The value can be set using the parameter wrapper.java.additional.##=-DsecurityFilter.ContentSecurityPolicyHeader, where ## is the number of a previously unused entry.
OS Environment Property
The value can be defined using the variable named SecurityFilter_ContentSecurityPolicyHeader.
6 System
Updates to integrated third-party software
As of the current release, the following internally used software has been updated:
- Spring Boot
Update from version 2.7.0 to version 2.7.13
Overview
| ID | Description | Categories |
|---|---|---|
| CORE-10636 | When using NULL parameter values in output channels, template references could be recognized incompletely. |
Template Development |
| CORE-15193 | The storage duration of FirstSpirit jar files on server side (directory |
FirstSpirit Administrator |
| CORE-15252 | The new event with the class |
Developer, Module development |
| CORE-15377 | Fixed a bug in SiteArchitect that in rare cases prevented the initial display of submenus in the context menu. |
SiteArchitect |
| CORE-15378 | With the current FirstSpirit version, the Further information can be found in chapter “Administration: Default compression mode: Zstandard”. |
Server Administrator |
| CORE-15402 | With the current FirstSpirit version, the CSP header can be configured. |
FirstSpirit Administrator, FirstSpirit home page, Server Administrator |
| CORE-15417 | Fixed a class loading error in the “FirstSpirit Portal” module (“SAP Business Package for FirstSpirit”, |
Modules |
| CORE-15450 | FirstSpirit Content Experience Tools: Latest module versions |
FirstSpirit Content Experience Tools (CXT) |
| CORE-15459 | The dialog for editing the “Message of the Day” has been adjusted to avoid display errors even with a large number of language templates. |
ServerManager |
| CORE-15465 | Schedule with actions based on modules that are no longer installed on the server caused display problems in ServerMonitoring. This has been fixed. |
Server Administrator, ServerMonitoring |
| CORE-15466 | Fixed a missing admin status about a group membership for external users logging in to a server for the first time. |
Server Administrator |
| CORE-15507 | Fixed a bug that in very rare cases could cause the import of valid XML files to fail when using “External Synchronization”. (Error message: |
External synchronization |
| CORE-15508 | Announcement: Migration to Jakarta EE 6.0 |
FirstSpirit Administrator, Module development, Modules, Server Administrator |
| CXT-2935 | Updates to integrated third-party software Further information can be found in chapter “System: Updates to integrated third-party software”. |
ContentCreator |
| CXT-2936 | The preview of datasets could not be opened in the data source management. |
ContentCreator |
| CXT-2946 | Some editors in nested language-dependent forms could not be edited in the preview in all cases. |
ContentCreator |
| DEVEX-618 | Errors of type |
FSDevTools |
Deprecations
| Functionality | Deprecated as of | Will be removed / Was removed as of |
|---|---|---|
| Input component CMS_INPUT_CONTENTAREALIST | 5.2R3 | |
| Input component CMS_INPUT_CONTENTLIST | 5.2R3 | |
| Input component CMS_INPUT_FILE | 5.2R3 | |
| Input component CMS_INPUT_LINKLIST | 5.2R3 | |
| Input component CMS_INPUT_OBJECTCHOOSER | 5.2R3 | |
| Input component CMS_INPUT_PAGEREF | 5.2R3 | |
| Input component CMS_INPUT_PICTURE | 5.2R3 | |
| Input component CMS_INPUT_TABLIST | 5.2R3 | |
| FirstSpirit Access API: de.espirit.firstspirit.agency.GroupsAgent | 5.2R15 | |
| FirstSpirit Access API: delete (de.espirit.firstspirit.access.AccessUtil) | 5.2R18 | |
| FirstSpirit Access API: release (de.espirit.firstspirit.access.AccessUtil) | 2018-06 | |
| FirstSpirit Access API: getLastLoginAsDate (de.espirit.firstspirit.agency.UserStatisticsAgent) | 2018-07 | |
| FirstSpirit Access API: remainingDurationOfCurrentStageInMillis (de.espirit.firstspirit.server.MaintenanceModeInfo) | 2018-07 | 2025-13 |
| FirstSpirit Access API: getStartingTimeOfStageAsDate (de.espirit.firstspirit.server.MaintenanceModeInfo) | 2018-07 | 2025-13 |
| FirstSpirit Access API: getSelectedWebserverConfiguration (de.espirit.firstspirit.access.serverConfiguration) | 2018-10 | 2025-13 |
| FirstSpirit Access API: setSelectedWebserverConfiguration (de.espirit.firstspirit.access.serverConfiguration) | 2018-10 | 2025-13 |
| FirstSpirit Access API: getSelectedWebServer (de.espirit.firstspirit.access.project.Project) | 2018-10 | 2025-13 |
| FirstSpirit Access API: setSelectedWebServer (de.espirit.firstspirit.access.project.Project) | 2018-10 | 2025-13 |
| FirstSpirit Access API: getLostAndFoundStoreNodes(); (de.espirit.firstspirit.feature.FeatureInstallResult) | 2018-10 | |
| FirstSpirit Access API: getDeletedStoreNodes(); (de.espirit.firstspirit.feature.FeatureInstallResult) | 2018-10 | |
| FirstSpirit Access API: de.espirit.firstspirit.access.store.Previewable | 2019-01 | |
| WebSphere Application Server support for FirstSpirit | 2019-05 | |
| Database layer for Oracle Database 11g/12c | 2020-12 | 2025-05 |
| FirstSpirit Access API: redirectTemplateLogToDefaultLog() (Interface RenderingAgent.Renderer) | 2021-05 | |
| Support for Log4j 1 | 2022-05 | 2024-06 |