Skip to main content
Version: 8.0.x

Elastic Path 8.0.x Release Notes

Learn about changes to Self-Managed Commerce for this release and any subsequent patch releases. Fixes since the release are summarized in the changelog.

Changelog​

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

  • 3d81e961: Build stability improvements. (27-Nov-2024)
  • 536306dd: Fixed issue with SKU selection dialog not allowing users to search after clicking the clear button. (19-Aug-2024)
  • b5026bdf: Improved Oracle reset-db script to ensure that the tablespace is created automatically. (19-Jul-2024)
  • 16a124c1: Fix for intermittent Selenium test failure "Error forwarding the new session Empty pool of VM for setup". (10-Jun-2024)
  • b003acf7: Build stability improvements. (15-May-2024)
  • 37a17cef: Updated failsafe plugin to use alphabetical ordering instead of default filesystem ordering. (14-Feb-2024)
  • 9b580795: Added null check in SolrQueryFactory to avoid NullPointerException if an expected attribute key does not exist. (9-Jan-2024)
  • fc792643: Fixed Cucumber tests that fail if test run order is changed. (12-Dec-2023)
  • 317510bf: Updated individual-settings.xml to use secure Nexus URLs. (11-Dec-2023)
  • 3ea3b96f: Fix for intermittent failure in "Payment Configuration" tests. (23-Nov-2023)
  • 1dfab545: Fixed issues in set-ep-versions.sh script and Maven settings used for builds. (27-Sep-2023)
  • b1b7fcf0: Standardized Cucumber test configuration across modules. (26-Sep-2023)
  • 04517563: Removed problematic and unnecessary ep-core-cucumber-itests module. (20-Sep-2023)
  • 3cd0a3df: Fixed bug in verifyDebugMessage method used by Cucumber tests. (29-Aug-2023)
  • bdc9b6c5: 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)
  • c67d8950: Resolved local Cortex startup warning The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". (13-Feb-2023)
  • 90079c8f: Fix to ensure that orders are correctly placed in the "Failed" state if an exception is thrown inside CreateNewOrderCheckoutAction#populateOrder. (9-Feb-2023)
  • ffb1f0c5: Reduced the amount of logging produced when running Selenium tests. (8-Feb-2023)
  • d2e5c5fb: Fix for intermittent test failures in PaymentConfigurations Cucumber tests. (7-Feb-2023)
  • 0ee1c26a: Fixed issue with changeset list resetting to page one when locking or publishing changesets. (6-Feb-2023)
  • 87d125b2: Fix for intermittent Selenium test failures due to thread safety issues. (6-Feb-2023)
  • 6b574b9d: Fix for "Device is disposed" error in Commerce Manager. (30-Jan-2023)
  • 81c4878b: Fix for intermittent failure in "Import Data Policies with existing Data Policies" test. (26-Jan-2023)
  • b331132a: Increased "Remove Abandoned Monitor" timeout for all services. (26-Jan-2023)
  • 2ef22b91: Fixed issues with the re-population of skuOptionsCache which caused the cache to become ineffective after the TTL expires. (19-Jan-2023)
  • 91e608bf: Fixed issue with empty facet name when assigning available facets to a store in Commerce Manager. (9-Jan-2023)
  • a87c5758: Returned default JMS max active session per connection size back to 25. (16-Dec-2022)
  • 5d8e103f: Upgraded ehcache-openjpa from version 0.2.0 to 0.2.0-ep1.0 to address potential ConcurrentModificationException. (15-Dec-2022)
  • 816364e1: Fix for intermittent "Create category in existing category" selenium test failure. (15-Dec-2022)
  • 1ce44eb0: Upgraded plexus-utils from version 2.0.4 to 3.0.24. (15-Dec-2022)
  • ea45e790: Addressed api-platform build issue on M1 MacBooks. (8-Dec-2022)
  • 340f775c: Fixed SonarQube linter errors in api-platform source. (8-Dec-2022)
  • 00219e00: When a data sync failure occurs, the log now contains details about which object failed. (8-Dec-2022)
  • e6bd32c8: Modified coupon table to store coupon codes in uppercase so we can do a case insensitive lookups without a table scan. (5-Dec-2022)
  • 5ecf663c: Fixed reliability issue with ShoppingCartServiceImplTest#testTouch. (5-Dec-2022)
  • e9e3364d: Fixed content root error appearing in IntelliJ for some modules. (1-Dec-2022)
  • 351f4082: Performance improvement to avoid loading a full shopping cart when updating the last-modified date. (28-Nov-2022)
  • 7c4d2a9b: 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). (28-Nov-2022)
  • 87127059: Removed leftover references to customer SOLR index. (28-Nov-2022)
  • be7c8a5b: Fixed an issue where a free item promotion triggered by a coupon was not activated. (24-Nov-2022)
  • 8891706e: Fix for search server race condition that can prevent indexes from building. (17-Nov-2022)
  • 2b63ea14: Changed log level in PriceListPriceScoreDocComparator to prevent logs from being flooded during search indexing. (15-Nov-2022)
  • 28603ce9: Modified RelayOutboxMessageBatchProcessor to inject the producer template via Spring instead of @EndpointInject annotation to improve reliability. (11-Nov-2022)
  • 37499647: Fixed potential NullPointerException that can occur when the 7.5.0-decouple-customer-userid-from-email changeset is executed. (10-Nov-2022)
  • 09b3abfb: Modified EpEmailValidator to accept empty values to be consistent with other validators. (9-Nov-2022)
  • d76d38a5: Fixed issues with the 7.6.0-torder-make-cart-order-guids-unique changeset. (4-Nov-2022)
  • 507aacde: Fixed primary key data type on TOUTBOXMESSAGE table to prevent overflow. (3-Nov-2022)
  • af29e6e6: Corrected invalid JMS connection pool attribute names in context.xml. (26-Oct-2022)
  • d26a6b76: Fixed issues with Integration Server that prevented payment plugins from being wired in correctly. (25-Oct-2022)
  • 0ca02e72: Fixed issue where the price list drop-down on the product bundle price adjustments tab isn't populated. (25-Oct-2022)
  • 318389e7: Improved customer and order search user interface in Commerce Manager. (25-Oct-2022)
  • 76464645: Upgraded commons-text from version 1.9 to 1.10 to address CVE-2022-42889. (24-Oct-2022)
  • aa77a1bf: Replaced libsass-maven-plugin to resolve build errors on Mac M1 machines. (19-Oct-2022)
  • 69e3285f: 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)
  • 2bfefd0e: Modified Commerce Manager product and category display name localization so that only intentionally specified values are displayed and saved. (6-Oct-2022)
  • cefce211: Fixed issue where promotions that can apply to multiple cart items but are limited in number would apply the discount correctly but the appliedPromotions resource would show it applying to both. (6-Oct-2022)
  • 383034e4: Upgraded Guava from version 24.1.1-jre to 31.1-jre. (5-Oct-2022)
  • 1959ad98: Improvement to cart line item promotion allocation to allow code to determine how much of a discount the promotion applied to each line item. (30-Sep-2022)
  • a3098a97: Improvements to Selenium test suite run time. (27-Sep-2022)
  • b17066e7: Upgraded Spring Core from version 4.3.25.RELEASE to 4.3.30.RELEASE. (15-Sep-2022)
  • 0bde52e6: Fixed issue with product not being automatically added to cart by free item promotion action. (14-Sep-2022)
  • 4e13620c: Build stability improvements. (8-Sep-2022)
  • 31ffc5d2: Separated indexing pipelines by type to ensure that long queues in one pipeline doesn't delay indexing in another. (5-Sep-2022)
  • adb8f4f0: Updated Catalog Syndication projection builder to ensure that projection and projection history records are persisted in separate transactions to prevent deadlocks. (2-Sep-2022)
  • 97df3efb: Allow business users to add "not sold separately" products as associations. (30-Aug-2022)
  • e5ba2d0e: Upgraded Jackson from version 2.12.3 to 2.12.7 to address jackson-databind security vulnerability. (25-Aug-2022)
  • 6d47d754: Disabled an intermittently failing Selenium test. (25-Aug-2022)
  • ca90ab26: Disabled an intermittently failing Selenium test. (24-Aug-2022)
  • 6a5e53cf: 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. (22-Aug-2022)
  • 38510fd4: When importing product associations, if an matching product association was hidden or "not sold separately", a new association would be created instead of updating the existing association. (21-Aug-2022)
  • d6b49bd8: Fixed issue with multiple Cortex OSGi bundles exporting the same package, leading to potential instability at startup. (19-Aug-2022)
  • 32503b24: Increased the size of the fields used to hold catalog syndication content. (19-Aug-2022)
  • 1c464429: Modified "I search for an order by number" Cucumber expectation to wait until all Outbox messages are consumed to resolve intermittent test failures. (18-Aug-2022)
  • 01f58d6f: Removed duplicate database indexes from the TORDERADDRESS table. (18-Aug-2022)
  • 558299d3: Upgraded Spring Web from version 4.3.25.RELEASE to 4.3.30.RELEASE. (18-Aug-2022)
  • 4b5911e1: Operational Insights is a tool for validating the configuration and health of a Self-Managed Commerce environment. This patch adds an API endpoint to the Integration Server that can be used by the Operational Insights front-end. (18-Aug-2022)
  • 2a986db4: 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. (17-Aug-2022)
  • 5b453714: Fixed multiple issues with Liquibase changeset scripts. (17-Aug-2022)
  • 8ffb538e: 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). (8-Aug-2022)
  • 30e30632: Use embedded web server to reliably serve test mail attachment for Cucumber emailFileAttachments.feature. (8-Aug-2022)
  • 403e02cf: 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. (12-Jul-2022)
  • 06783c70: Added missing indexes to the TCARTDATA table. (12-Jul-2022)
  • 343070e2: Upgraded JDBC driver to ojdbc8-19.9.0.0 for Oracle 19. (4-Jul-2022)
  • 7dbcab00: Modified Cortex to allow it to continue functioning normally if ActiveMQ is overloaded or offline. (23-Jun-2022)
  • a3538eed: Upgraded Apache Shiro from 1.3.2 to 1.8.0. (17-Jun-2022)
  • fbf70513: Improved thread safety around promotion rule compilation. (26-May-2022)
  • 7f0eb894: Improved messaging in the CM when a reservation fails during order modification. (16-May-2022)
  • d58ec848: 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)
  • 8953e77a: 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)
  • 067d6eb2: Fix for Selenium test failures that can occur in the last week of the year, where that week has one or more days in the next year. (26-Apr-2022)
  • 963055f1: Fix for potential NullPointerException while Cortex is validating attribute value data type compliance. (26-Apr-2022)
  • c002ad2d: Corrected the password hash for Commerce Manager test users. (13-Apr-2022)
  • aa54fe2c: Extended the expiry date for Commerce Manager test users. (13-Apr-2022)
  • 097ecebe: Restored logging in Commerce Manager after Log4j2 upgrade. (25-Mar-2022)
  • 22161e7b: Upgraded Apache SOLR from version 7.4 to 8.11.1. (17-Mar-2022)
  • 2db7e8f5: Fixed dependencies on test database projects. (4-Mar-2022)
  • 9058f7c6: Upgraded Log4j 1.2.17 to Log4j 2.17.1. (28-Feb-2022)
  • ead625c6: Fix for Cortex 5XX error that can occur when multiple threads retrieve the default cart concurrently. (25-Feb-2022)
  • 3938ac86: Fixed an issue with AbstractPageObject where it would miss a button’s state change, causing test instability. (25-Feb-2022)
  • 9b4fba85: Fix for failing email file attachments Cucumber test due to change in place-hold.it URL. (23-Feb-2022)
  • f3106e9f: Fixed an issue where unrelated items were returned when searching for SKUs by SKU code in Commerce Manager. (19-Jan-2022)
  • a64cb835: Fixed issue in cli applications where unconsumed output on System.err could cause the application to hang. (13-Jan-2022)
  • bdcacbd2: Allow base amounts to be added/edited/deleted without first adding the price list to the changeset. (29-Dec-2021)
  • df818ed5: Upgraded Tomcat to version 9.0.50. (14-Dec-2021)
  • e28f9973: Upgraded Quartz and Servicemix Quartz dependencies to version 2.3.2. (10-Dec-2021)
  • 5fe590b4: Fixed issue with Cortex showing incorrect pagination results when retrieving recommendations. (1-Dec-2021)
  • 4fbad79d: 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. (1-Dec-2021)
  • 1a0ef084: Build stability improvements. (Sep 24, 2021)
  • e3ee55be: Improved Commerce Manager performance for catalogs with large volumes of base amounts. (Sep 21, 2021)
  • 9f7e5e24: Improve performance in cart item modifier field validator. (Sep 13, 2021)
  • 0d0353b1: Removed unnecessary duplicate promotions caches and fixed potential thundering herd issue when promotions cache is initially populated. (Sep 8, 2021)
  • 756fb70f: Fixed an issue with EP Core Tool logging. (Sep 3, 2021)
  • 92c1b6be: Fixed an intermittent build failure where the index status was not set as expected. (Sep 2, 2021)
  • 8c9833a7: Fixed an issue where Limited Use Coupons are automatically added to new orders. (Aug 26, 2021)
  • 23303c0f: Performance fix for ShipmentDetailsIdParameterServiceImpl that previously retrieved each shipment in the user’s order history to determine if the shipment resources should be accessible. (Aug 25, 2021)
  • 5a6926fd: Updated code to ensure that payment capture re-attempt failures are logged when the payment authorization has expired. (Aug 24, 2021)
  • de2cd028: Updated promotion rule retrieval so that all other rules in the ruleset are not eagerly loaded. (Aug 18, 2021)
  • 7bd1fffa: Reduced excess databases queries that were generated for cart and order modifiers. (Aug 9, 2021)
  • e3d83163: Added support for a Maven option to define how many times to rerun failing tests. (Aug 10, 2021)
  • 4896a2d5: Fixed a race condition in SolrFacetAdapter that was causing Cortex errors when retrieving faceted offer search results. (Jul 8, 2021)
  • e5392dde: Fixed issues with the _scrollToTableItemWithText function in the ep-test-support.js file that caused intermittent Cucumber test failures. (Jul 7, 2021)
  • 4c8511df: Backported the mvnmin.xml file to maintenance releases. (Jun 22, 2021)
  • cb90b233: Fixed error when viewing failed orders. (Jun 15, 2021)
  • b464aeb8: Improved catalog projection clean-up performance. (Jun 9, 2021)
  • 9b1598e0: Change mobee-test-data and shared-test-data changeset to run on every update and remove *-release-data. (May 26, 2021)
  • efa640ab: Fixed the DataPolicyFromSystemConfigurationReporting Cucumber Test Failure. (May 27, 2021)
  • 3667bd37: Removed customer Solr index. (May 17, 2021)
  • 510d6de7: Allow groovy-maven artifacts to be downloaded from Maven central and removed duplicate versions. (May 11, 2021)
  • c34af0cd: Updated maven.springframework.org with an https protocol. (May 12, 2021)
  • bd16c61d: Implemented proper initialization of TaxOperationResolvers in the ElasticPathTaxProviderPluginImpl file. (Apr 19, 2021)
  • aa5f3037: Fixed CustomerRepository method calls to enable caching values. (Apr 14, 2021)
  • b5d9c33a: Prevented multiple threads from falling through the CachingRuleServiceImpl#findChangedStoreRuleBases file simultaneously. ( Apr 12, 2021)
  • 58e19998: Updated the default batch size for the TINDEXNOTIFY table as the search primary tried to fetch all data from the table. The TINDEXNOTIFY table contains millions of records and was causing resource issues. (Apr 9, 2021)
  • d87baa7d: Updated Selenium tests due to failures with Order testGivenName and testFamilyName not existing. (Apr 8, 2021)
  • b39f8fcc: Updated product name search to use special characters in Commerce Manager. (Apr 1, 2021)
  • d1dd0dcb: Fixed CSV Import and Change Set issues. (Mar 29, 2021)
  • 897c0a8a: Improved LifecycleEventFilter to further reduce events and ensure that different entity classes with the same guid are not treated as duplicates. (Mar 23, 2021)
  • 5a4481a0: Commerce Manager now displays orders in the FAILED state. These orders were previously hidden. (12-Mar-2021)
  • f1026d51: Enhanced the orders search to support searching by user email. (3-Mar-2021)
  • 38b9c0c8: Fixed intermittent failures in the Fit tests (Framework for Integrated Test). (24-Feb-2021)
  • 1c06ac44: Improved the consistency of validation rules and made it possible to override them. (8-Feb-2021)
  • 311afcda: Replaced XA with Outbox pattern.(3-Feb-2021)
  • 44e1a8af: Editing default shipping address changes the cart’s selected shipping address. (29-Jan-2021)
  • 14386ea9: Improved performance by fixing multiple identical AttributeImpl queries in SubmitOrder. (27-Jan-2021)
  • a266a6ac: Fixed an issue where Catalog Syndication does not update the values in existing Projections using the import/export tools. The fix includes adding missing domain events and preventing unnecessary events from being emitted. (26-Jan-2021)
  • a4deef25: Fixed a failing catalog integration test. (8-Jan-2021)
  • 8ffbedd9: The purchase-price-range minimum price is now set to the lowest price, which can be either a sale price or a list price. Previously, it was always set to the lowest sale price. (17-Dec-2020)
  • 26ac28bd: Fixed the CloudOps for Kubernetes tests for the Payment API external plug-in. The fix included updating the JAR protocol to restrict the instantiation to once per VM. (17-Dec-2020)
  • 9716f0fa: Fixed an issue where the offer lookup fails when the productByUidCache and productUidByGuidCache are not synchronized. (2-Dec-2020)
  • 7e503726: Fixed an issue where prices are missing from the storefront for some customers due to a thread-safety issue in LogicalTreeBuilder. (30-Nov-2020)
  • 2c0c401d: Improved the performance of customer search indexing. (26-Nov-2020)
  • 6f47abc0: Improved cart performance by removing unnecessary cart re-pricing calls. (15-Oct-2020)
  • 2015dc99: Fixed an exception that occurs when resetting or updating the database while the Object Auditing feature is enabled. (30-Sep-2020)
  • 9bb47a33: Fixed deadlocks in the Cortex server instances that occur under very high load or when there is a large number of SKU options and values. The fix detaches the caching instance of SKUOptionValue from its state manager. (30-Sep-2020)
  • d8d216af: Enabled caching for the COMMERCE/SYSTEM/API/enableTrustedTraits setting. (1-Sep-2020)
  • 94ff604d: Fixed some integration tests that fail intermittently when run through Jenkins. The fix disables the OpenJPA data and query caches for all XA-dependent applications and tools, such as the integration server, import-export, and data synchronization tools. This change increases reliability at the expense of a slight performance loss. (18-Aug-2020)
  • dcbaee99: Fixed issues with Object Auditing when XA is enabled. The auditing functionality, which populates the TDATACHANGED table whenever database changes are detected, stopped working when XA functionality was added in Self-Managed Commerce 7.5.1. (17-Aug-2020)
  • 7a264c80: Improved the cleanupExpiredOAuth2Tokens batch job. (13-Aug-2020)
  • 3fc11fb5: Fixed an issue where the Data Population tool runs out of memory when importing very large data sets. Increased the default heap size from 1.5 GB to 2 GB. The FileFilterer class was improved by using streams rather than reading the entire file into memory before processing. (5-Aug-2020)
  • 73eb412f: Fixed a ReportingSQLException that occurs when the CSV import failure records do not fit into the TIMPORTFAULT table. Increased the ARGS field size so that the failures could be reliably recorded. (5-Aug-2020)
  • a9dd018c: Database transaction timeouts can now be configured differently for each application. The default jta.properties files are replaced with a single transactions.properties file. Within each webapp, projects can now add a src/main/resources/jta.properties file that overrides the XA transaction properties for that application. For more information about the list of all properties that can be configured, see Atomikos JTA Properties. (29-Jul-2020)
