{"record":{"id":"98630279fad60290","repo":"windmill-labs/windmill","slug":"def-badge-triggers-manage-cloud-subscriptions-a","errorCode":null,"errorMessage":"${def.badge} triggers manage cloud subscriptions at creation — fill in the imported resource, then re-create this trigger manually","messagePattern":"(.+?) triggers manage cloud subscriptions at creation — fill in the imported resource, then re-create this trigger manually","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"frontend/src/lib/components/triggers/workspaceTriggersList.ts","lineNumber":414,"sourceCode":"export async function createWorkspaceTriggerDisabled(\n\tworkspace: string,\n\ttrigger: {\n\t\tkind: string\n\t\tpath: string\n\t\tscript_path: string\n\t\tis_flow: boolean\n\t\tsummary?: string | null\n\t\tconfig?: Record<string, any> | null\n\t},\n\topts: { hasEeLicense: boolean }\n): Promise<unknown> {\n\tconst def = TRIGGER_KINDS[trigger.kind as WorkspaceTriggerKind]\n\tif (!def) throw new Error(`trigger kind '${trigger.kind}' not supported yet`)\n\tif (def.eeOnly && !opts.hasEeLicense) {\n\t\tthrow new Error(`trigger kind '${trigger.kind}' requires Enterprise`)\n\t}\n\tif (def.provisionsOnCreate) {\n\t\tthrow new Error(\n\t\t\t`${def.badge} triggers manage cloud subscriptions at creation — fill in the imported resource, then re-create this trigger manually`\n\t\t)\n\t}\n\t// Remote input: only the allowlisted portable slice may reach the create call.\n\tconst config = portableTriggerConfig(trigger.kind, trigger.config)\n\tif (trigger.kind === 'schedule') {\n\t\t// Spread the portable config first so behavioral settings survive the\n\t\t// import (cron_version, retry, failure/recovery/success handlers,\n\t\t// no_flow_overlap, …) — restoring only cron+timezone would silently\n\t\t// change the schedule's semantics once re-enabled.\n\t\treturn ScheduleService.createSchedule({\n\t\t\tworkspace,\n\t\t\trequestBody: {\n\t\t\t\t...config,\n\t\t\t\tpath: trigger.path,\n\t\t\t\tschedule: (config.schedule as string) ?? '0 0 * * * *',\n\t\t\t\ttimezone: (config.timezone as string) ?? 'UTC',\n\t\t\t\tscript_path: trigger.script_path,","sourceCodeStart":396,"sourceCodeEnd":432,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/frontend/src/lib/components/triggers/workspaceTriggersList.ts#L396-L432","documentation":"createWorkspaceTriggerDisabled blocks trigger kinds marked `provisionsOnCreate` in TRIGGER_KINDS (e.g. cloud-subscription triggers like SQS/GCP/Azure). Such triggers manage cloud subscriptions at creation time, so they cannot be auto-created from an imported project; the user must fill in the imported resource and create the trigger manually. `def.badge` names the specific trigger family in the message.","triggerScenarios":"installProject encounters a trigger whose TRIGGER_KINDS def has provisionsOnCreate: true (a trigger that would provision a cloud subscription if created).","commonSituations":"Installing a project template that includes cloud-backed triggers (SQS, GCP, Azure subscription triggers) where the cloud resource/subscription cannot be safely provisioned from the import.","solutions":["Complete the imported resource configuration (settings/path) in the UI, then create the trigger manually as the message instructs.","Skip provisioning triggers during install and surface a completion checklist to the user.","If the trigger should not provision, verify the kind's TRIGGER_KINDS definition is correct (provisionsOnCreate flag).","Provide the required cloud credentials/resources first, then re-add the trigger by hand."],"exampleFix":"// before\nawait createWorkspaceTriggerDisabled(trigger, opts) // throws for provisionsOnCreate\n// after\nconst def = TRIGGER_KINDS[trigger.kind as WorkspaceTriggerKind]\nif (def?.provisionsOnCreate) {\n  manualSteps.push(`create ${trigger.kind} trigger manually after configuring the resource`)\n  continue\n}\nawait createWorkspaceTriggerDisabled(trigger, opts)","handlingStrategy":"validation","validationCode":"function triggerProvisionsOnCreate(kind: string): boolean {\n  return TRIGGER_KINDS[kind as WorkspaceTriggerKind]?.provisionsOnCreate === true\n}\n// before install:\nconst manual = triggers.filter(triggerProvisionsOnCreate)","typeGuard":"function requiresManualProvisioning(k: WorkspaceTriggerKind): boolean {\n  return TRIGGER_KINDS[k]?.provisionsOnCreate === true\n}","tryCatchPattern":"try {\n  await createWorkspaceTriggerDisabled(trigger, opts)\n} catch (e) {\n  if (String(e).includes('manage cloud subscriptions at creation')) {\n    manualSteps.push(`${trigger.kind}: configure the imported resource, then create the trigger manually`)\n    return null\n  }\n  throw e\n}","preventionTips":["Split provisioning triggers out of project installs into a manual checklist","Configure the underlying cloud resource before attempting trigger creation","Document provisioning triggers in template docs so installers expect manual steps","Check provisionsOnCreate before batch-installing triggers"],"tags":["triggers","project-install","cloud-provisioning"],"backgroundTag":"manual-trigger-provisioning-required","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}