SAP S/4HANA Cloud SDK – Release Notes

Version 2.4.1

September 13, 2018 - Maven Central - Javadoc

New Functionality

Improvements

Fixed Issues

Version 2.3.1

August 16, 2018 - Maven Central - Javadoc | > Release blog

Compatibility Notes:

New Functionality

Improvements

Fixed Issues

Version 2.2.0

August 2, 2018 - Maven Central - Javadoc | > Release blog

Compatibility Notes:
  • The protected method getEndpointUrl on VdmEntity classes has been deprecated in favor of the more accurate term service path. Use getServicePathForFetch instead in subclasses.
  • All fluent helper constructors now expect the service path as a String parameter. This only concerns generated classes of previous releases, which need to be regenerated because they use the no longer existing no-args constructor.

New Functionality

Improvements

Fixed Issues

Version 2.1.2

July 5, 2018 - Maven Central

New Functionality

Improvements

Fixed Issues

Version 2.1.0

June 7, 2018 - Maven Central

Known Issues:
  • Using destinations with a proxy that uses HTTP (instead of HTTPS) does not work in version 2.1.0. Upgrade to version 2.1.2 or later.

Compatibility Notes:
  • Due to the update of the audit logging library, the API for audit logging has changed. See the improvement section below for more details.
  • In order to align naming with Java 8, static constructor methods in enums have been renamed from fromIdentifier to ofIdentifier.
  • The methods for retrieving service credentials in ScpCfCloudPlatform now throw NoServiceBindingException or MultipleServiceBindingsException instead of returning an empty Optional.
  • The SAP-internal raml-api-console module has been removed. If you still need this module, refer to a previous release.
  • Uses of Lombok's @NonNull annotations have been replaced with the JSR-305 @Nonnull annotation to provide a cleaner API contract using only JSR-305 annotations.

New Functionality

Improvements

Fixed Issues

Version 2.0.0

May 23, 2018 - Maven Central

Compatibility Notes:
Release 2.0.0 modernizes the technology stack of the SAP S/4HANA Cloud SDK and removes support for Java 7. This new major version brings several changes that require attention from a compatibility perspective:
  • Leverage Java 8
    • Move from Joda Time and legacy Java 7 date and time classes to java.time classes of Java 8. In particular, in the Java VDM, replace deprecated Calendar type with LocalDateTime, LocalTime, and ZonedDateTime classes as type of entity fields depending on their EDM type.
    • Replace Guava's functional primitives like FluentIterable, Optional, Function, Predicate and Supplier with corresponding native Java 8 types.
    • Interface Executable no longer inherits from Callable and is now annotated with @FunctionalInterface. RequestContextExecutor has been adjusted accordingly to accept both Callable and Executable as Lambda expressions.
  • Change obsolete or unwanted behavior from past versions
    • Remove potentially risky best-effort cache keys and HystrixUtil command key methods. The CachingCommand now uses CacheKey.ofTenantAndUserIsolation() by default.
    • As a consequence of removing the best-effort cache key, a tenant is already required when using the destination service on Cloud Foundry. If you are in an environment without security configured, set the ALLOW_MOCKED_AUTH_HEADER environment variable to true to mock a tenant and still use the destination service.
    • Remove fallback of AuditLogger to DefaultLoggerAuditLog on Cloud Foundry. This is to always ensure proper audit logging. If there is an issue while accessing the required audit logging dependencies, an AuditLogAccessException is now thrown.
    • Changes to mocking behavior of MockUtil: MockUtil no longer disables the lookups of the FacadeLocator. MockUtil no longer overrides the RequestContextFacade on the class path with HystrixRequestContextFacade. MockUtil now returns the SecretStore and KeyStore instances for certain methods. MockUtil.mockDefaults() no longer mocks the audit log by default. If you need to mock the audit log, use MockUtil.mockAuditLog().
  • Clean up API of SAP S/4HANA Cloud SDK
    • APIs in Cloud Platform abstractions have been improved with accessor methods returning Optionals in TenantAccessor, UserAccessor, and SecretStoreAccessor.
    • The AuthTokenAccessor now only returns an empty Optional if either no request is available, or no "Authorization" header is present. Consequently, the TenantAccessor on Cloud Foundry considers a tenant unavailable according to the availability of an AuthToken. The UserAccessor on Cloud Foundry considers a user unauthenticated according to the availability of an AuthToken.
    • Remove ErpEndpoint, only use ErpConfigContext instead.
    • Remove deprecated class EbjUtil.
    • Remove RequestContextAccessor.getRequestContextProperty(). Access properties directly via RequestContext.getProperty() instead.
    • Remove method requestContextExecutor() in class MockUtil. Use new RequestContextExecutor() instead.
    • RequestContext now uses a custom class Property to represent a property with a certain value or exception if the value could not be determined.
    • Add AuditLogAccessException to indicate issue when accessing audit log.
    • Remove ScpNeoHystrixBootstrapListener. This is now replaced by a standard Java ServiceLoader.
    • Java VDM: toQuery methods of the fluent helpers throw ODataException.
  • Apply consistent naming
    • Simplify CacheKey and apply unified namings with of constructor methods.
    • Apply unified namings in ConvertedObject with of constructor methods and fix misspelled "convertable", using "convertible" instead.
    • Java VDM: Methods for retrieving the value of association properties are no longer named getXOrNull, but the methods are now called getXIfPresent to better reflect the return type Optional.
    • Rename ResponseBuilder to ErrorResponseBuilder to better reflect the purpose of this class.
    • Rename ErpServiceUriBuilder to ServiceUriBuilder
  • Update dependencies
    • No longer include the Apache CXF framework in compile scope of Maven module com.sap.cloud.s4hana.frameworks:cxf, but rather use provided scope. As a consequence, you must include the Apache CXF framework yourself in case your target runtime does not include it already.
    • Update Guava version to 25.
    • Update TomEE Maven plugin version in scp-cf-tomee archetype to 1.7.5.
    • Update Spring Boot version in scp-cf-spring archetype to 2.0.2.RELEASE.
    • Update spring-web version to 5.0.6.RELEASE.
    • Update referenced JCo version to 3.0.18.
    • Update several other dependencies to new versions.

