Marketplace
Purpose and Use Case
The Marketplace (zbsync_marketplace, extended by zbsync_marketplace_mapper and zbsync_marketplace_transformer_helper) lets you publish pipelines, individual worker steps, and reusable code snippets to a shared catalog, and pull them back down — either on another Odoo instance, or to share with teammates.
| Item Type | What it captures | Requires |
|---|---|---|
| Pipeline | An entire pipeline: all its workers and their configuration. | zbsync_marketplace |
| Worker Bundle | A single worker step, published on its own. | zbsync_marketplace |
| Python-Code | The code from a Python Code Worker (zbs.transformer.python). | zbsync_marketplace |
| Mapping code | The code field of a single Mapper row (Code/Lookup/etc. action). | zbsync_marketplace_mapper |
| Transformer Helper | A reusable code snippet from the Transformer Helper library. | zbsync_marketplace_transformer_helper |
Setup
Marketplace Connection
A Marketplace Connection (Configuration → Marketplace Connections) points at a remote vault:
| Field | Description |
|---|---|
| Name | A label for the connection. |
| Host | The vault's hostname. |
| Port | Default 443. |
| SSL | Whether to connect over HTTPS. |
| Token | Leave empty for anonymous/public access. Set a token to act as a specific user and reach groups beyond the public one. |
| Timeout | Request timeout in seconds (default 120). |
A public connection to Zebroo's own vault (zsync-marketplace.zebroo.de) is pre-installed along with a matching Marketplace record, so most users don't need to set anything up unless they're pointing at a private/self-hosted vault or need a token for non-public content.
A Marketplace record wraps a Connection and holds the local catalog cache. Its catalog is refreshed automatically every 60 minutes by a background job; use the catalog's Update Catalog button for an on-demand refresh.
Publishing
| Item Type | Where to publish from | Versioning |
|---|---|---|
| Pipeline | The pipeline's own form — "Upload to Marketplace". Also available on a specific saved pipeline version, to publish that snapshot. | Re-uploading the same pipeline creates a new version of the same catalog item. |
| Worker Bundle | An individual worker's form — "Upload to Marketplace". | Currently, every Worker Bundle upload creates a new catalog item — there is no "new version of the same item" for individual workers, unlike pipelines. |
| Python-Code | A Python Code Worker's form — "Upload to Marketplace". | Pick an existing catalog item to publish a new version of it, or leave it unset to create a new item. |
| Mapping code | A Mapper row's form — "Upload to Marketplace". | Same as Python-Code: pick an existing item to version it, or create a new one. |
| Transformer Helper | The "Save" action on a helper snippet, with the "Upload to Marketplace" option enabled. | Reuses the same item automatically once a snippet has been published once. |
Publishing a pipeline first snapshots its current configuration as a version, then opens the upload form where you choose the target Marketplace and write a description (or a changelog, when publishing a new version of something already on the marketplace).
Finding and Browsing
- Marketplace Catalogue — a full, browsable list of everything on a connected marketplace, kept in sync automatically (see Setup above).
- Find — a live-search widget available directly on code, mapping, and helper-snippet forms. It searches both the marketplace catalog and your own local snippets in one place, shows a code preview, and can append the result straight into the current code field — a quicker path than browsing the full catalogue when you just need a snippet.
Downloading / Installing
| Entry point | Used for |
|---|---|
| "Download" on a catalog item | Any item type — pick the Odoo version and specific version to install. |
| "Download from Marketplace" on a Python Code Worker or Mapping row | Installs directly into that record's code, appending to (Python-Code) or replacing (Mapping) any existing code. |
| "New from Marketplace" on the Pipelines list | Creates a new pipeline from a catalog Pipeline item. |
| "Download Step" when adding a new pipeline step | Lets you pick a Worker Bundle from the catalog instead of creating a blank worker. |
Downloading picks the version that matches your current Odoo version automatically where possible, and shows a changelog for each available version before you confirm.
Usage and Best Practices
Common Pitfalls
- Pipelines and Worker Bundles always install as new records — downloading the same item twice (or downloading it after already having a local copy) creates a duplicate rather than updating anything in place. There's no name-based conflict check, so duplicates can accumulate silently if you re-download by habit.
- Python-Code, Mapping, and Helper snippets behave differently — these install idempotently, matched by the item's internal ID, so re-downloading the same snippet updates your existing local copy instead of duplicating it.
python_codecatalog items require the Transformer Helper module to be downloadable through the generic catalog "Download" wizard — withoutzbsync_marketplace_transformer_helperinstalled, downloading one raises an "Unsupported item type" error (the type-specific download action on a Python Code Worker's own form works either way).- Worker Bundle re-uploads don't version — if you need to update a previously-published worker, expect a new catalog entry each time rather than a new version of the old one.
- Private/token-gated vaults need a Token configured on the Marketplace Connection; without one, only the vault's public group content is reachable.