Guide - 7.10 API Changes

1 Introduction

This document lists API changes for Intershop Commerce Management 7.10.x that can cause migration efforts.

For information on new APIs refer to the Public Release Note - Intershop Commerce Management B2C/B2X 7.10.

2 API Changes 7.10.24.1

DescriptionAPI ChangesHow to Migrate

Fill Factor removed for MSSQL indexes

The fill factor was removed from Stored Procedure GetIndexCreationScript while creating a replication enviroment.

Execute DBMigrate for updating Stored Procedure.

For already created indexes rebuild them with FILLFACTOR = 100:

 Expand source
ALTER INDEX <@>index_name< ON <table_name> REBUILD WITH (FILLFACTOR = 100)

3 API Changes 7.10.22.1

DescriptionAPI ChangesHow to Migrate

The SSO implementation is now independent from Keycloak libraries

  1. cartridges ac_keycloak* removed
  1. Migrate code that depends on ac_keycloak* cartridges

The SSO-redirect-URIs have been made simpler


  1. Remove query parameters from each and every redirect URI configured inside the connected identity providers
JDBC Oracle driver updateThis release contains a reference to the new oracle jdbc driver 19.6.0.0.0.

The following steps are necessary so that the old driver can still be used:

  • Create and publish the new driver to your artifact repository (this is just needed during deployment to resolve dependencies).
  • Override the version at your customization assembly to the old version.

For more details see Support Article - Handling the New Dependency of 3rd_oracle Version 19.3.1.0.

New role descriptions for B2B roles

For migration to these new descriptions, perform the following steps:

  1. Activate the AddRolesInformationPreparer in the following files:
    • %IS_SHARE%\system\cartridges\bc_costcenter_orm\release\migration-to-25.0.0.properties
    • %IS_SHARE%\system\cartridges\init_b2b\release\migration-to-25.0.0.properties
  2. Call the DBmigrate step.

    Warning

    With the migration your customized changes will be lost.
The Java code for /products/variations was refactored.
  • Method ProductResource.getVariations() was removed.
  • Method ProductResource.searchVariations() was removed.
  • Both methods were moved to class VariationResource. VariationResource is now sub-resource of ProductResource.
  • VariationHandler was introduced to resolve variation based data (extracted from ProductResource.)
  • getPageableOfProducts was introduced (extracted from ProductResource.)
  • Add VariationResource to Component Framework and add it as sub-resource to ProductResource.
  • If ProductResource was overwritten in context of variations, make sure to move your custom code to an override of VariationsResource.

4 API Changes 7.10.21.0

DescriptionAPI ChangesHow to Migrate

The SSO implementation now supports Azure AD besides Keycloak.

For more information see Concept - Single Sign-On (SSO) and Cookbook - Single Sign-On (SSO).

  1. New cartridges ac_oidc*
  2. Removed cartridges ac_keycloak*
  1. Replace the configuration property keys intershop.authentication.<organizationKey>.<identityProviderKey>* by intershop.authentication.identityprovider.<identityProviderKey>*
  2. Replace type value keycloak by oidc

Note

Sessions persisted using the Keycloak-specific implementation will be logged out.

5 API Changes 7.10.20.1

DescriptionAPI ChangesHow to Migrate
renderTemplate is now optional in Pagelet ModelsPagelet Models without renderTemplate are valid now. However, if used in an ISML-based storefront, a renderTemplate is still required.

6 API Changes 7.10.19.3

DescriptionAPI ChangesHow to Migrate

On MSSQL the stored procedure sp_deleteUserDataByDomain runs forever, if there is data that needs to be deleted in the tables BASICPROFILE/BASICADDRESS related to the deleted DOMAINIDs.

The stored precedure was modified, it is not an API change.

However, you have to update to the new API version

Execute DBMigrate

7 API Changes 7.10.19.2

DescriptionAPI ChangesHow to Migrate
New /productfilters endpoint for filter navigation This will replace the /filters endpoint which now is deprecated.

The Pipeline "ProcessOrders.pipeline" from bc_orderprocess was originally overwritten in "app_sf_responsive_b2b" (only B2B) in order to add an extension point at the end of the pipeline branch "AfterCheckoutProcessing". This pipeline extension point which was only available for B2B was called "ProcessOrders-AfterCheckout".

The overwritten pipeline ProcessOrders.pipeline includes the former extension point ProcessOrders-AfterCheckout has been removed. Instead the original pipeline in bc_orderprocess now contains a new pipeline extension point at the end of the pipeline branch AfterCheckoutProcessing which is called ProcessOrders-AfterCheckoutProcessingEnd.


8 API Changes 7.10.18.1

DescriptionAPI ChangesHow to Migrate
Changed default-persistence for bot sessions.The default-value for the property intershop.session.persistBotSession is now false.

Most likely, the bot-session should not be persisted. In that case, nothing is to be done.
If the bot-session should be persisted, the property has to be declared with the value true.

Update JGroups libs to version 4.2.0

common-messaging updated to 1.0.3No manual deployment. Redeploy server only.

Added extra logging to common-messaging

NoneEnable TRACE log level for package or class 'com.intershop.beehive.messaging.internal.jgroups.ChannelViewMonitor' . This logs all changes of the members of a messaging channel to the debug log for JGroups.

Extra configuration options added to the JGroups FILE_PING configuration to remove old .list files