New Functionality

Improvements

Fixed Issues

Version 1.11.1

May 10, 2018 - Maven Central

Compatibility Notes:
  • Update requests with the Java Virtual Data Model (VDM) no longer send all non-null fields to the SAP S/4HANA system, but only changed fields. You may need to adapt the logic in your code to explicitly change fields by using the setters of the entity classes, or use the includingFields method to manually specify fields to include.
  • The name of entities in the VDM for the business event queue service have been changed to improve readability. You may need to change the references in your code as follows: C_Behqueuedata is now Behqueuedata, I_BusinessObjectKeys is now BusinessObjectKeys, and I_BusObjects is now BusObjects. Corresponding fluent helpers and other names have changed similarly as well.

New Functionality

Improvements

Fixed Issues

Version 1.10.0

April 12, 2018 - Maven Central

Compatibility Notes:
  • The dependency javax.inject is no longer transitively provided by some modules of the SAP S/4HANA Cloud SDK. You may need to add a dependency on javax.inject:javax.inject to your pom.xml if you depend on it.
  • As part of a reworked structure of authorization token handling on SAP Cloud Platform Cloud Foundry, the JwtBearer class has been replaced by AuthToken.

New Functionality

Improvements

Fixed Issues

Version 1.9.4

March 29, 2018 - Maven Central

Known Issues:
  • Authentication via OAuth2 SAML bearer flow on SAP Cloud Platform Cloud Foundry does not work with Spring security configuration in version 1.9.4. Use version 1.10.0 or higher instead.

Compatibility Notes:
  • This version contains the Virtual Data Model (VDM) generator for OData services as a preview release. The preview of the VDM generator is meant to gather feedback, but not yet meant for productive use. The API and functionality of the later full release may differ from the preview release.

New Functionality

Improvements

Fixed Issues

Version 1.9.3

March 15, 2018 - Maven Central

Compatibility Notes:
  • This release updates the dependency to the SAP Cloud Platform SDK for service development to version 1.13.1. In the SAP S/4HANA Cloud SDK, this library is mostly used internally in the SAP S/4HANA virtual data model (VDM) for OData services. You may be using the library directly when manually constructing OData requests, for example, using the ODataQueryBuilder. Please find the release notes of the SAP Cloud Platform SDK for service development at help.sap.com.

New Functionality

Improvements

Fixed Issues

Version 1.9.2

February 15, 2018 - Maven Central

