Skip to main content
Version: 8.3.x

Self-Managed Commerce 8.3.x Release Notes

Learn about changes to Self-Managed Commerce for this release. Fixes since the release are summarized in the changelog.

Changelog​

The changelog contains the list of fixes and improvements made to Self-Managed Commerce 8.3 since its release date. To learn how to consume the updates, see Consuming Support Fixes.

CommitDescriptionBadgesRelease Date
3c36bfea Upgraded Tomcat from 9.0.122 to 9.0.123 to address CVE-2026-101356, CVE-2026-101296, CVE-2026-88041, CVE-2026-74049, CVE-2026-93446, CVE-2026-74048, CVE-2026-80353.Security5‑Nov‑2026
742be9e4 Build stability fix.4‑Nov‑2026
ec02b0b0 Build stability fix.4‑Nov‑2026
258c8dd3 Build stability fix.4‑Nov‑2026
57a1cc9d Upgraded Jackson from 2.22.3 to 2.22.4 to address three security vulnerabilities (CVE-2026-104895, CVE-2026-106554, CVE-2026-110879).Security26‑Oct‑2026
945fb979 Fixed an issue where orders with three or more partial captures against the same payment reservation failed with a duplicate key error, leaving orders partially charged and requiring manual intervention.21‑Oct‑2026
3ec40df1 Removed msgpack-core dependency to address CVE-2026-90472.Security20‑Oct‑2026
f6296c46 Upgraded certified Java version from 8u492 to 8u504.Security14‑Oct‑2026
413e96f8 Fixed an issue where the Search Server threw OutOfMemoryError during index rebuilds because queued index notifications were loaded entirely into memory before deletion.13‑Oct‑2026
56b2bf98 Upgraded httpclient5 from 5.6.3 to 5.6.4 to address CVE-2026-71290.Security7‑Oct‑2026
bff62b69 Fixed multiple reliability issues in Operational Insights report generation.5‑Oct‑2026
54c09705 Upgraded Tomcat from 9.0.121 to 9.0.122 to address CVE-2026-86350, CVE-2026-77762, CVE-2026-78383, CVE-2026-75973, CVE-2026-78437, CVE-2026-73581, CVE-2026-77756.Security5‑Oct‑2026
08830a90 Upgraded Jackson from 2.22.1 to 2.22.3 to address CVE-2026-83557, CVE-2026-19032, CVE-2026-68497, CVE-2026-89425, CVE-2026-89407, CVE-2026-91776, CVE-2026-91777.Security1‑Oct‑2026
af826b45 Removed a redundant Tomcat version property from the extensions module to simplify Tomcat upgrades.29‑Sep‑2026
499b8a95 Fixed an issue where Cortex permission checks bypassed a required pre-check and passed resource identifiers from unrelated resource types to parameter resolution strategies.28‑Sep‑2026
436a1278 Build stability improvements.25‑Sep‑2026
a338f10f Upgraded ant from 1.10.14 to 1.10.18 to address CVE_2026-78254.23‑Sep‑2026
2396c628 Upgraded Zookeeper from 3.9.5 to 3.9.6 to address CVE-2026-79993, CVE-2026-59969, CVE-2026-59739, CVE-2026-84439, CVE-2026-84501.Security22‑Sep‑2026
e3e9bf85 Fixed issue with a NullPointerException appearing in Operational Insights when the webapp smoketests were run.22‑Sep‑2026
3e71c1c5 Upgraded the certified MySQL 8.0 RDS version from 8.0.43 to 8.0.46.Security22‑Sep‑2026
7ff92842 Upgraded the certified PostgreSQL 16 Amazon Aurora version from 16.10 to 16.14.21‑Sep‑2026
5aa6efea Cleaned up Cortex Studio npm dependencies by dropping unused packages and bringing package-lock.json back in sync with package.json.21‑Sep‑2026
4def1943 Upgraded jsoup from 1.15.3 to 1.23.2 to address CVE-2026-71497.Security11‑Sep‑2026
3c8e23e6 Upgraded Postgresql JDBC driver from 42.7.11 to 42.7.13 to address CVE-2026-54291.Security9‑Sep‑2026
efbae629 Upgraded Netty from 4.1.136.Final to 4.1.137.Final to address CVE-2026-75595 and CVE-2026-75596.Security9‑Sep‑2026
dd4fd634 Upgraded httpclient5 from 5.3.1 to 5.6.3 and httpcore5 from 5.2.4 to 5.4.3 to address CVE-2026-64607, CVE-2026-54399, CVE-2026-54428.Security9‑Sep‑2026
b16c6d0e Replaces the unmaintained org.fusesource.jansi:jansi 1.18 library with org.jline:jansi 4.3.1.9‑Sep‑2026
3c192155 Removed the unused http-builder dependency from Cucumber test modules to eliminate a transitive dependency on a vulnerable version of commons-lang (CVE-2025-48924).Security8‑Sep‑2026
dac1fd23 Upgraded Tomcat from 9.0.120 to 9.0.121 to address multiple high-severity vulnerabilities.Security8‑Sep‑2026
2343c2f1 Fixed an issue where transacted JMS consumers open and tear down a real TCP connection to the ActiveMQ broker on every receive cycle, causing significant connection churn at idle and under load.2‑Sep‑2026
d7369f92 Fixed an issue where Camel JMS request-reply (InOut) routes fail with an IllegalArgumentException after connection pooling changes removed a required connection factory property.31‑Aug‑2026
ba97b50f Removed the unmaintained Natty date-parsing library from the test application to resolve a security vulnerability (CVE-2025-48924) in its transitive dependency on Commons Lang.Security24‑Aug‑2026
dc45b7e7 Fixed an issue where Selenium tests intermittently fail with a stale element reference error when calling click, doubleClick, or setChecked on a RAPTable row, resolved by adding retry logic to each method.22‑Aug‑2026
1a48736e Upgraded Tomcat from 9.0.118 to 9.0.120 to address CVE-2026-59084, CVE-2026-59083, CVE-2026-55276, CVE-2026-53404, CVE-2026-55955, CVE-2026-55956.Security21‑Aug‑2026
2de15794 Mend scans now use formal service account.21‑Aug‑2026
c4154377 Updated the ActiveMQ container entrypoint to ensure signals reach the broker JVM processBuild Tools21‑Aug‑2026
56397012 Parallelizes previously serial isolated Cucumber regression tests by scoping test data and configuration to unique stores, catalogs, and scenarios per test run, reducing pipeline duration by approximately 20–30 minutes.21‑Aug‑2026
11672bba Fixed an intermittent cache eviction error during search indexing caused by several Ehcache cache key classes not implementing Serializable.20‑Aug‑2026
46214655 Fixed intermittently failing Selenium test "Verify price facets are updated when a promotion is changed".20‑Aug‑2026
aee295fc Upgraded Jackson from 2.21.4 to 2.22.1 to address CVE-2026-59889, CVE-2026-54515.Security19‑Aug‑2026
590a601a Upgraded Netty from 4.1.135.Final to 4.1.136.Final to address CVE-2026-59901.Security18‑Aug‑2026
d96d516d Fixed intermittent test failures where the ORDER_CREATED message assertion fails because the message is consumed before the listener is fully initialized.18‑Aug‑2026
2669e6e8 Fixed intermittent VirtualCatalog.feature failures by improving reliability of menu item widget interactions.14‑Aug‑2026
ffe25666 Refactored AccountAssociates.feature so its scenarios can run concurrently.14‑Aug‑2026
7efdc78d Improves Commerce Manager Selenium test reliability by removing broken stale-element wait methods, consolidating redundant wait call stacks, introducing stale-safe widget wrappers, and cleaning up dialog handling.13‑Aug‑2026
2cd92166 Improved reliability of ProductCacheInvalidation.feature by dynamically creating unique test identifiers.12‑Aug‑2026
4397ee27 Build stability improvements.10‑Aug‑2026
d12b1a9c Added new RAPMenuItem test widget to standardize menu access in Selenium tests.8‑Aug‑2026
bb4ca750 Upgraded Jackson from 2.21.2 to 2.21.4 to address CVE-2026-54513, CVE-2026-54512, CVE-2026-54516, CVE-2026-54514, CVE-2026-54517.Security29‑Jul‑2026
12f4171f JMS message consumers now use dedicated, non-pooled connections instead of shared pooled connections, preventing consumers on low-traffic queues from becoming stranded when a broker connection fails silently.27‑Jul‑2026
6d0c8dfd Adds a new downloadChecksumWithAlgorithm field to ops-spec.json for all four tool entries (Java, Maven, Tomcat, ActiveMQ), enabling vendor-published SHA-256/SHA-512 hashes to be used directly instead of manually calculated MD5 values.Build Tools24‑Jul‑2026
d7893978 Operational Insights revenue metrics now only count completed orders, using the order completion date instead of the creation date, preventing historical revenue figures from changing retroactively.16‑Jul‑2026
d46ee138 Upgraded Netty from 4.1.133.Final to 4.1.135.Final to address CVE-2026-45416, CVE-2026-50010, and CVE-2026-44249.Security6‑Jul‑2026
f9e84cc5 Upgraded certified Java version from 8u482 to 8u492.2‑Jul‑2026
f3f79232 Upgraded certified PostgreSQL version from 16.10 to 16.14.Security22‑Jun‑2026
7b80e47c Build stability improvements.11‑Jun‑2026
a7d98479 Upgraded Netty from 4.1.130.Final to 4.1.133.Final to address CVE-2026-42583.Security9‑Jun‑2026
f765f9f3 Upgraded Liquibase from 4.8.0 to 4.33.0 to address a bug with the latest PostgreSQL JDBC driver.Security Data model changes8‑Jun‑2026
79079036 Upgraded Postgresql JDBC driver from 42.4.4 to 42.7.11 to address CVE-2026-42198.Security3‑Jun‑2026
be1f46b3 Modified build parameters to remove ReservedCodeCacheSize 128m setting and use JDK default instead.Build Tools2‑Jun‑2026
d3703625 Upgraded Tomcat from 9.0.117 to 9.0.118 to address CVE-2026-43512, CVE-2026-41284, CVE-2026-42498, CVE-2026-41293, CVE-2026-43513, CVE-2026-43515, CVE-2026-43514.Security1‑Jun‑2026
c1f16afc Build stability improvements.1‑Jun‑2026
e857f21e A Liquibase changeset has been added to automatically run ANALYZE on PostgreSQL databases during each data population run, preventing query performance issues caused by missing table statistics after a major PostgreSQL version upgrade.Performance26‑May‑2026
bd69db8a Upgraded certified Oracle version from 19.0.0.0.ru-2025-07.rur-2025-07.r1 to 19.0.0.0.ru-2025-10.rur-2025-10.r1.Security17‑May‑2026
6fba2375 Upgraded certified Aurora MySQL 8.0 version from 8.0.mysql_aurora.3.08.2 to 8.0.mysql_aurora.3.10.3.Security16‑May‑2026
75147eb2 Upgraded Jackson from 2.19.1 to 2.21.2 to address WS-2026-0003 (CVSS3 7.5), with SnakeYAML also upgraded from 2.4 to 2.5.Security10‑May‑2026
09ca92b8 Fixed promotion category exclusion logic so products assigned to both an included parent category and an excluded subcategory are correctly eligible for the promotion.10‑May‑2026
2d50ecfe Fixed intermittently failing Catalog Syndication integration tests.9‑May‑2026
873c5578 Improved Selenium test widgets: fluent table-cell assertions, text-field clear, sharper retry classification in both retryAttempts and retryFunction.1‑May‑2026
565e72fd Upgraded Tomcat from 9.0.116 to 9.0.117 to address CVE-2026-34487, CVE-2026-34486, CVE-2026-34483, and CVE-2026-34500.Security30‑Apr‑2026
eb5c0392 Removed deprecated Maven repositories from individual-settings.xml.29‑Apr‑2026
62f29dc0 Removed deprecated ServiceMix dependencies and replaced with wrapped bundles maintained by Elastic Path.26‑Apr‑2026
a059a1f6 Upgraded Zookeeper from 3.9.4 to 3.9.5 to address CVE-2026-24281 and CVE-2026-24308.Security20‑Apr‑2026
23cba1c9 Added assertColumnContainsExactly method to RAPTable class.16‑Apr‑2026
15acf92f Added missing distributionManagement to boms/pom.xml that was causing Maven deploy operations to fail.15‑Apr‑2026
9d7ff2fd Upgraded pf4j from 3.10.0 to 3.15.0 to address CVE-2025-70952.Security13‑Apr‑2026
64aa33ae Updated Git configuration to ignore .claude folders.10‑Apr‑2026
0a33ac50 Added assertDoesNotContainRow method to RAPTable class.10‑Apr‑2026
3f0a1a25 Improved Selenium test reliability and maintainability with typed widget APIs, replacing brittle CSS selectors with strict assertions, automatic retry on transient errors, and session cleanup.8‑Apr‑2026
e3718f0c Upgraded Tomcat from 9.0.110 to 9.0.116 to address CVE-2026-24734, CVE-2026-24733, and CVE-2025-66614.Security8‑Apr‑2026
7f6d3a5b Upgraded AssertJ from 3.11.1 to 3.27.7 to address CVE-2026-24400.Security2‑Apr‑2026
249cb88e Upgraded the EhCache servicemix version to make it consistent with the EhCache version.Security1‑Apr‑2026
203ebb75 Fixed test teardown issue in MergeEngineImplITest that can cause SyncToolLauncherMultipleExecutionsITest to fail.31‑Mar‑2026
5b179ff3 Data sync change to ensure that only changed values are updated in the target entities. This also ensures that products and skus are not reindexed when a new sku option value is added.29‑Mar‑2026
b0302bb9 Fixed a race condition in Utils.uniqueCode() used during tests.26‑Mar‑2026
41b8010c Updated P2 repository URLs from http to https.25‑Mar‑2026
05f492e2 Added the ability to override the p2 repository locations.Build Tools19‑Mar‑2026
2797c743 Upgraded certified Java version from 8u442 to 8u482.Security16‑Mar‑2026
fb4e16f7 Upgraded okhttp from 3.14.1 to 4.12.0 to address CVE-2021-0341.Security10‑Mar‑2026
6ae61b3e Upgraded rhino from 1.7.7.2 to 1.7.14.1 to address CVE-2025-66453.Security10‑Mar‑2026
27b430e9 Fixed multiple bugs with promotion exception logic and reverted behaviour change of the "cart contains category" promotion condition done in a previous patch.5‑Mar‑2026
0a285b8e Fixed null pointer exception that can occur when retrieving inventory details for a bundle with no constituents.20‑Feb‑2026
9a2ff9d1 Added Maven Deploy Plugin configuration to new bom/pom.xml to avoid "repository element was not specified" error when deploying artifacts.19‑Feb‑2026
e43807b4 Added new with-snapshot-api-platform and with-snapshot-ep-xpf-spi profiles for building with development versions of these dependencies.11‑Feb‑2026
7221f61b Removed the runAlways flag off of the FK-BATCH Liquibase changesets to avoid creating repeat DATABASECHANGELOG entries in the database.Data model changes10‑Feb‑2026
6586550e Added enforcer rules to ensure that dependency version properties stay in sync between pom and bom.9‑Feb‑2026
00ce53f8 Upgraded msgpack-core from 0.8.13 to 0.9.11 to address CVE-2026-21452.Security4‑Feb‑2026
541bda66 Improved reliability of WebDriver management in Selenium tests.4‑Feb‑2026
f2e0ebfe Improved reliability of search-related Commerce Manager test steps to avoid race conditions.3‑Feb‑2026
0cc329f7 Cleaned up EmailStepDefinitions by removing inappropriate TestExecutionListeners.29‑Jan‑2026
5ad60330 Fixed intermittent failures in Performance Insights tests caused by resetting the database between each test.Performance28‑Jan‑2026
d6ef0146 Removed Felix webconsole dependency from ext-cm-webapp.23‑Jan‑2026
bc5a2289 Fixed skipITests and skipCucumberTests properties not skipping some expected modules.19‑Jan‑2026
53bf2d20 Added more detail to assertion output when Cortex Cucumber step definitions fail.13‑Jan‑2026
09877604 Fixed issue causing Order Cleanup jobs to fail when order has associated order holds.Data model changes13‑Jan‑2026
9e6d7f18 Fixed intermittently failing Pre/Back-Order Cucumber tests.12‑Jan‑2026
9e6bdc09 Added the ability to set and distinguish between present and not present boolean customer attribute values in Commerce Manager.7‑Jan‑2026
5947823d Removed zoom graph builder functionality in Cortex Studio.Security7‑Jan‑2026
3c9acf4f Updated protobuf-java version from 3.16.3 to 3.25.5 to address CVE-2024-7254.Security6‑Jan‑2026
4dc59527 Upgraded certified Oracle version from 19.0.0.0.ru-2025-01.rur-2025-01.r2 to 19.0.0.0.ru-2025-07.rur-2025-07.r1.Security20‑Dec‑2025
3c94b12b Updated coupon service to ensure that whitespace is trimmed when new coupon codes are created.8‑Dec‑2025
fdd97f69 Upgraded certified PostgreSQL version from 16.9 to 16.10.Security8‑Dec‑2025
e680d42c Upgraded certified MySQL 8.0 RDS version from 8.0.41 to 8.0.43.Security28‑Nov‑2025
ece100b7 Fixed AbstractPageObject#clearAndTypeText to improve detection that ensures that the field text was correctly entered.27‑Nov‑2025
9e74623b Fixed incorrect payment API response error message when refund fails.20‑Nov‑2025
b3a0da70 Fixed multiple issues related to null or blank customer profile attribute values.19‑Nov‑2025
ed8b6469 Fixed an intermittent failure in Create Catalog Selenium tests.19‑Nov‑2025
75c346e4 Fixed issue in which a new master catalog with all languages configured could not be opened in Commerce Manager.14‑Nov‑2025
64316569 Fixed refund error that can occur if the order payment events include reverse charges.13‑Nov‑2025
a7db3aeb Fixed NullPointerException that can occur in Import/Export API when import fails.12‑Nov‑2025
2d469b65 Upgraded Tomcat from 9.0.107 to 9.0.110.Security7‑Nov‑2025
0de54031 Upgraded Zookeeper from 3.9.3 to 3.9.4 to address CVE-2025-58457.Security6‑Nov‑2025
79ec6f7b Fixed issue where the applied line item discount amount could exceed the line item subtotal if multiple promotions are stacked.5‑Nov‑2025
debbcb51 Set default maxThreads for all services to 250 to match Operational Insights recommendations.Build Tools3‑Nov‑2025
bf2606c7 Added blank jvmRuntimeArguments for ActiveMQ in 8.4.x and 8.3.x ops-spec.json.31‑Oct‑2025
0e35a8a5 Upgraded dependencies within Fluent RelOS Client to address CVE-2025-48924.Security30‑Oct‑2025
b1ad548a Upgraded fsevents from 1.2.8 to 1.2.11 to address CVE-2023-45311.Security29‑Oct‑2025
3ccc76d9 Added a new index to TCOUPONUSAGE to improve performance for the query to find automatically applied coupons.Performance Data model changes16‑Oct‑2025
90660cea Fixed product reindexing issues after updating sku option values in a catalog.14‑Oct‑2025
40f823de Resolved the localized message key: incompatible-configuration warnings during service startup.6‑Oct‑2025
1b4b0695 Upgraded netty-handler from 4.1.118.Final to 4.1.125.Final to address CVE-2025-58057.Security22‑Sep‑2025
fd98f163 Fixed issues running reset-db on a local Oracle database.20‑Sep‑2025
0c38c71b Upgraded certified PostgreSQL version from 16.6 to 16.9.Security Data model changes18‑Sep‑2025
1e3cee84 Fixed load.sh/unload.sh/replace.sh scripts generated by the Maven Archetype when creating an external plugin so that they work properly with the new cargo-based service startup mechanism.18‑Sep‑2025
6ca9d277 Fixed data type issues with TRMAGENERATOR and TORDERNUMBERGENERATOR that required the database to workaround through implicit casts.Data model changes17‑Sep‑2025
70e8b5b2 Fixed issue with Search Server taking up to an hour to process index update notifications by reducing the query cache timeout from 1 hour to 5 seconds.17‑Sep‑2025
649183d0 Changed the behaviour of the "cart contains category" promotion condition so that exclusions only override categories that are explicitly included.14‑Sep‑2025
43fd5d6b Fix for potential "Value not present" error in Cortex if a new sku option value is added and assigned to a new product SKU before the sku option cache expires.13‑Sep‑2025
bbfb2b22 Fixed an issue in the data-pop tool container entrypoint script where files from a secure-configuration repository were being ignored and not applied.12‑Sep‑2025
042ad0d7 Updated the ext-container-layout project to include the same assembly rules used in the ext-deployment-package project, specifically so builds will fail if artifacts don't exist.9‑Sep‑2025
07816442 Changed "No product was found for base amount" error to a warning.28‑Aug‑2025
f9724c37 Removed all ESAPI dependencies, which were not effectively protecting the Cortex API endpoints and were including vulnerable transitive dependencies.26‑Aug‑2025
d158ce39 Upgraded Jackson from 2.16.1 to 2.19.1 and switched to jackson-bom to define dependency versions.Security19‑Aug‑2025
9008c7a1 Added logic to handle situation where a child shopping cart line item is missing a pointer to its parent line item.13‑Aug‑2025
9f1588c9 Fixed connection leak in DBConnector classes.28‑Jul‑2025
a1102b17 Fixed issue where getSettingValue(final String path) doesn't work when using the cached settings reader.24‑Jul‑2025
147f4baa Fixed the Build Tools script build_source_tree.sh to properly handle the --deploy command-line argument.Build Tools22‑Jul‑2025
a3d6f0fd Fixed multiple incorrect XML bean configurations.21‑Jul‑2025
ecea85fc Upgraded Tomcat from 9.0.106 to 9.0.107.Security21‑Jul‑2025
9206df89 Fixed all @Named annotations that are paired with @Autowired to the correct @Qualifier annotation.21‑Jul‑2025
bc8b757b Modified bundle availability logic so that bundles appear as available as long as sufficient constituents are available to satisfy the bundle selection rules.21‑Jul‑2025
758ba997 Updated both the Build Tools build container image and the Build Tools application container base images to Amazon Linux 2023.7.20250623.1.Build Tools15‑Jul‑2025
7cc37589 Added a new warning to the logs when a service using SwitchableProxyBinder is using the fallback implementation, which usually indicates that application-level caching is not working.10‑Jul‑2025
4e38b3ff Fixed issue where resending a Gift Certificate for a specific order line item was resending all order gift certificates to the specified recipient.10‑Jul‑2025
09ce3ff3 Fixed infinite recursion bug in CacheableFacetService#findAllFacetsForStore.9‑Jul‑2025
35c6e9bb Added new ext-container-layout module to single-threaded-modules.lst.8‑Jul‑2025
37b69078 Added a new ext-container-layout module, with updated build tools, to simplify building Commerce container images.4‑Jul‑2025
10b189b2 Refactored dependencies to define versions in bill-of-materials/pom.xml.28‑Jun‑2025
9b9a58f4 Fixed parsing of queries in LuceneRawQueryComposerImpl that was causing problems for the search server when processing some index notifications.26‑Jun‑2025
f81933d9 Build tools: Set timeouts for Maven commands, so that Maven builds triggered by these tools will fail fast if Maven artifact download connections hang.25‑Jun‑2025
ddf113f4 Build tools: Updated the ActiveMQ container's entrypoint.sh script to enable new ActiveMQ container configuration options. Users can set new environment variables EP_ACTIVEMQ_X_JVM_ARGS and MAXIMUM_CONNECTIONS.25‑Jun‑2025
0df49189 Fixed an issue where domain events are not always triggered as expected if the domain class has been extended.23‑Jun‑2025
826618cf Fixed issue in which the CM_USER_CREATED event is sent before the Commerce Manager user is persisted.23‑Jun‑2025
b7a990f9 Fixed the Operational Insights revenue calculations to exclude failed but include cancelled orders.20‑Jun‑2025
1eec3ff2 Fixed issue that causes search indexing to fail if multiple attribute values exist for the same attribute with the same locale.20‑Jun‑2025
894151b5 Replace the unmaintained tag library taglibs-standard-impl with the newer jakarta.servlet.jsp.jstl.19‑Jun‑2025
c31875b9 Upgraded Tomcat from 9.0.102 to 9.0.105.16‑Jun‑2025
4fd43f1d Fixed SQL injection warnings identified by Static Application Security Testing tooling in ep-persistence-openjpa.6‑Jun‑2025
cbab0317 Fixed suppression for false positive FindBugs issues.6‑Jun‑2025
962deea4 Fixed intermittently failing Report for B2B Buyer using system Data Policy Segments test.31‑May‑2025
a234af46 Build stability improvements.30‑May‑2025
31541f65 Made ordering of payment method elements consistent in Cortex.29‑May‑2025
f3d10813 Fixed issue that was sending messages to VirtualTopic.ep.catalog containing an error message when Catalog Syndication was triggered.29‑May‑2025
62fa811f Added optional JUnit 5 support to the platform.28‑May‑2025
e94cd9d8 Fixed issue with Extension Point Framework entities missing all non-localized attribute values when a localized attribute contains a non-localized fallback value.28‑May‑2025
6ae3fce5 Added debug logging for SwitchableProxyBinder.14‑May‑2025
2830a716 Refactored b2b-buyer-functionality.feature to use client.authRegisteredUserByName instead of JWT authentication.12‑May‑2025
3a5d11ee Upgraded certified MySQL 8.0 Aurora version from 8.0.mysql_aurora.3.04.2 to 8.0.mysql_aurora.3.08.2.6‑May‑2025
662b4292 Upgraded certified Oracle version from 19.0.0.0.ru-2024-01.rur-2024-01.r1 to 19.0.0.0.ru-2025-01.rur-2025-01.r2.6‑May‑2025
d5b209ea Build stability improvements.6‑May‑2025
d7da2686 Upgraded certified MySQL RDS version from 8.0.35 to 8.0.41.5‑May‑2025
870838c8 Fixed vulnerability in DownloadServiceHandler.5‑May‑2025
cab6495a Fixed intermittently failing ExternalPluginTest integration tests.3‑May‑2025
a9bf63a5 Upgraded certified MySQL 5.7 Aurora version from 5.7.mysql_aurora.2.11.4 to 5.7.mysql_aurora.2.12.5.3‑May‑2025
9ddb0046 Removed unused batch-jobs.xml file that was replaced by catalog-syndication-jobs.xml.3‑May‑2025
2ed448a2 Fixed issue with CouponUsageDaoImpl#findEligibleUsagesByEmailAddressInStore passing wrong value to the named query when the email address is empty.22‑Apr‑2025
1ef50e78 Fixed a performance issue in LocalizedAttributeKeyUtils#getLocaleFromLocalizedKeyName.17‑Apr‑2025
4f4289bd Upgraded Solr from 8.11.3 to 8.11.4 to address CVE-2024-45216.14‑Apr‑2025
627e81de Upgraded Tomcat version from 9.0.98 to 9.0.102 to address CVE-2025-24813.14‑Apr‑2025
1c8f0498 Improved "View Disabled Data Policy for Customer" Selenium test to not fail on retry.3‑Apr‑2025
de59b045 Hardcoded "mobee" and "vestri" values removed from scope autocomplete in Cortex Studio.3‑Apr‑2025
35c1b52a Fixed the Operational Insights revenue calculations to exclude failed and cancelled orders.2‑Apr‑2025
c1b828f5 Fixed search indexing issue in which delete requests are ignored if there are no corresponding add/update requests.28‑Mar‑2025
647974ee Created filter to ensure that the Cortex OSGi console is only accessible on the port specified by ep.management.port.22‑Mar‑2025
2bab81cd Initial release of new build tools for configuring a build environment, building and testing the code project, building the set of application container images, and running the application containers locally.22‑Mar‑2025
d2e8b035 Fixed issue with structured error messages from some shopping item validators not showing a link to the affected shopping item.21‑Mar‑2025
b9d86aa1 Added ops-spec.json file to describe external dependency requirements for this version of Self-Managed Commerce.18‑Mar‑2025
fd32dce3 Performance optimization for the Extension Point Framework to avoid classpath scanning when extensions are retrieved from the framework.17‑Mar‑2025
1c0928e2 Ensure that old Extension Point Framework plugin instance is removed when replaced with another version.14‑Mar‑2025
465efafd Upgraded netty-handler from 4.1.113.Final to 4.1.118.Final.14‑Mar‑2025
7956f720 Fixed potential table scan when retrieving the order list in Commerce Manager.11‑Mar‑2025
3482811c Fixed issue where attributes with keys that match the regex for having a language tag are incorrectly treated as localized attributes when passed to Extension Point Framework entities.6‑Mar‑2025
cb6c701f Fixed behaviour of the first time buyer flag if the shopper's first order fails.5‑Mar‑2025
f24166ef Fixed issue with order hold getting stuck in RESOLVE_PENDING if order lock is present.3‑Mar‑2025
4f236d51 Fixed issue with Operational Insights interpreting serviceResponseWaitTime in minutes instead of milliseconds.28‑Feb‑2025
59ca3607 Eliminated unnecessary shopper and shopping cart lookups during cart order retrieval.25‑Feb‑2025
dcbfe0cb Removed unitils-core dependency to address CVE-2016-3093.24‑Feb‑2025
1ded94d0 Ensure that affected products are re-indexed when catalog promotions are added, modified, or become active or inactive to ensure that the indexed price is correct.23‑Feb‑2025
4a73c325 Fixed "bad value for type int" error that appeared in the logs when running Operational Insights with a PostgreSQL database.22‑Feb‑2025
5b550dc5 Fixed race condition that can occur when multiple users execute keyword or navigation searches with different sort keys.18‑Feb‑2025
b0f054bc Removed unnecessary TCUSTOMER index on CREATED_DATE.14‑Feb‑2025
a9de338b Removed unnecessary product/category cleanup after Cucumber tests and fixed issue that allowed bundles to be created in Commerce Manager without a valid sku code.13‑Feb‑2025
6d377116 Upgraded xstream from version 1.4.20 to 1.4.21 to address CVE-2024-47072.13‑Feb‑2025
84ce3160 Fixed intermittent Selenium issue related to case-sensitive ErrorDialog class.4‑Feb‑2025
5da8291c Fixed an issue that was causing unnecessary TORDER and TORDERAUDIT update queries to be created.31‑Jan‑2025
8d5b84fd Upgraded Tomcat version from 9.0.97 to 9.0.98 to address CVE-2024-56337 and CVE-2024-50379.28‑Jan‑2025
726e695a Updated getDisplayNames method to lazy loaded in all Extension Point Framework entities to address a potential performance issue when stores have a large number of locales enabled.22‑Jan‑2025
dd65c3e9 Improved performance of Operational Insights revenue query.20‑Jan‑2025
57d96acb Added missing indexes to PostgreSQL and Oracle that were created implicitly in MySQL.17‑Jan‑2025
534c34a6 Renamed xpfXPFConverterUtil fields to xpfConverterUtil for clarity.16‑Jan‑2025
54ab8810 Removed jetty-runner dependency to address CVE-2024-52046.15‑Jan‑2025
980b8ec3 Enabled state comparison version strategy on order holds to ensure that two users don't resolve the same hold simultaneously.14‑Jan‑2025
edfdca6f Updated Commerce Manager cookies to always set the HttpOnly flag for improved security.8‑Jan‑2025
786ea5bb Upgraded zookeeper from 3.9.2 to 3.9.3 to address CVE-2024-51504 and CVE-2024-47535.6‑Jan‑2025
592d970c Added system property to ensure that Log4j always uses the BasicContextSelector to avoid OSGi issues in Cortex.20‑Dec‑2024
a0df32fb Changed featuredoffers link on navigations resource from a conditional to a static link to remove unnecessary product query.17‑Dec‑2024
08828b35 Added subquery support to JpqlQueryBuilder.16‑Dec‑2024
cfa12eeb Refactored ProductAssociationQueryBuilder to use JPQLQueryBuilder and optimized generated query for determining product associations.13‑Dec‑2024
8910631b Changed the way that SkuOptionValue is associated with ProductSkuOptionValue, using a lazy load approach instead of the Eager Field Post Load Strategy, to prevent possible "context has been closed" exceptions.12‑Dec‑2024
3784effa Upgraded Tomcat version from 9.0.85 to 9.0.97.10‑Dec‑2024
1e72dbc3 Added a new getAttributeValueByKey method to all Extension Point Framework entities with attributes for use with non-localized attribute values.8‑Dec‑2024
fc47cdff Upgraded esapi from 2.5.3.1 to 2.5.4.0.6‑Dec‑2024
5010fc1b Enhanced Operational Insights to ensure that Integration Server waits for all service reports to be received before the report is generated.6‑Dec‑2024
bd90ab54 Added comments above api-platform.version and ep-xpf-spi.version properties in bill-of-materials/pom.xml to reduce merge conflicts.5‑Dec‑2024
852f6a69 Upgraded Quartz from version 2.3.2 to 2.4.0 to address CVE-2023-39017.5‑Dec‑2024
b8d99080 Added cucumber tests to validate Operational Insights JMS responses.5‑Dec‑2024
8b583e5a Fixed issue with ProductDaoImpl#findUidBySkuCode that can cause OpenJPA to read all product skus from the database in rare circumstances.4‑Dec‑2024
b7cd4400 Fixed intermittent failure in Selenium tests due to problems verifying that a user interface element contains the expected value.4‑Dec‑2024
6e24a390 Fixed NullPointerException in Cortex when ep.log.level=TRACE is enabled.4‑Dec‑2024
28e348ba Upgraded Liquibase from version 3.10.3 to 4.8.0.3‑Dec‑2024
16c6a6db Fixed intermittent failure in Selenium tests due to problems obtaining focus on a user interface element.28‑Nov‑2024
e06227fa Build stability improvements.27‑Nov‑2024
cea98a3b Upgraded commons-io from version 2.8.0 to 2.14.0 to address CVE-2024-47554.26‑Nov‑2024
e76cd2f2 Fixed intermittent failure in Selenium tests due to problems typing into text boxes.25‑Nov‑2024
60e2fcb4 Fixed Import/Export to ensure that the necessary product search indexes are rebuilt when base amounts are updated.22‑Nov‑2024
5f4ec80f Improved order hold resolution error handling to ensure that order holds don't get stuck in a pending state.20‑Nov‑2024
9244af32 Added new X-Ep-Follow-Location-Status header to indicate the status of the second resource when followLocation is used.19‑Nov‑2024
fc31f8fb Modified extensions.json requirements so that just the identifier and enabled flag can be specified; all other fields are now optional.19‑Nov‑2024
df671bc5 Changed root link expectations in Cucumber tests to prevent failures if new resources are added.15‑Nov‑2024
c42105d8 Fixed Cortex structured message response when purchase form is submitted with validation errors.12‑Nov‑2024
e492a38e Fixed cart subtotal applied promotions to ensure it only returns the applied 'best of' promotion.6‑Nov‑2024
8aa6c7ab Fixed error handling for shipping option determination so that the actual underlying error is reported rather than a NullPointerException.31‑Oct‑2024
f1e0315a Fixed a NullPointerException that can occur when publishing multi-sku products through the Data Sync Webapp.29‑Oct‑2024
c4c4b20f Upgraded Wiremock from version 2.27.2 to 2.35.1.16‑Oct‑2024
6a168918 Fixed preconditions in core-changelog-2020-08-cleanup-expired-failed-orders-job.xml to avoid potential upgrade error.3‑Oct‑2024
8afad047 Removed support for user-name and user-company fields in JWT metadata payload, which was leading to unique constraint errors in PunchOut.26‑Sep‑2024
2be8349b Fixed issue with Data Sync Webapp where changesets containing base amounts were causing multiple product index notifications to be created and were also holding the base amount objects in memory until the service was restarted.19‑Sep‑2024
3aa51df3 Fixed issue with Cortex attempting to write logs to a folder based on the build machine home folder instead of the runtime machine home folder.14‑Sep‑2024
374bf485 Refactored the Catalog Syndication builders to use AbstractBatchJob instead of Spring Batch, to address lock wait timeout issues during the build process.13‑Sep‑2024
f370b3b2 Fixed issues with the shopper conditions user interface in Commerce Manager where conditions were sometimes duplicated or could not be removed.13‑Sep‑2024
8700c67c Upgraded Tomcat version from 9.0.85 to 9.0.90.13‑Sep‑2024
dfe23b70 Build stability improvements.10‑Sep‑2024
087bd379 Fix for NullPointerException that can occur if looking up a non-existent compound GUID with CategoryLookup#findByCompoundCategoryAndCatalogCodes.29‑Aug‑2024
bf481b59 Consolidated all Awaitility dependencies from version 2.0.0 to 3.1.6.26‑Aug‑2024
05bc35de Updated the Log4j configuration for all services to ensure that log file sizes are limited by using a fixed window rolling policy.26‑Aug‑2024
b42c12cc Fixed issue where the parentCategoryCodes field is not populated in the SOLR index for linked categories.25‑Aug‑2024
2319c8fb Fixed issue with logging of some Catalog Syndication failures.19‑Aug‑2024
53fa897d Fixed Catalog Syndication cucumber test stability issue.17‑Aug‑2024
2e2de84a Fixed issue with SKU selection dialog not allowing users to search after clicking the clear button.15‑Aug‑2024
3447fbed Build stability improvements.14‑Aug‑2024
658f4221 Fixed intermittent failure in Order search for failed order Selenium test.7‑Aug‑2024
d50488f8 Added a Liquibase custom change class for adding new setting definitions and setting values.6‑Aug‑2024
3f1c9e0c Updated catalog syndication projection rebuild process to better utilize Spring Batch and avoid long database record locks.31‑Jul‑2024
5271d36c Fixed out of memory error that can occur on the Batch Server if database contains a large number of TCUSTOMERCONSENT records.30‑Jul‑2024
34704cec Fixed issue where parent-widget-id and widget-type attributes on a table row were not properly set after a table is updated. This could lead to Selenium test issues.26‑Jul‑2024
5c5cf1b4 Fixed all query strings defined on beans for Catalog Syndication JpaPagingItemReader instances to ensure they have an ORDER BY clause.25‑Jul‑2024
0cc3c999 Improved Oracle reset-db script to ensure that the tablespace is created automatically.18‑Jul‑2024
eee6cec1 Improvements to Operational Insights exception handling when an exception is thrown during cache inspection.17‑Jul‑2024
0851e11f Removed line from com.elasticpath.cmclient.core/plugin.xml that caused the XML to be invalid.20‑Jun‑2024
7277b0ef Fixed issue with Commerce Manager initialization that can occur if several initial requests are received concurrently.19‑Jun‑2024
a94cde24 Added exclusion on Spring Framework dependencies within ext-commerce-engine-wrapper to ensure that Spring dependencies aren't accidentally embedded in the bundle.19‑Jun‑2024
274260d3 Fixed issue where CouponUsageLimitValidator doesn't properly handle some coupon-related issues.18‑Jun‑2024
f6f02ac4 Added database index on name and state_code fields of the TCHANGESET table to address performance issue in the Automated Imports Accelerator.12‑Jun‑2024
dc9e0b21 Fix for potential race condition around CategoryLookup and CategoryService load tuners which can cause errors about unloaded fields.10‑Jun‑2024
04ca3016 Fix to avoid retrying the post capture checkout steps if there is an exception thrown.7‑Jun‑2024
b7eaf02f Fixed issue for scenario when multiple customer records have the same username for different stores, the wrong customer record could be selected during authentication.6‑Jun‑2024
918893a1 Fix for intermittent Selenium test failure "Error forwarding the new session Empty pool of VM for setup".4‑Jun‑2024
0a984195 Fixed intermittent Selenium test failures related to long generated catalog entity names.4‑Jun‑2024
269dc882 Fixed intermittent Selenium test failures related to the "Promotion Search With Quotes" test.2‑Jun‑2024
7054b225 Removed check from Commerce Manager and Batch Server health checks that verifies that search server is reachable. This was causing health checks to fail incorrectly in some circumstances.29‑May‑2024
99cb2f42 Improved H2DataSourceInitializerImpl to prevent H2 database snapshots from being corrupted when multiple tests are run concurrently.27‑May‑2024
9c4c8756 Upgraded solr-core from 8.11.1 to 8.11.3 to address CVE-2023-50298, CVE-2023-50291, and CVE-2023-50292.27‑May‑2024
95e05e84 Changed "Less shipment discount" on Commerce Manager shipment summary to always appear as black.24‑May‑2024
4a8f8896 Liquibase fix for "Improved performance of case-insensitive queries involving store code" to convert TSHOPPER.STORECODE to upper case and add foreign key constraint.23‑May‑2024
12540461 Build stability improvements.15‑May‑2024
9c6b3466 Updated activemq-kahadb-store from version 5.14.3 to 5.17.6.15‑May‑2024
9b9304f9 Upgraded Jetty from 9.4.44.v20210927 to 9.4.54.v20240208 to address CVE-2024-22201, CVE-2023-44487, CVE-2023-36479, CVE-2023-26049, CVE-2023-26048, and CVE-2022-2048.14‑May‑2024
86fdeb19 Separated product and product type caching to reduce product cache memory use by 30-60%.14‑May‑2024
6a33e940 Removed duplicate localization property key in email.properties that was causing confusion.14‑May‑2024
87576ca1 Added a check at Search Server startup to delete compiled Drools records if they are invalid due to being compiled with an older version of Drools.5‑May‑2024
8801f90d Changed ep-test-application dependencies to test scope to ensure that test artifacts don't end up in the compiled WAR files.29‑Apr‑2024
74aedfb2 Refactored core-changelog-2021-01-data-fields-as-json-clob.xml to make it run 20-30X faster on PostgreSQL databases.29‑Apr‑2024
4f9f522b Migrated fusesource mqtt-client 1.3 to activemq-mqtt 5.17.6 to address CVE-2019-0222.17‑Apr‑2024
95951dab Upgraded hibernate-validator from 6.0.20.Final to 6.2.0.Final to address CVE-2023-1932.17‑Apr‑2024
8de1abc9 Fixed issue with promotion rules never executing in Cortex if the compiled rules don't exist in the database on the first attempt to load them.15‑Apr‑2024
48c5276f Fixed exception handling around attribute value types.15‑Apr‑2024
4eeb5458 Modified default cache TTL for checking promotion updates from 60 minutes to 5 minutes so that promotion changes are reflected more quickly in Cortex.15‑Apr‑2024
e2462b90 Allow Operational Insights clients to override service response wait time by setting serviceResponseWaitTime query parameter.12‑Apr‑2024
b59798bb Build stability improvements.12‑Apr‑2024
80272d21 Fixed more issues with Helix exception handling where the stack trace can be lost.11‑Apr‑2024
3ef31a35 Fixed issue with Cortex writing some debug logs to standard out, regardless of the logback.xml settings.10‑Apr‑2024
01889e48 Fixed OSGi split package issue for org.apache.commons.fileupload packages.9‑Apr‑2024
85397405 Build stability improvements.8‑Apr‑2024
132806b8 Improved exception handing around customer creation logic to ensure that root cause is properly logged.5‑Apr‑2024
0059a95d Excluded htrace-core4 from transient dependencies which contains vulnerable shaded copy of jackson-databind 2.4.0.5‑Apr‑2024
73ca222b Fixed issue with the ActiveMQ console showing an error when accessed on a local developer machine.25‑Mar‑2024
a52bd8e4 Fixed potential race condition that can cause payment provider configuration property values to be returned as empty.22‑Mar‑2024
5db79d7f Upgraded esapi from 2.5.2.0 to 2.5.3.1 to address WS-2023-0429.21‑Mar‑2024
252343aa Additional performance improvement to avoid creating unnecessary shopper records when the x-ep-account-shared-id header is set in Cortex.21‑Mar‑2024
53c1f36e Performance improvement to avoid creating unnecessary shopper and shopping cart records when the x-ep-account-shared-id header is set in Cortex.20‑Mar‑2024
2e0176a8 Fixed potential race condition that can cause product/sku/category attribute values to be returned as empty.18‑Mar‑2024
2669bd0a Fix for Operational Insights "tomcat-*" fields returning values for the health check connector instead of the primary connector.18‑Mar‑2024
6b36a6c6 Upgraded Tomcat version from 9.0.50 to 9.0.85 to address multiple vulnerabilities.18‑Mar‑2024
07d3516e Upgraded javax.el from 3.0.0 to 3.0.4 to address CVE-2021-28170.18‑Mar‑2024
e2aab97e Fixed issue where a selling context condition that uses "not matching" or "not containing" incorrectly evaluated to false if the key was not present in the tagset.13‑Mar‑2024
6c19dc4b Upgraded postgresql from 42.4.3 to 42.4.4 to address CVE-2024-1597.12‑Mar‑2024
a087f23a Upgrade Drools from 7.6 to 7.74.1 to address CVE-2022-1415.12‑Mar‑2024
e2cb1a1b Migrated jstl 1.1.2 and 1.2 to taglibs-standard-impl 1.2.3 to address CVE-2015-0254.12‑Mar‑2024
5b23f121 Fixed intermittent failure in the AccessTokenDtoTransformerTest.testTransformToOAuth2AccessToken unit test.7‑Mar‑2024
08b2972b Disabled JMX for Cortex and Integration Server in Cucumber tests to avoid port conflicts.4‑Mar‑2024
68dcf342 Removed nekohtml dependency to address CVE-2022-29546, CVE-2022-28366, and CVE-2022-24839.1‑Mar‑2024
2b6e6350 Upgraded Apache Shiro from 1.12.0 to 1.13.0 to address CVE-2023-46749.27‑Feb‑2024
86ad480e Upgraded wiremock from 2.23.2 to 2.27.2 to address CVE-2021-23369.23‑Feb‑2024
0857bb8c Upgraded json-path from 2.6.0 to 2.9.0 to address CVE-2023-51074.22‑Feb‑2024
19b75e00 Upgraded poi from 4.0.1 to 4.1.1 to address CVE-2019-12415.22‑Feb‑2024
2559e561 Upgraded antisamy from 1.7.4 to 1.7.5 to address CVE-2024-23635.21‑Feb‑2024
c083eba7 Upgraded commons-net to version 3.9.0 to address CVE-2021-37533.21‑Feb‑2024
67434863 Upgraded commons-configuration2 from version 2.1.1 to 2.8.0.20‑Feb‑2024
06a18fba Upgraded mysql-connector-java from 8.0.30 to 8.2.0 to address vulnerability CVE-2023-22102.20‑Feb‑2024
9cc02ac1 Upgrade htmlunit from 3.0.0 to 3.9.0 to address CVE-2023-49093.19‑Feb‑2024
24d9cae0 Upgraded htmlunit from 2.70.0 to 3.0.0 to address CVE-2023-26119.19‑Feb‑2024
7cf1bf0e Upgraded logback from version 1.2.10 to 1.2.13 to address vulnerability CVE-2023-6481.19‑Feb‑2024
fc82ae7a Updated failsafe plugin to use alphabetical ordering instead of default filesystem ordering.15‑Feb‑2024
6e99620f Upgraded junit from 4.12 to 4.13.1 to address CVE-2020-15250.15‑Feb‑2024
2facd0c3 Upgraded ant from 1.7.1 to 1.10.14 to address CVE-2020-11979.15‑Feb‑2024
e3b88b7e Upgraded velocity from version 1.6.2 to 2.3 to address CVE-2020-13936.15‑Feb‑2024
e573dcde Upgraded postgresql from 42.4.1 to 42.4.3 to address CVE-2022-41946.14‑Feb‑2024
bb42eb96 Upgraded postgresql from 42.3.3 to 42.4.1 to address CVE-2022-31197.14‑Feb‑2024
e23f02af Fixed issue with ESAPI bundle startup after upgrading ESAPI from 2.4.0.0 to 2.5.2.0.14‑Feb‑2024
305d06c2 Upgraded commons-fileupload from 1.4 to 1.5 to address CVE-2023-24998.14‑Feb‑2024
ffda427a Improved JMS-related test reliability.13‑Feb‑2024
a5aef181 Upgraded guava from 31.1-jre to 32.0.1-jre to address CVE-2023-2976.13‑Feb‑2024
dd5bcd88 Upgraded jsoup from 1.14.2 to 1.15.3 to address CVE-2022-36033.13‑Feb‑2024
e925e601 Upgraded jsoup from 1.8.3 to 1.14.2 to address CVE-2021-37714.13‑Feb‑2024
53bd1b18 Upgraded pf4j from 3.6.0 to 3.10.0 to address CVE-2023-40828.12‑Feb‑2024
7456cd25 Upgraded jackson-databind from 2.13.4 to 2.16.1 to address CVE-2022-42003.12‑Feb‑2024
467b0131 Upgraded ESAPI from 2.4.0.0 to 2.5.2.0 to address WS-2023-0388.12‑Feb‑2024
fd36ce17 Upgraded json-smart from 2.4.7 to 2.4.10 to address CVE-2023-1370.9‑Feb‑2024
ce1d9fef Upgraded json from 20220924 to 20231013 to address CVE-2023-5072.9‑Feb‑2024
4c91942d Upgraded ESAPI from 2.3.0.0 to 2.4.0.0 to address CVE-2022-28366 and CVE-2022-29546.9‑Feb‑2024
4bd7904e Improved how ClasspathResourceLoader is initialized to prevent a possible memory leak related to Velocity email rendering.9‑Feb‑2024
aae400f3 Upgraded protobuf-java from 3.11.0 to 3.16.3 to address CVE-2022-3509 and CVE-2022-3171.9‑Feb‑2024
1fbafab5 Fix for race condition that can occur if a user posts multiple requests to the registration form concurrently. This change ensures that only a single authentication record is created in this circumstance.8‑Feb‑2024
52dbd16f Upgraded xerces from 2.12.0 to 2.12.2 to address CVE-2022-23437.7‑Feb‑2024
236343e0 Upgraded antisamy from 1.6.7 to 1.7.4 to address CVE-2023-43643.7‑Feb‑2024
fcc31173 Fix to avoid JMX "port in use" conflicts in cargo with multi-threaded builds.7‑Feb‑2024
38b95411 Upgraded xstream from 1.4.19 to 1.4.20 to address CVE-2022-41966.6‑Feb‑2024
357cb8d9 Resolved "Unable to find [appName]" error during Cortex startup.26‑Jan‑2024
b5dd04d6 Fixed Cortex permission error that can occur if x-ep-account-shared-id header is set when reading accounts associated to the current user.17‑Jan‑2024
19d1f06f Optimization to eliminate unnecessary TSHOPPINGITEMRECURRINGPRICE queries when a shopping cart is retrieved.16‑Jan‑2024
8616b281 Optimization to eliminate unnecessary queries to update cart item last modified date when a shopping cart is persisted.11‑Jan‑2024
f69cada6 Changed sortattributes link to static instead of conditional to remove unnecessary extra product search when using the offersearch resource.12‑Dec‑2023
2a4b488d Added null check in SolrQueryFactory to avoid NullPointerException if an expected attribute key does not exist.11‑Dec‑2023
7f5e2623 Fixed Cucumber tests that fail if test run order is changed.11‑Dec‑2023
dccf1330 Updated individual-settings.xml to use secure Nexus URLs.11‑Dec‑2023
1308a5c9 Upgraded shiro-core from 1.9.1 to 1.12.0 to address CVE-2023-34478.1‑Dec‑2023
31044d9d Fixed product lookup cache population bug that can lead to unnecessary database queries.1‑Dec‑2023
dc9b301a Fixed issues with Helix exception handling where the stack trace can be lost and the reference number shown to the user doesn't match the logged reference number.29‑Nov‑2023
cc86861e Fixed issue that can cause Query Analyzer to fail if default encoding type is not set to UTF-8.29‑Nov‑2023
a6b5d432 Upgraded Jersey version from 2.27 to 2.40 in api-platform to match ep-commerce version.27‑Nov‑2023
8985b205 Fix for NullPointerException that can occur if looking up a non-existent category GUID with CategoryLookup#findByGuid.23‑Nov‑2023
be9b2baa Fix for intermittent failure in "Payment Configuration" tests.23‑Nov‑2023
62aed2a2 Added non-null constraint on customer authentication username field.20‑Nov‑2023
5c86f8ce Fixed Cortex server error that occurs when reading applied promotions on a shopping cart where one or more line items has no price.20‑Nov‑2023
793e8c0c Performance improvement to eliminate duplicate shopper and customer queries when zooming into wishlistmembership link.17‑Nov‑2023
bccaec15 Upgraded shiro-core from version 1.8.0 to 1.9.1 to address CVE-2022-32532.16‑Nov‑2023
73b22f56 Fix for error that can appear when doing search operations in Commerce Manager if the COMMERCE/SEARCH/boosts system configuration setting is specified.10‑Nov‑2023
49cdfbf1 Upgraded ActiveMQ from version 5.16.4 to 5.16.7 to address CVE-2023-46604.8‑Nov‑2023
7fe5fc40 Replaced legacy SOLR LRUCache with CaffeineCache.8‑Nov‑2023
79375848 Fixed a failure in the wishlistmembership resource if a wish list contains the same product sku more than once.7‑Nov‑2023
a5d5c9bd Modified the behaviour of data cleanup jobs to process at most X records per scheduled execution. The value of X is defined by the associated COMMERCE/SYSTEM/{batch job name}/batchsize system configuration setting.6‑Nov‑2023
cdd5fa78 Fixed issue with PostgreSQL initialization scripts to ensure that they don't attempt to drop and recreate high-privilege user.17‑Oct‑2023
13af96b0 Fixed PostgreSQL initialization scripts so that they work properly when a low-privilege database user is specified in the data.population.username data population parameter.17‑Oct‑2023
79ee199b Fixed issue with selected disabled radio buttons and checkboxes being invisible on the shopping cart promotion wizard.6‑Oct‑2023
cd9b475a Support for lazy loading expensive Extension Point Framework entity fields.3‑Oct‑2023
805061f4 Added ability to use quotes to request an exact match on each individual word when searching for products and skus in Commerce Manager.28‑Sep‑2023
cedc22ee Fixed issue with customer CSV imports still treating shared ID as case-sensitive.26‑Sep‑2023
ce00451c Added Vary header to Cortex response to prevent browser cache issues.19‑Sep‑2023
d63f928e Removed unnecessary smallint type alteration in the PostgreSQL initialization scripts.18‑Sep‑2023
7cc87e85 Fixed issue where price list drop-down in Commerce Manager product editor was empty unless user had access to all catalogs.15‑Sep‑2023
f1fe3544 Fixed issue where physical product inventory was not properly released if an order failed.14‑Sep‑2023
835158f1 Fixed issues in set-ep-versions.sh script and Maven settings used for builds.13‑Sep‑2023
cce5f18e Standardized Cucumber test configuration across modules.12‑Sep‑2023
bace12ad Removed problematic and unnecessary ep-core-cucumber-itests module.11‑Sep‑2023
921e8f29 Fixed issue with offer price range not including bundle price adjustments.11‑Sep‑2023
80f81553 Added non-null constraint to TCUSTOMERAUTHENTICATION.USERNAME to ensure that invalid customer authentication records are not created.11‑Sep‑2023
735ff6fe Fix for "Parent cannot be changed on an existing customer record" error when importing customers.11‑Sep‑2023
d68756ae Fixed Commerce Manager issue with sorting accounts by business number where duplicate records were appearing.7‑Sep‑2023
ac32d87c Improved Liquibase changeset 2023-06-build-status-unique-index to ensure that duplicate records are cleaned up before adding the unique constraint.6‑Sep‑2023
d51330e7 Fixed an issue where a large number of queries were being executed to retrieve customer, product, product sku, and category attribute values.4‑Sep‑2023
cd5025a0 Fix for logged Correlation ID value that is incorrect for requests to OAuth endpoints.31‑Aug‑2023
e0924c7b Modified the "items in shopping cart" promotion conditions to ignore cart items that were added by promotions.28‑Aug‑2023
5999b40c Fixed bug in verifyDebugMessage method used by Cucumber tests.24‑Aug‑2023
6d594c59 Fixed several coupon-related named queries that were using the unindexed coupon_code field instead of the indexed coupon_code_upper field, leading to table scans.24‑Aug‑2023
3af997cc Fixed a potential race condition in CachedSettingsReaderImpl that can cause errors during Cortex startup.17‑Aug‑2023
d26b0595 Performance improvement for selling context evaluation that replaces the Groovy implementation for a faster Java equivalent.28‑Jul‑2023
b8a5ce12 Fixed an issue where a NullPointerException can occur when deleting a cart line item that triggered a free item promotion.27‑Jul‑2023
b7f46333 Added caching for product association lookups to improve performance.20‑Jul‑2023
c654a1b5 Changed Cortex database connection pool max size from 150 to 250 to ensure that it matches the default Tomcat max thread pool.19‑Jul‑2023
9089fea3 Fixed issue with editing promotions without shopper conditions that causes a selling context to be created and then immediately deleted in the database.19‑Jul‑2023
a88cecf9 Added unique constraint on TINDEXBUILDSTATUS.INDEX_TYPE to prevent search indexing errors due to invalid record duplication.10‑Jul‑2023
a625ff23 Added annotations to the code to suppress false positive SonarQube issues.7‑Jul‑2023
445c8571 Fixed NoClassDefFoundError that can occur when Operational Insights tries to determine cache sizes.5‑Jul‑2023
983c1907 Fixed issue with Operational Insights not returning Tomcat metrics in deployed environments.3‑Jul‑2023
a8f7ac00 Added missing implementations for "not matching" and "not containing" selling context tag operators.29‑Jun‑2023
58a4a413 Fix for potential "output value too large" error when running changeset PB-8894-CLOB-order-data-oracle-mysql on Oracle.28‑Jun‑2023
3dc16d3f Fixed an issue with Object Auditing where audit records show changes that were not applied with the same old and new value.26‑Jun‑2023
5ec93c99 Added ability to specify wildcard (*) character when searching for products and skus in Commerce Manager.31‑May‑2023
a65276fc Ensure that Cortex bundles are always loaded in the correct order to ensure that cache configuration is properly recognized.30‑May‑2023
8b374f13 Added ability for business users to manually set shared ID when creating an account in Commerce Manager.24‑May‑2023
cb46a382 Fix for encountered unmanaged object error when publishing bundles with sku constituents through DST.22‑May‑2023
75f25a0f Added Import/Export validation check to prevent adding a category with a parent assigned to itself.18‑May‑2023
c1b2608c Refactored core-changelog-2021-01-data-fields-as-json-clob.xml to make it run 20-30X faster on MySQL and Oracle databases.18‑May‑2023
48d66911 Fix for invalid number error that occurs on Oracle in the 2020-08-flatten-order-sku-tree-for-better-performance changeset.17‑May‑2023
511c12d0 Fix for Can't DROP FK_OPAY_ORDER error that can occur when migrating from EPC 7.6 to newer versions.17‑May‑2023
18b0abd3 Fix for java.lang.IllegalStateException: Product futureProduct is not linked to any categories error during search indexing.21‑Apr‑2023
6ea9d695 Allow additemstocartform to be used to add items to cart with optional cart item modifiers.19‑Apr‑2023
b322b58d Modified how promotion and price list assignment start and end dates are stored to allow queries to easily exclude expired records.13‑Apr‑2023
353b7d0a Fixed several Operational Insights metrics that were broken for customers using PostgreSQL.3‑Apr‑2023
74cb01f3 Improved Operational Insights error handling when hardware metrics calls generate a NoClassDefFoundError.20‑Mar‑2023
e600a75f Fixed potential NullPointerException when requesting Operational Insights report if no services respond with results.20‑Mar‑2023
b1c33f47 Added new cleanup job for old and orphaned order payment data.6‑Mar‑2023
43bebacb Improved parallelization of Import/Export Cucumber tests to generate directories using a UUID instead of a sequential number to avoid potential conflicts.5‑Mar‑2023
0dc9ce30 Added @SupportsMultiplePartialCharges annotation that allows payment plugins to indicate if the payment gateway supports multiple partial captures against a single pre-auth.10‑Feb‑2023
42c3aefd Resolved local Cortex startup warning The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "".10‑Feb‑2023
bb00d223 Reduced the amount of logging produced when running Selenium tests.8‑Feb‑2023
7238a252 Fix for intermittent test failures in PaymentConfigurations Cucumber tests.8‑Feb‑2023
41e4db79 Fixed issue where a free item is not automatically removed if the promotion becomes ineligible.7‑Feb‑2023
d70308e2 Fixed issue with changeset list resetting to page one when locking or publishing changesets.7‑Feb‑2023
229792f3 Added support for quartz.timezone JVM parameter in Batch Server to define the timezone used by Quartz jobs.7‑Feb‑2023
bb679ab6 Fix for intermittent Selenium test failures due to thread safety issues.6‑Feb‑2023
2e8a4700 Fixed incorrect logging of successful / skipped messages in batch jobs after failure.6‑Feb‑2023
a355f62f Fixed issues with the skuOptions and modifierGroups options in the product type load tuner.30‑Jan‑2023
82aa5d03 Fix for "Device is disposed" error in Commerce Manager.27‑Jan‑2023
93d5cbe1 Fix for intermittent failure in "Import Data Policies with existing Data Policies" test.26‑Jan‑2023
13033b38 Increased "Remove Abandoned Monitor" timeout for all services.25‑Jan‑2023
74cea979 Fix for potential deadlocks on shopping cart last modified date updates.24‑Jan‑2023
c96b0611 Fixed ability to run Cucumber integration tests on Windows developer machines.24‑Jan‑2023
42306710 Modified Product Association export mechanism to significantly improve performance.18‑Jan‑2023
e794f917 Removed the failover protocol from the JMS broker URL in accordance with our policy of discouraging use of ActiveMQ high availability mode.18‑Jan‑2023
26c4f3a4 Fix for NoClassDefFoundError: org/slf4j/IMarkerFactory error when the first Cortex request is received.17‑Jan‑2023
66dea196 Added additional address data point fields and a new CUSTOMER_ALL_ADDRESSES data point location for data protection.16‑Jan‑2023
7022e221 Correlation ID support.16‑Jan‑2023
34a051ca Fixed issue with empty facet name when assigning available facets to a store in Commerce Manager.9‑Jan‑2023
2812c3af Wherever an order is marked failed, there should always be a reason added as an order note.5‑Jan‑2023
4c24112b Returned default JMS max active session per connection size back to 25.15‑Dec‑2022
33da8ae7 Upgraded ehcache-openjpa from version 0.2.0 to 0.2.0-ep1.0 to address potential ConcurrentModificationException.15‑Dec‑2022
883b349f Fix for intermittent "Create category in existing category" selenium test failure.15‑Dec‑2022
b3360809 Improved extensions.json support to allow extensions to be enabled.8‑Dec‑2022
ae5e4caf Addressed XML parse warning in search server logs during startup on local developer machines.7‑Dec‑2022
15a26563 Addressed api-platform build issue on M1 MacBooks.5‑Dec‑2022
b2ea254d Include all caches in Operational Insights API response, instead of just select caches.30‑Nov‑2022
97b68ee6 Modified coupon table to store coupon codes in uppercase so we can do a case insensitive lookups without a table scan.29‑Nov‑2022
7d61437f Fixed content root error appearing in IntelliJ for some modules.28‑Nov‑2022
1eab104a Added caching to the isInCategory method to improve performance of promotions and price lists that are conditional on a product being in a category.25‑Nov‑2022
41e61af8 Upgraded hibernate-validator from version 5.4.3.Final to 6.0.20.Final to address CVE-2020-10693.25‑Nov‑2022
5530f7e9 Added caching of payment provider configurations to improve performance.25‑Nov‑2022
c1c12d5b Upgraded groovy-all from version 2.4.15 to 2.4.21 to address CVE-2020-17521.24‑Nov‑2022
2e644556 Fixed an issue where a free item promotion triggered by a coupon was not activated.24‑Nov‑2022
ff3c1558 Added AddProductSkuToCartValidationBridge class to ep-core for use by accelerators and customizations.23‑Nov‑2022
b6e038b7 Upgraded ESAPI from version 2.1.0.1 to 2.3.0.0 to resolve CVE-2022-23457.23‑Nov‑2022
cbe4b944 Fixed issue with DST cache that is not cleared after failed synchronizations, which can lead to errors in subsequent synchronization attempts.17‑Nov‑2022
966bfcf3 Fixed error in JWT authentication if token does not contain either sub or account.16‑Nov‑2022
86c44e41 Upgraded spring-security-oauth2 from version 2.3.8.RELEASE to 2.5.2.RELEASE to resolve CVE-2022-22969.16‑Nov‑2022
dc9b9c35 Fix for search server race condition that can prevent indexes from building.15‑Nov‑2022
a74ff762 Changed log level in PriceListPriceScoreDocComparator to prevent logs from being flooded during search indexing.15‑Nov‑2022
326f9574 Performance improvement to ensure that if StoreProductService#wrapProduct is invoked on a wrapped product, that it isn't double wrapped.14‑Nov‑2022
0fb7b1d8 Removed duplicate "Assign Customer Segments" permission appearing in Commerce Manager.11‑Nov‑2022
aa63ae3a Upgraded httpclient from version 4.5.5 to 4.5.13 to resolve CVE-2020-13956.10‑Nov‑2022
7e0ab52a Upgraded mybatis from version 3.2.3 to 3.5.11 to resolve CVE-2020-26945.10‑Nov‑2022
4aa02a15 Modified EpEmailValidator to accept empty values to be consistent with other validators.9‑Nov‑2022
aaa5f942 Upgraded json-path from version 2.4.0 to 2.6.0.7‑Nov‑2022
0f6c080d Upgraded jdom from version 1.1.3 to 2.0.6.1.7‑Nov‑2022
45afc4ea Fix to populate the cart item modifier fields in the OrderSkuDTO object that is passed to payment plugins.4‑Nov‑2022
04b44d5f When checking out a cart that contains a coupon that has run out of uses, block checkout instead of removing the coupon code automatically.4‑Nov‑2022
3f318b4b Upgraded mysql-connector-java version from 8.0.25 to 8.0.30.3‑Nov‑2022
8b38f02a Upgraded xstream version from 1.4.18 to 1.4.19 to address CVE-2021-43859.3‑Nov‑2022
fac19330 Upgraded json library version from 20170516 to 20220924.3‑Nov‑2022
37bd5d26 Returned default JMS connection pool size back to 25.31‑Oct‑2022
97d480dd Resolved several warnings in the logs about use of deprecated settings.31‑Oct‑2022
ad15a9fd XPFEntityUtil#getAttributeValueByKey threw a NullPointerException instead of returning Optional.empty if an attribute value wasn't found for the passed locale.28‑Oct‑2022
30c8a7cf Fixed issue where the price list drop-down on the product bundle price adjustments tab isn't populated.28‑Oct‑2022
407e40eb Fixed issue preventing email notifications from being sent when a changeset publish completes.27‑Oct‑2022
00da4590 Fix for the 2020-08-remove-gender changeset to ensure that it doesn't unintentionally delete unrelated localized properties.27‑Oct‑2022
94fd689d Fixed issue where cart item modifier fields were sometimes immutable, preventing customizations from modifying them.27‑Oct‑2022
453fa60c Added identifier Cortex link on user profile that returns shared ID.26‑Oct‑2022
e626df24 Enabled application caching in search and integration server.26‑Oct‑2022
990af455 Added a timeout on Helix resource operations to ensure that stuck threads are released. Timeout defaults to 30 secs but can be overridden with relos.prototype.operation.timeout JVM parameter.24‑Oct‑2022
58490cd9 Upgraded commons-text from version 1.9 to 1.10 to address CVE-2022-42889.24‑Oct‑2022
10bcc1f9 Fixed potential NullPointerException during Batch server startup, caused by the way that configuration settings were wired into some batch job classes.24‑Oct‑2022
e65427b6 Fixed an issue where adding a dependency within an embedded extension on any bean that has a direct or transitive settings:setting dependency could cause a circular dependency.21‑Oct‑2022
32fcbbc7 Upgraded PostgreSQL JDBC driver from version 42.2.23 to 42.3.3.21‑Oct‑2022
2d4a96b3 Fixed issue with Utility#waitUntilAllOutboxMessagesConsumed throwing exceptions when Selenium tests were run.20‑Oct‑2022
1c3fc6fe Changed customer shared ID to be case insensitive on PostgreSQL and Oracle to match MySQL behaviour.20‑Oct‑2022
4141da34 Replaced libsass-maven-plugin to resolve build errors on Mac M1 machines.19‑Oct‑2022
18e04fba Upgraded Logback and Slf4j versions in api-platform so they match ep-commerce.19‑Oct‑2022
460755d1 Upgraded commons-validator from version 1.6 to 1.7. This allows Cortex to recognize recent new DNS top-level domains when validating email addresses.18‑Oct‑2022
1f64dafa Improved performance of case-insensitive queries involving store code.17‑Oct‑2022
641cb0c8 Upgraded Spring Batch from version 4.0.4 to 4.2.3.28‑Sep‑2022
2bdb0069 Fixed an issue where a promotion is returned in appliedPromotions to more line items than expected.28‑Sep‑2022
5578b042 Improvements to Selenium test suite run time.27‑Sep‑2022
ef1f7ec5 Improved upgrade performance of the PB-8250 Migrate Data to USERNAME Liquibase changeset on MySQL.26‑Sep‑2022
44af3892 Modified Commerce Manager product and category display name localization so that only intentionally specified values are displayed and saved.26‑Sep‑2022
86e7b2a2 When importing a product with localized attribute values that already exist, attempting to set a more specific attribute value locale incorrectly updated the "broader" locale value.22‑Sep‑2022
15df0bd7 Fixed race condition in IndexNotificationProcessor preventing index notifications from being deleted properly.22‑Sep‑2022
0fad55a3 Removed all Direct Web Remoting library dependencies.22‑Sep‑2022
a680b043 Upgraded Logback from version 1.2.3 to 1.2.10.21‑Sep‑2022
8dfbdf51 Updated Maven Minimal configuration so that changes to ext-cm-libs trigger the correct subprojects.20‑Sep‑2022
ae6fb22e Fixed issue with product not being automatically added to cart by free item promotion action.19‑Sep‑2022
74f02eab Fixed issue where promotion date range was being checked using application timezone instead of database timezone.16‑Sep‑2022
62cf4b5d Fixed an issue where creating an exchange can result in two payments being collected from the customer.13‑Sep‑2022
6525f37d Improvement to cart line item promotion allocation to allow code to determine how much of a discount the promotion applied to each line item.13‑Sep‑2022
a333b922 Fixed issues with custom sort attributes that used the date data type.9‑Sep‑2022
378e1ca1 Build stability improvements.8‑Sep‑2022
6d9955c7 Refactored additional logging calls from using Log4j2 classes to SLF4j classes to allow these log messages to appear properly in Cortex (which uses Logback for logging).7‑Sep‑2022
32c7faec Separated indexing pipelines by type to ensure that long queues in one pipeline doesn't delay indexing in another.6‑Sep‑2022
6c9bd9ea Upgraded plexus-utils from version 2.0.4 to 3.0.24.5‑Sep‑2022
fa523e12 Upgraded guava from version 24.1.1-jre to 31.1-jre.5‑Sep‑2022
a5b3f24c Upgraded antisamy from version 1.5.8 to 1.6.7.1‑Sep‑2022
87b16a4e Fixed issue with payment framework charges that could cause a successful operation to be treated as a failure, and retried.31‑Aug‑2022
57cde9d5 Replaced the single-threaded taskExecutor used by the blueprint-extender with a configurable ThreadPoolTaskExecutor version. This allows the extender to work in parallel on the bundles resulting in faster Cortex boot time.31‑Aug‑2022
10537c38 Disabled an intermittently failing Selenium test.30‑Aug‑2022
4b4e88fc Disabled an intermittently failing Selenium test.25‑Aug‑2022
d2bb1f31 Upgraded Jackson from version 2.12.3 to 2.12.7 to address jackson-databind security vulnerability.25‑Aug‑2022
fa8b3ef2 Fixed optimistic locking error that would occur when attempting to edit the same system configuration setting more than once in a Commerce Manager session.22‑Aug‑2022
8509949c Removed Product Recommendations job to avoid OptimisticLockingExceptions in DST.19‑Aug‑2022
cc31ac2e Fixed a scenario where the Integration Server product lookup cache could be populated with a partially loaded product object, which led to NullPointerExceptions.19‑Aug‑2022
3d49027e Updated the order item detail table in Commerce Manager to allow values to be copied into the clipboard on completed orders.18‑Aug‑2022
577df32b Added multiple security headers to Cortex responses: Content-Security-Policy, Referrer-Policy, X-Content-Type-Options, X-XSS-Protection18‑Aug‑2022
2124a1f2 Removed duplicate database indexes from the TORDERADDRESS table.18‑Aug‑2022
b1b46d94 Removed checksum validation from 2021-09-create-FK-indices-for-8.0 changeset due to required changes in earlier versions.17‑Aug‑2022
8aa70ede Removed the Top Seller quartz job and corresponding sales count field on products. This job was only intended for use in demos, and was causing optimistic locking errors in the Data Sync Tool.17‑Aug‑2022
2c7f4ad6 Updated Catalog Syndication projection builder to ensure that projection and projection history records are persisted in separate transactions to prevent deadlocks.16‑Aug‑2022
37592cbc Fixed issue with multiple Cortex OSGi bundles exporting the same package, leading to potential instability at startup.16‑Aug‑2022
f0864836 Use embedded web server to reliably serve test mail attachment for Cucumber emailFileAttachments.feature.5‑Aug‑2022
7ce8b9b7 Fixed potential cross-site scripting vulnerability in Cortex Studio when adding a custom entry point.22‑Jul‑2022
c8e4cb30 Modified the coupon service to skip updating coupon usage values for unlimited use coupons to avoid concurrency issues under high load with unlimited public coupons.22‑Jul‑2022
efbf2787 When accessing the Operational Insights API, the response no longer returns a redirect to a different URL. This behaviour was causing issues for environments with multiple Integration Servers behind a load balancer.21‑Jul‑2022
d675fcc6 Refactoring to split 2021-09-create-FK-indices into multiple changesets to simplify backports to earlier versions.21‑Jul‑2022
9746a955 Modified the Commerce Manager promotion wizard sku and product selection dialogs to avoid showing prices, which can be a performance bottleneck.21‑Jul‑2022
17a01e4b Disabled checksum validation on the SUP-1020-customer-search-fields-case-insensitive changeset to account for required changes in backports to earlier versions.19‑Jul‑2022
8306c94a Avoid inventory lookup during search indexing for stores with isDisplayOutOfStock set to true.13‑Jul‑2022
e2ac9608 Changed DBSettingValueRetrievalStrategy so dependencies are more explicit to prevent failures if extensions create a circular dependency.12‑Jul‑2022
b1cb18ae Extracted portions of changeset 2020-08-purge-expired-failed-orders-job-recreate-FKs-with-cascade-delete into separate changesets that are only executed if the TORDERDATA and TORDERITEMDATA tables exist, since they are removed by another patch.12‑Jul‑2022
a98bd0d9 Fixed a performance issue where shopping cart validators were executed twice at checkout.8‑Jul‑2022
4059bf10 When a data sync failure occurs, the log now contains details about which object failed.4‑Jul‑2022
83e93eba Increased the size of the fields used to hold catalog syndication content.4‑Jul‑2022
8c194d87 Fixed issue where Cortex prevented checkout for default shopping carts that were missing cart modifier values.4‑Jul‑2022
471cb383 Fixed issue where users with the same username in different upper/lowercase are treated as separate users on PostgreSQL.23‑Jun‑2022
13af2866 Refactored permission strategies to allow them to lookup a specific identifier rather than requiring them to retrieve every permitted identifier for the user.16‑Jun‑2022
3137fa20 Offer search results can sometimes return the wrong result from the cache.10‑Jun‑2022
cbbee5e3 Fixed issue with extension point proxy that could cause a ClassCastException if an extension is extended.10‑Jun‑2022
cba24ffa Refactored most logging calls from using Log4j2 classes to SLF4j classes to allow these log messages to appear properly in Cortex (which uses Logback for logging).1‑Jun‑2022
f6114979 Improved thread safety around promotion rule compilation.25‑May‑2022
bdfa11f9 Added IDs to anonymous beans in validators.xml.25‑May‑2022
7e0e3531 Removed unnecessary event handler that was loading price lists into memory during authentication.9‑May‑2022
98c8d61f Allow business users to add "not sold separately" products as associations.6‑May‑2022
94549899 Fixed search indexing to allow each index to commit as soon as it is complete instead of waiting for all indexes to complete.4‑May‑2022
7f2c1bbc Fixed issue where cart item modifiers on shopping cart child line items cannot be updated.2‑May‑2022
f4236235 Upgraded ActiveMQ to version 5.16.4 which uses Reload4j instead of Log4j to address several security vulnerabilities.2‑May‑2022
4e92241b Fixed an issue where service logs were not being written to the correct location. They are now always written to [user.home]/ep/logs.29‑Apr‑2022
a4dd4104 Significantly improved the performance of customer, account, and order searches in Commerce Manager. Also fixes several bugs in these searches and adds support for search by billing and shipping address fields.29‑Apr‑2022
836b2650 Changed attribute value LONG_TEXT_VALUE field from CLOB to VARCHAR to prevent JPA from making additional database queries for each attribute value.25‑Apr‑2022
31262109 Extended expiry date for test Commerce Manager passwords to correct test failures.4‑Apr‑2022
da13caf2 Fixed some intermittent Selenium test failures.1‑Apr‑2022
57f2b07c Inject producer template into RelayOutboxMessageBatchProcessor via Spring instead of @EndpointInject annotation.30‑Mar‑2022
bcee841a Fixed boolean datatype for the "deleted" column of the TCATALOGHISTORY table (on PostgreSQL).24‑Mar‑2022
6200a188 Removed ability for tax plugins to modify an item subtotal to avoid bugs in tax plugin implementations.22‑Mar‑2022
7c724e86 Removed the requirement to set the ep.catalog.batch.database.* JVM parameters on the Batch Server for non-MySQL databases. The database type is now detected automatically.17‑Mar‑2022
d486a35b Modified the keyword search functionality to return all matching product skus instead of the default sku for matching products.28‑Feb‑2022
79fc469c Fix for failing email file attachments Cucumber test due to change in place-hold.it URL.22‑Feb‑2022
7ec7d030 Disabled unnecessary dependency retrieval when exporting through Import/Export API to greatly improve performance. Also fixed DIRECT_ONLY flag in exportconfiguration.xml so it correctly excludes associated products from the product export.17‑Feb‑2022
6dafe5d4 Increased the number of primary key sequence values that are retrieved in a batch for additional transactional entities to improve record insert performance.9‑Feb‑2022
95544ad2 Added cucumber tests for fixed issue where the Cortex resource returned no results if the x-ep-account-shared-id header was set.9‑Feb‑2022
5e87b034 Fix for purchase lookup form not finding orders that were placed on behalf of the account that is specified in x-ep-account-shared-id.8‑Feb‑2022
951bba66 Fixed issues with Liquibase scripts that caused an error during data upgrade.7‑Feb‑2022
b21e519a Revert ep-xpf-spi version.7‑Feb‑2022
dbb0c8ff Upgraded Apache SOLR from version 7.4 to 8.11.1.4‑Feb‑2022
0d72c2f9 Upgraded Apache Shiro from 1.3.2 to 1.8.0.4‑Feb‑2022
7dde7dd8 Added ability to set customer username as a data policy data point so that Personally Identifiable Information (PII) data in that field (usually email address) is removed when consent is revoked.1‑Feb‑2022
af7ab40c Modified Cortex to allow it to continue functioning normally if ActiveMQ is overloaded or offline.17‑Jan‑2022
a33020ed Upgraded Log4j2 to version 2.17.1.13‑Jan‑2022
d02c60c6 Allow base amounts to be added/edited/deleted without first adding the price list to the changeset.29‑Dec‑2021
c30440c5 Fixed an issue with AbstractPageObject where it would miss a button’s state change, causing test instability.17‑Dec‑2021
0c37c7ae Upgraded Log4j2 to version 2.15.0 to fix zero-day exploit CVE-2021-44228.17‑Dec‑2021
5d263df3 Fixed issue where the wishlistmemberships Cortex resource returned no results if the x-ep-account-shared-id header was set.10‑Dec‑2021
b16db638Improved upgrade performance of liquibase changeset 2020-05-cart-cleanup-jobs-recreate-FKs-with-cascade-delete.30‑Nov‑2021
8b4d19ea When a promotion can apply to multiple cart line items, this fix ensures that the appliedpromotions resource shows the promotion for all of the applicable line items.25‑Nov‑2021