NoneCheck the provided configuration file and move the changes to a custom file if you have adapted the JGroups configuration.

SSO for SMC. For more information see Concept - Single Sign-On (SSO) and Cookbook - Single Sign-On (SSO).

new persistent object com.intershop.beehive.core.internal.profile.IdentityProviderMappingPO and new tables identityprovidermap*.Execute dbmigrate OR dbprepare.
New basket validation for addressesTo detect changes of a referenced address which may cause a change in the tax jurisdiction a new validation handler was added. In case the validation was called while allowing adjustments, the address is updated and the calculation set to invalid. When the automatic correction is prohibitted an error message is returned.

The response of the REST request for validating the basket may contain an info message. The REST client has to decide on the current context if the info has to be shown or not. In other words on the address page such changes are intended to be done and the message should be suppressed. But if the buyer is, for instance, already on the review page, such a change has to presented to the buyer.

In case automatic adjustments are not allowed and the error basket.validation.address_changed_basket_calculation_invalid.error is returned, the REST client has to trigger a validation for addresses with adjustments allowed and finally a re-calculation to take the address changes into account.

9 API Changes 7.10.17.0

DescriptionAPI ChangesHow to Migrate
New optional query parameter omitHasOnlineProducts added to REST resource /categories

The omitHasOnlineProducts parameter has been added to the /categories resource. If set to true, the field hasOnlineProducts will not be resolved for:

  • all categories in the category list resource
  • subcategories in the category item resource

This is to improve performances in cases where this field is not needed, as the operation is expensive.

To support this change, the constructor for CategoryRO no longer sets the hasOnlineProducts field using the provided CatalogCategoryBO. In addition, this field is now a Boolean object, so it is set to null when not set.

A migration is only necessary if CategoryRO is created directly. If it is, fetch hasOnlineProducts using CatalogCategoryBO.hasOnlineProducts(Domain) (or another source), and set it using the setter CategoryRO.setHasOnlineProducts(boolean).
New field effectiveUrl added to attachments under the products resource.In order for external resources to be able to access product attachments, the effective url is now included in AttachmentRO.
New query parameter extended added to product resource for variation attribute information

A new optional query parameter extended has been added to the /products/{id} and /products/{id}/variations resources, which will provide more complete information about variation attributes and their values in the new field variationAttributeValuesExtended.


Category endpoint now supports category reference as a category id.

The category endpoint requires the full path to the category in order to resolve a category. This is not always feasible, therefore the category endpoint now also supports using a category reference instead.

This replaces the previous categoryRef query parameter. Format: /categories/<category id or ref>

The category reference for a category can be found in the field categoryRef in CategoryRO.


10 API Changes 7.10.16.6

DescriptionAPI ChangesHow to Migrate
REST resource POST /contact is now secured by CAPTCHAThe REST resource for sending a "Contact Us" e-mail (POST /contact) is now secured with CAPTCHA authentication.

If this is not wanted, the CAPTCHA authentication for this resource can be toggled off in the channel backoffice via Preferences | CAPTCHAs.

For information on how to integrate CAPTCHA authentication into a REST client, please refer to Cookbook - WebShop REST API.

Removed reCAPTCHA v1 serviceSince the reCAPTCHA v1 service is no longer supported by Google, it has been removed from ICM.Trigger DBMigrate to remove obsolete service configurations.

11 API Changes 7.10.15.5

DescriptionAPI ChangesHow to Migrate
Adapt default JGroups configuration XMLThis is not an API change but a configuration change:
  • Remove the multi cast flow control protocol (configuration uses uni cast only)
  • Limit the FLUSH timeout to five seconds (instead unlimited)
  • Remove the 'view_bundling' setting (is default 'true')
  • Adapt the 'min_threshold' value to prevent low credits for flow control handling
Merge these changes to your configuration file if you use a custom configuration file. No need to adapt configuration if you use the provided file.

12 API Changes 7.10.15.2

DescriptionAPI ChangesHow to Migrate
Refactoring of Basket REST API
  • IncludeResolver classes are now optional. If no includes are used for a REST request, then no IncludeResolver needs to be wired via Guice.
  • Classes that previously implemented the ObjectMapper interface now implement the java.util.function.Function interface instead. To unify the usage across the API, several classes which did not implement the ObjectMapper interface but had similar named resolve(...) methods had their methods renamed to apply(...) as well.

Old Name

New Name

com.intershop.sellside.rest.common.v1.capi.include.IncludeResolver.resolve(T, Collection<String>)

com.intershop.sellside.rest.common.v1.capi.include.IncludeResolver.apply(T, Collection<String>)

com.intershop.sellside.rest.common.v1.capi.link.LinkResolver.resolve(T, UriInfo)

com.intershop.sellside.rest.common.v1.capi.link.LinkResolver.apply(T, UriInfo)

com.intershop.sellside.rest.common.v1.capi.link.IncludeLinkObjectMapper.resolve(Map<String, Map<String, Object>>, UriInfo)

com.intershop.sellside.rest.common.v1.capi.link.IncludeLinkFunction.apply(Map<String, Map<String, Object>>, UriInfo)

com.intershop.sellside.rest.common.v1.capi.mapper.BiFunctionCollectionMapper

com.intershop.sellside.rest.common.v1.capi.mapper.CollectionBiFunction

