Elastic Path Commerce 8.3.x Release Notes
Learn about changes to Elastic Path 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 Elastic Path Commerce 8.3 since its release date. To learn how to consume the updates, see Consuming Support Fixes.
- 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
anduser-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 withCategoryLookup#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
andwidget-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 anORDER 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
andstate_code
fields of theTCHANGESET
table to address performance issue in the Automated Imports Accelerator. (12-Jun-2024) - dc9e0b21: Fix for potential race condition around
CategoryLookup
andCategoryService
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 theoffersearch
resource. (12-Dec-2023) - 2a4b488d: Added null check in
SolrQueryFactory
to avoidNullPointerException
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 matchep-commerce
version. (27-Nov-2023) - 8985b205: Fix for
NullPointerException
that can occur if looking up a non-existent category GUID withCategoryLookup#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
withCaffeineCache
. (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 indexedcoupon_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 the2020-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
andmodifierGroups
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 potentialConcurrentModificationException
. (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 toep-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 aNullPointerException
instead of returningOptional.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 matchep-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 theblueprint-extender
with a configurableThreadPoolTaskExecutor
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
OptimisticLockingException
s 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-Protection
(18-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 theTORDERDATA
andTORDERITEMDATA
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 fromCLOB
toVARCHAR
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 inexportconfiguration.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 thex-ep-account-shared-id
header was set. (10-Dec-2021) - b16db638: Improved 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) - 04d36474: Improved upgrade performance of liquibase changesets:
7.6.0-torder-make-cart-order-guids-unique
,2020-09-convert-customer-passwords-to-bcrypt
,2020-08-flatten-order-sku-tree-for-better-performance
,2020-03-payment-configurations-preserve-all-authorization-codes-as-payment-data
,2020-05-update-accountmanagement-customertype
. (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:
Field | Search Type |
---|---|
Shared ID | Exact Match |
Case Insensitive Match | |
Username | Case Insensitive Match |
First Name | Case Insensitive Prefix Match |
Last Name | Case Insensitive Prefix Match |
Zip / Postal Code | Case Insensitive Match |
Phone Number | Case Insensitive Match |
Store | Exact Match |
Searchable account fields:
Field | Search Type |
---|---|
Shared ID | Exact Match |
Business Name | Case Insensitive Prefix Match |
Business Number | Case Insensitive Prefix Match |
Phone Number | Case Insensitive Match |
Fax Number | Case Insensitive Match |
Zip / Postal Code | Case Insensitive Match |
Searchable order fields:
Field | Search Type |
---|---|
Order Number | Exact Match |
User Shared ID | Case Insensitive Match |
User First Name | Case Insensitive Prefix Match |
User Last Name | Case Insensitive Prefix Match |
User Email | Case Insensitive Match |
User Phone Number | Case Insensitive Match |
Account Shared ID | Exact Match |
Account Business Name | Case Insensitive Prefix Match |
Account Business Number | Case Insensitive Prefix Match |
Account Phone Number | Case Insensitive Match |
Billing Address First Name | Case Insensitive Prefix Match |
Billing Address Last Name | Case Insensitive Prefix Match |
Billing Address Phone Number | Case Insensitive Match |
Billing Address Fax Number | Case Insensitive Match |
Billing Address Zip / Postal Code | Case Insensitive Match |
Shipping Address First Name | Case Insensitive Prefix Match |
Shipping Address Last Name | Case Insensitive Prefix Match |
Shipping Address Phone Number | Case Insensitive Match |
Shipping Address Fax Number | Case Insensitive Match |
Shipping Address Zip / Postal Code | Case Insensitive Match |
Order Status | Exact Match |
Shipment Status | Exact Match |
Store | Exact Match |
Product SKU Code | Exact Match |
RMA Code | Exact 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.
LONG_TEXT_VALUE
field from CLOB
to VARCHAR
Changed attribute value 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 toEXTENDED
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
Elastic Path Commerce 8.3.0
is the first release to support the Extension Point Framework. Developers can use this framework to extend and customize Elastic Path 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 Elastic Path Commerce platform. The following extension points are supported in Elastic Path 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 an Elastic Path Commerce environment. This tool has two parts:
- An Integration Server REST API that returns information about the state of all Elastic Path 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
Elastic Path 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
Elastic Path 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
Elastic Path Commerce 8.3.0
is now certified for use with the following technologies:
Technology | Old Certification | New Certification |
---|---|---|
MySQL | 5.7.31 | 5.7.34 |
MySQL | N/A | 8.0.25 |
PostgresSQL | N/A | 13.3 |
Tomcat | 9.0.16 | 9.0.50 |
Elastic Path Commerce 8.3.0
is compatible with the following Elastic Path releases:
Elastic Path Component | Compatibility |
---|---|
Extension Point Framework | Extension Point Framework compatibility matrix |
CloudOps for Kubernetes | CloudOps 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:
Added recommendations link on offers in Cortex
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.
ShoppingCart
, and CustomerSession
objects
Simplified object graph between Shopper, 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.
Simplified the object graph by removing references from ShoppingCart
to CustomerSession
and CustomerSession
to Shopper
.
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.
permissionsLookupRank
Added Helix validation to ensure that extension bundles implement 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:
The closure table contains the following information:
ANCESTOR | DESCENDANT | ANCESTOR_DEPTH |
---|---|---|
1 | 11 | 0 |
1 | 12 | 0 |
1 | 111 | 0 |
1 | 112 | 0 |
1 | 121 | 0 |
1 | 122 | 0 |
11 | 111 | 1 |
11 | 112 | 1 |
12 | 121 | 1 |
12 | 122 | 1 |
Ability to determine version on a running Elastic Path Commerce service
Added the following mechanisms for identifying the current version of Elastic Path Commerce:
Maven
pom
files now have access to a property namedep.release.version
.The
META-INF/MANIFEST.MF
file for each webapp containsImplementation-Title
,Implementation-Vendor
, andImplementation-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
Elastic Path 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 notOpen
, a400 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 fromep-core-itests
. Instead, a new Cortex integrations module ,cortex-itests
, which contains the integration test that depends on theep-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&jms.prefetchPolicy.all=20"
Fixed the issue where orders were left in the
CREATED
state instead of theFAILED
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 theep.external.ehcache.xml.path
property. Theehcache-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 theTCUSTOMER
record throughTCUSTOMER.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
andfindChangedStoreRuleBases
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
, anduser-email
values. The following changes are made to remove this issue:Removed
user-id
,user-name
, anduser-email
from thereservedCartModifierKeys
extensible list.Renamed the
CustomerAndUserEmailAddressesExtractionStrategyImpl
class toCustomerEmailAddressExtractionStrategyImpl
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, fixedep-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 asmaxConnections
,maximumActiveSessionPerConnection
, andidleTimeout
to the correct parameterspoolMaxConnections, poolMaximumActiveSessionPerConnection
, andpoolIdleTimeout
.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 simpleJPQL 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 withinep-core
. It now only considers classes that match thecom/elasticpath/**/domain/**/*.class
patterns.Fixed the issues with the
_scrollToTableItemWithText
function inep-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 thedeliveries
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 multipleTINVENTORYJOURNAL
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 forSellingContextCacheKey
to separate objects into different buckets efficiently.Fixed intermittent
NullPointerException
in Hibernate validators. Due to inconsistencies in the order thatjpa-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 aNullPointerException
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 tolog4j2.xml
and update references to the Log4j classes,Logger
andLogManager
. 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
withShopper#setCustomerSession
. - Moved
Shopper#getCache
toCustomerSession#getCache
. - Removed
ShoppingCart#getCustomerSession
. UseShoppingCart.getShopper().getCustomerSession()
instead. - Removed
CustomerSession#getShopper
. Use theShopperService
orShopperRepository
methods to obtain aShopper
instead. - Removed
ConditionEvalulationCacheKey
because it was unused. - All bean definitions related to buyer permissions are moved from
service.xml
to the newpermissions.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.
commons-lang
to commons-lang3
Upgraded from 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 Log4j2LogManager
as in the following example:
- Convert any custom modules containing a
log4j.properties
file tolog4j2.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);
- Old:
Get a shopper record:
- Old:
Shopper shopper = shopperService.findByCustomerGuid(customerGuid);
- New:
Shopper shopper = ShopperService#findOrCreateShopper(customerGuid, storeCode);
- Old:
Get a shopper record:
- Old:
Shopper shopper = shopperService.findByCustomerGuidAndAccountSharedIdAndStore(customerGuid, accountSharedId, storeCode);
- New:
Shopper shopper = shopperService.findOrCreateShopper(customerGuid, accountSharedId, storeCode);
- Old:
Get a shopper record:
- Old:
Shopper shopper = shopperService.findByCustomerGuidAndStoreCode(customerGuid, storeCode);
- New:
Shopper shopper = shopperService.findOrCreateShopper(customerGuid, storeCode);
- Old:
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);
- Old:
Get a shopping cart:
- Old:
ShoppingCart shoppingCart = shoppingCartService.findOrCreateDefaultCartByCustomerSession(customerSession);
- New: No direct equivalent. Get a shopper and invoke
ShoppingCartService#findOrCreateDefaultCartByShopper(shopper)
.
- Old:
Get a shopping cart:
- Old:
String shoppingCartGuid = shoppingCartService.findOrCreateDefaultCartByCustomerSession(customerSession);
- New: No direct equivalent. Get a shopper and invoke
ShoppingCartService#findOrCreateDefaultCartGuidByShopper(shopper)
.
- Old:
Create a shopping cart:
- Old:
ShoppingCart shoppingCart = shoppingCartService.createByCustomerSession(customerSession);
- New: No direct equivalent. Get a shopper and invoke
ShoppingCartService#findOrCreateDefaultCartByShopper(shopper)
- Old:
Lookup a customer:
- Old:
Customer customer = customerService.findBySharedId(sharedId); Customer customer = customerService.findBySharedId(sharedId, storeCode);
- New:
Customer customer = customerService.findBySharedId(sharedId, customerType);
- Old:
Cortex
- The
CustomerSessionRepository
class is replaced with theShopperRepository
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);
- Old:
Get a shopper:
- Old:
Single<Shopper> shopper = customerSessionRepository.findOrCreateCustomerSession().map(ShopperReference::getShopper);
- New:
Single<Shopper> ShopperSingle = shopperRepository.findOrCreateShopper();
- Old:
Create a customer session:
- Old:
Single<CustomerSession> customerSessionSingle = customerSessionRepository.createCustomerSessionAsSingle();
- New:
Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper().map(Shopper::getCustomerSession);
|
- Old:
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);
- Old:
Get a customer session:
- Old:
Single<CustomerSession> customerSessionSingle = customerSessionRepository.findCustomerSessionByGuidAndStoreCodeAsSingle(customerGuid, storeCode);
- New:
Single<CustomerSession> customerSessionSingle = shopperRepository.findOrCreateShopper(customerGuid, storeCode).map(Shopper::getCustomerSession);
- Old:
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)
- Old:
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);
- Old:
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);
- Old:
Invalidate a customer session.:
- Old:
Completable completable customerSessionRepository.invalidateCustomerSessionByGuid(customerGuid);
- New: No longer necessary.
- Old:
Database changes
Added
CASCADE
onDELETE
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
andcore-changelog-2021-04-cascade-shopper-account.xml
.Added primary key on
JPA_GENERATED_KEYS.ID
field for improved performance.Updated
TOUTBOXMESSAGE.UIDPK
field type fromINT
toBIGINT
.Updated
DATABASECHANGELOG.ID
field type fromVARCHAR(63)
toVARCHAR(255)
. Note that this change is required only if the database was originally created in an old version of Elastic Path 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
) andHAS_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 fromSKUCODE
,WAREHOUSE_UID
toSKUCODE
,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:
Library | Change |
---|---|
accessors-smart-2.4.7.jar | Version changed from 1.2 |
activemq-broker-5.16.1.jar | Version changed from 5.16.0 |
activemq-camel-5.16.1.jar | Version changed from 5.16.0 |
activemq-client-5.16.1.jar | Version changed from 5.16.0 |
activemq-console-5.16.1.jar | Version changed from 5.16.0 |
activemq-jms-pool-5.16.1.jar | Version changed from 5.16.0 |
activemq-kahadb-store-5.16.1.jar | Version changed from 5.16.0 |
activemq-openwire-legacy-5.16.1.jar | Version changed from 5.16.0 |
activemq-pool-5.16.1.jar | Version changed from 5.16.0 |
activemq-spring-5.16.1.jar | Version changed from 5.16.0 |
activemq-stomp-5.16.1.jar | Version changed from 5.16.0 |
activemq-web-5.16.1.jar | Version changed from 5.16.0 |
activemq-web-console-5.16.1.war | Version changed from 5.16.0 |
asm-1.0.2.jar | Removed |
asm-9.1.jar | Added |
c3p0-0.9.5.4.jar | Added |
cal10n-api-0.7.4.jar | Removed |
camel-core-2.25.3.jar | Version changed from 2.23.4 |
camel-core-xml-2.25.3.jar | Version changed from 2.23.4 |
camel-groovy-2.25.3.jar | Version changed from 2.23.4 |
camel-http-common-2.25.3.jar | Version changed from 2.23.4 |
camel-jackson-2.25.3.jar | Version changed from 2.23.4 |
camel-jaxb-2.25.3.jar | Version changed from 2.23.4 |
camel-jms-2.25.3.jar | Version changed from 2.23.4 |
camel-jsonpath-2.25.3.jar | Version changed from 2.23.4 |
camel-mail-2.25.3.jar | Version changed from 2.23.4 |
camel-script-2.25.3.jar | Version changed from 2.23.4 |
camel-servlet-2.25.3.jar | Version changed from 2.23.4 |
camel-spring-2.25.3.jar | Version changed from 2.23.4 |
camel-swagger-java-2.25.3.jar | Version changed from 2.23.4 |
camel-test-2.25.3.jar | Version changed from 2.23.4 |
camel-test-spring-2.25.3.jar | Version changed from 2.23.4 |
commons-collections4-4.4.jar | Version changed from 4.2 |
commons-daemon-1.2.3.jar | Version changed from 1.2.2 |
commons-io-2.8.0.jar | Added |
commons-lang-2.4.jar | Version changed from 2.3 |
commons-net-3.7.2.jar | Added |
commons-pool2-2.9.0.jar | Version changed from 2.8.0 |
disruptor-3.4.0.jar | Added |
HikariCP-java7-2.4.13.jar | Added |
hppc-0.8.1.jar | Version changed from 0.7.3 |
jackson-databind-2.9.10.8.jar | Version changed from 2.9.10.4 |
jackson-dataformat-smile-2.9.5.jar | Version changed from 2.5.4 |
jackson-dataformat-xml-2.9.10.jar | Version changed from 2.9.9 |
jackson-dataformat-yaml-2.9.10.jar | Version changed from 2.9.9 |
jackson-datatype-joda-2.9.10.jar | Version changed from 2.9.9 |
java-semver-0.9.0.jar | Added |
jcl-over-slf4j-1.7.26.jar | Added |
jna-5.8.0.jar | Added |
jna-platform-5.8.0.jar | Added |
json-path-2.4.0.jar | Removed |
json-smart-2.3.jar | Removed |
json-smart-2.4.7.jar | Version changed from 2.1.0 |
liquibase-core-3.10.3.jar | Version changed from 3.4.2 |
log4j-api-2.13.3.jar | Added |
log4j-core-2.13.3.jar | Added |
log4j-over-slf4j-1.7.26.jar | Added |
log4j-slf4j-impl-2.13.3.jar | Added |
log4j-web-2.13.3.jar | Added |
lombok-1.18.20.jar | Added |
lucene-analyzers-common-7.4.0.jar | Version changed from 7.2.1 |
lucene-analyzers-kuromoji-7.4.0.jar | Version changed from 7.2.1 |
lucene-analyzers-phonetic-7.4.0.jar | Version changed from 7.2.1 |
lucene-backward-codecs-7.4.0.jar | Version changed from 7.2.1 |
lucene-classification-7.4.0.jar | Version changed from 7.2.1 |
lucene-codecs-7.4.0.jar | Version changed from 7.2.1 |
lucene-core-7.4.0.jar | Version changed from 7.2.1 |
lucene-expressions-7.4.0.jar | Version changed from 7.2.1 |
lucene-grouping-7.4.0.jar | Version changed from 7.2.1 |
lucene-highlighter-7.4.0.jar | Version changed from 7.2.1 |
lucene-join-7.4.0.jar | Version changed from 7.2.1 |
lucene-memory-7.4.0.jar | Version changed from 7.2.1 |
lucene-misc-7.4.0.jar | Version changed from 7.2.1 |
lucene-queries-7.4.0.jar | Version changed from 7.2.1 |
lucene-queryparser-7.4.0.jar | Version changed from 7.2.1 |
lucene-sandbox-7.4.0.jar | Version changed from 7.2.1 |
lucene-spatial-extras-7.4.0.jar | Version changed from 7.2.1 |
lucene-spatial3d-7.4.0.jar | Version changed from 7.2.1 |
lucene-suggest-7.4.0.jar | Version changed from 7.2.1 |
mchange-commons-java-0.2.15.jar | Added |
metrics-jetty9-3.2.6.jar | Version changed from 3.2.2 |
metrics-jvm-3.2.6.jar | Version changed from 3.2.2 |
mxparser-1.2.2.jar | Added |
mysql-connector-java-8.0.25.jar | Version changed from 8.0.22 |
openjpa-2.4.0-ep2.4.jar | Version changed from 2.4.0-ep2.3 |
openjpa-jdbc-2.4.0-ep2.3.jar | Removed |
openjpa-jest-2.4.0-ep2.3.jar | Removed |
openjpa-kernel-2.4.0-ep2.3.jar | Removed |
openjpa-lib-2.4.0-ep2.3.jar | Removed |
openjpa-persistence-2.4.0-ep2.3.jar | Removed |
openjpa-persistence-jdbc-2.4.0-ep2.3.jar | Removed |
org.apache.servicemix.bundles.quartz-2.3.2.RELEASE_1.jar | Version changed from 2.1.7.RELEASE_1 |
org.apache.servicemix.bundles.spring-aop-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-beans-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-context-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-context-support-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-core-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-expression-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-jdbc-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-jms-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-orm-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-tx-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-web-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.spring-webmvc-4.3.30.RELEASE_1.jar | Version changed from 4.3.25.RELEASE_1 |
org.apache.servicemix.bundles.xstream-1.4.18_1.jar | Version changed from 1.4.11.1_1 |
oshi-core-5.7.4.jar | Added |
pf4j-3.6.0.jar | Added |
postgresql-42.2.23.jar | Added |
quartz-2.3.2.jar | Version changed from 2.1.7 |
rome-1.15.0.jar | Version changed from 1.12.2 |
rome-utils-1.15.0.jar | Version changed from 1.12.2 |
rrd4j-3.2.jar | Added |
slf4j-api-1.7.26.jar | Added |
slf4j-ext-1.7.26.jar | Version changed from 1.6.3 |
solr-core-7.4.0.jar | Version changed from 7.2.1 |
solr-solrj-7.4.0.jar | Version changed from 7.2.1 |
spatial4j-0.7.jar | Version changed from 0.6 |
spring-aop-4.3.26.RELEASE.jar | Removed |
spring-aop-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-beans-4.3.30.RELEASE.jar | Version changed from 4.3.26.RELEASE |
spring-context-4.3.26.RELEASE.jar | Removed |
spring-context-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-context-support-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-core-4.3.30.RELEASE.jar | Version changed from 4.3.26.RELEASE |
spring-expression-4.3.26.RELEASE.jar | Removed |
spring-expression-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-jdbc-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-jms-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-messaging-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-orm-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-test-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-tx-4.3.30.RELEASE.jar | Added |
spring-web-4.3.26.RELEASE.jar | Removed |
spring-web-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
spring-webmvc-4.3.26.RELEASE.jar | Removed |
spring-webmvc-4.3.30.RELEASE.jar | Version changed from 4.3.25.RELEASE |
transactions-4.0.6.jar | Added |
transactions-api-4.0.6.jar | Added |
transactions-jdbc-4.0.6.jar | Added |
transactions-jms-4.0.6.jar | Added |
transactions-jta-4.0.6.jar | Added |
woodstox-core-5.3.0.jar | Version changed from 5.1.0 |
xbean-asm5-shaded-3.17.jar | Removed |
xbean-spring-4.18.jar | Version changed from 4.17 |
xmlbeans-3.0.0.jar | Version changed from 2.4.0 |
xstream-1.4.15.jar | Added |
xstream-1.4.18.jar | Version changed from 1.4.11.1 |