[{"data":1,"prerenderedAt":498},["ShallowReactive",2],{"blog-post-otrs-fork-plugin-oekosystem-opm-kompatibilitaet-en":3},{"id":4,"title":5,"body":6,"date":487,"description":488,"draft":489,"extension":490,"meta":491,"navigation":493,"path":494,"seo":495,"stem":496,"__hash__":497},"blogEn\u002Fblog\u002Fotrs-fork-plugin-oekosystem-opm-kompatibilitaet.md","Plugins Between Znuny, OTOBO & KIX: How Portable Is the .opm Ecosystem?",{"type":7,"value":8,"toc":470},"minimark",[9,34,44,57,60,65,73,109,112,114,118,126,191,198,200,204,209,233,237,240,244,251,255,261,270,272,276,288,290,294,301,304,336,338,342,349,354,378,383,392,397,439,441,445,451,462,464],[10,11,12,13,18,19,23,24,28,29,33],"p",{},"The OTRS Community Edition lives on in three active forks—",[14,15,17],"a",{"href":16},"\u002Fsystems\u002Fznuny","Znuny",", ",[14,20,22],{"href":21},"\u002Fsystems\u002Fotobo","OTOBO",", and ",[14,25,27],{"href":26},"\u002Fsystems\u002Fkix","KIX",". Which one is right for your team depends on the feature set, AI strategy, and migration path. Other sources examine these questions in great detail (links at the end of this article). From the perspective of a ",[30,31,32],"strong",{},"vendor-neutral plugin directory",", however, a very different and often underestimated question arises:",[10,35,36],{},[30,37,38,39,43],{},"How portable is the shared ",[40,41,42],"code",{},".opm"," ecosystem really—and can I simply take a package found for OTRS or Znuny and install it in OTOBO or KIX?",[10,45,46,47,51,52,56],{},"Let's take a closer look. For the preliminary system selection, check out the separate, data-driven comparison ",[14,48,50],{"href":49},"\u002Fcompare\u002Fotrs-forks-und-zammad","OTRS Forks and Zammad 2026"," as well as all ",[14,53,55],{"href":54},"\u002Fcompare","direct system comparisons",".",[58,59],"hr",{},[61,62,64],"h2",{"id":63},"a-shared-root-a-shared-package-format","A Shared Root, a Shared Package Format",[10,66,67,68,72],{},"All three forks descend from the ",[14,69,71],{"href":70},"\u002Fsystems\u002Fotrs-ce","OTRS Community Edition"," and therefore share the same basic building blocks for extensions:",[74,75,76,85,97,103],"ul",{},[77,78,79,84],"li",{},[30,80,81,83],{},[40,82,42],{}," as a package format","—an XML-based container format that bundles code, database changes, and configuration.",[77,86,87,93,94,56],{},[30,88,89,92],{},[40,90,91],{},"SOPM"," as a manifest","—the source file of a package declares, among other things, its name, version, and—crucially—the ",[30,95,96],{},"compatible framework version",[77,98,99,102],{},[30,100,101],{},"The Generic Interface","—the REST\u002FSOAP web service layer used to connect integrations.",[77,104,105,108],{},[30,106,107],{},"Dynamic Fields, ACLs, process management","—conceptually familiar across all forks.",[10,110,111],{},"On paper, this looks like perfect interchangeability. In practice, however, portability is a spectrum—and that is precisely what makes a well-maintained directory valuable.",[58,113],{},[61,115,117],{"id":116},"package-sources-across-the-three-forks","Package Sources Across the Three Forks",[10,119,120,121,125],{},"Each fork maintains its own distribution channel. We aggregate these sources in our ",[14,122,124],{"href":123},"\u002Ftools\u002Fpackage-sources","package sources overview",":",[127,128,129,146],"table",{},[130,131,132],"thead",{},[133,134,135,140,143],"tr",{},[136,137,139],"th",{"align":138},"left","Fork",[136,141,142],{"align":138},"Official Package Source",[136,144,145],{"align":138},"Format",[147,148,149,163,176],"tbody",{},[133,150,151,154,159],{},[152,153,17],"td",{"align":138},[152,155,156],{"align":138},[40,157,158],{},"addons.znuny.com",[152,160,161],{"align":138},[40,162,42],{},[133,164,165,167,172],{},[152,166,22],{"align":138},[152,168,169],{"align":138},[40,170,171],{},"ftp.otobo.org\u002Fpub\u002Fotobo\u002Fpackages\u002F",[152,173,174],{"align":138},[40,175,42],{},[133,177,178,181,187],{},[152,179,180],{"align":138},"KIX (Classic)",[152,182,183,186],{"align":138},[40,184,185],{},"kixdesk.com"," \u002F Repos",[152,188,189],{"align":138},[40,190,42],{},[10,192,193,194,197],{},"Because the same file extension is used, it easily gives the impression that a single package runs everywhere. In reality, compatibility is tied to the respective ",[30,195,196],{},"framework version"," and internal API assumptions.",[58,199],{},[61,201,203],{"id":202},"portability-in-practice-four-pitfalls","Portability in Practice: Four Pitfalls",[205,206,208],"h3",{"id":207},"_1-the-declared-framework-version","1. The Declared Framework Version",[10,210,211,212,214,215,218,219,18,222,18,225,228,229,232],{},"In the ",[40,213,91],{},"\u002F",[40,216,217],{},"OPM"," file, a package specifies which framework versions it is compatible with (e.g., ",[40,220,221],{},"6.x",[40,223,224],{},"10.x",[40,226,227],{},"11.x","). A package that only declares ",[40,230,231],{},"\u003CFramework>6.0.x\u003C\u002FFramework>"," cannot be easily installed on a modern OTOBO 11—the package manager will block it or issue a warning. Znuny packages close to the OTRS 6 baseline are therefore not automatically runnable in OTOBO 11.",[205,234,236],{"id":235},"_2-diverging-internal-apis","2. Diverging Internal APIs",[10,238,239],{},"Even if the format is identical, OTOBO and KIX have modernized parts of their core. Calls to internal Perl modules, modified method signatures, or new caching layers (e.g., OTOBO relies on Redis\u002FElasticsearch) can cause a syntactically installable package to throw runtime errors.",[205,241,243],{"id":242},"_3-template-and-frontend-differences","3. Template and Frontend Differences",[10,245,246,247,250],{},"Skins and frontend extensions are particularly sensitive. An agent skin built for the classic OTRS\u002FZnuny interface rarely fits OTOBO 1:1—and certainly not the reimagined frontend of ",[30,248,249],{},"KIX 18",", which is architecturally the furthest removed from the original.",[205,252,254],{"id":253},"_4-dependencies-between-packages","4. Dependencies Between Packages",[10,256,257,258,260],{},"Many extensions require other ",[40,259,42],{}," packages or Perl modules. If a declared dependency is missing in the target system or only exists in an incompatible version, the installation fails, regardless of the fork.",[262,263,264],"blockquote",{},[10,265,266,269],{},[30,267,268],{},"Rule of thumb:"," The closer a package stays to pure business logic (Dynamic Fields, ACLs, Generic Interface mappings), the more portable it is. The deeper it digs into the frontend or internal core APIs, the more likely it needs a fork-specific variant.",[58,271],{},[61,273,275],{"id":274},"special-case-kix-18-same-heritage-different-world","Special Case KIX 18: Same Heritage, Different World",[10,277,278,279,281,282,284,285,287],{},"KIX maintains a classic Perl line and the newer ",[30,280,249],{}," in parallel. KIX 18 is a largely rewritten development featuring a REST API-centric architecture and its own frontend. For plugin portability, this means that classic ",[40,283,42],{}," add-ons from the OTRS world are the hardest to adopt directly here. In return, the API-first architecture opens up alternative integration paths—such as through external services rather than embedded ",[40,286,42],{}," modules.",[58,289],{},[61,291,293],{"id":292},"how-an-open-directory-helps","How an Open Directory Helps",[10,295,296,297,300],{},"This is precisely where the Open ITSM Hub comes in: Instead of merely listing packages, we capture ",[30,298,299],{},"compatibility metadata","—showing which package is intended for which system and versions. This allows you to see at a glance whether an extension fits your installation before testing it in a staging environment.",[10,302,303],{},"Browse by system:",[74,305,306,312,318,324],{},[77,307,308],{},[14,309,311],{"href":310},"\u002Fznuny-plugins","Znuny Plugins",[77,313,314],{},[14,315,317],{"href":316},"\u002Fotobo-plugins","OTOBO Plugins",[77,319,320],{},[14,321,323],{"href":322},"\u002Fzammad-plugins","Zammad Plugins",[77,325,326,327,331,332],{},"Complete overview of all ",[14,328,330],{"href":329},"\u002Fitsm-plugins","ITSM Plugins"," and ",[14,333,335],{"href":334},"\u002Fpackages","Packages",[58,337],{},[61,339,341],{"id":340},"digging-deeper-comparison-migration-ai","Digging Deeper: Comparison, Migration & AI",[10,343,344,345,348],{},"This article deliberately does ",[30,346,347],{},"not"," answer the question \"Which fork is the best?\"—there are already excellent, detailed sources for that. If you are interested in selection, migration, or the AI perspective, continue reading at:",[10,350,351],{},[30,352,353],{},"Fork Selection & Feature\u002FAI Comparison:",[74,355,356,364,371],{},[77,357,358],{},[14,359,363],{"href":360,"rel":361},"https:\u002F\u002Fsoftoft.de\u002Fblog\u002Fotobo-znuny-zammad-ai-comparison",[362],"nofollow","OTOBO vs. Znuny vs. Zammad – The AI Comparison (softoft.de)",[77,365,366],{},[14,367,370],{"href":368,"rel":369},"https:\u002F\u002Fopenticketai.com\u002Fde\u002Fdocs\u002Fblog\u002Fopen-source-ai-ticket-system-best-options-2026",[362],"Open-Source AI Ticket System: Best Options 2026 (openticketai.com)",[77,372,373],{},[14,374,377],{"href":375,"rel":376},"https:\u002F\u002Fsoftoft.de\u002Fblog\u002Fotobo-version-11",[362],"What OTOBO 11 Brings (softoft.de)",[10,379,380],{},[30,381,382],{},"Migration from OTRS:",[74,384,385],{},[77,386,387],{},[14,388,391],{"href":389,"rel":390},"https:\u002F\u002Fsoftoft.de\u002Fblog\u002Fotrs-migration-path-2026",[362],"OTRS Migration Path 2026 (softoft.de)",[10,393,394],{},[30,395,396],{},"AI Automation on These Systems:",[74,398,399,415,428],{},[77,400,401,402,18,406,23,410,414],{},"Solution pages for ",[14,403,22],{"href":404,"rel":405},"https:\u002F\u002Fopenticketai.com\u002Fde\u002Fsolutions\u002Fotobo",[362],[14,407,17],{"href":408,"rel":409},"https:\u002F\u002Fopenticketai.com\u002Fde\u002Fsolutions\u002Fznuny",[362],[14,411,27],{"href":412,"rel":413},"https:\u002F\u002Fopenticketai.com\u002Fde\u002Fsolutions\u002Fkixdesk",[362]," at Open Ticket AI",[77,416,417,418,331,423],{},"Practical guides: ",[14,419,422],{"href":420,"rel":421},"https:\u002F\u002Fopenticketai.com\u002Fde\u002Fdocs\u002Fblog\u002Fautomation-in-znuny-ticket-system",[362],"Automation in Znuny",[14,424,427],{"href":425,"rel":426},"https:\u002F\u002Fopenticketai.com\u002Fde\u002Fdocs\u002Fblog\u002Fotobo-ticket-automation-guide",[362],"OTOBO Ticket Automation",[77,429,430,431,331,435],{},"Python SDKs for ",[14,432,22],{"href":433,"rel":434},"https:\u002F\u002Fopenticketai.com\u002Fde\u002Fdocs\u002Fotobo-python-sdk",[362],[14,436,17],{"href":437,"rel":438},"https:\u002F\u002Fopenticketai.com\u002Fde\u002Fdocs\u002Fznuny-python-sdk",[362],[58,440],{},[61,442,444],{"id":443},"conclusion","Conclusion",[10,446,447,448,450],{},"The shared ",[40,449,42],{}," heritage of the OTRS forks is a blessing for the community, but it is no guarantee of blind interchangeability. The portability of an extension depends on the declared framework version, internal APIs, frontend interventions, and dependencies. Anyone using third-party packages should always verify declared compatibility and test in a staging environment.",[10,452,453,454,457,458,56],{},"Which fork—Znuny, OTOBO, or KIX—is ultimately the right one is answered by the comparison and migration articles linked above. Our task is to make the surrounding ecosystem ",[30,455,456],{},"visible and comparable",". You can find further classifications in the ",[14,459,461],{"href":460},"\u002Fblog","blog overview",[58,463],{},[10,465,466],{},[467,468,469],"em",{},"This article is a neutral Open ITSM Hub summary on the plugin ecosystem. For binding compatibility and version specifications, please consult the official documentation of the respective project.",{"title":471,"searchDepth":472,"depth":472,"links":473},"",2,[474,475,476,483,484,485,486],{"id":63,"depth":472,"text":64},{"id":116,"depth":472,"text":117},{"id":202,"depth":472,"text":203,"children":477},[478,480,481,482],{"id":207,"depth":479,"text":208},3,{"id":235,"depth":479,"text":236},{"id":242,"depth":479,"text":243},{"id":253,"depth":479,"text":254},{"id":274,"depth":472,"text":275},{"id":292,"depth":472,"text":293},{"id":340,"depth":472,"text":341},{"id":443,"depth":472,"text":444},"2026-06-21","From a directory perspective: how compatible are .opm packages and skins across the OTRS forks Znuny, OTOBO, and KIX, and what admins should look out for when installing third-party extensions.",false,"md",{"language":492},"en",true,"\u002Fblog\u002Fotrs-fork-plugin-oekosystem-opm-kompatibilitaet",{"title":5,"description":488},"blog\u002Fotrs-fork-plugin-oekosystem-opm-kompatibilitaet","YgDk7cpAhEa8CJT47X6GTyC69Iq2vo-GxVgXYvicnJU",1787732994316]