com.intershop.sellside.rest.common.v1.capi.mapper.CollectionObjectMapper

com.intershop.sellside.rest.common.v1.capi.mapper.CollectionFunction

com.intershop.sellside.rest.common.v1.capi.mapper.ExtensibleBiFunction.resolve(S, C)

com.intershop.sellside.rest.common.v1.capi.mapper.ExtensibleBiFunction.createTarget(S, C)

com.intershop.sellside.rest.common.v1.capi.mapper.ExtensibleFunction.resolve(S)

com.intershop.sellside.rest.common.v1.capi.mapper.ExtensibleFunction.createTarget(S)

com.intershop.sellside.rest.common.v1.capi.mapper.ExtensibleObjectMapper

com.intershop.sellside.rest.common.v1.capi.mapper.ExtensibleFunction

com.intershop.sellside.rest.common.v1.capi.mapper.ObjectMapperExtension

com.intershop.sellside.rest.common.v1.capi.mapper.FunctionExtension

com.intershop.sellside.rest.common.v1.capi.mapper.MergeIncludeMapObjectMapper

com.intershop.sellside.rest.common.v1.capi.mapper.MergeIncludeMapFunction


Info

This list only shows the (CAPI) classes where the API has changed and does not include internal classes that have been changed because of this.
  • Removed request factories: Requests are now injected directly into the resource classes without the use of assisted injection via a factory. Parameters that have previously been part of the factory methods have moved to the invoke(...) methods of the requests. As a consequence, the RestRequest interface has also been removed, which means that requests are now addressed directly by the implementation class. To achieve an easier testability of the code, the requests now also use dependency injection via the constructor (instead of field injection).
A migration is only necessary if there is custom code which uses any of the mentioned changed classes directly. If there are already new custom REST resources or requests that still use ObjectMapper or assisted injection, then they should still work fine.
Removed deprecated codeThe deprectated method com.intershop.beehive.core.dbinit.capi.DBInit.prepareCartridge(Cartridge, String) has been removed.Use the method com.intershop.beehive.core.dbinit.capi.DBInit.prepareCartridge(Cartridge) instead as documented already.
Cache /categories callAdded logic for caching /categories call. After this functionality was added, the authentication token is missing from headers because this is the normal behavior. Only uncached calls return an authentication token in the headers.CategoryResource.java and CategoryListResource.java are now cached.
New requestable REST attribute  retailSet  was added to /products

By using the  /products  and  /categories/<catID>/products  REST endpoints, product stubs for display on family pages and search result pages can be retrieved. The optional attrs parameter allows to receive certain product attributes in that call to construct product tiles on said pages.

  • retailSet - shows if products from a list are retail sets or not. Allows to handle retail sets differently in lists (e.g., show a price range, instead of a price), without calling /products/<productID> first.

API Changes 7.10.14.0

DescriptionAPI ChangesHow to Migrate
DBMigrate to create a new Job which removes executed Impex Jobs (IS-27705)-Executing DBMigrate is optional if you do not need the Job.
In an effort to unify REST error codes, some codes for the new basket and order APIs have changed.

The following codes have changed:

Old Code

New Code

AddedToNewLineItem

basket.line_item.add_item_added_to_new_line_item.info

ProductNotAccessible

basket.line_item.update_item_product_not_accessible.error

ProductWithMissingInventory

basket.line_item.update_item_product_with_missing_inventory.error

QuantityUnitMismatch

basket.line_item.update_item_quantity_unit_mismatch.error

QuoteLineItem

basket.line_item.update_item_quote_line_item.error

UnknownReason

basket.line_item.update_item_unknown_reason.error

address.line_item.single_shipment.error

basket.line_item.ship_to_address_not_assignable_for_single_shipment.error

address.wrong_address_type_no_invoice_to_address.error

basket.invoice_to_address_wrong_address_type.error

address.wrong_address_type_no_ship_to_address.error

basket.ship_to_address_wrong_address_type.error

attribute.already_exists.error

attribute.name_already_exists.error

attribute.invalid.error

attribute.type_invalid.error

attribute.name.immutable.error

attribute.name_immutable.error

attribute.name.required.error

attribute.name_required.error

attribute.type.immutable.error

attribute.type_immutable.error

attribute.type.required.error

attribute.type_required.error

attribute.update.error

attribute.update_not_successful.error

attribute.value.required.error

attribute.value_required.error

basket.add_line_item_not_successful.error.cause.GiftCertificateAddressCreationFailed

basket.line_item.add_item_gift_certificate_address_creation_failed.error

basket.add_line_item_not_successful.error.cause.GiftCertificateInvalidShipToAddress

basket.line_item.add_item_gift_certificate_invalid_ship_to_address.error

basket.add_line_item_not_successful.error.cause.MaxItemQuantityExceeded

basket.line_item.add_item_max_item_quantity_exceeded.error

basket.add_line_item_not_successful.error.cause.MaxItemSizeExceeded

basket.line_item.add_item_max_item_size_exceeded.error

basket.add_line_item_not_successful.error.cause.MissingOnlineGiftCertificateInformation

basket.line_item.add_item_missing_online_gift_certificate_information.error

basket.add_line_item_not_successful.error.cause.NegativeQuantity

basket.line_item.add_item_negative_quantity.error

basket.add_line_item_not_successful.error.cause.ProductAlreadyInBasket