note

The following commits are included in the 8.0.1 release commit. If you update to this release, you get these changes automatically.

  • 414f448a: Fixed an issue in Commerce Manager where, when a CSV import fails, the error messages appear briefly and then close automatically without giving the user the opportunity to read the error. (23-Jul-2020)
  • 2bf76651: Fixed an issue where the featuredoffers resource was returning offers in arbitrary order instead of the order specified in Commerce Manager. (23-Jun-2020)
  • f218a332: Fixed an issue where the offer price range calculation included disabled products. Modified the offer price range calculation to include only displayable products. (16-Jun-2020)
  • 9b9af531: Improved performance for shopping cart promotions where a store has many expired promotions. The search server does not spend time compiling promotions that have expired. (11-Jun-2020)
  • 5d394e2c: Improved checkout actions behavior by adding exception handling. If a checkout action threw an exception during rollback, remaining checkout action rollback methods were skipped. Now all rollback methods are executed even if one or more actions throw an exception. (9-Jun-2020)
  • 503e6e38: Commerce Manager now displays decimal places in the shipment summary details. This issue occurs when using Oracle as the data store. (25-May-2020)
  • 9d1a35f8: Fixed the intermittent ActiveMqVirtualTopicConsumptionITest test failure. (25-May-2020)
  • a48ccd6b: Fixed an issue where navigation results using featured product sort were not respecting the defined featured product ordering. Changed the "featured" sort type for navigation results so it sorts based on featured product ordering, rather than just separating featured and non-featured products. (7-May-2020)
  • 3fbfebd6: Fixed intermittent failures with promotion cucumber tests. Added the new method isPromotionExists() and updated the verifyPromotions() method. (28-Apr-2020)
  • f9fe1384: Fixed the formatting of the description in the paymentmethods family. (28-Apr-2020)
  • 66111a46: Fixed some intermittent test failures by updating the demo data Data Policy retention period. (27-Apr-2020)
  • 20e04b77: Fixed a Data Sync Tool webapp issue where the webapp may miss messages. A misconfigured bean definition was causing changset publish event messages to be read from a JMS topic instead of a queue. (27-Apr-2020)
  • 9c4ca018: Improved the Order API documentation and replaced needinfo links with advisors. (25-Mar-2020)
  • 0b40c8df: Fixed an issue where sub-categories marked as not store visible are shown when navigating to the visible parent category. The fix includes delegating to the CategoryImpl class to determine availability. (24-Mar-2020)
  • 962410ff: Fixed an issue where search-master indexing did not recover after loss of network or database connection. (24-Mar-2020)
  • c48e3478: Fixed the Data Policy test for user automation_data_policy_user2. (19-Mar-2020)
  • 82a21c9f: Fixed a NullPointerException that can occur in Cortex when sorting on localized attributes. Added LocaleUtils.getCommerceLocalCode to ensure valid codes. (18-Mar-2020)
  • 2d0619e2: Fixed an issue where Cortex hides Multi-SKU Pre-order Products when the remaining quantity is zero. (5-Mar-2020)

