Announcement: You can find the guides for Commerce 7.5 and later on the new Elastic Path Documentation site. The Developer Center continues to support Commerce 6.13.0 through 7.4.1.Visit new site

Extending the Platform

Extending the Platform

Developers have complete access to the Core Commerce source code to customize and extend all aspects to meet their needs. However, modifying the source code makes maintaining your customizations difficult as the application evolves over time. Once you upgrade to a new version of Core Commerce, your customized code may conflict with upgraded source code and cause problems with your platform. Therefore, we recommend following the binary-based development process to configure customizations in the projects that are separate from the default Elastic Path source code projects.

To work in a binary-based development environment, Elastic Path provides extension projects for your customizations to configure in. Having your customizations in these extension projects makes it easier for you to upgrade your Elastic Path source code.

Binary-based development also:

  • Reduces the time and cost of upgrades - You need not merge changes at the source code level.
  • Accelerates development - You need not build the entire code base. You only need to build your customizations.
  • Improves the ability to leverage Maven features such as dependency management and plug-ins.

This page explains how the extensions module is set up for binary based development and the details of how you can make different kinds of extensions.

Extensions modules

The extensions module consists of more than one extension sub modules. Each module extends a different component of Core Commerce. These modules depend on their equivalent default Elastic Path component. For example, the ext-core module depends on ep-core, and ext-search depends on ep-search. By depending on the equivalent defaults Elastic Path component, any customizations you make in these modules can import or inherit from that component's default classes, and you can add or change any behavior.

Core extensions (core/ext-core)

The extension ext-core module depends on the default Core Engine library and contains the classes and resources that customize core functionality.

All other extension modules have a dependency on the extension core module, so any changes you make in extension core are available to these modules. Commerce Manager plug-ins also are dependent on extensions core and inherit changes made here.

For information on the structure of the extension core module, see Extension Core Module Structure. war overlay - sf and core.png

Webapp extensions (batch, search)

Each web application has two components, a JAR and a WAR. When you build the extension web application module, both the JAR and WAR components combine in to a single web application that can be deployed to a server.

For more information on the structure of the extension webapp modules, see Extension Webapp Module Structure.

Other extensions

Type of extension Module Notes
Assets assets See Managing Assets.
Database schema and catalog data database/ext-data See Modifying Schema and Catalog Data.
Import/Export functionality importexport/ext-importexport Extends ep-importexport.
Data Sync Tool functionality sync/ext-sync Extends ep-sync.
Data Population functionality data-population/ext-data-population-core Extends ep-data-population-core. For more information, see Extending Data Population Tool in Developer Tools.