basket.line_item.add_item_product_already_in_basket.error

basket.add_line_item_not_successful.error.cause.ProductIsARetailSet

basket.line_item.add_item_product_is_a_retail_set.error

basket.add_line_item_not_successful.error.cause.ProductIsDependent

basket.line_item.add_item_product_is_dependent.error

basket.add_line_item_not_successful.error.cause.ProductNeedsQuotation

basket.line_item.add_item_product_needs_quotation.error

basket.add_line_item_not_successful.error.cause.ProductNoPrice

basket.line_item.add_item_product_no_price.error

basket.add_line_item_not_successful.error.cause.ProductNoTaxClass

basket.line_item.add_item_product_no_tax_class.error

basket.add_line_item_not_successful.error.cause.ProductNotAccessible

basket.line_item.add_item_product_not_accessible.error

basket.add_line_item_not_successful.error.cause.ProductOutOfLifeCycle

basket.line_item.add_item_product_out_of_life_cycle.error

basket.add_line_item_not_successful.error.cause.ProductWithMissingInventory

basket.line_item.add_item_product_with_missing_inventory.error

basket.add_line_item_not_successful.error.cause.QuantityUnitMismatch

basket.line_item.add_item_quantity_unit_mismatch.error

basket.add_line_item_not_successful.error.cause.UnknownReason

basket.line_item.add_item_unknown_reason.error

basket.add_line_item_not_successful.error.cause.WrongProductTypeVariationMaster

basket.line_item.add_item_wrong_product_type_variation_master.error

basket.address.creation.error.cause.DuplicateAddress

basket.address.create_address_duplicate_address.error

basket.address.creation.error.cause.ValidationError

basket.address.create_address_validation_error.error

basket.address.creation.error.cause.usage

basket.address.create_address_inconsistent_usage_flags.error

basket.address.creation.error.cause.usage

basket.address.update_address_inconsistent_usage_flags.error

basket.address.deletion.error.cause.LastAddress

basket.address.delete_address_last_address.error

basket.address.update.error

basket.address.update_not_successful.error

basket.address.update_not_successful.error.cause.AddressNotUpdatable

basket.address.update_address_address_not_updatable.error

basket.address.update_not_successful.error.cause.DuplicateAddress

basket.address.update_address_duplicate_address.error

basket.address.update_not_successful.error.cause.ValidationError

basket.address.update_address_validation_error.error

basket.line_item.add.error

basket.add_line_item_not_successful.error

basket.line_item.add.info

basket.add_line_item_not_successful.info

basket.line_item.adjustment.cause.AddedToExistingLineItem

basket.line_item.add_item_added_to_existing_line_item.info

basket.line_item.adjustment.cause.AddedToExistingLineItemWithAdjustedQuantity

basket.line_item.add_item_added_to_existing_line_item_with_adjusted_quantity.info

basket.line_item.adjustment.cause.AddedToNewLineItemWithAdjustedQuantity

basket.line_item.add_item_added_to_new_line_item_with_adjusted_quantity.info

basket.line_item.adjustment.cause.MaxItemQuantityExceeded

basket.line_item.update_item_max_item_quantity_exceeded.info

basket.line_item.adjustment.cause.MinItemQuantityExceeded

basket.line_item.update_item_min_item_quantity_exceeded.info

basket.line_item.adjustment.cause.QuantityUpdatedInsufficientInventory

basket.line_item.update_item_quantity_updated_insufficient_inventory.info

basket.line_item.created.info

basket.line_item.creation.info

basket.line_item.merged.info

basket.line_item.merge.info

basket.line_item.update.error

basket.line_item.update_not_successful.error

basket.line_item.update_not_successful.error.cause.ProductAlreadyInBasket

basket.line_item.update_item_product_already_in_basket.error

basket.line_item.update_not_successful.error.cause.ProductIsARetailSet

basket.line_item.update_item_product_is_a_retail_set.error

basket.line_item.update_not_successful.error.cause.ProductIsDependent

basket.line_item.update_item_product_is_dependent.error

basket.line_item.update_not_successful.error.cause.ProductNoPrice

basket.line_item.update_item_product_no_price.error

basket.line_item.update_not_successful.error.cause.ProductNoTaxClass

basket.line_item.update_item_product_no_tax_class.error

basket.line_item.update_not_successful.error.cause.ProductNotAccessible

basket.line_item.update_item_product_not_accessible.error

basket.line_item.update_not_successful.error.cause.QuantityUnitMismatch

basket.line_item.update_item_quantity_unit_mismatch.error

basket.line_item.update_not_successful.error.cause.UnknownReason

basket.line_item.update_item_unknown_reason.error

basket.line_item.update_not_successful.error.cause.WrongProductTypeVariationMaster

basket.line_item.update_item_wrong_product_type_variation_master.error

basket.locked_for_ordercreation.error

basket.locked_for_order_creation.error

basket.payment.update.error

basket.payment.update_not_successful.error

basket.promotioncode.add_not_successful.error (NoPromotionApplicable)

basket.promotion_code.add_code_no_promotion_applicable.error

basket.promotioncode.add_not_successful.error (NumberOfApplicablePromotionCodesReached)

basket.promotion_code.add_code_number_of_applicable_promotion_codes_reached.error

basket.promotioncode.add_not_successful.error (PromotionCodeAlreadyInBasket)