Changelog Announcements​

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

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

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

Searchable user fields:

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

Searchable account fields:

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

Searchable order fields:

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

Additionally, the following bugs were fixed:

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

Replace XA with Outbox pattern​

XA transaction support was added to Self-Managed Commerce 7.5.1 to ensure that domain event messages are published if and only if transactions containing these database updates are committed to the database. This guarantee is essential to ensure that Catalog Syndication projections can be kept up-to-date.

This technology added significant complexity and boilerplate code into the Self-Managed Commerce framework. To reduce this complexity, we made the decision to replace XA with the Transactional Outbox pattern. This pattern requires the platform to insert a record into an outbox table in the same transaction as the catalog update. A separate job later reads the outbox records and relays them as the appropriate domain event messages.

The commit includes the following changes:

  • Removes all library dependencies on Atomikos.
  • Removes ep-jta module.
  • Removes XaTransactionTestSupport from all integration tests.
  • Removes support for JVM parameter -Dspring.profiles.active=non-xa.
  • Removes all XA configuration from each webapp’s context.xml files - including epjndi-xa.
  • Adds TOUTBOXMESSAGE table to the database.
  • Adds Relay Outbox Messages Quartz job in Batch Server.
  • Adds support for JVM parameter -Dspring.profiles.active=disable-domain-events.