Changelog Announcements​

Refactored core-changelog-2021-01-data-fields-as-json-clob.xml to make it run 20-30X faster on MySQL and Oracle databases​

The changesets in the core-changelog-2021-01-data-fields-as-json-clob.xml Liquibase file that are used as part of the EPC 8.1 upgrade have been refactored to allow it to upgrade the schema much more quickly on MySQL and Oracle databases. This was done by taking advantage of the JSON_OBJECTAGG function which serializes JSON within the database. However, this function was only added to MySQL in version 5.7.22, so project teams using MySQL must upgrade to at least MySQL RDS version 5.7.22 or MySQL Aurora version 5.7.mysql_aurora.2.11.2 before applying this patch.

Modified how promotion and price list assignment start and end dates are stored to allow queries to easily exclude expired records​

The "Time Conditions" editor has been removed from the Shopping Cart promotions wizard and editor. Now the enable and expiration dates for Shopping Cart promotions appear on the summary tab (or first page of the wizard) consistently with catalog promotions.

This patch includes a Liquibase changeset that will migrate existing start and end dates to the new fields.

Payment instrument data cleanup jobs​

Three new data cleanup jobs have been created to remove old and unused payment instruments from the database.

cleanupOrphanedOrderPaymentGuidsJob searches for order payment records on orders older than a configured age, and sets the payment instrument GUID reference to null (UPDATE TORDERPAYMENT SET PAYMENT_INSTRUMENT_GUID = null WHERE UIDPK IN <list>). This reference is only used for showing the "display name" (usually last 4 digits of the card number) when viewing order history in Commerce Manager. This job runs once per day at midnight, if enabled. This job is configured by the following system configuration settings:

  • COMMERCE/SYSTEM/ORDERPAYMENTCLEANUP/enable controls whether this job is enabled. Defaults to false.
  • COMMERCE/SYSTEM/ORDERPAYMENTCLEANUP/maxHistory controls how many days old an order should be before its order payment references to payment instruments should be cleared. Defaults to 365.
  • COMMERCE/SYSTEM/ORDERPAYMENTCLEANUP/batchSize controls the maximum number of records that should be processed in each job execution.

