What's new for developers
Learn about the new features and functions HCL Commerce offers developers.
This section describes the new additions and changes within only the initial HCL Commerce Version 9.0.0.0 release. For more information about new additions and changes for HCL Commerce Version 9 that are available through update packages, see What's new in the latest update packages for HCL Commerce.For more information about update packages, including how HCL Commerce releases update packages, see Maintenance.
HCL Commerce Version 9 employs a modern technology stack for developers to make customization of the brand and business user experience more efficient and cost effective. The use of JQuery and JPA technologies helps development teams deliver custom code or implement integrations faster. Runtime RESTful APIs can wrap existing logic with customized logic so that developers can extend (or further enhance) the default capabilities without having to learn the implementation behind these features. These improvements decrease the time required to learn how to customize HCL Commerce .
Additionally, the externalized customizations (xC) programming model makes it possible to separate integration logic from business logic so it is easier to maintain customizations and use HCL provided enhancements.
HCL Commerce Developer
Get a quick start on developing your HCL Commerce storefronts with HCL Commerce Developer Enterprise or Professional.
- Create, test, and deploy an HCL Commerce site under the test environment and workspaces that are provided by Rational Application Developer (RAD) for WebSphere.
- Build and extend HCL Commerce functionality. A single toolkit is used to customize all servers. HCL Commerce Developer is fully compliant with the new distributed servers included in HCL Commerce Version 9.
- A new tool, HCL Commerce Build (WCB) tool, packages custom code developed in HCL Commerce Developer.
- Customize HCL Management Center for HCL Commerce.
Distributed servers
HCL Commerce is modularizing into loosely coupled components. In this release, the Store server and Search server are decoupled from the larger HCL Commerce server, now called the Transaction server. This separation is along well-defined service interfaces that allow for better horizontal scaling of your e-commerce system.
- Transaction server
- Runs the transactional business logic and APIs that serve other HCL Commerce
servers. The Transaction server container where all transactional operations run. For
instance, the server is used for completing the following operations:
- Processing transactions from your storefront.
- Processing REST calls from the store, and, if needed, routing calls between servers.
- Hosting all business user and administrative tools.
- Processing database and utility operations, such as to load data or rebuild the search index.
- Utility server
- A WebSphere Application Server-based server that runs application administration utilities. Unlike the other servers, the Utility server does not exist in the development environment.
- Search server
- A WebSphere Application Server V8.5.5 Liberty-based server that provides search engine capabilities for front end applications.
- Customization server
- A WebSphere Application Server V8.5.5 Liberty-based server that runs custom business logic in the form of xC extensions for supported components.
- Store Server
- A WebSphere Application Server V8.5.5 Liberty-based server that runs the storefront for all stores. It includes all custom storefront assets, such as JSP pages and widgets.
Continuous integration and continuous delivery (CI/CD)
Using continuous integration and delivery, you can deliver features, fixes, and updates as they are developed. Individual enhancements are delivered in an ongoing manner, making adoption easier for your users. The deployment process for features, fixes and updates, in fact for any changes, is exactly the same. In all of these cases you simply redeploy entire images instead of writing different deployment logic for installation, fixes, features, and updates. You can use the same pipeline for everything.
Externalized Customization (xC)
Externalized customization is a new programming pattern that introduces a separation between the core application components and your customizations. By using this new pattern HCL Commerce can deliver innovation more quickly. More importantly, the new programming pattern allows you to deploy innovation more quickly. Developers create customization code external to HCL Commerce. When the business logic is called that you customized, there is a reference to fetch the customized instruction instead of running the HCL provided code. This isolation of customization also improves security, and the stability of your application, the e-commerce store.HCL Commerce Search
- Inside the Search Docker container
- Search service EAR
- Configuration customizations
- Managed Solr core configurations, including the solrconfig.xml, schema.xml, and wc-data-config.xml files
- Runtime configuration, including the wc-component.xml and wc-search.xml files
- The WebSphere Application Server V8.5.5 Liberty profile
- Outside the Search Docker container
- Index data
- Preprocess configurations, which reside inside the Transaction server
- Utilities. Functions such as setting up the Search index were managed in previous releases by command-line utilities (for instance, SetupSearchIndex.sh). You now control these services using REST calls
This architecture is designed to make developing and managing Search much faster and easier. In terms of features, the most significant change in HCL Commerce Version 9 is that you can now add custom postprocessing commands to existing REST services. This ability replaces the BOD/data bean based approach of previous releases with a single, consistent control point for your custom code. You can add custom index fields, as described in Adding custom index fields in REST responses.
In addition, you can now add your own request handlers easily. With these changes, REST becomes the default interface for Search control, configuration, customization and extensions.
Enterprise JavaBeans to the Java Persistence API
If you created custom EJB beans, convert from EJB to JPA using the migration tool. For more information, see Migrating IBM Websphere Commerce Version 8 EJB entity beans to Java Persistence API.
In HCL Commerce Version 9, the EJB session bean is upgraded to 3.x. You do not need to migrate stateless session EJB beans to JPA.
Db2 version 11
In previous versions, support was provided for the Derby database within the development environment. In HCL Commerce Version 9.0, Derby is no longer supported. All environments now require an IBM Db2 or Oracle database.
Oracle Database 12c, Oracle Database 18c, and Oracle Database 19c
In HCL Commerce Version 9.0, both the development environment and the runtime environment support Oracle Database 12c, Oracle Database 18c, and Oracle Database 19c.
Aurora starter store
The Aurora starter store is rewritten to use JQuery. In addition to all the existing features that are supported in the Dojo version of the Aurora starter store, the jQuery version supports the following additional capabilities:
- Store pages load a minimal number of JavaScript and CSS files, as a build script is provided that merges the code from all the files and then generates fewer files, with all its contents combined and minified. This performance strategy improves the web browser's page load time for store pages.
- A store function is available to control whether dynamic E-Marketing Spots are loaded either server-side with the page, or loaded after the initial page load is complete, to better support Content Delivery Network (CDN) caching.
- Interactions in the category page are implemented using full page loads, rather than using AJAX. This strategy simplifies page coding and removes the complexity of handling the web browser's back, forward, and bookmark features.
In HCL Commerce Version 9 the Store server uses the Rest tag to retrieve data. In previous versions, the getData tag was used.
The Store server uses Spring MVC, instead of Struts. For more information, see Spring MVC and store controller customization.