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.
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 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
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.