cleanupOrphanedOrderPaymentInstrumentsJob deletes order payment instrument records on orders older than a configured age (DELETE TORDERPAYMENTINSTRUMENT WHERE UIDPK IN <list>). These records are only needed for operations that require doing a payment reservation using the existing payment method, such as order modification. This job runs once per day at midnight, if enabled. This job is configured by the following system configuration settings:

  • COMMERCE/SYSTEM/ORDERPAYMENTCLEANUP/enable controls whether this job is enabled. Defaults to false.
  • COMMERCE/SYSTEM/ORDERPAYMENTCLEANUP/maxHistory controls how many days old an order should be before its order payment references to payment instruments should be cleared. Defaults to 365.
  • COMMERCE/SYSTEM/ORDERPAYMENTCLEANUP/batchSize controls the maximum number of records that should be processed in each job execution.

cleanupOrphanedPaymentInstrumentsJob deletes payment instrument records that are orphaned (have no incoming references from TORDERPAYMENTINSTRUMENT, TORDERPAYMENT, TCARTORDERPAYMENTINSTRUMENT, and TCUSTOMERPAYMENTINSTRUMENT). This job runs once per day at midnight, and is always enabled. This job is configured by the following system configuration settings:

  • COMMERCE/SYSTEM/PAYMENTINSTRUMENTCLEANUP/batchSize controls the maximum number of records that should be processed in each job execution.

