Elastic Path 8.1.x Release Notes
Learn about changes to Elastic Path Commerce for this release. Fixes since the release are summarized in the changelog.
Changelog
The changelog contains the list of fixes and improvements made to Elastic Path Commerce 8.1 since its release date. To learn how to consume the updates, see Consuming Support Fixes.
- 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
AttributeImpl
queries inSubmitOrder
. (5-Jan-2021) - 0747866b: Improved the performance of customer search indexing. (11-Dec-2020)
- 1c66140c: Fixed an issue where the offer lookup fails when the
productByUidCache
andproductUidByGuidCache
are 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
LogicalTreeBuilder
. (30-Nov-2020) - 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
accountpurchaselist
link 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
selectedaccount
link on the default profile when thex-ep-shared-account-id
header 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
x-ep-shared-account-id
header. (6-Oct-2020) - 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
COMMERCE/SYSTEM/API/enableTrustedTraits
setting. (1-Sep-2020)
8.1.0
Released: August 2020
Release Highlights
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
ACCOUNT
that 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-id
header 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.
note
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.
Import/Export API
The Integration Server now exposes new REST endpoints at /api/importexport/import
and /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 AWS (Amazon Web Services) | CloudOps for AWS compatibility matrix |
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
The 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.
cleanupAnonymousCustomerJob
(now purgeAnonymousCustomersBatchJob
) batch job
Optimized the 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.
cleanupInactiveCartsJob
(now inactiveCartsCleanupJob
) batch job
Optimized the 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.
cleanupExpiredOAuth2TokensJob
(now expiredOAuth2TokensCleanupJob
) batch job
Optimized the 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
Removed the 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.
x-ep-account-shared-id
header
Added 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
ACCOUNT
. - 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.
Upgrade Notes
The upgrading Elastic Path guide provides general instructions on upgrading Elastic Path projects.
Core Commerce
- Added
CASCADE
onDELETE
on all foreign key relationships to the following fields:TCUSTOMER.GUID
,TCUSTOMER.UIDPK
,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.
Database Changes
Removed the
USER_ID
field and added aSHARED_ID
field toTCUSTOMER
. Added theUSERNAME
field toTCUSTOMERAUTHENTICATION
.TCUSTOMERAUTHENTICATION.USERNAME
is populated fromTCUSTOMER.USER_ID
during the upgrade.TCUSTOMER.SHARED_ID
is populated withTCUSTOMER.STORE.CODE
+ ":" +TCUSTOMER.USER_ID
to avoid duplicates in case the user ID was duplicated between stores.Made
TCUSTOMER.STORECODE
nullable since accounts are not associated to stores.Added the
PARENT_CUSTOMER_GUID
field toTCUSTOMER
for allowing accounts to be linked in a hierarchy.Added the
ACCOUNT_CUSTOMER_UID
field toTSHOPPER
andTORDER
tables for associating these entities to accounts.Added the
TUSERACCOUNTASSOCIATION
table for associating accounts with registered users.Removed the
TCUSTOMERSESSION
table and related domain classes because it was not used. For more information aboutTCUSTOMERSESSION
, see thecore-changelog-2020-07-remove-customer-session-artifacts.xml
file.Removed the
TCUSTOMERDELETED
table and related domain classes because it was not used. For more information about the table, see thecore-changelog-2020-07-remove-tcustomerdeleted-table.xml
file.Increased the size of the
TIMPORTFAULT.ARGS
field from 255 characters to 1024 characters.Added
CASCADE
onDELETE
on all foreign key relationships to the following fields to allowAnonymousCustomersCleanupJob
to be more efficient. For more information, see thecore-changelog-2020-06-cleanup-anonymous-customers-job.xml
file.TCUSTOMER.GUID
TCUSTOMER.UIDPK
TSHOPPER.UIDPK
Fixed Issues
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.
TIMPORTFAULT
table
Certain CSV import failure records didn’t always fit into the 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.