Removed Customer Solr index​

Self-Managed Commerce uses Solr for fast lookup of records based on advanced search criteria. This includes "DisMax" searches which return relevance-sorted results based on simple search criteria. For example, the Cortex keyword searches use the Product Solr index to find products and SKUs based on a keyword search.

The customer Solr index was only used by Commerce Manager, when searching for customers by specific fields, such as name, address, or phone number. These types of searches can be done just as quickly using SQL queries against indexed database fields.

Due to the fact that customer records are transactional, meaning that the number of records will grow over time as more users interact with the store. This can cause issues due to the size of the Solr index, or if the customer index ever needs to be rebuilt from scratch, which can be very time consuming.

For these reasons, we made the decision to remove the customer Solr index, and re-implement all Commerce Manager search functions as SQL queries. This functionality is seen in the new CustomerCriterionImpl and CustomerSearchCriteria classes in the source.

Upgraded to Log4j 2.x​

Log4j 1.2 is an end-of-life product with multiple security vulnerabilities. To address this, we have upgraded to Log4j 2.17.1. This is a major upgrade that could impact your customizations.

While consuming this patch, make sure you follow the Log4j 1.x to 2.x upgrade notes.

8.0.1​

Released: July 2020

Release Highlights​

Migration of payment data to new framework tables​

In Self-Managed Commerce 8.0.0, a new payment framework was introduced. It stored payment method configuration, saved payment methods, and payment history data in different tables than previous versions of Self-Managed Commerce. Self-Managed Commerce 8.0.1 now contains Liquibase changesets that automatically transforms your payment data into the new table structure. This allows you to maintain payment history and existing purchases to continue the standard workflow, such as payment capture when physical items ship, modification of in progress orders, and issuing refunds, without errors.

The following diagrams illustrate the old and new data models, to compare the changes.

Self-Managed Commerce 7.6.x Payments Data Model​

Self-Managed Commerce 7.6.x Payments Data Model Diagram

note

The red tables are removed or modified as of version 8.0.x.

Self-Managed Commerce 8.0.x Payments Data Model​

Self-Managed Commerce 8.0.x Payments Data Model Diagram

note

The blue tables are new or modified as of version 8.0.x.