Enabled Application Caching in Search Server and Integration Server​

Until now, Application Caching using EhCache was only enabled for Cortex and the Import/Export tool. Now we’ve also enabled application caching for the Search Server and Integration Server. This significantly improves the performance of search indexing, asynchronous checkout operations, and Integration Server APIs.

With the application cache enabled in Search Server, the number of queries required to index the mobee test store was reduced from ~400,000 to ~50,000.

note

This change can cause some services to return dirty reads; in other words, if a cached result is returned then it might be an out-of-date representation of the object. If certain customizations are sensitive to dirty reads, you can reference the non-caching versions by adding nonCaching prefix to the reference in your service bean definition. For example, references to the storeService bean can be changed to nonCachingStoreService. You can also completely disable application caching for a service by setting the -Dnet.sf.ehcache.disabled=true JVM parameter.

For more information, see Application Caching using EhCache.

Significantly improved the performance of customer, account, and order searches in Commerce Manager​

When the customer SOLR index was removed, the way that Commerce Manager looks up customer details was refactored to lookup customer and account details in the database instead of using SOLR. However, since many of the search fields need to do case-insensitive searches and/or partial matches, database indexes were not being leveraged effectively. This lead to very slow response times when the database contains a large number of user, account, or order records. The search queries have been updated to effectively use the database indexes, even for lookups that are case-insensitive or prefix (searches for results starting with the specified value).

