Broadleaf Microservices
  • v1.0.0-latest-prod

Release Notes for 1.8.1-GA

Notable Changes

New Features & Notable Changes

Feature/Notable Change Related Services Links

Refactored import processes

ImportServices, ImportConsumer

Import Improvements in 1.8.1-GA

Bug Fixes

Issue

Fixed issue where example import files don’t work on Windows

Fixed NullPointerException when sorting tags with null priorities

Fixed label for Add-Ons

Fixed ModelMapper maintenance of collections that are Hibernate orphan aware

Fixed issue where augmentation field doesn’t work if added during the creation of the AdvancedTag

Upgrade Guide

Import Improvements

Overview

The changes in this release are largely motivated by the goal of simplifying and improving the import processes.

The main target of change is product import, which, combined with the changes in Import Services 1.8.1 and Import Consumer 1.7.1, has been fully re-written.

The new product import, referred to as 'complete product import', is implemented with a brand new batch handler and new converters. It differs significantly from the prior implementation, which attempted to capture the full product domain and all of its complexity. The 'complete product import' now focuses on key, commonly useful fields and has a simplified, opinionated approach for building associations with related entities such as translations, categories, assets, and variants. It supports creates and simple updates.

Changes

Breaking Changes
  • The existing product import specification (on the ImportServices side) and corresponding resource-tier handler (ProductImportBatchHandler) are deprecated and disabled by default in favor of the new specification and CompleteProductImportBatchHandler. To continue using the deprecated components and disable the new components, set broadleaf.import.product.specification.use-legacy to true in both the ImportServices properties and CatalogServices properties. Furthermore, any existing PRODUCT imports and batches should be allowed to fully complete processing with the old handler (and no more batch requests should be in the Kafka message queue) before the new components are enabled - this way the new product batch handler will not be forced to consume messages intended for the old handler.

General Changes
  • Deprecate all components related to the current product import, including various row converters and the import batch handler. Note that the components have been deprecated, but not modified in any way. If enabled, they will work as they did before.

  • Introduce a new CompleteProductImportBatchHandler and row converters to support the new 'Complete Product' import specification, which has reduced usage of row-types and increased usage of complex column values. The new handler eagerly queries the datastore to fetch all existing entities matching provided rows, and converters subsequently use the prefetched data to determine operation type and apply the necessary changes. The handler contains error-handling logic to account for conversion errors and persistence errors. For example, if the parent product fails persistence, the column-based related entities for it such as category products will not be persisted. Conversely, if the parent product successfully persists but the column-based related entities don’t, those errors will be bubbled and set on the main product record. This is important as it guarantees any issues are always surfaced to users via completion records.

  • Introduce new methods in various services/repositories for fetching products, variants, and categories to match the requirements for the new handler

Schema Changes

Liquibase Change Sets

Create/Update SQL Drop SQL