basket.promotion_code.add_code_promotion_code_already_in_basket.error

basket.promotioncode.add_not_successful.error (PromotionCodeAlreadyRedeemed)

basket.promotion_code.add_code_promotion_code_already_redeemed.error

basket.promotioncode.add_not_successful.error (PromotionCodeEmpty)

basket.promotion_code.add_code_promotion_code_empty.error

basket.promotioncode.add_not_successful.error (PromotionCodeMaxLength)

basket.promotion_code.add_code_promotion_code_max_length.error

basket.promotioncode.add_not_successful.error (PromotionCodeNotAccessible)

basket.promotion_code.add_code_promotion_code_not_accessible.error

basket.promotioncode.add_not_successful.error (PromotionCodeNotActive)

basket.promotion_code.add_code_promotion_code_not_active.error

basket.promotioncode.add_not_successful.error (PromotionCodeNotFound)

basket.promotion_code.add_code_promotion_code_not_found.error

basket.promotioncode.adding.error

basket.promotion_code.add_not_successful.error

basket.promotioncode.not_found.error

basket.promotion_code.not_found.error

basket.update.error

basket.update_not_successful.error

cost_center.cost_center_not_found.error

cost_center.not_found.error

order.basket_not_found.error

order.basket.not_found.error

order.gone.error

order.order_no_longer_available.error

order.payment.update.error

order.payment.update_not_successful.error

order.search_parameter_included_status_code.invalid.error

order.search_parameter_included_status_code_invalid.error

order.search_parameter_limit.invalid.error

order.search_parameter_limit_invalid.error

order.search_parameters.invalid.error

order.search_parameters_invalid.error

parameter.invalid.error

parameter.parameter_invalid.error

payment.creation.error

basket.payment.creation.error

payment.deletion.info

basket.payment.deletion.info

payment.not_found.error

basket.payment.not_found.error

payment.payment_instrument.deletion.info

basket.payment_instrument.deletion.info

payment.payment_instrument_is_null.error

basket.payment.payment_instrument_is_null.error

payment.payment_instrument_not_applicable.error

basket.payment.payment_instrument_not_applicable.error

payment.payment_instrument_not_found.error

basket.payment.payment_instrument_not_found.error

shipping_bucket.could_not_update.error

basket.shipping_bucket.update_not_successful.error

shipping_bucket.not_found.error

basket.shipping_bucket.not_found.error

shipping_bucket.not_found.error

basket.shipping_bucket.not_found.error

shipping_bucket.shipping_method_not_eligible.error

basket.shipping_bucket.shipping_method_not_eligible.error

shipping_bucket.update.info

basket.shipping_bucket.update.info

The following codes have been added:

  • basket.line_item.add_item_max_item_quantity_exceeded.info
  • basket.line_item.add_item_min_item_quantity_exceeded.info
  • basket.line_item.add_item_quantity_updated_insufficient_inventory.info
If custom code relies on these error codes, it needs to be adapted. Note that both the basket and the order REST API are still in a beta state, so there may occur similar changes in the near future until finalized.

13 API Changes 7.10.13.4

DescriptionAPI ChangesHow to Migrate
Some basket validation errors have been changed/added/removed.

Changed/split up into multiple:

  • PromotionInvalid → BasketPromotionInvalid, LineItemPromotionInvalid
  • ShippingMethodInvalid → CommonShippingMethodInvalid, LineItemShippingMethodInvalid
  • ShippingMethodMissing  → CommonShippingMethodMissing, LineItemShippingMethodMissing
  • ShippingMethodWasSet → CommonShippingMethodWasSet, LineItemShippingMethodWasSet
  • ShippingRestrictions → LineItemShippingRestrictions
  • ShipToAddressMissing → CommonShipToAddressMissing, LineItemShipToAddressMissing
  • ShipToAddressWasSet → CommonShipToAddressWasSet, LineItemShipToAddressWasSet

Added:

  • TotalQuantityExceeded

Removed:

  • TermsAndConditionsError (this has been moved and is now an error that occurs during order creation)

If there is custom code that specifically targets those error codes, it needs to be adapted to the new codes.

In case you are still using the pipeline based order creation process, you have to re-register the TermsAndConditionsValidatorHandler to the basket validation. Therefor you have to provide a custom replacement for the deleted extension file (BasketValidationTermsAndConditionsHandler.extension).

Support for Prometheus Open Metrics
  • Added Cartridge ac_prometheus
  • In case you want to use the Prometheus Metrics, you will find them at each appserver at 'http://<appserver-host>:<port>/metrics'.
  • You can disable the Prometheus monitoring support with the property 'intershop.metrics.prometheus.enabled = false'.
Foreign key definition for IMAGE objects are moved from bc_foundation to bc_image (IS-27551)The assignment of the IMAGE related tables was already moved from bc_foundation to bc_image with IS-26184. The foreign key definitions was not moved with the change. This is fixed now.Run DBMigrate
Updated some test libraries dependencies and versions
  • Updated Selenium libraries from 2.47.2(Sep 2015) to 3.141.59(Nov 2018) version
    • In the new Selenium version support for PhantomJSDriver has been dropped.
  • Removed PhantomJSDriver related libraries from the dependencies.
  • Added new librabries for ParameterizedTest and Mockito extension for jupiter(JUnit5) to the dependencies.
  • Default webdriver for execution of Geb tests changed from PhantomJs to geckoDriver, allowing to execute Geb tests using real Firefox browser in a headless mode