The tables below show the type of search that is used for each search field.

Searchable user fields:

FieldSearch Type
Shared IDExact Match
EmailCase Insensitive Match
UsernameCase Insensitive Match
First NameCase Insensitive Prefix Match
Last NameCase Insensitive Prefix Match
Zip / Postal CodeCase Insensitive Match
Phone NumberCase Insensitive Match
StoreExact Match

Searchable account fields:

FieldSearch Type
Shared IDExact Match
Business NameCase Insensitive Prefix Match
Business NumberCase Insensitive Prefix Match
Phone NumberCase Insensitive Match
Fax NumberCase Insensitive Match
Zip / Postal CodeCase Insensitive Match

Searchable order fields:

FieldSearch Type
Order NumberExact Match
User Shared IDCase Insensitive Match
User First NameCase Insensitive Prefix Match
User Last NameCase Insensitive Prefix Match
User EmailCase Insensitive Match
User Phone NumberCase Insensitive Match
Account Shared IDExact Match
Account Business NameCase Insensitive Prefix Match
Account Business NumberCase Insensitive Prefix Match
Account Phone NumberCase Insensitive Match
Billing Address First NameCase Insensitive Prefix Match
Billing Address Last NameCase Insensitive Prefix Match
Billing Address Phone NumberCase Insensitive Match
Billing Address Fax NumberCase Insensitive Match
Billing Address Zip / Postal CodeCase Insensitive Match
Shipping Address First NameCase Insensitive Prefix Match
Shipping Address Last NameCase Insensitive Prefix Match
Shipping Address Phone NumberCase Insensitive Match
Shipping Address Fax NumberCase Insensitive Match
Shipping Address Zip / Postal CodeCase Insensitive Match
Order StatusExact Match
Shipment StatusExact Match
StoreExact Match
Product SKU CodeExact Match
RMA CodeExact Match

