Broadleaf Microservices
  • v1.0.0-latest-prod

TMForum Extensions Module Release Notes for 1.1.0-GA

Important
The TMForum Extension Library is not available for general use. An extended commercial license is needed in order to obtain and use this functionality. Please contact a Broadleaf representative for more details

Requirements

Overview

Broadleaf Microservices Release Train 2.3.0 made significant changes to the structure and usage of certain core features, particularly within CatalogServices.

Most notably:

This release updates TMForumExtensions for compatibility with the new features and restructuring in the framework, while continuing to honor the API contract of the TMF 620 v5 Product Catalog Management API.

Individual Module Changes

TMF Core Library

  • In Broadleaf Release Train 2.2.2+ and 2.3.0+, caching support for Ignite was deprecated and support for Caffeine and EHCache were added. The caching configuration in the TMF core library has been updated to match these changes.

  • Updated various TMF entity classes to expose new BLC-custom fields (detailed further below)

TMF CatalogServices Extension Module

  • Embraced BusinessType ancestry support, matching the latest developments in the Broadleaf framework

    • BusinessTypeHydrationUtility now ensures that it returns business types with all characteristics hydrated, including those consolidated from ancestral business types. This ensures we honor promises about products being able to reference/refine characteristics defined in their parent business type ancestry, just as is the case in the vanilla BLC framework.

    • TMF ProductSpecification API responses continue to only return the characteristics directly on the current business type and not any items inherited from ancestors, just as before. This required adding filtration against 'inherited' characteristics in ProductSpecificationMappingUtility.

    • Since the base BusinessTypeService.create and BusinessTypeService.replace methods now natively return results with ancestors and ancestral characteristics pre-hydrated, updated the DefaultProductSpecificationService to eliminate now-redundant characteristic and ancestor hydration logic there and just leverage the already-hydrated data before transforming results to ProductSpecification instances.

  • Added support for the new BLC Characteristic.inheritanceType and Characteristic.parentCharacteristicId fields

    • In the ProductSpecification API, callers can now provide an element in CharacteristicSpecification.charSpecRelationship with CharacteristicSpecificationRelationship.characteristicSpecificationId set to the ID of an ancestral inherited characteristic, and CharacteristicSpecificationRelationship.relationshipType set to DefaultCharacteristicSpecificationRelationshipTypeValues.OVERRIDES to indicate that they want to override a characteristic value inherited from a higher business type. Note that unsetting an override is not supported in the TMF API.

    • The validation in ProductSpecificationValidator has been updated to ensure the API caller can’t specify an override for a characteristic that isn’t actually inherited from the parent business type. The mapping and hydration have been updated to ensure the values are mapped correctly on updates.

  • BLC’s Characteristic.placeholder and Characteristic.narrowingEnabled fields are now exposed in TMF API responses via the new custom CharacteristicSpecification.blcPlaceholder and CharacteristicSpecification.blcNarrowingEnabled fields. These are only returned in responses and are not honored in requests (ex: create/update).

  • BLC’s ProductCharacteristicValue.isActive field is now exposed in TMF API requests/responses via a new custom CharacteristicValueSpecification.blcIsActive field. This can be used by the API consumer to set the active/inactive status of a product characteristic value for narrowing-enabled characteristics. The ProductOfferingMappingUtility logic has been updated to set/return the field correctly.

  • Since Product now doesn’t have its characteristics hydrated automatically, the ProductOfferingMappingHydrationService has been updated to engage this hydration before returning product results in select flows. This way, the options and characteristics of a product are all hydrated correctly before participating in transformation. Flows that do not use that data skip the characteristic hydration to avoid unnecessary overhead.

  • ProductSpecificationCharacteristicValueUse now has an explicit blcGeneratedFromParentSpec field, used in the context of ProductOffering.prodSpecCharValueUse to clearly indicate when a product characteristic instance is inherited in an unmodified state from the parent business type, as opposed to being a real persisted instance.

  • Fixed a bug in ProductOfferingMappingUtility where CharacteristicValueSpecification.blcLabel was not properly being mapped to/from ProductCharacteristicValue.label when in the context of product characteristic values.

  • ProductOfferingMappingUtility.transformBlcCharValuesToCharValueSpecs has been removed in favor of direct calls to ProductOfferingMappingUtility.buildValueMatchingValueType

  • DefaultProductOfferingService.executeReplaceForProduct has been updated to suppress policy validation before executing the ProductService.replace() call, since if characteristics need to be created as part of that flow, the operation type of UPDATE will cause a mismatch. This is safe, as policy validation is already engaged at the endpoint layer.