Broadleaf Microservices
  • v1.0.0-latest-prod

Release Notes for 1.8.7

Requirements

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

  • JDK 17 is supported for Broadleaf release trains 1.8.1-GA, and beyond.

New Features & Notable Changes

Introduced Support for Dynamic Customer Segments

CustomerSegments can now be evaluated in real-time against requests and user contexts rather than just offline. Catalog Browse now includes a dependency on the new Customer Services Client that includes some shared concepts for resolving and evaluating dynamic segments.

Dynamic Customer Segments and the offline segments will be combined and included on the ContextInfo when it is resolved using the new CustomerSegmentContextInfoCustomizer so that there is a single source of truth for business logic to consult for the list of customer segments the current user is in. The business logic responsible for creating Customer Context, User Targets, and related concepts has been updated to include all these segments.

Important
Additionally, to support running the CustomerSegmentContextInfoCustomizer only in specific services like Catalog Browse, a shallow DataRouteSupporting has been introduced for Catalog Browse to define a route key of catalogbrowse. You will now see @DataRouteByKey(RouteConstants.BRWOSE_ROUTE_KEY) on the various Catalog Browse endpoints to define the route at the standard entrypoints. Catalog Browse still does not have its own persistent store, but defining a data route allows the new customizer to only be used where applicable when in a flex-package configuration that combines multiple services together.

New Configuration Properties

Tip
Details on the specific properties themselves can be found at Customer Client Configuration
  • broadleaf.catalogbrowse.customer-segment-provider.\*: These are the properties for configuring the new ExternalCustomerSegmentProvider which is similar to other providers.

  • broadleaf.catalogbrowse.context.customer-segment-customizer.\*: These are properties for configuration the CustomerSegmentContextInfoCustomizer.

  • broadleaf.customer.client.cache.\*: These are properties for configuring caching in the Customer Client.

    • This also means that ignite caching is supported in Catalog Browse—to enable set spring.cache.type=ignite.

New property defaults
broadleaf:
  catalogbrowse:
    customer-segment-provider:
      url: https://localhost:8463/customer
      read-customer-segments-path: /segments
      resolve-customer-segments-path: /segment-resolver
      service-client: catalogbrowseclient

Bug Fixes

  • Created method for Catalog Browse to trust user target information provided by callers instead of Auth.

    • This addresses a problem where the customer’s auth token is replaced by other microservices that call Catalog Browse. A new property has been introduced to define the whitelisted name of the clients to be trusted so that it isn’t a blanket assumption. This was done since there is no easy way to distinguish a call from Cart Ops vs an anonymous user proxied by the Commerce Gateway: Both use very similar looking tokens with only the Principal’s name as a clear difference.

    • broadleaf.catalogbrowse.provider.external.white-listed-service-callers: Property to configure the whitelist. Default contains only 'cartopsclient' as that is the only out-of-box service that uses Catalog Browse.