Additionally, the following bugs were fixed:

  • The "Account details" fields on the order search tab now works properly (these fields were being ignored).
  • The "Shipping zip / postal code" field on the order search tab was actually searching for billing zip/postal code.
  • The customer search sort by username was actually sorting by shared ID.
  • The progress indicator in the bottom right corner of Commerce Manager now indicates when a search is in progress.

Changed attribute value LONG_TEXT_VALUE field from CLOB to VARCHAR​

This patch changes the type of the LONG_TEXT_VALUE field in all attribute value tables (TCATEGORYATTRIBUTEVALUE, TCUSTOMERPROFILEVALUE, TPRODUCTSKUATTRIBUTEVALUE, and TPRODUCTATTRIBUTEVALUE) from CLOB to VARCHAR. This is done to avoid an extra select query on the database for each record returned in these tables. These extra select queries significantly slows performance when retrieving customers, categories, products, and product skus from the database, even when the LONG_TEXT_VALUE field is not populated.

Before deploying this change to production, note the following impacts:

  • If any of the tables listed above contain a large amount of data in the LONG_TEXT_VALUE field for any single record, the data population process may fail.
    • For MySQL, the new limit is 20,000 characters.
    • For PostgreSQL, the new limit is 65535 bytes (note that each unicode character can consume between 1 and 4 bytes).
    • For Oracle, the new limit is 32767 bytes (note that each unicode character can consume between 1 and 4 bytes).
  • The data population process may take several minutes or hours to execute, depending on the number of records in the tables listed above, database type used, and database size. While data population is running, Cortex operations may fail or be very slow due to database load and database table locks.
  • Teams using Oracle must ensure that the MAX_STRING_SIZE parameter is set to EXTENDED before running data population process or it will fail.

For all these reasons, before deploying this change to production, your teams should test the data population process on a snapshot of your production database in a pre-production environment. Verify that the process is able to complete successfully and make note of how long the data population process takes. Also validate the behaviour of Cortex during the data population process; you may need to plan for downtime during this process if the Cortex impact is significant.

For teams using Oracle, follow these instructions to change your database MAX_STRING_SIZE parameter to EXTENDED:

Modified Cortex to allow it to continue functioning normally if ActiveMQ is overloaded or offline​

Cortex sends event notifications in a number of circumstances, as documented here. Before this patch, those event notifications were sent to ActiveMQ in real-time. Therefore, if ActiveMQ was overloaded, Cortex performance would suffer. Furthermore, if ActiveMQ was offline, Cortex operations would fail.

After this change, all Cortex event notifications are recorded in the TOUTBOXMESSAGE table, and relayed to ActiveMQ by a Batch Server job that runs every second. This means that Cortex will continue to function regardless of the state of ActiveMQ, and performance will not be affected. If ActiveMQ is offline temporarily, messages will be relayed from the outbox table once it comes back online.

Note that Cortex still maintains a connection to ActiveMQ so it can listen for Operational Insights requests, so if ActiveMQ is offline, a thread will attempt to reconnect every few seconds. However, this will not affect Cortex operation in any way.

8.3.0​

Released: Nov 2021

Release highlights​

Extension Point Framework​

Self-Managed Commerce 8.3.0 is the first release to support the Extension Point Framework. Developers can use this framework to extend and customize Self-Managed Commerce by creating plugin JARs outside of the Elastic Path source code repository.

The Extension Point Framework helps to address the complexity and upgrade costs associated with extending the Self-Managed Commerce platform. The following extension points are supported in Self-Managed Commerce 8.3.0:

  • HTTP Request Tag Set Populator
  • Order Data Populator
  • Order Hold Determination
  • Product Recommendations
  • Setting Value Retrieval
  • System Information
  • Validate Product Sku at Add-to-Cart Read
  • Validate Product Sku at Add-to-Cart
  • Validate Product Sku at Checkout
  • Validate Shopping Cart at Cart Create or Update
  • Validate Shopping Cart at Checkout
  • Validate Shopping Item at Add-to-Cart
  • Validate Shopping Item at Checkout
  • Validate Shopping Item at Remove from Cart
important

We recommend using the Extension Point Framework External Plugins approach whenever a developer wants to use an Extension Point that is available to support the customization.

For more information, see the Extension Point Framework Documentation.

Operational Insights​

Operational Insights is a tool for validating the configuration and health of a Self-Managed Commerce environment. This tool has two parts:

  • An Integration Server REST API that returns information about the state of all Self-Managed Commerce services in a running environment.
  • A web-based standalone tool that queries the REST API and presents the information along with recommendations for updating any values that indicate potential issues.

For more information, see the Operational Insights documentation.

Performance Insights for Cucumber Tests​

Performance Insights for Cucumber tests tool provides an easy and reliable way to discover performance issues during early development, focusing only on the database operations. The tool executes a set of Cucumber tests that run through various code paths to measure the number of database operations. Database operations are measured using Elastic Path’s Database Query Analyzer Tool, which is used for database profiling and investigation of the performance issues. The results of the tests are available in CSV, JSON, and HTML formats.

For more information, see Performance Insights for Cucumber Tests.

Certified for use with MySQL 8.0​

Self-Managed Commerce 8.3 is now certified for use on both MySQL 5.7 and 8.0 versions. Both versions are supported with the same JDBC driver. You only need to configure the ep.db.* JVM parameters to connect to the appropriate database endpoint.

Amazon Web Services now supports MySQL 8.0.

For more information, see the Supported Technologies and Local Database Setup documentation.

Certified for use with Postgres 13.3​

Self-Managed Commerce 8.3 is now certified for use on Postgres 13.3.

Amazon Web Services now supports Postgres 13 on RDS and Postgres 13 on Aurora.

For more information, see the Supported Technologies and Local Database Setup documentation.

System requirements and compatibility​

Self-Managed Commerce 8.3.0 is now certified for use with the following technologies:

TechnologyOld CertificationNew Certification
MySQL5.7.315.7.34
MySQLN/A8.0.25
PostgresSQLN/A13.3
Tomcat9.0.169.0.50

Self-Managed Commerce 8.3.0 is compatible with the following Elastic Path releases:

Elastic Path ComponentCompatibility
Extension Point FrameworkExtension Point Framework compatibility matrix
CloudOps for KubernetesCloudOps for Kubernetes compatibility matrix

For more information, see Supported Technologies.

New in this release​

In addition to the Release Highlights, this release contains the following updates:

In Commerce Manager, product associations are configured based on the source and target products. With a new recommendations link on the Cortex offer resource, the target offer for each associated product is returned. Previously, the recommendations link, which returns product association details, was exposed in the Cortex items resource and returned the default item SKU for each target product.

For more information, see Cortex Recommendations.

Simplified object graph between Shopper, ShoppingCart, and CustomerSession objects​

The domain object graph between Shopper, ShoppingCart, and CustomerSession was unnecessarily complex. There were two main issues:

  • ShoppingCart and Shopper both held a reference to CustomerSession
  • There was a bidirectional relationship between Shopper and CustomerSession.

Old shopper object graph

Simplified the object graph by removing references from ShoppingCart to CustomerSession and CustomerSession to Shopper.

New shopper object graph

Modified Commerce Manager address editor to be consistent with Cortex​

  • Phone number is now optional in Commerce Manager to be consistent with Cortex.
  • The organization field is now visible and editable in Commerce Manager to be consistent with Cortex.

Cortex Studio no longer makes Zoom Builder requests unless Zoom Builder is open​

Whenever Cortex Studio made a GET request to Cortex, multiple additional requests were made to populate the Zoom Builder view. This frequently led to confusion for developers when using Cortex Studio for debugging.

Cortex Studio now only makes Zoom Builder requests if the Zoom Builder tab is open. Otherwise, the additional Cortex requests are skipped.

Added ability for business users to delete accounts​

Business users can now delete accounts through Commerce Manager. You can delete an account only if the account and the all of its children have no purchases associated with them. When you delete an account, the account’s children are also deleted.

For more information, see Deleting an Account record.

Added ability for payment plugins to determine how many reservations have been attempted for an order​

Added Integer rereserveCount to ReserveCapabilityRequest to ensure that the reference number for the payment gateway is unique across all requests. When the reserve method is invoked on a payment plugin, the request parameter includes the Integer rereserveCount value. For the first reservation attempt, rereserveCount is null. For each subsequent reservation attempt, the value is incremented, starting at 1.

Added Helix validation to ensure that extension bundles implement permissionsLookupRank​

Added permissionsLookupRank method to AbstractHelixModule, so that the extension bundles can specify a priority and Cortex can use this to consume the right permission.properties file. To ensure that this change is made, new checks are added to the REST definition validation Maven plugin. The following errors are returned incase of a problem:

  • The wiring module {} doesn't implement 'permissionsLookupRank()' method.
  • The wiring module {} has a permission rank lower than its parent. You have to implement 'permissionsLookupRank()' method with the ranking higher than that of the parent.

Account hierarchy closure table​

Created a closure table named TCUSTOMERCLOSURE, which contains links from every account to each of its descendants to address the performance issue related to the account queries. With this table, you can look up descendants or ancestors with a single query. Previously, AccountIdParameterStrategy retrieved a list of all account GUIDs that a buyer is allowed to access along with all descendants of each of the account.

For example, for a hierarchy similar to the following example:

Closure Example

The closure table contains the following information:

ANCESTORDESCENDANTANCESTOR_DEPTH
1110
1120
11110
11120
11210
11220
111111
111121
121211
121221

Ability to determine version on a running Self-Managed Commerce service​

Added the following mechanisms for identifying the current version of Self-Managed Commerce:

  • Maven pom files now have access to a property named ep.release.version.

  • The META-INF/MANIFEST.MF file for each webapp contains Implementation-Title, Implementation-Vendor, and Implementation-Version properties.

  • Application code can access the version using getClass().getPackage().getImplementationVersion().

  • All webapps now display the following message to the logs at startup:

    Commerce Version: {Service Name} {Version} by Elastic Path Software, Inc

  • A new About dialog is added to the top-right corner menu in the Commerce Manager user interface.

Denormalized modifier field data to improve database query performance​

Self-Managed Commerce supports modifier fields that allow projects to specify custom fields that are associated to shopping carts, shopping cart line items, orders, and order line items.

Removed the related tables, where the modifier field values were stored, to avoid the additional queries made due to limitations in OpenJPA. Now the modifier field values are stored in a CLOB field on the parent table.

