SAP Commerce: keep the server warm
Separate Java reload, platform generation, type-system updates and runtime configuration in the SAP development loop.
Attach through platform-owned launch configuration
Use Java 17+ and a matching agent. Put a stable agent path in hybris/config/local.properties through tomcat.javaoptions, preserving any existing JVM options.
tomcat.javaoptions=-javaagent:/absolute/tools/reclazz-agent-X.Y.Z.jarDo not self-reference tomcat.generaloptions. Do not rely on directly editing generated tomcat/conf/wrapper.conf: ant server regenerates it. The IDE integration can manage the same platform property for you.
Start once with the configured agent, then compile edited Java with the platform build. Enabling a plugin cannot instrument a server process that was already launched externally.
Generated model and DTO changes
Saving *-items.xml or *-beans.xml can run platform generation/build and reload the generated bytecode. That saves a restart for the supported Java change; it does not by itself create a database column or complete every platform type-system action.
For a new persistent attribute, perform the required Update Running System in HAC. Original-class reflective dispatch to added members still follows the stock/enhanced JVM limits. ModelService/Groovy reflective paths on a stock JVM may need enhanced redefinition or restart.
Properties, localization and Backoffice
Changed SAP configuration keys are applied through the platform Config path. Successfully applied keys are acknowledged independently; failed keys stay pending for retry. A startup-only consumer still needs its reported restart. This differs from the Boot candidate-binding path.
Platform log levels use log4j2.logger.<key>.name and .level pairs. Only touched loggers are updated, preserving unrelated HAC changes. Type/enum locale resources refresh localization caches; Backoffice label resources refresh the relevant label caches. Reopen the affected view to check the result.
Supported Spring XML bean changes follow the XML safety rules. Recognizing an XML file does not imply arbitrary MVC/security/filter-chain reconstruction.
ImpEx changes write real data
autoImpex=true is off by default. If enabled, recognized changed ImpEx files import into the running database. There is no automatic undo of application or import side effects.
Literal and macro-expanded REMOVE headers are refused unless impexAllowRemove=true. Unresolved/recursive header macros are also refused. This bounded scan is not a full ImpEx parser or an executable-script sandbox. Use HAC when the scan cannot establish the header’s safety.
Know the platform boundary
A new extension changes the startup extension list: build and restart. New dependency JARs change the JVM classpath: restart. Database/data migration, tenant initialization and cluster-wide consistency are separate responsibilities.
Interceptor refresh captures mappings before bean refresh and updates the actual SAP registry afterward. Missing/failed registration is a diagnostic, not success. SDK contract evidence must be distinguished from a live model-save/tenant acceptance test.
OCC field sets, request mappings/overrides and populator/list-merge directives have dedicated support paths. Read their detailed scope before changing registry topology or assuming an arbitrary custom composition is covered.
Backoffice configuration and process definitions
A recognized *-backoffice-config.xml save resets supported cockpit configuration caches through the native Resettable.reset() contract. It does not call resetToDefaults() or erase user customizations. If the running module reads a packaged copy, rebuild that copy before expecting the new configuration on view open. The implementation path is distinct from live tenant acceptance.
Existing widget action bodies use ordinary class reload. A newly added @SocketEvent action is not registered in existing widgets: inspect its widget-specific pending entry and restart for registration. Label/config cache refresh does not install actions.
A registered local SAP process-definition XML edit/deletion is diagnostic-only. Reclazz reports that it was not applied and requires restart; it does not change or replay a running process. File recognition uses active registered resource ownership, not a guess from the filename.
Sources & version scope
Documentation source 1.4.0 · evidence baseline 75535bd · reviewed 19 October 2026. Check your installed artifact; source features may postdate a release.