Learn about changes to Elastic Path Commerce for this release. Fixes since the release are summarized in the changelog.
The changelog contains the list of fixes and improvements made to Elastic Path Commerce 8.1 since its release date. To learn how to consume the updates, see Consuming Support Fixes.
- 740ea031: Use embedded web server to reliably serve test mail attachment for Cucumber
- 6d4bed73: Added several indexes that were missing on Oracle and PostgreSQL databases. (25-Jul-2022)
- d47f3ec8: 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). (25-Jul-2022)
- b4bcbc45: Fixed issue where cart item modifiers on shopping cart child line items cannot be updated. (21-Jul-2022)
- ac8c1f33: Operational Insights is a tool for validating the configuration and health of an Elastic Path Commerce environment. This patch adds an API endpoint to the Integration Server that can be used by the Operational Insights front-end. (21-Jul-2022)
- e82f217e: 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. (20-Jul-2022)
- 38b7d7fc: Disabled checksum validation on the
SUP-1020-customer-search-fields-case-insensitivechangeset to account for required changes in backports to earlier versions. (19-Jul-2022)
- 10e17bd6: Upgraded JDBC driver to
ojdbc8-188.8.131.52for Oracle 19. (4-Jul-2022)
- e757e7fe: Performance improvement that moves shopping cart, shopping cart line, order, and order line metadata from separate tables into
CLOBfields to reduce the required table joins. (4-Jul-2022)
- cf9ade6a: 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. (23-Jun-2022)
- 745ac707: Upgraded Apache Shiro from 1.3.2 to 1.8.0. (17-Jun-2022)
- 10026d95: Modified Cortex to allow it to continue functioning normally if ActiveMQ is overloaded or offline. (14-Jun-2022)
- c2e5ecc4: Improved thread safety around search index rule compilation. (25-May-2022)
- e02bf404: Improved messaging in the CM when a reservation fails during order modification. (16-May-2022)
- a5a3241e: 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)
- 5b8577be: Fixed an issue where service logs were not being written to the correct location. They are now always written to
- 363df6e1: Fixed an issue where a customer’s username is sometimes not migrated properly during an upgrade to EPC 8.1. (29-Apr-2022)
- 5e64abfc: 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)
- 30de9310: Fix for potential
NullPointerExceptionwhile Cortex is validating attribute value data type compliance. (26-Apr-2022)
- 95076ee3: Changed attribute value
VARCHARto prevent JPA from making additional database queries for each attribute value. (25-Apr-2022)
- c611cbeb: Modified the
I search for an order by numberCucumber expectation to wait until all Outbox messages are consumed to resolve intermittent test failures. (19-Apr-2022)
- 707f12c3: Corrected the password hash for Commerce Manager test users. (13-Apr-2022)
- 3b5d9b00: Extended the expiry date for Commerce Manager test users. (5-Apr-2022)
- 789a6ea6: Inject producer template into
RelayOutboxMessageBatchProcessorvia Spring instead of
- 956d186f: Restored logging in Commerce Manager after Log4j2 upgrade. (25-Mar-2022)
- 55dbf095: Fixed issues with the re-population of which caused the cache to become ineffective after the TTL expires. (25-Mar-2022)
- 7f464679: Upgraded Apache SOLR from version 7.4 to 8.11.1. (17-Mar-2022)
- beffaa34: 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. (4-Mar-2022)
- a90150b4: Fixed dependencies on test database projects. (4-Mar-2022)
- 4473a067: Fixed an issue with
AbstractPageObjectwhere it would miss a button’s state change, causing test instability. (28-Feb-2022)
- 75e62059: Upgraded Log4j 1.2.17 to Log4j 2.17.1. (28-Feb-2022)
- 69cd27d3: Fix for Cortex 5XX error that can occur when multiple threads retrieve the default cart concurrently. (25-Feb-2022)
- 17172be7: Disabled unnecessary dependency retrieval when exporting through Import/Export API to greatly improve performance. Also fixed
exportconfiguration.xmlso it correctly excludes associated products from the product export. (24-Feb-2022)
- ad35af22: Fix for failing email file attachments Cucumber test due to change in
- 7b8d26a4: Fixed an issue where shoppers were able to access Restricted and Under Construction stores in Cortex. (31-Jan-2022)
- d8cb4304: Fixed an issue where unrelated items were returned when searching for SKUs by SKU code in Commerce Manager. (18-Jan-2022)
- a0be367b: Fixed issue in cli applications where unconsumed output on
System.errcould cause the application to hang. (13-Jan-2022)
- 4a4931b0: Allow base amounts to be added/edited/deleted without first adding the price list to the changeset. (29-Dec-2021)
- 66bea22e: Upgraded Tomcat to version 9.0.50. (14-Dec-2021)
- 2d123d97: Upgraded Quartz and Servicemix Quartz dependencies to version 2.3.2. (13-Dec-2021)
- 9a80846b: When a promotion can apply to multiple cart line items, this fix ensures that the
appliedpromotionsresource shows the promotion for all of the applicable line items. (Nov 24, 2021)
- 7f7f29dc: Fixed issue with Cortex showing incorrect pagination results when retrieving recommendations. (Nov 23, 2021)
- f9a557df: Build stability improvements. (Sep 24, 2021)
- 59392909: Improved Commerce Manager performance for catalogs with large volumes of base amounts. (Sep 21, 2021)
- f89b5e22: Implemented deadlock retries to address deadlocks on tables such as under high load. (Sep 14, 2021)
- eecbabff: Fixed an intermittent build failure where the index status was not set as expected. (Sep 15, 2021)
- 0ce94c21: Removed unnecessary duplicate promotions caches and fixed potential thundering herd issue when promotions cache is initially populated. (Sep 2, 2021)
- c55701d8: Fixed the cache for the
DynamicAttributeValue. (Aug 30, 2021)
- 15f5de38: Fixed an issue where Limited Use Coupons are automatically added to new orders. (Aug 24, 2021)
- be4ab3e8: 2nd payment capture attempts are not logged / recorded in TORDERPAYMENTS when using an expired tokens (Aug 24, 2021)
- 790d9b89: Performance fix for
ShipmentDetailsIdParameterServiceImplthat previously retrieved each shipment in the user’s order history to determine if the
shipmentresources should be accessible. (Aug 24, 2021)
- 2ce64f13: Updated promotion rule retrieval so that all other rules in the ruleset are not eagerly loaded. (Aug 16, 2021)
- 1b2b2b26: Improved performance in the cart item modifier field validator. (Aug 12, 2021)
- d7089e29: Reduced excess databases queries that were generated for cart and order modifiers. (Aug 10, 2021)
- 0d07b56c: Added support for a Maven option to define how many times to rerun failing tests. (Aug 11, 2021)
- 73d299cd: Fixed a race condition in
SolrFacetAdapterthat was causing Cortex errors when retrieving faceted offer search results. (Jul 7, 2021)
- 9163dc13: Fixed issues with the
_scrollToTableItemWithTextfunction in the
ep-test-support.jsfile that caused intermittent Cucumber test failures. (Jul 6, 2021)
- 17844e9b: Backported the
mvnmin.xmlfile to maintenance releases. (Jun 22, 2021)
- 63c43df5: Improved catalog projection clean-up performance. (Jun 10, 2021)
- 7b84f267: Fixed an error when viewing failed orders. (Jun 9, 2021)
- de545808: Updated Studio to ensure that zoom builder requests are not made until the zoom builder is opened. (May 27, 2021)
- 0f98fe40: Change
shared-test-datachangeset to run on every update and remove
*-release-data. (May 26, 2021)
- bd040c6d: Allow groovy-maven artifacts to be downloaded from Maven central and removed duplicate versions. (May 7, 2021)
- 75868e3b: Updated
httpsprotocol. (May 5, 2021)
- 054f3cc0: Removed customer Solr index. (May 3, 2021)
- 532aeb03: Implemented proper initialization of
ElasticPathTaxProviderPluginImplfile. (Apr 14, 2021)
- 27b264ae: Fixed the
CustomerRepositorymethod calls to enable caching values. (Apr 13, 2021)
- a8dc8e41: Updated product name search with special characters in Commerce Manager. (Apr 1, 2021)
- 181bde5d: Updated the default batch size for the
TINDEXNOTIFYtable. Previously, the search primary tried to fetch all data from the table. The
TINDEXNOTIFYtable contains millions of records and was causing resource issues. (Mar 31, 2021)
- fe4c8a36: Fixed CSV Import and Change Set issues. (Mar 25, 2021)
- 65ff750b: Improved
LifecycleEventFilterto further reduce events and ensure that different entity classes with the same guid are not treated as duplicates. (Mar 23, 2021)
- 07e08cf5: Commerce Manager now displays orders in the
FAILEDstate. These orders were previously hidden. (11-Mar-2021)
- faa5f78a: Fixed intermittent failures in the Fit tests (Framework for Integrated Test). (26-Feb-2021)
- 57938e42: Fixed an Out of Memory error caused by multiple threads falling through
- 89d078d0: Replaced XA with Outbox pattern.. (3-Feb-2021)
- c46f5d76, 659deef1: 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
SKUOptionValuefrom its state manager. (3-Feb-2021)
- 95475632: Improved the consistency of validation rules and made it possible to override them. (2-Feb-2021)
- eb086298: Fixed an issue where editing the default shipping address causes it to become the selected shipping address on all active shopping carts. (27-Jan-2021)
- fc252d06: 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. (25-Jan-2021)
- e55fc586: Fixed a failing catalog integration test. (8-Jan-2021)
- 82c2cce7: Improved performance by fixing multiple identical
- 0747866b: Improved the performance of customer search indexing. (11-Dec-2020)
- 1c66140c: Fixed an issue where the offer lookup fails when the
productUidByGuidCacheare out of sync due to cache expiries. (3-Dec-2020)
- ecf0b24b: Fixed issues with JWT Token authentication used by PunchOut. (2-Dec-2020)
- 8c0ceae4: Fixed an issue where prices are missing from the storefront for some customers due to a thread-safety issue in
- b48ee260: Fixed an issue where running the database upgrade process from 8.0.0 to 8.0.1 could hang. (27-Nov-2020)
- 72309f3b: Added an
accountpurchaselistlink to account purchases. Commerce Manager now displays the link only for purchases made for an account. (26-Oct-2020)
- a7475923: Improved cart performance by removing unnecessary cart re-pricing calls. (16-Oct-2020)
- d4ebb8fa: Cortex now displays the
selectedaccountlink on the default profile when the
x-ep-shared-account-idheader is set. (7-Oct-2020)
- a418f891: Commerce Manager now displays orders created for an account in the account history. Orders were incorrectly showing in the user history. (6-Oct-2020)
- 1659ec3a: Fixed an issue where custom carts were not associated with the account specified in the
- 01c25ede: Cortex now sets default cart modifier values properly for new custom account carts. (5-Oct-2020)
- 608968d5: Fixed a 500 error that occurred when trying to view the default profile of a customer that has been updated in Commerce Manager. (5-Oct-2020)
- 57cc539d: Enabled caching for the
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:
|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|
Searchable account fields:
|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:
|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|
|Product SKU 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.
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.
Changed attribute value
LONG_TEXT_VALUE field from
This patch changes the type of the
LONG_TEXT_VALUE field in all attribute value tables (
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_VALUEfield 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_SIZEparameter is set to
EXTENDEDbefore 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
Replace XA with Outbox pattern
In Elastic Path Commerce 7.5.1, XA transaction support was added. This was to ensure the publishing of domain event messages if only the transactions containing these database updates were 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 Elastic Path 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.
XaTransactionTestSupportfrom all integration tests.
- Removes support for
- Removes all XA configuration from each webapp’s
context.xmlfiles - including
TOUTBOXMESSAGEtable to the database.
Relay Outbox MessagesQuartz job in Batch Server.
- Adds support for
Removed Customer Solr index
Elastic Path 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
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.
Released: August 2020
Account Management support
This release adds first-class capabilities for Account Management into Cortex and Commerce Manager. This functionality is primarily used by B2B vendors who need to be able to model their customer organizations and configure associates who can transact on behalf of those organizations. The new functionality includes:
- Support for creating customers of type
ACCOUNTthat represent customer organizations and their departments and regions.
- Ability to configure account-specific customer profile attributes.
- Ability to associate registered users to accounts to indicate that they are permitted to transact on behalf of those accounts.
- Ability to define a deeply nested child account hierarchy for each account to model departments and regions of an organization.
- Ability to define price list assignments and shopping cart promotion conditions that are activated by characteristics of a selected account, such as account segments or shared ID.
- Ability to manage accounts, child accounts, and registered user associations in Commerce Manager and through Import/Export.
- Ability for registered users to retrieve details about the accounts they are associated to in Cortex.
- Ability for registered users to pass a
x-ep-account-shared-idheader to Cortex to indicate that they would like to transact on behalf of an account.
- Ability for registered users to lookup purchases associated to an account in Cortex.
- Support in the Elastic Path Commerce Reference Store version 4.5.0, which contains all updates necessary for using the store with Elastic Path 8.1.0 and the new Account Management enhancements. For more information, see the react-pwa-reference-storefront repository.
For more information about Account Management functionality in this release, see the Account Management documentation.
The embedded Account Management functionality in this release replaces the functionality that was previously provided by the external Account Management Service service. This version of Elastic Path Commerce and all future versions are no longer compatible with the external Account Management Service. JWT tokens generated from that service will not properly authenticate users in Cortex anymore.
The Integration Server now exposes new REST endpoints at
/api/importexport/export. This allows backend services to retrieve data from Elastic Path and insert/update data in Elastic Path using the same Import/Export XML schemas as the data population and Import/Export CLI tools.
For more information about the Import/Export API endpoints, see the Import/Export API documentation.
System Requirements and Compatibility
Elastic Path Commerce
8.1.0 is compatible with the following Elastic Path releases:
|Elastic Path Component||Compatibility|
|Elastic Path CloudOps for Kubernetes||CloudOps for Kubernetes compatibility matrix|
New in This Release
In addition to the Release Highlights, this release contains the following updates.
Core Commerce updates
Replaced customer User ID field with Shared ID and Username
TCUSTOMER.USER_ID field has been removed and replaced with two separate fields:
TCUSTOMER.SHARED_ID- This field represents a unique identifier for the user or account. This is used as an identifier in all other systems that need to know about the user or account.
TCUSTOMERAUTHENTICATION.USERNAME- This field represents the username that the registered user uses to login to Cortex. Not all registered users are required to have login credentials.
This change has a number of benefits and allows users to:
- Enforce uniqueness of the shared ID for users and accounts. The user ID field was only guaranteed to be unique for each store.
- Accept an identifier for users and accounts that are imported from other systems without affecting the user’s login username.
- Create registered customers without credentials in cases such as when an external Identity Provider is responsible for authenticating users.
The shared ID value should have the following characteristics:
- The identifier is generated by the first system to know about the user or account. All other systems should accept the shared ID created by that system.
- The value should be immutable so that the connection between systems is not broken by changing it.
- The value should contain no Personally Identifiable Information (PII) so there is no required consent to record it. It doesn’t need to be erased if "right to be forgotten" is invoked.
- A generated shared ID should be unique across multiple systems, such as a GUID.
purgeAnonymousCustomersBatchJob) batch job
This job is responsible for deleting single-session users (formerly anonymous) customers that have not been updated in more than the number of days defined by
COMMERCE/SYSTEM/ANONYMOUSCUSTOMERCLEANUP/maxHistory. Each time this job is executed, it deletes qualifying records in batches of size
COMMERCE/SYSTEM/ANONYMOUSCUSTOMERCLEANUP/batchSize until all qualifying records are deleted. This is a change from the old behavior which would cleanup only
COMMERCE/SYSTEM/ANONYMOUSCUSTOMERCLEANUP/batchSize records each time the job was executed. This job also executes much more quickly than before and uses less memory.
inactiveCartsCleanupJob) batch job
This job is responsible for deleting shopping carts that were marked as
INACTIVE when they were checked out and converted into purchases. Each time this job is executed, it deletes qualifying records in batches of size
COMMERCE/SYSTEM/ABANDONEDCARTCLEANUP/batchSize until all qualifying records are deleted. This is a change from the old behavior which would cleanup only
COMMERCE/SYSTEM/ABANDONEDCARTCLEANUP/batchSize records each time the job was executed. This job also executes much more quickly than before and uses less memory.
expiredOAuth2TokensCleanupJob) batch job
This job is responsible for deleting expired OAuth tokens. Each time this job is executed, it deletes qualifying records in batches of size
COMMERCE/SYSTEM/EXPIREDOAUTHTOKENCLEANUP/batchSize until all qualifying records are deleted. This is a change from the old behavior which would cleanup only
COMMERCE/SYSTEM/EXPIREDOAUTHTOKENCLEANUP/batchSize records each time the job was executed. This job also executes much more quickly than before and uses less memory.
cleanupSessionsJob batch job
This job was responsible for cleaning up
TCUSTOMERSESSION records in the database. This table has not been populated since before Elastic Path Commerce 7.1.x, so the table has been removed.
Cortex API updates
Added accounts resource
A new resource called
accounts has been added which can be accessed from the default profile. This returns a list of accounts that the logged-in user is associated to. This resource link will only appear for logged-in users.
For more information, see the Accounts Resource.
Cortex now accepts a
x-ep-account-shared-id header to indicate that the signed in user is transacting on behalf of an account. The value will only be accepted if:
- The value matches the shared ID value of a customer in the database of type
- The account record is not in the disabled state.
- The signed in user is associated to the account.
When this header is specified, the user sees a different set of shopping carts, including the default cart, for each account specified. Any purchases made will be associated to the account instead of to the shopper.
The upgrading Elastic Path guide provides general instructions on upgrading Elastic Path projects.
DELETEon all foreign key relationships to the following fields:
TSHOPPER.UIDPK. Ensure that any custom tables added with foreign keys to these fields also have cascade delete enabled. Ensure that you remove any code that does explicit deletion from these tables.
- Introduced a non-listening entity manager factory, a factory without lifecycle listeners. This is used by the batch server to boost performance.
- Removed XA support from the batch server.
- The OpenJPA data and query caches are disabled for all XA-dependent applications and tools, such as the integration server, import-export and data synchronization tools. This increases reliability at the expense of a slight performance loss.
USER_IDfield and added a
TCUSTOMER. Added the
TCUSTOMERAUTHENTICATION.USERNAMEis populated from
TCUSTOMER.USER_IDduring the upgrade.
TCUSTOMER.SHARED_IDis populated with
TCUSTOMER.STORE.CODE+ ":" +
TCUSTOMER.USER_IDto avoid duplicates in case the user ID was duplicated between stores.
TCUSTOMER.STORECODEnullable since accounts are not associated to stores.
TCUSTOMERfor allowing accounts to be linked in a hierarchy.
TORDERtables for associating these entities to accounts.
TUSERACCOUNTASSOCIATIONtable for associating accounts with registered users.
TCUSTOMERSESSIONtable and related domain classes because it was not used. For more information about
TCUSTOMERSESSION, see the
TCUSTOMERDELETEDtable and related domain classes because it was not used. For more information about the table, see the
Increased the size of the
TIMPORTFAULT.ARGSfield from 255 characters to 1024 characters.
DELETEon all foreign key relationships to the following fields to allow
AnonymousCustomersCleanupJobto be more efficient. For more information, see the
Elastic Path Commerce 8.1.0 contains the following fixed issues:
Auditing not working when XA is enabled
The Elastic Path auditing functionality, which populates the
TDATACHANGED table whenever database changes are detected, stopped working when XA functionality was added in Elastic Path Commerce 7.5.1. This functionality is now fixed.
Certain CSV import failure records didn’t always fit into the
ARGS field size was increased on the
TIMPORTFAULT table so that CSV import failures could be reliably recorded.
The failure dialog for a CSV import would close quickly
When importing through the Commerce Manager CSV import functionality, error messages would appear briefly and then close automatically without giving the user the opportunity to read the error. This issue is now resolved.
Performance issues in tax lookups during checkout
Some changes were made in the
ElasticPathTaxCalculator to avoid repeat database lookups for each line item of the order during checkout, resulting in improved checkout performance, especially for large orders.
Data Population tool running out of memory when importing very large data sets
The heap size of the data population tool was increased 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.
Database transaction timeouts could not be configured differently for each application
The out of the box
jta.properties files have been removed and 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.