Describe an item type's Backoffice presentation once -- get the cockpitng config XML for the explorer tree, list view, advanced search, editor area and create wizard.
🔒 Your code never leaves your browser — everything is generated locally from templates, no AI, no server round-trip.
trainingcore/resources/backoffice/trainingcore-backoffice-config.xml<?xml version="1.0" encoding="UTF-8"?>
<!--
Backoffice (cockpitng) config scaffold for MyItem.
cockpitng config is one of the least standardized, most version-dependent
areas of SAP Commerce -- element/attribute names here (especially the
explorer-tree node nesting and the advanced-search operator binding) are
the most commonly documented forms, not a guarantee across every
cockpitng version. Verify against this project's actual schema.
Note on labels: rather than inventing an uncertain separate
"<ext>-backoffice-labels_en.properties" convention, labels are emitted as
inline <label> elements / "label" attributes directly in the contexts
below -- this matches how most real cockpitng config XML carries labels.
-->
<config xmlns="http://www.hybris.de/cockpitng/config/hybris">
<!-- Explorer tree: nests MyItem under the "masterCatalogsNode" node.
The exact nesting mechanism (parent-id attribute vs a <nodes>
wrapper) varies by cockpitng version -- verify against this
project's platform config. -->
<context merge-by="type" type="MyItem" component="explorer-tree">
<explorer-tree>
<node id="myItemNode" parent-id="masterCatalogsNode" labelI18nKey="myItem.node.label">
<label>MyItem</label>
<type code="MyItem"/>
</node>
</explorer-tree>
</context>
<!-- List view columns -->
<context type="MyItem" component="listview">
<listview>
<list-columns>
<!-- no list columns configured -->
</list-columns>
</listview>
</context>
<!-- Advanced search fields -->
<context type="MyItem" component="advancedsearch">
<advanced-search>
<search-attributes>
<!-- no advanced search fields configured -->
</search-attributes>
</advanced-search>
</context>
<!-- Editor area tabs/sections/attributes -->
<context type="MyItem" component="editorArea">
<editorArea>
<!-- no editor tabs configured -->
</editorArea>
</context>
</config>
Backoffice (cockpitng) config XML is what wires a custom item type into the SAP Commerce Backoffice administration console: where it shows up in the explorer tree, which columns its list view shows, which attributes the advanced search can filter on, and how its editor screen is laid out into tabs and sections.
This config is additive -- it merges into the platform's existing Backoffice configuration rather than replacing it, which is why most contexts use a merge-by attribute to target a specific item type without clobbering other extensions' config for the same type.
Use it any time you add a new custom item type (or extend an existing one with new attributes) and want business users or admins to be able to find, search, view and edit it in Backoffice without writing a bespoke widget.
Skip it for types that are only ever read/written by code and never need a human-facing admin screen.
No -- items.xml defines the item type itself (attributes, relations, persistence). Backoffice config only controls how an already-defined type is presented in the admin UI; you need items.xml first.
merge-by tells cockpitng how to combine your context with config for the same type/component coming from other extensions (including OOTB ones) -- without it you risk one extension's config silently overwriting another's instead of merging.
Many real projects do exactly that to avoid duplicating attribute lists, though the wizard-conf schema is less standardized than editorArea -- check your platform's documented wizard structure before assuming it matches editorArea 1:1.
This generator inlines labels directly as <label> elements/attributes in the config XML, which is the simpler and more common pattern. Larger projects sometimes additionally externalize labels into Backoffice-specific properties files for translation, but that's a separate, optional layer on top of this config.
cockpitng config is typically read once at Backoffice startup, not hot-reloaded -- restart Backoffice (or the app server) after adding or changing config files.