A note from 2026: This article was published in 2020. SAP Commerce Cloud has had many releases since then, the “hybris” branding has been phased out, and CCv2 deployment automation has moved toward SAP Commerce Cloud Portal and public APIs; check each repository’s maintenance status before adopting these tools.

Flexible Search Builder

Repo: https://github.com/avrilfanomar/flexiblesearchbuilder
License: MIT
Key contributor: Andrii Andriichuk

Flexible Search Builder is a library that takes the pain out of generating FlexibleSearch queries in SAP Commerce code. You can wrap the queries in very lightweight and easy-to-use Java objects that follow the “builder” paradigm. It helps keep you from making mistakes and makes the code nicer and easier to read.

The elements of the builder chain are immutable (unless you pass a mutable parameter and then modify it), so they can be safely reused among different queries.

Below are some examples of how it works:

final FlexibleSearchQuery query4 =
select(
    FieldWithType.of(ProductModel.NAME, String.class),
    FieldWithType.of(ProductModel.DESCRIPTION, String.class),
    FieldWithType.of(ProductModel.PK, Long.class)
)
.from(
    table(ProductModel.class)
)
.where(
braces(
  condition(ProductModel.SUMMARY, IS_NULL)
  .or()
  .condition(ProductModel.NAME, IS_NOT_NULL)
)
.and()
.condition(ProductModel.PK, BETWEEN, 8796093054977L, 8796193054977L)
)
.build();

The code is basically self-explanatory. The library supports grouping, joins, and aliases.

final JoinOnElement joinTables =
  table(ProductModel.class).as(p)
   .leftJoin(ProductReferenceModel.class).as(r)
     .on(p.pk(), r.target())
   .leftJoin(OrderEntryModel.class).as(e)
     .on(r.source(), e.field(PRODUCT))
   .leftJoin(OrderModel.class).as(o)
     .on(o.pk(), e.field(ORDER))
   .leftJoin(CategoryConstants.Relations.CATEGORYPRODUCTRELATION).as(c2p)
     .on(r.source(), c2p.target())
   .leftJoin(CategoryModel.class).as(c)
     .on(c.pk(), c2p.source());

See more examples in the README in the root folder.

Video: https://www.youtube.com/watch?v=m25hsW3nqFM

Repo: https://github.com/avrilfanomar/flexiblesearchbuilder

HAC VCS Info

Repo: https://github.com/sap-commerce-tools/hacvcsinfo
License: Apache License 2.0
Key contributor: Markus Perndorfer

How can you figure out what branch was deployed to an environment if all you have is web access to the storefront and Backoffice?

This small extension helps you see what version is deployed to a given environment. During the build process, version metadata from Git, such as the branch ID, commit ID, and tag, is saved and made accessible from HAC.

HAC VCS Info version metadata screenshot

JHac

Repo: https://github.com/klaushauschild1984/jhac
License: Apache License 2.0
Key contributor: Klaus Hauschild

JHac is a console tool and API for HAC. You can execute code, run queries, and import data using the API and via a CLI app that you can put inside your automation or integration scripts.

For example, using the following script, you can execute custom code via the Groovy Scripting Console available in HAC.

hac()
  .scripting()
  .execute(
    Script.builder()
  .script(
    "spring.beanDefinitionNames.each {\n"
    + " println it\n"
    + "}\n"
    + "return \"Groovy Rocks!\"")
.build());

The following script shows how to fetch data via the API:

hac()
  .flexibleSearch()
  .query(
    FlexibleSearchQuery.builder()
   .flexibleSearchQuery("SELECT * FROM { Product }")
  .build());

You can also run an ImpEx script:

hac()
  .impex()
  .importData(
    Impex.builder()
  .scriptContent(
    "INSERT_UPDATE user; uid[unique = true]\n"
    + "; admin")
  .buildImport());

Or export data:

hac()
  .impex()
  .exportData(
    Impex.builder()
  .scriptContent("INSERT_UPDATE user; uid[unique = true]")
  .buildExport());

There is a CLI app built on top of the API that is ready out of the box for some of the operations listed above.

Currently, the client app doesn’t support FlexibleSearch yet, but I see from the code that it is trivial to add — contribute! At the moment, it supports Groovy, which is basically enough to simulate FlexibleSearch, ImpEx Import, and ImpEx Export.

Other useful repos

CCV2CTL

Repo: https://github.com/sap-commerce-tools/ccv2ctl

The automation tool from SAP for automating SAP Commerce Cloud build and deployment mechanisms. SAP recently announced an API for this purpose, so it seems that this tool is no longer relevant (?).

SAP Commerce IntelliJ IDEA Plugin

Repo: https://github.com/Janhouse/sap-commerce-integration-intellij-idea-plugin

SAP Commerce/Hybris Integration IntelliJ IDEA Plugin from Alexander Bartash. This plugin was originally released under GPL 3.0, so this repository contains an open-source fork. The commercial version is available here: https://plugins.jetbrains.com/plugin/7525-hybris-integration

The open-source version is also available in the JetBrains Marketplace for free: https://plugins.jetbrains.com/plugin/12867-sap-commerce-developers-toolset

Hybris Commerce Eclipse Plugin

Repo: https://github.com/SAP/hybris-commerce-eclipse-plugin

This plugin takes care of some of the common issues of developing with SAP Commerce Suite, such as automating source code imports, synchronizing working sets with localextensions, providing an ImpEx editor, etc.