Compatibility Notes:
  • Important note: To improve consistency and ease of use, this version renames many packages and services within the SAP S/4HANA Virtual Data Model (VDM) for OData services.
    It is most likely that code using the VDM classes needs to be adapted by adjusting the package and class names. We renamed the services according to the rules outlined in the following list.
    For each change to the name of a service interface, the names of the corresponding default implementation class (same name as interface, but prefixed with "Default") and of the package under com.sap.cloud.sdk.s4hana.datamodel.odata.namespaces.* (same name as interface, but in lower case and without suffix "Service") have also been changed. In detail, the following changes have been made:
    • Remove prefixes from services that describe the supported operations (as those tend to change from version to version). For example, rename CreateAndUpdateCommercialProjectsService to CommercialProjectService.
    • Remove similar redundant prefixes such as "Process" or "Manage". For example, rename ProcessSalesOrderService to SalesOrderService.
    • Rename plural forms to singular to improve consistency. For example, rename ProcessPurchaseOrdersService to PurchaseOrderService.
    • Rename further services as follows: ReadCostCenterDataService to CostCenterService, BillOfMaterialMaintainService to BillOfMaterialsService, ReadGorlAccountService to GeneralLedgerAccountService, ManageWorkforceAvailabiltyService to WorkforceAvailabilityService, EnableExternalJobSchedulerIntegrationService to ExternalJobSchedulerIntegration, ReadAndUpdatePirsService to PlannedIndependentRequirementService.
  • We also refactored the VDM classes for BAPI services to more accurately represent the single value-typed parameters of those BAPIs, thereby increasing readability and type-safety.
    Many types that represent a single value have been changed and added, for example CostCenterCategory. They are used as types of parameters of BAPI service methods. The functional scope of the fluent API has not changed. In order to update your application, please exchange the old class names with the new ones, suggested by your IDE. You still use the same primitive parameter values used to contruct those single value types.
  • The EjbUtil helper class has been deprecated, as its functionality is no longer required in newer JavaEE containers.

New Functionality

Improvements

Fixed Issues

Version 1.8.0

February 1, 2018 - Maven Central

Known Issues:
  • Using version 1.8.0 is NOT recommended for a multi-tenant application in the Neo environment of SAP Cloud Platform; consumers are instead recommended to update to version 1.9.2. Version 1.8.0 has a bug that manifests only in the Neo environment of SAP Cloud Platform where running in non-container managed threads would always use the tenant context of the provider, not the consumer account. Version 1.9.2 fixes this bug. Applications running in the Cloud Foundry environment are not affected by this bug.

Compatibility Notes:

Improvements

Fixed Issues

Version 1.7.1

January 18, 2018 - Maven Central

Compatibility Notes:
  • The update of the TomEE adapters for Arquillian to version 1.7.5 makes the use of the dependency org.jboss.arquillian.junit:arquillian-junit-container obsolete. This dependency has been removed from the SDK BOM, you may have to either remove the dependency from your integration-tests/pom.xml file or add a version to it (e.g., 1.1.5.Final).
  • Due to the switch from MockServer to WireMock, any tests written using the MockServer implementation have to be migrated (see Getting Started with WireMock).
  • DestinationType is now an enum instead of a class to better reflect the available destination types.

New Functionality

Improvements

Fixed Issues

Version 1.6.0

December 21, 2017 - Maven Central

Compatibility Notes:
  • Builder methods for navigation properties have been renamed from to[NavigationProperty] to [navigationProperty] in order to improve readability.
  • Methods of the VDM such as select or filter that before expected a generic EntityField instance now expect entity type-specific instances, for example, BusinessPartnerField (only relevant if you used your own EntityField instances, for example, to represent custom fields).
  • Previously malformed acronyms in field names have been fixed, resulting in changed names of variables available from entity types (example: BusinessPartner.BUSINESS_PARTNER_U_U_ID has been renamed to BusinessPartner.BUSINESS_PARTNER_UUID).

New Functionality

Improvements

Fixed Issues

Version 1.5.0

December 7, 2017 - Maven Central

Compatibility Notes:

New Functionality

Improvements

Fixed Issues

Version 1.4.0

November 23, 2017 - Maven Central

Compatibility Notes:

New Functionality

Improvements

Fixed Issues

Version 1.3.0

November 9, 2017 - Maven Central

Compatibility Notes:

New Functionality

Improvements

Fixed Issues

Version 1.2.0

October 26, 2017 - Maven Central

Compatibility Notes:

Deprecation Note: This version deprecates the obsolete functionality of retrieving ErpSystemInfo.

Known Issues

New Functionality

Improvements

Fixed Issues

Version 1.1.2

October 12, 2017 - Maven Central

Compatibility Note: This version uses Mockito 2.10.0, Mockito 1.x is no longer supported.

Details on the incompatible changes can be found here.

New Functionality

Improvements

Fixed Issues

Version 1.1.1

September 29, 2017 - Maven Central

Compatibility Note: OData navigation properties in S/4HANA virtual data model now use prefix fetch instead of get.

For example, a property that was previously named getItem() is now called fetchItem().

New Functionality

Improvements

Fixed Issues

Version 1.0.0

September 14, 2017 - Maven Central