For more information, see Database Changes.

Removed customer SOLR index​

The customer SOLR index has been removed for the following reasons:

  • Records in the customer table have unbounded growth over time and index gets very large and require significant disk space, which makes customer records a poor candidate for SOLR indexing.
  • Search indexes might require full rebuilds from time-to-time for various reasons. These rebuilds might take a very long time for databases with large customer tables.
  • The customer SOLR index was only used by Commerce Manager and Import and Export tool. You can manage searchable fields by indexing the fields in database and by using database queries.

All customer search lookups have been replaced with equivalent database queries, and all code related to building the customer SOLR index is removed.

New methods have been added to CustomerService to facilitate customer searches by criteria:

/**
* Find customers by search criteria.
*
* @param searchCriteria the search criteria
* @param startIndex start index
* @param pagination the pagination
* @return the customers list
*/
List<Customer> findCustomersBySearchCriteria(CustomerSearchCriteria searchCriteria, int startIndex, int pagination);
/**
* Get count of customers by search criteria.
*
* @param searchCriteria the search criteria
* @return the count
*/
long getCustomerCountBySearchCriteria(CustomerSearchCriteria searchCriteria);
/**
* Find accounts by search criteria.
*
* @param searchCriteria the search criteria
* @param startIndex start index
* @param pagination the pagination
* @return the customers list
*/
List<Customer> findAccountsBySearchCriteria(AccountSearchCriteria searchCriteria, int startIndex, int pagination);
/**
* Get count of accounts by search criteria.
*
* @param searchCriteria the search criteria
* @return the count
*/
long getAccountCountBySearchCriteria(AccountSearchCriteria searchCriteria);

Fixed Issues​

  • Fixed an issue where stores were accessible regardless of the state of the state. Shoppers can now access only those stores that are enabled and in the Open state. If a client attempts to access any Cortex API for a scope associated to a store that is disabled or not Open, a 400 HTTP response is returned with the following structured error message:

    {
    "type": "error",
    "id": "store.disabled",
    "debug-message": "The selected store is disabled or not in an OPEN state.",
    "data": {
    "store-code": "mobee"
    }
    }
  • Reviewed all the domain classes for transactional tables and updated the following classes to use HIGH_CONCURRENCY_ALLOCATION_SIZE so that performance bottleneck in Cortex under high volume scenarios are avoided:

    • OrderImpl
    • CustomerRoleImpl
    • CustomerPaymentInstrumentImpl
    • CartOrderPaymentInstrumentImpl
    • OrderPaymentDataImpl
    • CustomerDefaultPaymentInstrumentImpl
    • DataChangedImpl
    • ChangeTransactionImpl
    • ChangeTransactionMetadataImpl
    • AbstractChangeOperationImpl
    • ShoppingItemImpl
    • AppliedCouponImpl
    • OutboxMessageImpl
  • Removed core integration test dependency ep-rs-authentication-epcommerce on Cortex library from ep-core-itests. Instead, a new Cortex integrations module ,cortex-itests, which contains the integration test that depends on the ep-core-itests module, is created.

  • Fixed an issue where JMS messages were not distributed evenly when running multiple Integration Servers by changing the JMS broker URL in the context.xml files to the following:

    brokerURL="failover:(${ep.jms.url})?maxReconnectAttempts=2&amp;jms.prefetchPolicy.all=20"
  • Fixed the issue where orders were left in the CREATED state instead of the FAILED state when a specific checkout method returned an exception.

  • Fixed an issue where the Integration Server used wrong cache configuration settings from ehcache-importexport.xml file instead of the file defined by the ep.external.ehcache.xml.path property. The ehcache-importexport.xml file sets all caches to be infinite time-to-live, so you can only use it in the Import/Export CLI.

  • Fixed an issue where a NullPointerException message was returned when you click Edit without selecting an item from the item list in Commerce Manager.

  • Fixed an issue where the GUID was modified for the existing products to match the SKU code specified in the CSV file when importing products using the Import Manager tool.

  • Fixed an issue where the following misleading error appeared in the logs during Cortex startup:

    WARN los.webapp.osgi.impl.JarBundleLoaderImpl - Tried to load a jar that is not an OSGi bundle: /ep/source/ep-commerce/extensions/cortex/ext-cortex-webapp/target/ext-cortex-webapp-0.0.0-SNAPSHOT/WEB-INF/bundles/ep-rest-definitions-schema-1.46.0.4e10c9b033.jar
    ERROR: Bundle org.glassfish.hk2.osgi-resource-locator [56] EventDispatcher: Error during dispatch. (java.lang.IllegalStateException: The bundle is uninstalled.)

    However, this error did not cause any issues or prevent Cortex from starting.

  • Fixed an issue where Cortex was generating two TCUSTOMERAUTHENTICATION customer authentication records during registration: One associated to the TCUSTOMER record through TCUSTOMER.AUTHENTICATION_UID and a second orphaned record.

  • Fixed an issue where some of the Cortex servlet filters were returning structured error messages in the wrong format as in the following example:

    {
    "type": {
    "ordinal": 1,
    "name": "error"
    },
    "messageId": "authentication.account.not.found",
    "debugMessage": "No account found for the provided shared ID.",
    "data": {},
    "resolution": {
    "present": false
    }
    }

    The correct format is:

    {
    "type": "error",
    "id": "authentication.account.not.found",
    "debug-message": "No account found for the provided shared ID.",
    "data": {}
    }
  • Some Cortex operations, such as viewing shopping cart line item applied promotions, require loading the corresponding promotion from the database. Due to a misconfigured eager relationship, JPA was also loading all other promotions from the database unnecessarily.

  • Removed unnecessary caching of the promotion rules cache in the findRuleBaseByScenario and findChangedStoreRuleBases methods. Additionally, when promotion caches were empty at Cortex startup, multiple threads might fall through the cache simultaneously, leading to resource exhaustion.

  • Fixed an issue where Integration Server was unable to find configured payment plugins, resulting in payment capture failure.

  • Fixed an issue where Commerce Manager order searches returned duplicate rows for the same order.

  • Fixed an issue in Commerce Manager so that the product SKU code search returns the exact matches only.

  • Fixed an issue in Commerce Manager where sorting customers by email caused incorrect number of results to appear and resulted in pagination errors.

  • Fixed an issue where exceptions thrown by Advisors were not handled properly, the form action was not blocked and the exception was not logged. Now, all exceptions returned are logged, and the advisor returns a blocking structured message as in the following example:

    {
    "type": "error",
    "id": "advisor.internal.error",
    "debug-message": "An internal error occurred in the advisor.",
    "data": {}
    }
  • Fixed an issue where no information about the jar file was returned when api-generator-maven-plugin encountered a corrupt jar file. Now the plugin throws an exception as in the following example:

    Exception in thread "main" java.lang.InternalError: Problem occurred while attempting to open /Users/mlavrov/.m2/repository/com/elasticpath/rest/ep-rest-api/1.46.0.2b1561f0dc/ep-rest-api-1.46.0.2b1561f0dc.jar

    Using this information, developers can now delete the problematic jar so that it is re-downloaded by Maven.

  • Fixed performance issues where some of the databases didn’t have indexes by adding indexes on all foreign key relationships explicitly. For example, MySQL implicitly adds an index on foreign key base columns, but other databases, such as Oracle or PostgresSQL, do not. For customers on MySQL, the implicit index are automatically replaced with the explicit index and this change does not cause any noticeable difference in performance.

  • Fixed an issue where code in the JWT processing logic that populated the cart modifier fields with user details, such as user-id, user-name, and user-email values. The following changes are made to remove this issue:

    • Removed user-id, user-name, and user-email from the reservedCartModifierKeys extensible list.

    • Renamed the CustomerAndUserEmailAddressesExtractionStrategyImpl class to CustomerEmailAddressExtractionStrategyImpl and refactored the class so that it reads the email address only from the customer record, and not from the order data.

    • Deleted the following Cucumber tests:

      • orderShipmentConfirmationEmailsToMultipleRecipients.feature
      • orderConfirmationEmailsToMultipleRecipients.feature
      • rmaEmailsToMultipleRecipients.feature
  • Fixed an issue where the logged message for Import/Export exception was not useful, by improving logging to include full stack trace.

  • Fixed issues with the re-population of skuOptionsCache which caused the cache to become ineffective after the TTL expires.

  • Fixed a performance issue for users with a large number of address records by updating customer domain object so that addresses are no longer eagerly loaded and are only retrieved when needed.

  • Fixed intermittent test failures related to search indexes by improving IndexBuildStatusUpdater so that we can re-initialize it at runtime to avoid possible issues during the DB reset while the search server is running. Also, fixed ep-core-tool test for rebuilding search indexes and it now checks the index statuses in the database, rather than through the Commerce Manager user interface.

  • Fixed an issue where Elastic Path services automatically attempts to re-connect to ActiveMQ connection endlessly leaving the thread stuck Cortex Request threads could hang if ActiveMQ connection could not be re-established. The JMS connection parameters are modified so that the services now only attempt to reconnect twice before throwing an exception.

  • Fixed invalid JMS connection pool attributes in context.xml, such as maxConnections, maximumActiveSessionPerConnection, and idleTimeout to the correct parameters poolMaxConnections, poolMaximumActiveSessionPerConnection, and poolIdleTimeout.

  • Eliminated contention on "Frequency" SKU option retrieval in Payment Schedule Helper. The "Frequency" sku option is now loaded and cached indefinitely at service startup to avoid contention under high load when the cache expired.

  • Fixed an issue where the ShoppingCartServiceImpl#touch method retrieved a fully-loaded shopping cart just to update the last modified date. Now you can update it using a simple JPQL UPDATE statement.

  • Reduced the packages that are considered for OpenJPA enhancement to improve build performance. Previously the OpenJPA enhancement plugin, for ep-core, was configured to consider all classes within ep-core. It now only considers classes that match the com/elasticpath/**/domain/**/*.class patterns.

  • Fixed the issues with the _scrollToTableItemWithText function in ep-test-support.js which caused Selenium tests fail intermittently due to issues with finding items in a scrollable list. To address this issue, Maven configuration is updated to allow IntelliJ to run tests without errors. A special profile is added to Maven that is automatically activated by IntelliJ, using which you can disable the setting that treats Java compilation warnings as errors, so that IntelliJ can successfully run unit tests within the IDE.

  • Fixed the race condition bug in facets so that when running Cortex API requests on offer search that includes a zoom into the to faceting resources, the facetselector resource is not missing anymore.

  • Fixed an issue with password reset functionality that prevented users from logging in if they changes password after their password hash was upgraded from SHA-256 to BCrypt when migrated from EPC 8.1 to 8.2.

  • Improved Commerce Manager performance for catalogs with large volumes of base amounts, such as millions.

  • Fixed a performance issue when accessing links on the deliveries resource for users with many saved shopping carts. Now all of the shopping carts are not checked to determine if links within the deliveries resource must be displayed.

  • Fixed an issue where database deadlocks occurred causing operations to fail under high load conditions. Now, whenever a deadlock is detected, Elastic Path re-attempts to commit the transaction up to 3 times before giving up and throwing an exception.

  • Optimized the inventoryJournalRollupJob batch job. This job is responsible for combining multiple TINVENTORYJOURNAL records into a single record so that queries to determine inventory counts don’t need to sum as many records, which can be a very inefficient database operation. The query was changed to use native SQL to give us more control for each supported database. Also, the job was modified to run every minute instead of once per day.

  • Fixed the hashCode algorithm for SellingContextCacheKey to separate objects into different buckets efficiently.

  • Fixed intermittent NullPointerException in Hibernate validators. Due to inconsistencies in the order that jpa-persistence.xml files are loaded at startup, there was a chance that a service could start in a state where the Hibernate validation mode was set incorrectly. This would cause a NullPointerException to be thrown during various Cortex operations.

  • Performance issue in the validator used to ensure that cart and cart item modifier values are valid. It was discovered that the Hibernate validator used to validate cart and cart item modifier values is very slow to initialize. This initialization was being done every time cart and cart item modifiers were checked. This change now caches the validator initialization to significantly improve performance.

  • Searching for product names with special characters in Commerce Manager caused an error. When searching for product names in Commerce Manager with special characters such as + and / it causes the search to throw an error. This was due to a problem with the way that the values were being escaped. This is now resolved.

  • Fixed an issue with the payment capture re-attempts so that the authorization and second capture are recorded. When a physical product ships and the payment capture attempt fails, Elastic Path re-creates the authorization and capture.

  • Resolved the issue where the applied promotion was only appearing on the first shopping cart line item to which it applies. For example, if a shopping cart line item promotion is created that applies to multiple lines, the applied-promotions resource only showed the promotion for the first line item in the shopping cart. The promotion now correctly appears for all cart line item to which it applies.

  • Fixed an issue where the pagination object showed a results count that did not match the number of links returned When viewing recommendations.

  • Fixed an issue when using the back button in Cortex Studio after using a lookup form such as itemlookupform to find a resource, following one of the links, and clicking back, the browser returned to the lookup form. Now the browser returns to the previous resource as expected.

  • Fixed an issue where triggering catalog projection rebuild for a very large catalog caused out of memory error in the Batch Server.

  • Fixed an issue where the Search server processing of index update notification records cause out of memory issues in the server if the TINDEXNOTIFY table contained a large number of records to be processed. The job now loads the records in batches to prevent this issue.

Upgrade notes​

The upgrading Elastic Path guide provides general instructions on upgrading Elastic Path projects.

Core commerce​

  • Log4j is upgraded from 1.x to 2.x. You must convert all log4j.properties files to log4j2.xml and update references to the Log4j classes, Logger and LogManager. For more information, see the following section.
  • Removed or replaced a few methods in ShopperService. The following section provides details on replacing the existing code with new code.
  • Removed or replaced a few methods in ShoppingCartService.The following section provides details on replacing the existing code with new code.
  • Changed the CustomerService#findById method signatures. The following section provides details on replacing the existing code with new code.
  • Replaced Shopper#updateTransientDataWith with Shopper#setCustomerSession.
  • Moved Shopper#getCache to CustomerSession#getCache.
  • Removed ShoppingCart#getCustomerSession. Use ShoppingCart.getShopper().getCustomerSession() instead.
  • Removed CustomerSession#getShopper. Use the ShopperService or ShopperRepository methods to obtain a Shopper instead.
  • Removed ConditionEvalulationCacheKey because it was unused.
  • All bean definitions related to buyer permissions are moved from service.xml to the new permissions.xml file.
Upgraded MySQL JDBC driver​

After upgrading to mysql-connector-java-8.0.25.jar, developers might get server timezone errors when starting local services.Ensure that the default timezone is specified in the MySQL configuration, as described in these instructions.

Upgraded from commons-lang to commons-lang3​

All dependencies on commons-lang have been removed and replaced with commons-lang3. Search through your extension code for import org.apache.commons.lang. and update them to import org.apache.commons.lang3.. Some additional changes may be required but in most cases the updated classes are backwards compatible.

Log4j 1.x to 2.x upgrade​
  • Update any custom code that defines a Log4j Logger to use the Log4j2 LogManager as in the following example:

Log4j to Log4j2 Code Diff

  • Convert any custom modules containing a log4j.properties file to log4j2.xml, as in the following example:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<File name="FILE"
fileName="${user.home}/ep/logs/ep-datasync.log"
append="false">
<PatternLayout pattern="[EP-DataSync] %-5p %t %d{ISO8601} %c - %m%n" />
</File>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="[EP-DataSync] %-5p %t %d{ISO8601} %c - %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.elasticpath" level="${ep.log.level}" additivity="false">
${ep.log.to}
</Logger>
<Logger name="com.elasticpath.extensions" level="${ep.log.level}" additivity="false">
${ep.log.to}
</Logger>
<Root level="info">
${ep.log.to}
</Root>
</Loggers>
</Configuration>
Refactored core service methods​

