Technical Articles
SAP S/4HANA Cloud SDK: Version 2.8.1 is Available
The new version of the SAP S/4HANA Cloud SDK Java libraries is available since today. You can update your dependencies to version 2.8.1 and consume the new version from Maven Central. We have also released version v14 of our out-of-the-box continuous delivery offering consisting of a ready-made Jenkins server and a complete delivery toolkit.
In this blog post, we will walk you through the highlights of these releases. For a complete overview, visit our release notes for the Java libraries and for the continuous delivery toolkit. The release notes also include the change log of all our releases so far.
At the end of the article, you will find a set of instructions on how to update to the new versions.
Java Libraries: Release Highlights
OAuth2 Client Credentials
The SAP S/4HANA Cloud SDK relieves you of worrying about connectivity and authentication when accessing other systems such as SAP S/4HANA. Based on the destination service of SAP Cloud Platform, the SDK provides abstractions such as the HttpClientAccessor which handles lower level infrastructure requirements for HTTP requests. Those abstractions are also used under the hood in the Java virtual data model (VDM) for accessing OData services. Already before version 2.8.1, the SDK handled various authentication types such as basic authentication and OAuth2 SAML Bearer Flow.
Version 2.8.1 introduces support for the OAuth2 Client Credentials flow as an additional authentication type. This flow is often used when the application acts as a client to a service for which it previously received authorization. If you have defined a destination to use OAuth2 Client Credentials like shown below and provided the required information, you can now use the mentioned capabilities of the SDK which will take care of the authentication. The SDK abstractions also ensure that the same code works on Cloud Foundry and Neo.
Further improvements
We have fixed a bug in the Java virtual data model with regards to ignoreVersionIdentifier. Previously, no If-Match: *
header was sent if no version identifier was set on the entity even when ignoreVersionIdentifier
was active. Now, If-Match: *
will always be sent after activating ignoreVersionIdentifier
on update and delete requests to force an overwrite.
The Java VDM generator for creating OData clients now supports function imports that return a primitive type or that do not have a return value.
Version 2.8.1 also fixes an issue with the scp-cf-spring archetype that led to failures in generated projects when running tests with Java 11. If you have already generated your project and experience issues with Java 11, reverse the order of dependencies in the dependency management section of your root project. The com.sap.cloud.s4hana:sdk-bom
dependency should afterwards be listed first, spring-boot-dependencies
second.
Several further improvements are listed in the full release notes.
Continuous Delivery Toolkit: Release Highlights
Clean up of Jenkins plugins
We have cleaned up the list of Jenkins plugins bundled in the Jenkins server of the Continuous Delivery Toolkit. This reduces the size of the Jenkins master image by 40% (400 MB), also speeding up the start time of Jenkins. However, this only applies to newly created instances of the continuous delivery server cx-server
. The update to v14 will not delete plugins in existing instances automatically.
We recommend to remove all installed plugins with a command such as docker exec -it s4sdk-jenkins-master rm -rf /var/jenkins_home/plugins/*
. Afterwards, run cx-server stop
, cx-server remove
and cx-server start
. If you had installed additional plugins yourself which you still need, reinstall them afterwards.
Further improvements
The continuous delivery pipeline now keeps old instances of your application after a productive blue-green deployment on Cloud Foundry, instead of deleting them. The old instances are stopped so that they do not consume memory. You can then restart the instances if needed.
We have fixed several issues with the Fortify scan stage that previously led to failures when using the stage. Now, the stage will correctly execute a Fortify scan and upload the results to a Fortify server. Checking the Fortify server for new findings is not part of the stage. At the same time, we have also simplified the configuration of the stage so that it now only needs one set of credentials. See the documentation for more details.
When creating a backup with cx-server backup
, the script will abort the backup if there is not enough space left on the machine.
We always invite contributions to the continuous delivery toolkit as pull request to the open source project on GitHub. To simplify the process for contributions, we introduced a pull request template.
You can find further details on these fixes and improvements in the complete release notes.
How to Update
Java libraries
To update the version of the SAP S/4HANA Cloud SDK Java libraries used in an existing project, proceed as follows:
- Open the pom.xml file in the root folder of your project.
- Locate the dependency management section and therein the
sdk-bom
dependency. - Update the version of that dependency to
2.8.1
.
With this, you are already done thanks to the “bill of material” (BOM) approach. Your dependency should look like this:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.sap.cloud.s4hana</groupId>
<artifactId>sdk-bom</artifactId>
<version>2.8.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
<!-- possibly further managed dependencies ... -->
</dependencyManagement>
You can now recompile your project (be aware of the compatibility notes, though) and leverage the new features of the SAP S/4HANA Cloud SDK in version 2.8.1.
Of course, you can also generate a new project that uses version 2.8.1 from the start by running the Maven archetypes for Neo or Cloud Foundry with -DarchetypeVersion=2.8.1
(or RELEASE
).
Continuous Delivery Toolkit
If you are using the pipeline with a fixed version (as recommended since v7), update the continuous delivery toolkit with the following command, that you run on the server hosting the cx-server:
./cx-server update image