In case your project uses a custom assembly adapt the following Gradle files:

  • build.gradle
    • Remove dependencies to phantomjsdriver and webDrivers in Geb configuration
    • Add dependency to selenium-firefox-driver and support for geckoDriver in webDrivers in Geb Configuration
    • Set default webdriver for execution of Geb tests to be geckoDriver
  • src/remoteTest/resources/GebConfig.groovy
    • Remove import of phantomjsdriver classes and support for PhantomJsDriver in Geb environments
    • Add import of selenium.firefox classes and support for geckoDriver in Geb environments

In case your project runs Geb tests ensure Firefox browser is installed on the machine where Geb tests are executed.

For more details and examples see Guide - 7.10.13.4 Update Assembly Geb Configuration.

New field "orderCreationReentryChain" at OrderPOA new field "orderCreationReentryChain" has been added to the persistent object for orders (OrderPO). This field contains information where the order creation process has been stopped (e. g. if a payment redirect is required). To get the new column in the database, a DBMigrate is needed.Run DBMigrate

14 API Changes 7.10.12.3

DescriptionAPI ChangeHow to Migrate
New order creation handlerMoved functionality to generate the requisition document number from the "ApprovalOrderCreationHandler" to a new order creation handler "RequisitionDocumentNumberOrderCreationHandler" (cartridge "bc_order_approval_orm", position 25 in "PreOrderCreationChain").If there is a custom handler at position 25 in the "PreOrderCreationChain" then this handler needs to be moved elsewhere.
SSH passphrase invalidation for log transfer to reporting service

A fix regarding the passphrase of the SSH keys was made. The old passphrases are not longer valid. The error log contains an entry as shown in the following example:

ERROR com.intershop.beehive.report.internal.SSHTransfererJSch
Could not connect (and open a session) with config SFTPConfig 
[user=xxx, host=upload.insight.intershop.com, passPhrase=***********************] 
com.jcraft.jsch.JSchException: invalid privatekey
Regenerate the key pair and send the new public key to the consumer of the effected transfer (mostly support@intershop.com).

15 API Changes 7.10.12.2

DescriptionAPI ChangeHow to Migrate
Reworked text index creation for MS SQLThe definition of indexed columns is changed from a predefined query to a list of columns.See  Guide - SQL Server Text Indexes
DBMigrate on MS SQL to update procedure sp_compile_invalid_objectsThe procedure compiles objects which are part of the current schema only.Rund DBMigrate on MS SQL
Option to disable CSS file compressionThe used YUICompressor component to strip unsued characters from CSS files is not updated for some time. This can cause problems with recent CSS features. A property "intershop.css.compress.enabled" is added to disable (false) the CSS processing. The CSS will be send to the client without modifications. The Apache content compression (mod_deflate) can limit the data amount to transfer. This is added to all versions 7.6-7.10)See ISML Tag - ISRENDER
Override configuration by environment variablesIt is possible to override configuration settings by environment variables.See Concept - Configuration (valid from 7.10.12), section System properties
Update JGroups configuration for faster startup (IS-27260)The server startup was slower if old '.list' files was part of the 'share/system/jgroups/*' directories. The messaging tried to contact the server instances registered in these files. This was not possible because these instances was stopped. It took around 5 minutes per file till the JGroups gave up.
Now the retry configuration is changes to 5 tries with 1 second wait time. Old files are ignored if the servers defined in the file are not available. Please recheck the directory for old files from time to time as the files are not removed automatically and the startup delay can increase.
A Java VM shutdown hook is added to stop the messenger instance if the VM does not stop with a shutdown to prevent remaining files. This does not work if the hook can not be triggered (kill -9).

The default configuration file is updated with the settings. Please adjust you configuration file if you deploy a custom version.

jgroups_udp.xml
    <pbcast.GMS print_local_addr="true"
                join_timeout="1000"
                max_join_attempts="5"
                view_bundling="true"/>
Creating text indexes using SQL ServerThe creation of text indexes is now separated into specialized preparers for Oracle and SQL Server. The configuration of Oracle Context indexes is untouched. But the configuration of SQL Server Fulltext indexes is completely reworked.See Guide - SQL Server Text Indexes
REST documentation updated from Swagger to OpenAPIThe REST API documentation is changed from Swagger annotations to OpenAPI annotations.
Storing of Promotion Information at OrdersThe order creation process has been adapted to store the relevant information of all used promotions directly at the order.See Guide - 7.10.12.2 Storing of Promotion Information at Orders

16 API Changes 7.10.10.1

DescriptionAPI ChangeHow to Migrate
DBMigrate for MSSQLStagingGroups "FND_ImageReferences" and "FND_ImageDefinitions" moved to bc_imageRun dbmigrate after deploy new version.
DBMigrate for MSSQLUpdated the Stored Procedure "STAGING_DDL$copy_indexes" for MSSQL to handle also XML indexesRun dbmigrate after deploy new version.

17 API Changes 7.10.10.0

DescriptionAPI ChangeHow to Migrate
Rest Extension for productsAdding extension to show the default category

18 API Changes 7.10.9.0

DescriptionAPI ChangeHow to Migrate

JGroups messaging version updated to version 4.