Expose cart modifiers on default cart​

Self-Managed Commerce 7.6.0 added the ability to define cart modifiers which are fields associated with each custom shopping cart. Cart modifiers are used for shopping cart identification, such as cart name, or for storing additional information about the shopping cart, such as a store code for a pickup in-store scenario. One limitation of this feature was that cart modifiers did not appear on a user’s default cart.

Self-Managed Commerce 8.0.1 exposes cart modifiers in the default cart. This change also allows businesses to define a default value that is applied to the cart modifiers for default carts, so that these required fields don’t block checkout of a default cart.

For more information about how to configure cart modifiers including the default cart values, see the Store and Cart sections of the Import/Export documentation.

Support for multiple public keys for JWT token validation​

Cortex allows clients to authenticate users by passing a JWT token into the Authorization header. This JWT token is encoded and signed using an algorithm called HMAC-SHA256 and contains details of the user who should be authenticated. This token is only accepted by Cortex if the signature can be validated using a public key that was created at the same time as the private key used to sign and encode the JWT token.

In previous versions of Self-Managed Commerce, only one public key could be defined in ~/ep/conf/cortex/jwtTokenStrategy.config as in the following example:

publicKey="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0bJzXyIto3wZwrqMtu49ZzGNvb1nWJ3ujROP7aFQyKYqADZ7Y4USa9kychzfs2tw/IQLzfOLQy8oKOVQTbt5KD0osca3T9fP6uMFEpvR1zwcuy5jHUDuyqlgOqAqvySnBCz1/BH6MMQJfITBdcCZCp56uAUBSGW0pfsXwEVad75jdm3tGKCU22cgx7/K1cF3YnbKMAWtKbvW3lLpueohXHvNDIB+xf2Eomp1RRO93n6whkvoKg5cKJug4S17s0cSLrn8oZRp85cmWJ59i7nYqVdY2DpDDTIwpZNIdqauQlzQvInzf1ZEFHl0trDaMV7JJgVQSrDf36hWEF0mQ54X7wIDAQAB"

Multiple public keys can be defined in this file, and Cortex will iterate across these until it finds one that decodes the JWT token successfully, or fails if none of the public keys is able to decode the token. Example of the new ~/ep/conf/cortex/jwtTokenStrategy.config format:

