Building OTOBO & Znuny Packages (.opm)
An .opm package is an XML container that bundles Perl code, configuration, database changes, and frontend files. It is built from a .sopm source manifest along with the corresponding files. OTOBO, Znuny, and OTRS Community Edition use the same format. The primary difference is the root element (otobo_package vs. otrs_package).
1. Creating the Directory Structure
Create your files in the paths where they should reside on the target system:
MyPackage/
├── MyPackage.sopm
├── Kernel/
│ └── Config/
│ └── Files/
│ └── XML/
│ └── MyPackage.xml
└── var/
└── httpd/
└── htdocs/
└── js/
└── MyPackage.js
2. Creating the .sopm Manifest
The manifest declares metadata, compatible frameworks, and the complete file list. Use the .sopm Generator to generate a valid manifest via a form:
<?xml version="1.0" encoding="utf-8" ?>
<otobo_package version="1.1">
<Name>MyPackage</Name>
<Version>1.0.0</Version>
<Framework>11.0.x</Framework>
<Framework>7.0.x</Framework>
<Vendor>Example GmbH</Vendor>
<URL>https://example.com/</URL>
<License>GPL-3.0</License>
<Description Lang="en">A short description.</Description>
<Description Lang="de">Eine kurze Beschreibung.</Description>
<Filelist>
<File Permission="660" Location="Kernel/Config/Files/XML/MyPackage.xml" />
<File Permission="644" Location="var/httpd/htdocs/js/MyPackage.js" />
</Filelist>
</otobo_package>
Every file on disk must be listed in the <Filelist> and vice versa. The .sopm Validator checks the most important rules directly in your browser.
3. Building the Package
With a running OTOBO/Znuny installation:
# OTOBO
bin/otobo.Console.pl Dev::Package::Build /path/to/MyPackage.sopm /target/directory/
# Znuny / OTRS
bin/otrs.Console.pl Dev::Package::Build /path/to/MyPackage.sopm /target/directory/
Without an installed ticketing system (e.g., in CI/CD), use opmbuild from the OPM::Maker CPAN module:
cpanm OPM::Maker
opmbuild build --output /target/directory/ /path/to/MyPackage.sopm
Find details in the CI/CD Guide.
4. Installing & Testing
Install the generated .opm via the package manager (Admin → Package Manager → Install Package) or via the console:
bin/otobo.Console.pl Admin::Package::Install /target/directory/MyPackage-1.0.0.opm
Next Steps
- .sopm Reference — all elements in detail
- Does my package run on OTOBO and Znuny?
- Publishing a Package on Open ITSM Hub