The JGroups based messaging implementation uses the latest JGroups 4 version now.The update installs a new 'jgroups_udp.xml' matching the changed JGroups 4 configuration. Please review and change the file if you manually made modifications for the former JGroups version!
DBmigrate for MSSQLUpdated the stored procedure "sp_gather_table_stats" for MSSQL to prevent a data type issueRun dbmigrate after deploy new version.

Pipelines "ProcessBasketCalculation" and  "ProcessCartCalculation" no longer remove invalid PaymentBOs.

The basket calculation pipelines "ProcessBasketCalculation" and "ProcessCartCalculation" no longer check if the selected payment methods are still valid after the calculation. There are basket validation handlers which perform the same checks, which is why it has been removed from the calculation.If the basket calculation is triggered in custom (non-standard) code artifacts, then it may be necessary to trigger a basket validation for scope "Payment" afterwards (only if needed).
New requestable REST attribute  packingUnit  was addedBy using the  /products  and  /categories/<catID>/products  REST endpoints, product stubs for display on family pages and search result pages can be retrieved. The optional  attrs  parameter allows to receive certain product attributes in that call to construct product tiles on said pages.

19 API Changes 7.10.8.1

DescriptionAPI ChangeHow to Migrate
Changes in interface TransportConfigurationThe interface com.intershop.component.transport.capi.config.TransportConfiguration now extends ExtensibleObject.

20 API Changes 7.10.7.3

DescriptionAPI ChangeHow to Migrate
Changes in User RO classes




com.intershop.sellside.rest.common.capi.resourceobject.UserRO has a new public method:

Date getBirthdayDate()


com.intershop.sellside.rest.smb.capi.resourceobject.SMBCustomerUserRO has 4 new public methods:

String getPreferredInvoiceToAddressUrn()

void setPreferredInvoiceToAddressUrn(String)

String getPreferredShipToAddressUrn()

void setPreferredShipToAddressUrn(String)


New classes in app_sf_rest_smb cartridge:

com.intershop.sellside.rest.smb.capi.resourceobject.SMBCustomerUserROCollection

com.intershop.sellside.rest.smb.capi.resourceobject.UserLinkRO

com.intershop.sellside.rest.smb.capi.resourceobject.UserLinkROCollection


New methods in SMBCustomerUserROValidator, SMBCustomerUserROOperator,  SMBCustomerUserHandler and CustomerBOGroupCustomerExtension interfaces

com.intershop.sellside.rest.smb.capi.resource.user.validator.SMBCustomerUserROValidator interface has a new method:

void validateCreation(List<SMBCustomerUserRO>, UserBORepository)

com.intershop.sellside.rest.smb.capi.resource.user.operator.SMBCustomerUserROOperator interface has a new method:

UserBO createUserBO(SMBCustomerUserRO, CustomerBO)

com.intershop.sellside.rest.smb.capi.resource.handler.SMBCustomerUserHandler interface is extended with 3 new methods:

void deleteUser(UserBO)

Collection<UserBO> addUsers(CustomerBO, List<SMBCustomerUserRO>)

Collection<UserBO> getUsers(UserBO, CustomerBO, CustomerSearchContext)

com.intershop.component.customer.capi.CustomerBOGroupCustomerExtension has a new method:

CustomerUserCreationResult createUser(CustomerUserCreationContext context)

Default implementation provided, no action needed.

New interfaces and classes in bc_customer cartridge

The following capi interfaces were introduced in bc_customer cartridge:

com.intershop.component.customer.capi.CustomerSearchContext

com.intershop.component.customer.capi.handlerchain.user.CustomerUserCreationContext

com.intershop.component.customer.capi.handlerchain.user.CustomerUserCreationResult

The following capi class was introduced in bc_customer cartridge:

com.intershop.component.customer.capi.handlerchain.impl.user.CustomerUserCreationResultImpl


JUnit 5 is introduced.
With a testrunner, a test can be executed as JUnit 5 Test
The JUnit 5 Interfaces beforeEach(...) and afterEach(...) are now implemented by the AbstractAllCartridgesAwareRule and the EmbeddedServerRule.

Any cartridge that uses Rule which is the EmbeddedServerRule or the AbstractAllCartridgesAwareRule or do extend on of this rules has a test-dependency to JUnit 5.
The build.gradle should therefore include in the test-dependencies:

compile 'org.junit.jupiter:junit-jupiter'
compile 'org.junit.jupiter:junit-jupiter-api'
compile 'org.junit.vintage:junit-vintage-engine'
compile 'org.junit.platform:junit-platform-runner'
MS SQL JDBC 7.2.1To access the ms-sql-database, the version 7.2.1 for java 8 is used.Everything should work fine with the new version of the driver.
If workarounds for bug in previous versions where used, it can be checked if this workarounds now can be removed.
Logback-UpdateThe com.intershop.beehive.core.capi.log.CSVEncoder is changed since it's superclass has changed too.Generally, the CSVEncoder should not be overwritten. In exceptional cases, it is to check if the overwritten methods are still generating the expected behavior.
DBMigrate with platform version 18.0.x and 19.0.x
The DBMigrate run(s) are necessary for MSSQL only. Some stored procedures are adapted. The Oracle database is not changed.

21 API Changes 7.10.6.0

DescriptionAPI changeHow to migrate



22 API Changes 7.10.5.4

DescriptionAPI changeHow to migrate
New requestable REST attribute availableStock  was added

