Version 9.0.0
With this release, we have introduced significant changes to the extension.
Although the major version has been increased, this version remains compatible
with TYPO3 13 only. The following sections describe the breaking changes
in detail.
Removed ModifyServiceBwResponseEvent
This event was originally introduced to add further data to the resulting cache
entry of a requested record.
With the newly implemented cache strategy, cache data can now be retrieved by
using a UID. This makes it possible to relate cache records more directly and
removes the need for additional enrichment of cached data.
If you used this event, we recommend enriching the data before frontend output
by using DataProcessors instead.
Removed SucheController
We have renamed the SucheController to SearchController.
Removed ClearCacheHook
As all fetched data will not be stored in TYPO3 cache anymore, there is no need
to clear any cache with this class anymore.
Removed LeistungenHelper
The LeistungenHelper has been removed because its responsibilities were
unclear and the implementation caused unnecessary additional API calls.
Previously, data fetched from the Service BW API triggered an event, which then
called the extension's own LeistungenEventListener. This listener made an
additional request to the Service BW API and stored the result in a separate
TYPO3 cache that was only used by a ViewHelper.
This workflow has been removed in favor of a simpler and more transparent data
handling approach.
Removed AlphabeticalIndexUtility
We have migrated AlphabeticalIndexUtility from a utility class with
static method calls to AlphabeticalIndexService.
Removed ModelUtility
We have removed ModelUtility. Utility classes should never have any
dependencies to further services. For migration please use our new
Repository classes or make your own calls with our brand new Service BW
Client class in your own TYPO3 Extension.
Removed ServiceBwUtility
The previous configuration suggested that custom repository classes could be
provided for Service BW integrations. However, this was misleading:
ServiceBwUtility only supported a fixed set of repository classes, and it
was not possible to add or remove repositories dynamically.
To make this limitation explicit, we removed the dynamic repository concept from
the extension. Instead, the available controller types are now represented by
the new ControllerTypeEnum.
Use the new RepositoryFactory and ProviderFactory classes together
with ControllerTypeEnum to retrieve the supported repository and provider
instances.
Removed TCAUtility
With the removal of this class we could get rid of all the service_bw2
dependencies in 3 further of our extensions. This helps us a lot while upgrading
the extensions individual. No need to wait for service_bw2 to be ready.
For migration: Please implement the TCA for selectMultipleSideBySide on your
own. Create a user-func for itemsProcFunc or create your own TCA render-type
to fill the selectbox with Organisationseinheiten. Please use our new
OrganisationseinheitenRepository to retrieve the data.
Removed LeistungenAdditionalDataViewHelper
The LeistungenAdditionalDataViewHelper has been removed as part of the
removal of LeistungenHelper described above.
It was previously used to check whether related "formulare" and "prozesse"
existed. This check is now handled through the new Record model, which is
populated with all data fetched from the Service BW API.
Since the required data is now available directly on the model, the existence
check can be implemented more simply and without the previous ViewHelper.
Removed Request Folder
We have removed full Request folder. Yes, there is a new Request folder in
Classes/Client, but these are not copies, these are complete new PHP classes
for our brand new Service BW Client class.
Removed LocalizationHelper
The LocalizationHelper has been removed because it was not clear whether
the handled language referred to a TYPO3 language or to a language from the
Service BW API.
In addition, access to the global TYPO3_REQUEST object should be avoided.
As an alternative, the new LanguageHelper has been introduced. Its method
names clearly indicate which values are expected as input and which values are
returned. This makes it explicit in every place whether a TYPO3 language or a
Service BW language is being handled.
Authorization Handling
We removed the authentication via username and password entirely from the
extension. You no longer need to store sensitive login credentials in any
configuration.
Following the official Service BW API guidelines, the extension now exclusively
relies on long-lived Bearer Tokens.
Benefits of this change:
- Security: No master credentials are saved in the TYPO3 database or
configuration files.
- Simplicity: The extension logic is reduced, because login handshakes and
token refresh cycles are no longer necessary.
- Stability: The generated tokens are permanently valid according to the
Service BW API.
You can request a new Bearer Token in the official Service BW API documentation under the section
Authentifizierung: Token. For detailed instructions on how to apply
this token within your TYPO3 installation, please refer to the configuration
section.
Version 5.0.0
We updated the whole extension because of the Service BW API Version 2. There
is a new much simpler ServiceBwClient which can be used for all API
requests (even for version 1).
We removed the post processors and post processor hook of ServiceBwClient. If
you added a custom or extended an existing one then keep in mind that these
no longer work.
If you added your own requests, you have to update them.
Use JWeiland\ServiceBw2\Request\AbstractRequest as base and take a look
at the other request classes to build your own one. The newer ServiceBwClient
is much easier to understand so it should not take very long to migrate your
old request classes.
Custom fluid templates must also be updated due to the new object structure
from API v2. To do this, use the existing templates and go through
the templates piece by piece.
Third party extensions that use JWeiland\ServiceBw2\Utility\TCAUtility
and JWeiland\ServiceBw2\Utility\ModelUtility should not be affected.
We updated those classes but kept the public methods and properties.