# Manage optional workflow capabilities

Optional workflow extensions add offered handler packs to your organisation. The platform supplies admitted versions; a tenant administrator chooses which are installed and active. This is a product capability lifecycle, not an upload-and-execute mechanism for arbitrary code.

## Understand the states

| Action | Meaning |
| --- | --- |
| Install | Record an offered exact version as available to the organisation |
| Activate | Make that family's selected version available for new authoring and work |
| Upgrade | Select another compatible installed and admitted version |
| Drain | Refuse new work while allowing existing admitted work to finish |
| Deactivate | Stop active use once retained work permits it |
| Uninstall | Remove availability while preserving lifecycle receipts and history |

## Make a change

Ask the Assistant to list workflow extensions and admitted versions. Inspect dependencies, current state, active version, and ongoing work. Propose the exact lifecycle action and review its card. The change is conditional on the state you reviewed; concurrent administration requires a fresh proposal.

Installing is distinct from activation. Activating a family does not rewrite existing published recipes or app releases.

## Preserve running and historical work

Admitted runs retain their selected recipe and extension versions across an upgrade. Drain does not interrupt them. Deactivation or removal can be blocked while queued, running, or recoverable work still depends on the extension.

Inspect blocked work and either complete, repair, or explicitly cancel it as appropriate. Do not assume a waiting run expires in a way that releases its dependencies. A historical app release needs its exact dependencies available again before it can start new work after removal.

## Test compatibility

Validate recipes after a change. Optional extensions can require a durable run instead of a stateless dry-run preview. Preview composition upgrades before applying them, especially when local customisations exist. See [workflow versions](/docs/workflows/versions).
