windmill-labs/windmill · error
trigger kind '${trigger.kind}' requires Enterprise
Error message
trigger kind '${trigger.kind}' requires Enterprise What it means
createWorkspaceTriggerDisabled rejects trigger kinds flagged `eeOnly` in TRIGGER_KINDS when the workspace has no Enterprise license (opts.hasEeLicense false). This enforces the licensing boundary during project installs — EE trigger kinds cannot be silently created on CE.
Source
Thrown at frontend/src/lib/components/triggers/workspaceTriggersList.ts:411
* (schedules use `enabled: false`, every other kind uses `mode: 'disabled'`)
* and are encoded here once so importers can't get them wrong.
*/
export async function createWorkspaceTriggerDisabled(
workspace: string,
trigger: {
kind: string
path: string
script_path: string
is_flow: boolean
summary?: string | null
config?: Record<string, any> | null
},
opts: { hasEeLicense: boolean }
): Promise<unknown> {
const def = TRIGGER_KINDS[trigger.kind as WorkspaceTriggerKind]
if (!def) throw new Error(`trigger kind '${trigger.kind}' not supported yet`)
if (def.eeOnly && !opts.hasEeLicense) {
throw new Error(`trigger kind '${trigger.kind}' requires Enterprise`)
}
if (def.provisionsOnCreate) {
throw new Error(
`${def.badge} triggers manage cloud subscriptions at creation — fill in the imported resource, then re-create this trigger manually`
)
}
// Remote input: only the allowlisted portable slice may reach the create call.
const config = portableTriggerConfig(trigger.kind, trigger.config)
if (trigger.kind === 'schedule') {
// Spread the portable config first so behavioral settings survive the
// import (cron_version, retry, failure/recovery/success handlers,
// no_flow_overlap, …) — restoring only cron+timezone would silently
// change the schedule's semantics once re-enabled.
return ScheduleService.createSchedule({
workspace,
requestBody: {
...config,
path: trigger.path,View on GitHub (pinned to e474e8803c)
Solutions
- Obtain/apply an Enterprise license to the workspace, then retry the install.
- Remove or replace the EE-only trigger in the project template before installing on CE.
- Skip EE triggers during install on CE with a user-facing warning.
- Verify the license is actually active (check hasEeLicense resolution) if you believe you have EE.
Example fix
// before
await createWorkspaceTriggerDisabled(trigger, { hasEeLicense }) // throws for eeOnly
// after
const def = TRIGGER_KINDS[trigger.kind as WorkspaceTriggerKind]
if (def?.eeOnly && !hasEeLicense) {
skipped.push(`${trigger.kind} (requires Enterprise)`)
continue
}
await createWorkspaceTriggerDisabled(trigger, { hasEeLicense }) Defensive patterns
Strategy: validation
Validate before calling
function triggerNeedsEe(kind: string): boolean {
return TRIGGER_KINDS[kind as WorkspaceTriggerKind]?.eeOnly === true
}
// before install:
const blocked = triggers.filter((t) => triggerNeedsEe(t.kind) && !hasEeLicense) Type guard
function isCeAllowedKind(k: WorkspaceTriggerKind, hasEeLicense: boolean): boolean {
return hasEeLicense || !TRIGGER_KINDS[k]?.eeOnly
} Try / catch
try {
await createWorkspaceTriggerDisabled(trigger, { hasEeLicense })
} catch (e) {
if (String(e).includes('requires Enterprise')) {
skipped.push(`${trigger.kind}: requires Enterprise license`)
return null
}
throw e
} Prevention
- Check hasEeLicense before installing templates containing eeOnly kinds
- Verify the workspace license is active before imports
- Document which trigger kinds are EE-only for template authors
- Skip-and-report EE triggers on CE instead of failing the install
When it happens
Trigger: installProject attempts to create a trigger whose TRIGGER_KINDS entry has eeOnly: true while hasEeLicense is false.
Common situations: Importing a project that uses EE triggers (e.g. certain queue/streaming triggers) into a Community Edition instance; a license key that expired or was not applied to the workspace.
Related errors
- trigger kind '${trigger.kind}' not supported yet
- ${def.badge} triggers manage cloud subscriptions at creation
- Agent mode is only available in the EE, ignoring...
- External JWT auth is not open source
- License can't be validated in Windmill CE
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/0267f85e7a9ab0a2.
Report an issue: GitHub.