It was added in REST response for all  /products  and / product  calls. It contains the quantity which is available for sale. The data comes from the Inventory Service.


23 API Changes 7.10.5.3

DescriptionAPI changeHow to migrate
SearchQuery of search query definition and searchquerydefinition.xsd has changed

Search query definitions can now include placeholders that are resolved at runtime. Therefore the searchquerydefinition.xsd was extended and the SearchQuery class has new methods:

com.intershop.component.search.capi.querydefinition.impl.SearchQuery
public List<ParameterBinding> getParameterBindings()

public void setParameterBindings(List<ParameterBinding> bindings)

public List<ParameterBinding> getAvailableParameterBindings()

The fallback_searchquerydefinition product filter (search query definition) that is used by default for category navigation is used for search and search suggest queries as well.

For more information about this feature refer to:

Old product filter import files work without migration. The new parameter-bindings element in the searchquerydefinition schema is optional.

If your 'fallback_searchquerydefinition' product filter defines conditions or sortings that should not apply to search and search suggest queries, do the following:

  1. Create a new navigation query definition that define the settings from fallback_searchquerydefinition (Import/Export product filter)
  2. Update CMS View Contexts for category/family pages to use the new navigation query definition.
  3. Update fallback_searchquerydefinition to include only the conditions and sortings that should apply to search.
New requestable REST attributes  minOrderQuantity  and  inStock  were added. By using the  /products  and  /categories/<catID>/products  REST endpoints, product stubs for display on family pages and search result pages can be retrieved. The optional attrs parameter allows to receive certain product attributes in that call to construct product tiles on said pages.
  • minOrderQuantity  - can be used to add products to carts and quotes
  • inStock  - can be used to effectively render the family page in the list view

Now attribute groups on channel level get an  available via REST API  flag. A new checkbox and a new custom attribute are added for every attribute groupAvailableViaREST  with the values  true/false.  If an attribute group is  available via REST API , then the group and all contained attributes will be included in the regular  get product data  call. A new parameter  attributeGroups  is introduced. It returns the requested attribute groups with all their attributes. For the import/export process an additional attribute  <available-via-rest>  was added to the impex XML file. For attribute groups on organization level the value is always  false.

24 API Changes 7.10.5.0

DescriptionAPI changeHow to migrate
The BORules, which are used in the '_test'-cartridges were removed from the API.The BORules (extends BusinessObjectTestRule) and their Builders were moved from the 'capi' packages, because they don't belong the official API of IS7. These rules remain in their original test cartridge, but their package was adapted. Therefore classes, which are using these rules must be adapted

If the project use these BORules, the imports have to be adapted:

  1. remove the 'tests.unit.' sub-package
  2. replace the 'capi.' sub-package by 'test.'

E.g.

Moved Rules
- import tests.unit.com.intershop.component.order.capi.OrderBORule;
+ import com.intershop.component.order.test.OrderBORule;

25 API Changes 7.10.3.1

DescriptionAPI changeHow to migrate
Changes in the staging processors

The internal API of staging processors has changed.

FullDomainSpecificStagingProcessor$TableSizeComparator the inner-class compares StagingTasks instead of ReplicationTasks now.

DifferentialStagingProcessor the class is removed.

FullStagingProcessor

  • Instead of the parameterless constructor, the method initStatements() is overwritten.
  • Methods that use collections as parameter or return value are returning parameterized collections.
  • Some protected methods are partly removed, some are also added.

FullStagingProcessor$ContextIndexCreationMode the enumeration is removed.

AppendDomainSpecificStagingProcessor

  • Methods that use collections as parameter or return value are returning parameterized collections.
  • Some protected methods are removed.

DatabaseStagingProcessor the method initStatements() is overwritten with an empty implementation.

TableReplicator the deprecated methods are removed.

ForeignKey the return-value Vector is replaced with a List<String>

StagingEntityMgr the deprecated method getForeignKey(...) is removed from the interface.

Generally, the touched classes are for internal use only.
The interfaces of the search-expressions are extended

There is a new interface with a method that was in the parent interface before and a new method with a default-implementation.

SearchExpressionExactPhrase, SearchExpressionExclusionPhrase, SearchExpressionFuzzyPhrase the method getValue() is (re)moved.

SearchExpressionPhrase the method public String getXPathSnippet() was added.

SearchExpressionValuePhrase the new interface contains the method getValue() and has a default-implementation for getXPathSnippet().

SearchExpressionImpl, SearchExpressionWildCardImpl the method getXPathSnippet() was implemented.

Since there are default-implementations, no migration should be necessary.
The decorator-constructor removed.The decorator-constructor from the RemoveUnapprovedProductsDecorator was removed.The method setDecorator(...) can be called manually.
Cartridge renaming

The cartridge in com.intershop.business:ac_webhook_inventory was renamed to com.intershop.business:ac_inventory_service

Replace dependency declaration in build.gradle files in case ac_webhook_inventory is used.

Disclaimer

The information provided in the Knowledge Base may not be applicable to all systems and situations. Intershop Communications will not be liable to any party for any direct or indirect damages resulting from the use of the Customer Support section of the Intershop Corporate Web site, including, without limitation, any lost profits, business interruption, loss of programs or other data on your information handling system.

Customer Support
Knowledge Base
Product Resources
Support Tickets