Extension Point Framework Release Notes
Learn about Extension Point Framework releases.
1.5.0.cda47c-mr251
Released: June 2026
New in this release
Entity JSON Serialization and Deserialization Support
A new XPFJSONSerializationHelper utility class has been introduced, providing static methods to marshal Extension Point Framework entity
objects to JSON and unmarshal them back from JSON using Jackson. Serialization supports a SerializationScope mechanism that allows fields annotated
with @LazyLoaded to be excluded, enabling efficient and controlled data transfer of XPF entities — for example, to support use cases such as remote
promotion calculation or AI-driven services.
All XPF entity and context classes have been updated with the necessary Jackson annotations to support this functionality. Notably, Lombok annotations
on these classes have been refactored: @Data has been replaced with explicit @Getter, @AllArgsConstructor, @ToString, and @EqualsAndHashCode
annotations, and @SuperBuilder with @Jacksonized has been added to enable Jackson-compatible builder-based deserialization. Additionally, several
context classes (e.g., XPFPromotionCalculatorCoupon*Context) have been updated to use constructor-based instantiation instead of the Lombok builder
pattern.
For more information, see Entity JSON Serialization.
Typed convenience method added for retrieving custom data values from extension framework entities
A new method, getCustomDataValue(String key, Class<T> type), has been added to the XPFEntity class in the extension plugin framework. This method
allows developers to retrieve a value from the entity's custom data map in a type-safe way, eliminating the need to manually cast the result when
using the existing getCustomData() map getter.
The method returns null if the specified key is not present or maps to a null value, and throws a ClassCastException if the stored value cannot be
cast to the requested type. Passing a null type argument will result in an IllegalArgumentException. Extension plugins that populate or consume
custom data on XPFEntity instances may wish to adopt this method to simplify their retrieval logic.
Selected payment instruments added to the shopping cart extension point entity
The XPFShoppingCart entity now includes a selectedPaymentInstruments field containing the payment instruments selected for the cart. This enables
custom shopping cart validators to inspect the selected payment methods and block checkout when specific combinations of products and payment methods
are present.
Convenience methods added to XPFCustomer for common attribute values
The XPFCustomer extension point entity now provides dedicated getter and setter methods for commonly used customer attributes: first name, last
name, account name, preferred locale, and preferred currency. Previously, retrieving these values required calling getAttributeValueByKey with the
specific attribute key string and mapping the result, which was verbose and error-prone.
CC and BCC recipient support added to XPFNotificationDeliveryContext
The XPFNotificationDeliveryContext and the corresponding core EmailProperties/EmailPropertiesImpl classes now
include ccRecipients and bccRecipients fields (Set<String>). These values are propagated through the full email pipeline — from
XPFNotificationDeliveryContext through EmailProperties and into the EmailDto — ensuring CC and BCC recipients are correctly delivered via SMTP.
Merchants and integrators who have customized notification context converters (e.g., OrderConfirmationNotificationContextConverter) can now set CC
and/or BCC recipients by using the new constructors on XPFNotificationDeliveryContext that accept ccRecipients and bccRecipients parameters.
Existing constructors without these parameters remain available and default to empty sets, ensuring full backward compatibility with existing
customizations.
Additional enhancements
- Fixed the
load.sh,unload.sh, andreplace.shscripts generated by the XPF Maven Archetype to support the cargo-based service startup mechanism, resolving anAgentLoadExceptionerror that prevented external plugins from being dynamically loaded, unloaded, or replaced on running services. The scripts now detect processes identified asBootstrap(used by cargo) in addition to the previously supportedLauncherprocess type. - The
customerfield onXPFTaxCalculationContexthas been deprecated, as tax calculators should not make tax decisions based on customer details. Implementations relying on this field should be updated to remove that dependency. - The
XPFPromotionCarrotsInputContextclass was incorrectly located in thecom.elasticpath.xpf.connectivity.entitypackage and has been moved tocom.elasticpath.xpf.connectivity.context. The original class in theentitypackage has been deprecated but retained for backward compatibility, so existing extensions and plugins that reference the old location will continue to work. Customizations should be updated to import the class from the newcontextpackage. - The
getPricing()methods onXPFOrder,XPFOrderShipment, andXPFShoppingCarthave been annotated with@NonNull, explicitly indicating that these methods will never return a null value. Developers with customizations that call these methods can safely remove any null checks previously added as a precaution.