{"record":{"id":"097e8dbbe28c0366","repo":"RocketChat/Rocket.Chat","slug":"error-no-license","errorCode":"error-no-license","errorMessage":"error-no-license","messagePattern":"error-no-license","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/meteor/server/lib/omnichannel/outboundcommunication.ts","lineNumber":5,"sourceCode":"import type { IOutboundMessageProviderService } from '@rocket.chat/core-typings';\nimport { makeFunction } from '@rocket.chat/patch-injection';\n\nexport const getOutboundService = makeFunction((): IOutboundMessageProviderService => {\n\tthrow new Error('error-no-license');\n});\n","sourceCodeStart":1,"sourceCodeEnd":7,"githubUrl":"https://github.com/RocketChat/Rocket.Chat/blob/b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0/apps/meteor/server/lib/omnichannel/outboundcommunication.ts#L1-L7","documentation":"getOutboundService is created with makeFunction from @rocket.chat/patch-injection. The community-edition core ships only a stub that throws Error('error-no-license'); the enterprise build (apps/meteor/ee/server/api/v1/omnichannel/lib/outbound.ts:71) patches it with the real IOutboundMessageProviderService. Any call that happens without that EE patch — e.g., the apps-engine outbound-communication bridges (registerPhoneProvider/registerEmailProvider) — hits the stub.","triggerScenarios":"An app or integration calls the outbound communication bridge or the EE outbound API on a deployment where the enterprise patch is not registered: community edition build, or EE present but the license is missing/expired and does not cover the feature.","commonSituations":"Installing an app that uses outbound communication APIs on a CE workspace; license expired or invalidated so the EE patch is not applied; testing EE features in a dev environment without a license file.","solutions":["Apply an enterprise license that includes omnichannel outbound communication (Administration > License) and reload.","Run a build/edition that registers the outbound service patch (apps/meteor/ee).","If staying on CE, remove or disable the app/integration that calls the outbound bridge."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"let outbound: IOutboundMessageProviderService | undefined;\ntry {\n\toutbound = getOutboundService();\n} catch (err) {\n\tif ((err as Error).message === 'error-no-license') {\n\t\t// community build or missing license: degrade gracefully, disable outbound features\n\t}\n}","preventionTips":["Probe getOutboundService once at app startup and remember the result instead of failing per request.","Gate outbound-communication features on the workspace license state shown in Administration > License.","Declare the enterprise requirement in the app's documentation so CE users know before installing."],"tags":["omnichannel","licensing","enterprise","outbound","apps-engine"],"backgroundTag":"license-required-feature","analyzedSha":"b2c16d5842cbe6b69b59bdf6fc5e5f1afcd1f0b0","analyzedAt":"2026-08-18T15:26:39.429Z","contentChangedAt":"2026-08-18T15:26:39.429Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}