publicKeys = [ \
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2S73WrOdWC95ifyLhZvr1J9eH0Md/XWKb4wtc3EiztRxi7llc/iZcteeaPTXc3nG1soYm+0kUbp2/PzIPe1yTsdL5zvFDPQtJZL9iv38sRJdjEXHDqKdo+7PKbTbER2bs/U8W5YloC//KbkEFD7MWLqG6ER8N82DLxuAILPnSkqbuhU3t+HOjgw6GpD+2J7FED8ABH18lFXOzqTssZTurJ6zKZb/Mys5Qerg/mqmwpHNKcxWFEh+zv6rTlQkbVHzauG7mWwGvqdTROY/HJRoYjtpWl0eNGoHCXxwo44g0ZdqSC3coPeskVxDnHysAmHb3V9aMxTcphM5vJtRxeQRLwIDAQAB", \
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr9/+ME1B2gPjoh1xLzZx+qx91uL3TGHrtTXXPXxkziVBJG44wSQTxTYlXFEyIMWW8Q/VKHVKEmnt/MivyaOey5swNc1EDRZ6igJfI8JpxgRbj7KzR261ATjRbZOn1LU09VYi96inlj6SdV6oP5sLwHZ63X305IA0b1oMsDypgbnWz+F3SiMmPG6DspTQ4HPdcI32SohU7b5ysJDlxt0hiTpz6Ucd1jIhHu3F1HsU9vjswgaIOlaxPnSkgFBjOCS3P8/5Ptyvuye2jNb/q77sLipQM9nm81uBwVue0AzntzgKin1OcXpiuo0TWCxYYtRh9O4ueJfrP/SFN7WjWAsROQIDAQAB", \
]

Support for customer identification based on profile attribute​

At the start of every API request, Cortex uses an internal header called x-ep-user-id to determine which customer is being authenticated. In past versions of Self-Managed Commerce, this was always interpreted as the customer GUID. However, now the way this value is interpreted depends on the value of the COMMERCE/SYSTEM/CUSTOMER/identifier setting.

If this setting is set to GUID, the database retrieves a customer record by looking up a record with the GUID field matching the x-ep-user-id value. If a customer record is not found, then one is created automatically.

If this setting is set to ATTRIBUTE_VALUE:CP_SOMETHING, the database retrieves a customer record by looking up a record with a profile attribute value with key CP_SOMETHING matching the x-ep-user-id value. The value of CP_SOMETHING can be changed to any configured profile attribute key. If a customer record is not found, then an error is returned by Cortex.

The setting also supports context values, where the context key must match the value of the iss field contained within the passed JWT token. This allows you to have a different lookup strategy depending on which system created the JWT token. These context values are only supported by JWT tokens.

Depending on which authentication mechanism you are using, the internal x-ep-user-id header is populated in different ways:

  1. If you are using the standard OAuth mechanism, the x-ep-user-id value is populated from the customer GUID contained within the TOAUTHACCESSTOKEN record that is retrieved by reading the identifier passed in the Authorization header.

  2. If you are using the Trusted Header Mode Accelerator, the public x-ep-user-id header is transformed from the customer’s user-id value into the customer’s GUID value.

  3. If the client passes a JWT token into the Authorization header, then the x-ep-user-id value is populated from the profile field within the encoded JWT token.

System Requirements and Compatibility​

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

Elastic Path ComponentCompatibility
Elastic Path CloudOps for AWS (Amazon Web Services)Compatibility Matrix
Elastic Path CloudOps for KubernetesCompatibility Matrix

Upgrade Notes​

  • If you previously ra Self-Managed Commerce in production with version 7.6.1 or earlier, ensure that the payment history on your orders and the saved payment instruments for each customer upgraded properly before upgrading production.
  • Customizations to tables such as TORDERPAYMENT or TPAYMENTTOKEN may cause the upgrade scripts to work incorrectly or could cause data to be lost unless the upgrade scripts are customized to account for this.
  • If your database contains a large number of TORDERPAYMENT records, this migration may take some time. Elastic Path testing shows that the upgrade scripts can process about 250,000 TCUSTOMERPAYMENTMETHOD records per minute and 400,000 TORDERPAYMENT records per minute.
  • After upgrading your Self-Managed Commerce database, all of the Payment Provider Configurations are in the Draft state. This is done so that you can ensure that the configurations contain all required values for the new payment plugins. Ensure to change these to the Active state so that shoppers can use these as valid payment methods.
  • The format of the jwtTokenStrategies.config file has changed to support definition of multiple public keys. Ensure that all of these files use the format described in the preceding Support for multiple public keys for JWT token validation section.

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

Fixed Issues​

Self-Managed Commerce 8.0.1 contains the following fixed issues:

Changed the "featured" sort type for navigation results so it sorts based on featured product ordering, rather than just separating featured and non-featured products.

Multiple Data Sync issues​

  • Fixed NullPointerException while rendering the summary if an exception was thrown during change set publishing. This prevents the status message from being sent to the ep.dst queue.

  • JPA relationship between BusinessObjectMetadata (TOBJECTMETADATA) and BusinessObjectGroupMember (TOBJECTGROUPMEMBER) was one-to-one instead of many-to-one.

  • Improved a DST debug logging to show both GUID and class type when looking up entities.

  • Changed default sort order for changeset objects from object name to object ID due to localization bug that can occur when sorting by name.

  • Moved two DaoAdapter classes that were located in the wrong package and updated them to use the entity locator to retrieve objects.

Order shipment summary not showing decimals properly (Oracle)​

Fixed issue when viewing the shipment summary details in Commerce Manager while using Oracle as the data store, in which decimal places are not displayed correctly.

DST webapp may miss messages​

A misconfigured bean definition was causing changset publish event messages to be read from a JMS topic instead of a queue.

Store invisible sub-categories were shown when navigating to the visible parent category​

Fixed an issue where Cortex continued to return sub-categories marked as not store visible.

Search master indexing did not recover after loss of network/db connection​

Updated the search master to correctly recover after a database connection loss.

NullPointerException can occur in Cortex when sorting on localized attributes​

Added LocaleUtils.getCommerceLocaleCode to ensure valid locale codes are used.

Multi-Sku Pre-Order Product was not visible when remaining quantity is zero​

Fixed an issue where Cortex hid pre-order products with no remaining inventory.

Offer lookup returned products that were not date enabled​

Fixed offer lookup form returning products that have a future start date.

Imported the store visible value inverted​

Fixed the Commerce Manager CSV import for products which treated the store visible column value as a store hidden flag.

Offer Price Range was empty if first child sku had no price​

Fixed the offer price range result in Cortex so it returns a result even if some of the skus do not have a price assigned.

Issues with Import/Export of localized product attribute values​

Localized product attribute values are now imported and exported in locale string format, such as en_US, instead of language tag format, such as en-US to be consistent with the rest of Import/Export. Also, error messages have been improved to differentiate between locales that are unsupported by the catalog versus unsupported by the system.

Expired shopping cart promotions were compiled unnecessarily​

A performance optimization for customers with large numbers of expired promotions to make sure that the search server does not spend time compiling promotions that have expired.

If a checkout actions threw an exception during rollback, remaining checkout action rollback methods were skipped​

A defensive change to ensure that if there is a checkout failure, that all rollback methods are executed even if one or more actions throw an exception.

The featuredoffers resource was returning offers in arbitrary order instead of the order specified in Commerce Manager.

Offer price range calculation included disabled products​

Modified the offer price range calculation to only include displayable products.

Removed unused system configuration settings​

The following unused system configuration settings were removed from the database:

  • COMMERCE/STORE/CATALOG/catalogViewPagination
  • COMMERCE/STORE/CATALOG/CatalogSitemapPagination
  • COMMERCE/STORE/SEARCH/searchCategoriesFirst

Updated default public key in the deployed jwtTokenStrategies.config to be compatible with the default Account Management private key​

Elastic Path has updated the public key deployed in the jwtTokenStrategies.config file. The previous default public key deployed was not compatible with the default Account Management private key.

note

Only use the default private key in Account Management and the corresponding public key in Cortex for testing and not for production deployments. For more information about how to change these keys, see Account Management Requirements.

Improved batch server logging for catalog syndication jobs​

The default log4j.properties file now includes Spring Batch INFO messages by default to make it more obvious when the batch server is working on rebuilding the catalog projections. This change also adds a warning to the logs if it attempts to build an offer projection but no related categories are found in the category projections.

Performance improvements for Import/Export products.xml imports​

Importing products using Import/Export is now significantly faster. In some circumstances, there is up to a 10x performance increase when importing a significant number of products.

Intermittent test failures​

  • Fixed the user role selection to fix intermittent test failure.
  • Fixed the intermittent ActiveMqVirtualTopicConsumptionITest test failure.
  • Fixed the intermittent promotion Cucumber test failure.
  • Fixed the intermittent email Cucumber test failure.
  • Updated the demo data Data Policy retention period to fix the intermittent test failure.
  • Fixed the Selenium test that fails if the data policy revoked consents batch job runs before test executes.
  • Fixed a JUnit Catalog integration test failure. Changed the entity lifecycle event listener and added a rule to control camel contexts start and stop programmatically. (24-Jul-2020)

Upgraded Libraries​

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

LibraryChange
activemq-broker-5.15.12.jarVersion changed from 5.15.8
activemq-camel-5.15.12.jarVersion changed from 5.15.8
activemq-client-5.15.12.jarVersion changed from 5.15.8
activemq-console-5.15.12.jarVersion changed from 5.15.8
activemq-jms-pool-5.15.12.jarVersion changed from 5.15.8
activemq-kahadb-store-5.15.12.jarVersion changed from 5.15.8
activemq-openwire-legacy-5.15.12.jarVersion changed from 5.15.8
activemq-pool-5.15.12.jarVersion changed from 5.15.8
activemq-spring-5.15.12.jarVersion changed from 5.15.8
activemq-stomp-5.15.12.jarVersion changed from 5.15.8
activemq-web-5.15.12.jarVersion changed from 5.15.8
activemq-web-console-5.15.12.warVersion changed from 5.15.8
antisamy-1.5.8.jarVersion changed from 1.5.3
apache-jsp-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
apache-jstl-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
asm-commons-6.0.jarAdded
asm-tree-6.0.jarAdded
audience-annotations-0.5.0.jarAdded
camel-core-2.23.4.jarVersion changed from 2.23.1
camel-core-xml-2.23.4.jarVersion changed from 2.23.1
camel-groovy-2.23.4.jarVersion changed from 2.21.1
camel-http-common-2.23.4.jarVersion changed from 2.23.1
camel-jackson-2.23.4.jarVersion changed from 2.23.1
camel-jms-2.23.4.jarVersion changed from 2.23.1
camel-jsonpath-2.23.4.jarVersion changed from 2.23.1
camel-mail-2.23.4.jarVersion changed from 2.21.1
camel-script-2.23.4.jarVersion changed from 2.21.1
camel-servlet-2.23.4.jarVersion changed from 2.23.1
camel-spring-2.23.4.jarVersion changed from 2.23.1
camel-swagger-java-2.23.4.jarVersion changed from 2.23.1
camel-test-2.23.4.jarVersion changed from 2.23.1
camel-test-spring-2.23.4.jarVersion changed from 2.23.1
checker-qual-2.10.0.jarAdded
commons-beanutils-1.9.4.jarVersion changed from 1.9.3
commons-codec-1.14.jarVersion changed from 1.11
commons-daemon-1.2.2.jarVersion changed from 1.0.15
commons-fileupload-1.4.jarVersion changed from 1.3.3
commons-pool2-2.8.0.jarAdded
error_prone_annotations-2.3.4.jarAdded
failureaccess-1.0.1.jarAdded
geronimo-jacc_1.1_spec-1.0.2.jarVersion changed from 1.0.1
geronimo-jta_1.0.1B_spec-1.0.1.jarRemoved
greenmail-1.3.jarRemoved
guava-24.1.1-jre.jarVersion changed from 18.0
h2-1.4.200.jarVersion changed from 1.3.170
hadoop-annotations-2.7.4.jarRemoved
hadoop-auth-2.7.4.jarRemoved
hadoop-common-2.7.4.jarRemoved
hadoop-hdfs-2.7.4.jarRemoved
j2objc-annotations-1.3.jarAdded
jackson-annotations-2.10.3.jarVersion changed from 2.9.6
jackson-core-2.10.3.jarVersion changed from 2.9.6
jackson-core-asl-1.9.13.jarRemoved
jackson-databind-2.10.3.jarVersion changed from 2.9.6
jackson-dataformat-xml-2.9.9.jarVersion changed from 2.9.7
jackson-dataformat-yaml-2.9.9.jarVersion changed from 2.9.7
jackson-datatype-joda-2.9.9.jarVersion changed from 2.9.7
jackson-datatype-jsr310-2.10.3.jarVersion changed from 2.10.2
jackson-jaxrs-base-2.10.3.jarAdded
jackson-jaxrs-json-provider-2.10.3.jarAdded
jackson-mapper-asl-1.9.13.jarRemoved
jasypt-1.9.3.jarVersion changed from 1.9.2
jdk.tools-1.8.jarRemoved
jdom2-2.0.6.jarVersion changed from 1.0
jetty-annotations-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-continuation-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-deploy-9.3.20.v20170531.jarRemoved
jetty-http-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-io-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-jaas-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-jmx-9.3.20.v20170531.jarRemoved
jetty-jndi-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-plus-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-rewrite-9.3.20.v20170531.jarRemoved
jetty-runner-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-security-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-server-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-servlet-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-servlets-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-util-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-webapp-9.2.26.v20180806.jarRemoved
jetty-webapp-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jetty-xml-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
jsr305-3.0.2.jarAdded
listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jarAdded
mailapi-1.4.3.jarRemoved
nekohtml-1.9.22.jarAdded
netty-3.10.6.Final.jarVersion changed from 3.10.5.Final
okio-1.14.0.jarVersion changed from 1.14.1
org.apache.commons.codec-1.11.0.jarRemoved
org.apache.commons.logging-1.1.1.v201101211721.jarRemoved
org.apache.felix.webconsole-4.3.16.jarVersion changed from 4.3.4
org.apache.servicemix.bundles.spring-aop-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-beans-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-context-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-context-support-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-core-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-expression-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-jdbc-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-jms-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-security-core-4.2.13.RELEASE_1.jarVersion changed from 4.2.4.RELEASE_1
org.apache.servicemix.bundles.spring-tx-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-web-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
org.apache.servicemix.bundles.spring-webmvc-4.3.25.RELEASE_1.jarVersion changed from 4.3.19.RELEASE_1
rome-1.12.2.jarVersion changed from 1.0
rome-utils-1.12.2.jarAdded
selenium-api-3.141.59.jarVersion changed from 3.14.0
selenium-chrome-driver-3.141.59.jarVersion changed from 3.14.0
selenium-edge-driver-3.141.59.jarVersion changed from 3.14.0
selenium-firefox-driver-3.141.59.jarVersion changed from 3.14.0
selenium-ie-driver-3.141.59.jarVersion changed from 3.14.0
selenium-java-3.141.59.jarVersion changed from 3.14.0
selenium-opera-driver-3.141.59.jarVersion changed from 3.14.0
selenium-remote-driver-3.141.59.jarVersion changed from 3.14.0
selenium-safari-driver-3.141.59.jarVersion changed from 3.14.0
selenium-support-3.141.59.jarVersion changed from 3.14.0
snakeyaml-1.23.jarRemoved
spotbugs-annotations-3.1.9.jarAdded
spring-aop-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-aop-4.3.26.RELEASE.jarVersion changed from 4.3.18.RELEASE
spring-batch-core-4.0.4.RELEASE.jarVersion changed from 4.0.1.RELEASE
spring-batch-infrastructure-4.0.4.RELEASE.jarVersion changed from 4.0.1.RELEASE
spring-beans-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-beans-4.3.26.RELEASE.jarVersion changed from 4.3.18.RELEASE
spring-context-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-context-4.3.26.RELEASE.jarVersion changed from 4.3.18.RELEASE
spring-context-support-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-core-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-data-commons-1.13.22.RELEASE.jarVersion changed from 1.13.16.RELEASE
spring-data-jpa-1.11.22.RELEASE.jarVersion changed from 1.11.16.RELEASE
spring-expression-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-jdbc-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-jms-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-messaging-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-orm-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-retry-1.2.4.RELEASE.jarVersion changed from 1.2.1.RELEASE
spring-security-config-4.2.13.RELEASE.jarVersion changed from 4.2.11.RELEASE
spring-security-core-4.2.13.RELEASE.jarVersion changed from 4.2.11.RELEASE
spring-security-oauth2-2.3.8.RELEASE.jarVersion changed from 2.3.5.RELEASE
spring-security-remoting-4.2.13.RELEASE.jarVersion changed from 4.2.11.RELEASE
spring-security-web-4.2.13.RELEASE.jarVersion changed from 4.2.11.RELEASE
spring-test-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-tx-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-web-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
spring-webmvc-4.3.25.RELEASE.jarVersion changed from 4.3.19.RELEASE
velocity-1.7.jarRemoved
velocity-engine-core-2.2.jarAdded
websocket-api-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
websocket-client-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
websocket-common-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
websocket-server-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
websocket-servlet-9.3.28.v20191105.jarVersion changed from 9.3.20.v20170531
woodstox-core-5.1.0.jarVersion changed from 5.0.3
xbean-spring-4.16.jarVersion changed from 4.2
xercesImpl-2.12.0.jarVersion changed from 2.9.1
xml-apis-1.4.01.jarAdded
xml-apis-ext-1.3.04.jarRemoved
xstream-1.4.10.jarRemoved
zookeeper-3.4.14.jarVersion changed from 3.4.10

8.0.0​

Released: February 27, 2020

Release Highlights​

Payments​

With the new Payments framework, Elastic Path provides the capability to easily create payment plug-ins for different payment providers and methods to support the changing needs of today’s shoppers and buyers.

The Payments framework provides a capability-based plug-in model that is designed to support traditional and non-traditional payment types. Plug-in developers only implement what is relevant for their use case, simplifying and reducing development efforts.

Available out-of-the-box is a CyberSource plug-in for Visa CyberSource customers, and a Purchase Order plug-in, available as source. Use the Purchase Order Plug-in to capture Purchase Order numbers in the checkout flow or customize it for your specific use case. For more information about the Payments framework and plug-ins, see Payments and Payments Plug-ins.

Announcements and Notices​

Removed Features​

FeatureNotes
The deprecated Cortex system tests in the extensions/cortex/deprecated-system-tests module were removed.Cortex system tests are still available in the extensions/cortex/system-tests module.

System Requirements and Compatibility​

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

Elastic Path ComponentVersionsLocationsgit branch or file name
Elastic Path CloudOps for AWS (Amazon Web Services)CloudOps for AWS compatibility matrixcode.elasticpath.comrelease/3.N.x where N is the minor version number
Elastic Path CloudOps for KubernetesCloudOps for Kubernetes compatibility matrixcode.elasticpath.comrelease/2.N.x where N is the minor version number

New in This Release​

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

Core Commerce updates​

Added the Payments framework which provides a capability-based plug-in model that is designed to support traditional and non-traditional payment types. Plug-in developers only implement what is relevant for their use case, simplifying and reducing development efforts. For more information, see the Payments documentation.

Added the CyberSource plug-in: CyberSource customers can connect the plug-in to the Elastic Path Payments framework, configure in Commerce Manager and start accepting payments immediately. Customers can handle credit card payment processing and tokenization out-of-the-box,using either the Direct Post or Hosted Page methods provided by CyberSource. For more information, see the CyberSource Plug-in documentation.

Cortex API updates​

  • Support for payments resources in Cortex.
  • Added the paymentmethods order-payment-method resource to show all the available payments methods.
  • Added the paymentinstructions order-request-instructions-form resource to retrieve the instructions from the payment plug-in.
  • Added the paymentinstruments order-payment-instrument-form resource to generate the payment instrument.
  • Added the paymentinstruments order-payment-instrument-selector resource to choose an available payment instrument and attach it to the order.
  • Added the paymentinstruments payment-instruments to get all the profile payment instruments.
  • Added the paymentinstruments profile-default-payment-instrument-selector selector to choose a default profile payment instrument.
  • Added the paymentmethods profile-payment-method resource to show all the available saveable payments methods.
  • Added the paymentinstruments purchase-payment-instruments resource to show all the payment instruments used to pay for an order.
  • Added the paymentinstruments purchase-payment-instrument resource to view the payment instrument used in the order.

Reference Storefront updates​

  • Added a dynamic style guide to Storybook from Invision
  • Bug fixes
  • B2B branding theme
  • Quick order and Bulk order with Multi-cart
  • Initial Payments 8.0.0 compatibility for Happy Path plug-in (a test credit card plug-in) if available.
  • Payments with Purchase Order plug-in

CloudOps updates​

  • CloudOps for Kubernetes replaces CloudOps for Azure. CloudOps for Kubernetes is a re-engineering of CloudOps for Azure to add support for both Azure and AWS (Amazon Web Services) deployments using cloud agnostic tooling.

Upgrade Notes​

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

Core Commerce​

With the introduction of the new Payments framework, significant changes have been made to how Elastic Path stores payment transactions and how these transactions relate to orders. There is no out-of-the-box data migration that exists to move data from the old schema to the new schema. As a result, upgrading to 8.0.x without taking specific steps to migrate the data, can result in Commerce Manager users unable to execute the following behavior:

  • Complete shipments from pre-existing orders. This is any order that pre-dates the upgrade.
  • Modify an order total, by either increasing or decreasing on existing orders. This is any order that pre-dates the upgrade.
  • Create a refund on pre-existing orders.
  • Create and exchange on pre-existing orders.

The following behavior can also be present:

  • Saved payment tokens on customer profiles are no longer be visible.
  • Payment history on existing orders is not be visible in Cortex or through Commerce Manager.

If any of these behaviors impact you, contact your implementation partner and consider upgrading to a future release.

note

Existing data is not deleted. The issues mentioned relate to the pre-existing data format being incompatible with the new payments capabilities. New order and payment transactions are stored in the new schema and are unaffected.

Database Changes​

Ensure that the database is updated as required when you upgrade Self-Managed Commerce to the current version. The following database tables are updated:

  • Updated TSHOPPINGCART table to replace the individual indexes on SHOPPER_UID and STATUS with a new composite index on SHOPPER_UID plus STATUS.

The following database tables are added for payments:

  • TPaymentInstrument: Represents the Payment Instrument
  • TPaymentInstrumentData: Represents additional data associated with the payment instrument as key value pairs
  • TPaymentProviderConfig: Represents an association to payment provider configuration by GUID and name
  • TPaymentProviderConfigData: Represents additional data associated with the payment provider configuration
  • TCustomerPaymentInstrument: Represents the payment instrument saved in profile for a customer
  • TCustomerDefaultPaymentInstrument: Represents the default profile payment instrument for a customer
  • TCartOrderPaymentInstrument: Represents the relationship between the chosen payment instrument and the cart order
  • TOrderPaymentInstrument: Represents a payment instrument used in an order
  • TOrderPayments: Represents a payment transaction on a payment instrument
  • TPaymentLocalizedProperties: Represents a localized name for a payment provider configuration
  • TStorePaymentProviderConfig: Represents the relationship between the store and the payment provider configuration

For more information about database tables, see Payments.

Fixed Issues​

Core Commerce​

  • Fixed an issue with the availability rule setting for a product in Commerce Manager. Previously, if the availability rule for a product is set to always available, you can’t change the rule to any other option. Also, if the rule is set to any other option than always available, you can’t change it to always available. Now, you can change the availability rule for a product as required.
  • Fixed issue with retrieval of SKU Options and SKU Option Values when reading products, which resulted in unnecessary database queries, increased memory consumption and potential system instability. For more information, see Optimizing Performance.
  • Fixed issue where many duplicate copies of queries with an IN clause are cached, which resulted in increased memory consumption and potential system instability.
  • Fixed performance degradation when shoppers have a large number of carts.
  • Fixed product search indexing performance issues with a large number of stores and virtual catalogs.