Broadleaf Microservices

Upgrade to 1.7.0-GA

Requirements

  • JDK 11 is now required for Broadleaf release trains 1.7.0-GA, and beyond.

Spring Boot Starter Project Updates

It should be noted that the default pom.xml structure has been updated for all the provided Spring Boot accelerator projects. It is important that these structure changes be adopted into your own projects when upgrading to 1.7.x+. Below you will find a summary of the applicable changes:

  • Previously, the projects declared individual Broadleaf dependency versions directly in the root pom.xml. Going forward, a list of all compatible/tested/needed versions of these dependencies can now be managed through a Bill of Materials (BOM) called Broadleaf’s Microservice Release Train.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.broadleafcommerce.microservices</groupId>
            <artifactId>broadleaf-microservices-release-train</artifactId>
            <version>${blc.release.train}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  • In order to properly manage required dependencies, we have removed the declaration of Spring Boot Parent. Instead, we recommend that the project depend wholly on the Broadleaf pom import and dependency declaration for needed jar resolution. Then, when/if a change to a version is needed in your project to what is imported, a dependency can be declared in <dependencyManagement> prior to the import. See this Spring Boot documentation describing this process.

New Features & Notable Changes

Feature/Notable Change Impacted Services Links

Introduction of PaymentTransactionServices to store payment data and handle payment gateway interactions

CartOperationServices, OrderOperationServices, PaymentTransactionServices, NextJS Starter, CommerceSDK

Cart payment storage and management moved to PaymentTransactionServices

CartServices, CartOperationServices, PaymentTransactionServices

Order payment storage and management moved to PaymentTransactionServices

OrderServices, OrderOperationServices, PaymentTransactionServices

Replace Payment status concept with PaymentSummary

CartOperationServices, OrderOperationServices, PaymentTransactionServices

Checkout payment transactions are now executed via PaymentTransactionServices

CartOperationServices, PaymentTransactionServices

OrderOps payment transactions (capture, reverse authorize, and refund) are now executed via PaymentTransactionServices

OrderOperationServices, PaymentTransactionServices

Move 3DS transaction recording endpoint from CartOps

CartOperationServices, PaymentTransactionServices

Introduced a payment locking mechanism to avoid multiple processes modifying a payment simultaneously

CartOperationServices, OrderOperationServices, PaymentTransactionServices

Introduced a payment time-to-live threshold for anonymous customers to protect their data

PaymentTransactionServices

Jobs identifying stale payment transactions for reversal and reversing those transactions have been moved to PaymentTransactionServices

CartServices, CartOperationServices, PaymentTransactionServices

Added hook points for sorting the order’s payments when capturing, refunding, or reverse-authorizing

OrderOperationServices

Improved support for OMS return/cancellation logic based on offer targets and qualifiers

CartServices, CartOperationServices, Order Services, OrderOperationServices, PromotionServices

Update PaymentAccount domain to better parallel the updated Payment domain

CustomerServices

Refine PaymentRequest, PaymentResponse, and service interfaces

PaymentGatewayCommon

Disable transaction retry mechanism in Stripe and PayPal integration libraries

Broadleaf’s Stripe and PayPal integration libraries

Introduce ability to declare application-specific or tenant-specific configuration properties, enabling clients to use different gateway configuration/credentials for each application or tenant

Broadleaf’s AmazonPaymentServices integration library

Improve security of the AmazonPaymentServices signature endpoint by restricting the possible commands that can be executed

PaymentGatewayCommon, Broadleaf’s AmazonPaymentServices integration library

Added tenant narrowing logic for scheduled jobs to ensure that they execute within the context of a single tenant

MicroMessagingCommon, DataTracking, ScheduledJobServices, CartServices, InventoryServices, CartOperationServices, MicroBulkCommon, ImportServices, MicroExportCommon, AuthenticationServices

Added support for Variant-based AdvancedTags

CatalogServices

Added support for Variant-based Add-On pricing overrides

CatalogServices, CatalogBrowseServices, CartOperationServices

  • CatalogServices Release Notes

  • Changes to CatalogBrowse and CartOperations were to allow correct pricing hydration from an external PricingService—see Catalog Services for feature description

Introduced Payment JS SDK

NextJS Starter

Bug Fixes

Issue Impacted Services

Removed cart version check from ManageCartEndpoint#getCart(…​) (the read cart endpoint), allowing the caller to always resolve their most up-to-date cart

CartOperationServices

Errored when adding an item with multiple inventory locations or same sku for multiple vendors

CartOperationServices, InventoryServices, AuthenticationServices

Fixed issue with sku-filtered queries when sku contains spaces

SearchServices

Improved exception handling within DefaultNotificationHandler to ensure that a single issue will not block all message sending retry attempts

MicroMessagingCommon

Fixed index names for Oracle database changelogs

AdminServices, AuthenticationServices, CartServices, CatalogServices, CustomerServices, ImportServices, PromotionServices, SearchServices, OrderServices, SandboxServices, TenantServices, JpaCommon

Prevented admin user from accessing Applications they aren’t associated with

TenantServices

Helm Chart Updates

Starting with 1.7, we have begun publishing common base charts to a private helm repository. In order to pull in and use these charts, you will need to authenticate (i.e. helm repo add broadleaf https://repository.broadleafcommerce.com/repository/helm-private/ --username $BLC_REGISTRY_USER --password $BLC_REGISTRY_PASSWORD ) using the same credentials that were sent to you (these are the same credentials that allow you to build and run the microservice applications).

See the following for more details:

Known Issues and Remediations

For issues that you may encounter with this version, please refer to the Known Issues and Remediations section of the Knowledge Base