Documentation Home

Broadleaf Commerce 5.2.16-GA

Release Date: April 17, 2020

Overview

This is the 16th patch release for Broadleaf Framework 5.2.x. To upgrade a 5.2.x application to the 5.2.16-GA release, it should only require updating the parent pom.xml broadleaf-boot-starter-parent to 5.2.16-GA.

New and Noteworthy

Simple Transition

This release introduces a new simplified strategy for Promotion, Approval and Deployment processes. It opts for direct JDBC persistence operations and batch processing which increases performance.
This is an Opt-In feature which is enabled by this property:

sandbox.lifecycle.strategy.simple.enabled=true

Since the new strategy processes Promotions/Approvals in batches, the batch size can be specified with the property below. One caveat of the batch approach is that an error in any one Promotion/Approval will cause the entire batch to fail. In such case there are two possible actions that can be taken:

  • Fix the error and promote/approve the entire batch again
  • Skip that failed entity and promote/approve remaining of the batch. Then fix the error and promote again individually.

sandbox.lifecycle.strategy.simple.pageSize=5

Benefits of the new simplified strategy

  • This strategy deals strictly with SQL/JDBC and transition records in tables therefore Performance is much much better for large volumes
  • There are fewer cache concerns
  • There are no PersistencePackage interpretation problems. The ideas are simple and the transitions are handled at a lower level, one table at a time.

Schema changes required

A few new tables are needed for this new process. Below are the table definitions in MySQL format. Convert to the format of your database platform as needed:

CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL (
  WRKFLW_CHG_DTL_ID bigint NOT NULL,
  CATALOG_DISC bigint DEFAULT NULL,
  DERIVED_TABLE varchar(255) DEFAULT NULL,
  RELATED_TO_TABLE varchar(255) DEFAULT NULL,
  SHORT_VAL varchar(5000) DEFAULT NULL,
  SITE_DISC bigint DEFAULT NULL,
  SITE_ID bigint DEFAULT NULL,
  TARGET_ID bigint DEFAULT NULL,
  TRANSITION_TYPE varchar(255) DEFAULT NULL,
  PRIMARY KEY (WRKFLW_CHG_DTL_ID),
  KEY CHG_DTL_TARGET_IDX (TARGET_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL_REF (
  DETAIL_REF_ID bigint NOT NULL,
  DETAIL_ID bigint DEFAULT NULL,
  WRKFLW_SNDBX_ID bigint DEFAULT NULL,
  PRIMARY KEY (DETAIL_REF_ID),
  KEY CHG_DTL_TARGET_REF_IDX (DETAIL_ID),
  KEY CHG_DTL_WRKFLW_REF_IDX (WRKFLW_SNDBX_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL_VAL (
  CHG_DETAIL_VAL_ID bigint NOT NULL,
  VALUE varchar(5000) DEFAULT NULL,
  CHG_DETAIL_ID bigint DEFAULT NULL,
  PRIMARY KEY (CHG_DETAIL_VAL_ID),
  KEY FK1C1BCEA980E73722 (CHG_DETAIL_ID),
  CONSTRAINT FK1C1BCEA980E73722 FOREIGN KEY (CHG_DETAIL_ID) REFERENCES BLC_SNDBX_WRKFLW_CHG_DTL (WRKFLW_CHG_DTL_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Postgres is not configured for implicit casting of boolean by default. Use the following to configure:

UPDATE pg_cast set castcontext ='i' where castsource=23 and casttarget=16;

Compatabiity

If you elect to enable the new Promotion and Approval process, only new sandbox operations will use the new process. Any pre-existing entity changes already in a sandbox state (i.e. were started before enabling the new sandbox transition) can be completed using the "legacy" sandbox processes.

ListGrid CssClasses

A new property has been added to the ListGrid Form Component - cssClasses. Any additional css class names can now be added to this new property. This was added to distinguish between "classes" (which usually represents the underlying Java class) and "cssClasses" (which represent the style of the listgrid). The Java classname is still used as part of the css class string:

th:classappend="${listGrid.className + ' ' + listGrid.getCssClassNames()}"

I18N Property

A new property has been added to enable/disable i18n translations.

i18n.translation.enabled=true

An at-a-glance view of the issues that were closed in this release:

Critical Bugs(1)

  • Fixed the issue where querying for Payment Transactions resulted in archived transactions.

Major Bugs(5)

  • Fix the issue where a new Additional action could not be created for Content Targeter
  • Fix to prevent antisamy cleanse from impacting rule builder fields
  • Removed the Conditional Property check from RemoveCacheClassTransformer in favor of a basic instance variable
  • Fixed the issue with order's between date filter when it does not correctly encode a pipe delimiter in the URL
  • Created a new list for email attachments in clone to address attachments that were being shared across email info objects.

Minor Bugs(10)

  • Added a support of translation to entity that is mapped via map collections
  • Fix the issue where blank Personal Message rows were being created on order submit
  • Fix the issue where approval of content targeter would fail after promoting rules second time
  • Fixed issue where IndexFieldTypes and SearchFacetRanges were being returned in collections after they were archived
  • Fix for not deleting blc_qual_crit_offer_xref when saving after promote
  • FFixed the issue where INTEGER type was not being validated for Custom Field
  • Fixed issue where multiple offers with 'Minimum order subtotal' requirements can get skipped
  • Fixed the issue where deleting a pricelist would fail if it was added to any product
  • Fixed the issue where adding a transaltion for locale with existing translation would not produce any error message
  • Made validate method public in BroadleafEntityValidator

Features(4)

  • Simplified alternate strategy for promotions and approvals
  • Added a property to disable international translations
  • Improve getting page size in the SeoDefaultPropertyServiceImpl
  • Added method removeBundle for ResourceBundlingService

Enhancements(3)

  • Added a new property to the ListGrid cssClasses
  • Tune fetching of few entities to reduce large number of joins
  • Added a new request mapping for readonly collection with tabs

Total Resolved Issues: 23