The following table provides a list of removed methods and the new equivalent methods:

  • Get a shopper record:

    • Old: Shopper shopper = shopperService.createAndSaveShopper(storeCode);
    • New: Shopper shopper = shopperService.findOrCreateShopper(customer, storeCode);
  • Get a shopper record:

    • Old: Shopper shopper = shopperService.findByCustomerGuid(customerGuid);
    • New: Shopper shopper = ShopperService#findOrCreateShopper(customerGuid, storeCode);
  • Get a shopper record:

    • Old:Shopper shopper = shopperService.findByCustomerGuidAndAccountSharedIdAndStore(customerGuid, accountSharedId, storeCode);
    • New: Shopper shopper = shopperService.findOrCreateShopper(customerGuid, accountSharedId, storeCode);
  • Get a shopper record:

    • Old: Shopper shopper = shopperService.findByCustomerGuidAndStoreCode(customerGuid, storeCode);
    • New: Shopper shopper = shopperService.findOrCreateShopper(customerGuid, storeCode);
  • Get a shopper record:

    • Old: Shopper shopper = shopperService.findByCustomerSharedIdAndStoreCode(customerSharedId, storeCode);

    • New:

      String customerGuid = customerService.findCustomerGuidBySharedId(customerSharedId, CustomerType.REGISTERED_USER);
      Shopper shopper = shopperService.findOrCreateShopper(customerGuid, storeCode);
  • Get a shopper record:

    • Old: Shopper shopper = shopperService.findByCustomerSharedIdAndAccountSharedIdAndStore(customerSharedId, accountSharedId, storeCode);

    • New:

      String customerGuid = customerService.findCustomerGuidBySharedId(customerSharedId, CustomerType.REGISTERED_USER);
      Shopper shopper = shopperService.findOrCreateShopper(customerGuid, accountSharedId, storeCode);
  • Get a shopping cart.:

    • Old: ShoppingCart shoppingCart = shoppingCartService.findOrCreateByShopper(shopper);
    • New: ShoppingCart shoppingCart = shoppingCartService.findOrCreateDefaultCartByShopper(shopper);
  • Get a shopping cart:

    • Old: ShoppingCart shoppingCart = shoppingCartService.findOrCreateDefaultCartByCustomerSession(customerSession);
    • New: No direct equivalent. Get a shopper and invoke ShoppingCartService#findOrCreateDefaultCartByShopper(shopper).
  • Get a shopping cart:

    • Old: String shoppingCartGuid = shoppingCartService.findOrCreateDefaultCartByCustomerSession(customerSession);
    • New: No direct equivalent. Get a shopper and invoke ShoppingCartService#findOrCreateDefaultCartGuidByShopper(shopper).
  • Create a shopping cart:

    • Old: ShoppingCart shoppingCart = shoppingCartService.createByCustomerSession(customerSession);
    • New: No direct equivalent. Get a shopper and invoke ShoppingCartService#findOrCreateDefaultCartByShopper(shopper)
  • Lookup a customer:

    • Old:Customer customer = customerService.findBySharedId(sharedId); Customer customer = customerService.findBySharedId(sharedId, storeCode);
    • New: Customer customer = customerService.findBySharedId(sharedId, customerType);

Cortex​

  • The CustomerSessionRepository class is replaced with the ShopperRepository class. The following section provides details on replacing the existing code with new code.
  • The constructors for all Cortex repository classes aren changed from package private to public to make it easier for extension modules to add additional injected services.
Refactored repository methods​

The following table provides a list of removed methods and the new equivalent methods:

  • Get a customer session:

    • Old: Single<CustomerSession> customerSessionSingle = customerSessionRepository.findOrCreateCustomerSession();
    • New: Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper().map(Shopper::getCustomerSession);
  • Get a shopper:

    • Old: Single<Shopper> shopper = customerSessionRepository.findOrCreateCustomerSession().map(ShopperReference::getShopper);
    • New: Single<Shopper> ShopperSingle = shopperRepository.findOrCreateShopper();
  • Create a customer session:

    • Old: Single<CustomerSession> customerSessionSingle = customerSessionRepository.createCustomerSessionAsSingle();
    • New: Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper().map(Shopper::getCustomerSession);|
  • Get a customer session:

    • Old: Single<CustomerSession> customerSessionSingle = reactiveAdapter.fromRepositoryAsSingle(() -> customerSessionRepository.findCustomerSessionByGuidAndStoreCode(customerGuid, storeCode));
    • New: Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper(customerGuid, storeCode).map(Shopper::getCustomerSession);
  • Get a customer session:

    • Old: Single<CustomerSession> customerSessionSingle = customerSessionRepository.findCustomerSessionByGuidAndStoreCodeAsSingle(customerGuid, storeCode);
    • New: Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper(customerGuid, storeCode).map(Shopper::getCustomerSession);
  • Get a customer session:

    • Old: Single<CustomerSession> customerSessionSingle = customerSessionRepository.findCustomerSessionByGuidAndAccountSharedIdAsSingle(customerGuid, accountSharedId);
    • New: No direct equivalent. Obtain a store code and invoke ShopperRepository#findOrCreateShopper(customerGuid, accountSharedId, storeCode)
  • Get a customer session:

    • Old:

      Single<CustomerSession> customerSessionSingle = reactiveAdapter.fromRepositoryAsSingle(() -> customerSessionRepository.findCustomerSessionBySharedId(storeCode, customerSharedId));
    • New:

      String customerGuid = customerService.findCustomerGuidBySharedId(customerSharedId, CustomerType.REGISTERED_USER);
      Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper(customerGuid, storeCode).map(Shopper::getCustomerSession);
  • Get a customer session:

    • Old: Single<CustomerSession> customerSessionSingle = reactiveAdapter.fromRepositoryAsSingle(() -> customerSessionRepository.findCustomerSessionByCustomerGuidAndAccountSharedId(customerGuid, accountSharedId, storeCode));
    • New: Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper(customerGuid, storeCode).map(Shopper::getCustomerSession);
  • Get a customer session:

    • Old: ExecutionResult<CustomerSession> customerSessionSingle = customerSessionRepository.findCustomerSessionByUserIdAndAccountSharedId(customerSharedId, accountSharedId, storeCode);
    • New: Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper(customerGuid, accountSharedId, storeCode).map(Shopper::getCustomerSession);
  • Invalidate a customer session.:

    • Old: Completable completable customerSessionRepository.invalidateCustomerSessionByGuid(customerGuid);
    • New: No longer necessary.

Database changes​

  • Added CASCADE on DELETE on the following foreign key relationships:

    • TCUSTOMER.UIDPK <-- TSHOPPER.ACCOUNT_CUSTOMER_UID
    • TCUSTOMER.GUID <-- TUSERACCOUNTASSOCIATION.ACCOUNT_CUSTOMER_GUID

    For more information, see core-changelog-2020-11-user-account-associations-cascade-delete.xml and core-changelog-2021-04-cascade-shopper-account.xml.

  • Added primary key on JPA_GENERATED_KEYS.ID field for improved performance.

  • Updated TOUTBOXMESSAGE.UIDPK field type from INT to BIGINT.

  • Updated DATABASECHANGELOG.ID field type from VARCHAR(63) to VARCHAR(255). Note that this change is required only if the database was originally created in an old version of Self-Managed Commerce that used Liquibase 2.0.3.

  • Added explicit indexes on all foreign key relationships, which were created implicitly by MySQL but not other database types. For more information, see the core-changelog-2021-09-create-indices-on-FK-columns.xml file.

  • Added MODIFIER_FIELDS(CLOB) and HAS_MODIFIERS(BOOLEAN) fields to the following tables to avoid an expensive table join:

    • TORDER
    • TORDERSKU
    • TSHOPPINGCART
    • TCARTITEM

    During the upgrade, data is migrated from the join tables into the MODIFIER_FIELDS field encoded as a JSON object.

  • Related to the above change, the following tables are dropped:

    • TORDERDATA
    • TORDERITEMDATA
    • TSHOPPINGITEMDATA
    • TCARTDATA
  • Added a TCUSTOMERCLOSURE table that contains relationships between accounts and all subaccounts at all levels of the hierarchy.

  • Expanded the fields in the TINVENTORYJOURNAL.I_INV_JOURNAL_SKU_WAREHOUSE composite index from SKUCODE, WAREHOUSE_UID to SKUCODE, WAREHOUSE_UID, ALLOCATED_QUANTITY_DELTA, QUANTITY_ON_HAND_DELTA.

  • Added index on TSTORE.UPPER(STORECODE) for improved performance (PostgresSQL only).

Upgraded libraries​

The following libraries are upgraded as part of this release, primarily to address vulnerabilities detected within these libraries:

LibraryChange
accessors-smart-2.4.7.jarVersion changed from 1.2
activemq-broker-5.16.1.jarVersion changed from 5.16.0
activemq-camel-5.16.1.jarVersion changed from 5.16.0
activemq-client-5.16.1.jarVersion changed from 5.16.0
activemq-console-5.16.1.jarVersion changed from 5.16.0
activemq-jms-pool-5.16.1.jarVersion changed from 5.16.0
activemq-kahadb-store-5.16.1.jarVersion changed from 5.16.0
activemq-openwire-legacy-5.16.1.jarVersion changed from 5.16.0
activemq-pool-5.16.1.jarVersion changed from 5.16.0
activemq-spring-5.16.1.jarVersion changed from 5.16.0
activemq-stomp-5.16.1.jarVersion changed from 5.16.0
activemq-web-5.16.1.jarVersion changed from 5.16.0
activemq-web-console-5.16.1.warVersion changed from 5.16.0
asm-1.0.2.jarRemoved
asm-9.1.jarAdded
c3p0-0.9.5.4.jarAdded
cal10n-api-0.7.4.jarRemoved
camel-core-2.25.3.jarVersion changed from 2.23.4
camel-core-xml-2.25.3.jarVersion changed from 2.23.4
camel-groovy-2.25.3.jarVersion changed from 2.23.4
camel-http-common-2.25.3.jarVersion changed from 2.23.4
camel-jackson-2.25.3.jarVersion changed from 2.23.4
camel-jaxb-2.25.3.jarVersion changed from 2.23.4
camel-jms-2.25.3.jarVersion changed from 2.23.4
camel-jsonpath-2.25.3.jarVersion changed from 2.23.4
camel-mail-2.25.3.jarVersion changed from 2.23.4
camel-script-2.25.3.jarVersion changed from 2.23.4
camel-servlet-2.25.3.jarVersion changed from 2.23.4
camel-spring-2.25.3.jarVersion changed from 2.23.4
camel-swagger-java-2.25.3.jarVersion changed from 2.23.4
camel-test-2.25.3.jarVersion changed from 2.23.4
camel-test-spring-2.25.3.jarVersion changed from 2.23.4
commons-collections4-4.4.jarVersion changed from 4.2
commons-daemon-1.2.3.jarVersion changed from 1.2.2
commons-io-2.8.0.jarAdded
commons-lang-2.4.jarVersion changed from 2.3
commons-net-3.7.2.jarAdded
commons-pool2-2.9.0.jarVersion changed from 2.8.0
disruptor-3.4.0.jarAdded
HikariCP-java7-2.4.13.jarAdded
hppc-0.8.1.jarVersion changed from 0.7.3
jackson-databind-2.9.10.8.jarVersion changed from 2.9.10.4
jackson-dataformat-smile-2.9.5.jarVersion changed from 2.5.4
jackson-dataformat-xml-2.9.10.jarVersion changed from 2.9.9
jackson-dataformat-yaml-2.9.10.jarVersion changed from 2.9.9
jackson-datatype-joda-2.9.10.jarVersion changed from 2.9.9
java-semver-0.9.0.jarAdded
jcl-over-slf4j-1.7.26.jarAdded
jna-5.8.0.jarAdded
jna-platform-5.8.0.jarAdded
json-path-2.4.0.jarRemoved
json-smart-2.3.jarRemoved
json-smart-2.4.7.jarVersion changed from 2.1.0
liquibase-core-3.10.3.jarVersion changed from 3.4.2
log4j-api-2.13.3.jarAdded
log4j-core-2.13.3.jarAdded
log4j-over-slf4j-1.7.26.jarAdded
log4j-slf4j-impl-2.13.3.jarAdded
log4j-web-2.13.3.jarAdded
lombok-1.18.20.jarAdded
lucene-analyzers-common-7.4.0.jarVersion changed from 7.2.1
lucene-analyzers-kuromoji-7.4.0.jarVersion changed from 7.2.1
lucene-analyzers-phonetic-7.4.0.jarVersion changed from 7.2.1
lucene-backward-codecs-7.4.0.jarVersion changed from 7.2.1
lucene-classification-7.4.0.jarVersion changed from 7.2.1
lucene-codecs-7.4.0.jarVersion changed from 7.2.1
lucene-core-7.4.0.jarVersion changed from 7.2.1
lucene-expressions-7.4.0.jarVersion changed from 7.2.1
lucene-grouping-7.4.0.jarVersion changed from 7.2.1
lucene-highlighter-7.4.0.jarVersion changed from 7.2.1
lucene-join-7.4.0.jarVersion changed from 7.2.1
lucene-memory-7.4.0.jarVersion changed from 7.2.1
lucene-misc-7.4.0.jarVersion changed from 7.2.1
lucene-queries-7.4.0.jarVersion changed from 7.2.1
lucene-queryparser-7.4.0.jarVersion changed from 7.2.1
lucene-sandbox-7.4.0.jarVersion changed from 7.2.1
lucene-spatial-extras-7.4.0.jarVersion changed from 7.2.1
lucene-spatial3d-7.4.0.jarVersion changed from 7.2.1
lucene-suggest-7.4.0.jarVersion changed from 7.2.1
mchange-commons-java-0.2.15.jarAdded
metrics-jetty9-3.2.6.jarVersion changed from 3.2.2
metrics-jvm-3.2.6.jarVersion changed from 3.2.2
mxparser-1.2.2.jarAdded
mysql-connector-java-8.0.25.jarVersion changed from 8.0.22
openjpa-2.4.0-ep2.4.jarVersion changed from 2.4.0-ep2.3
openjpa-jdbc-2.4.0-ep2.3.jarRemoved
openjpa-jest-2.4.0-ep2.3.jarRemoved
openjpa-kernel-2.4.0-ep2.3.jarRemoved
openjpa-lib-2.4.0-ep2.3.jarRemoved
openjpa-persistence-2.4.0-ep2.3.jarRemoved
openjpa-persistence-jdbc-2.4.0-ep2.3.jarRemoved
org.apache.servicemix.bundles.quartz-2.3.2.RELEASE_1.jarVersion changed from 2.1.7.RELEASE_1
org.apache.servicemix.bundles.spring-aop-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-beans-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-context-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-context-support-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-core-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-expression-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-jdbc-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-jms-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-orm-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-tx-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-web-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.spring-webmvc-4.3.30.RELEASE_1.jarVersion changed from 4.3.25.RELEASE_1
org.apache.servicemix.bundles.xstream-1.4.18_1.jarVersion changed from 1.4.11.1_1
oshi-core-5.7.4.jarAdded
pf4j-3.6.0.jarAdded
postgresql-42.2.23.jarAdded
quartz-2.3.2.jarVersion changed from 2.1.7
rome-1.15.0.jarVersion changed from 1.12.2
rome-utils-1.15.0.jarVersion changed from 1.12.2
rrd4j-3.2.jarAdded
slf4j-api-1.7.26.jarAdded
slf4j-ext-1.7.26.jarVersion changed from 1.6.3
solr-core-7.4.0.jarVersion changed from 7.2.1
solr-solrj-7.4.0.jarVersion changed from 7.2.1
spatial4j-0.7.jarVersion changed from 0.6
spring-aop-4.3.26.RELEASE.jarRemoved
spring-aop-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-beans-4.3.30.RELEASE.jarVersion changed from 4.3.26.RELEASE
spring-context-4.3.26.RELEASE.jarRemoved
spring-context-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-context-support-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-core-4.3.30.RELEASE.jarVersion changed from 4.3.26.RELEASE
spring-expression-4.3.26.RELEASE.jarRemoved
spring-expression-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-jdbc-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-jms-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-messaging-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-orm-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-test-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-tx-4.3.30.RELEASE.jarAdded
spring-web-4.3.26.RELEASE.jarRemoved
spring-web-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
spring-webmvc-4.3.26.RELEASE.jarRemoved
spring-webmvc-4.3.30.RELEASE.jarVersion changed from 4.3.25.RELEASE
transactions-4.0.6.jarAdded
transactions-api-4.0.6.jarAdded
transactions-jdbc-4.0.6.jarAdded
transactions-jms-4.0.6.jarAdded
transactions-jta-4.0.6.jarAdded
woodstox-core-5.3.0.jarVersion changed from 5.1.0
xbean-asm5-shaded-3.17.jarRemoved
xbean-spring-4.18.jarVersion changed from 4.17
xmlbeans-3.0.0.jarVersion changed from 2.4.0
xstream-1.4.15.jarAdded
xstream-1.4.18.jarVersion changed from 1.4.11.1