Application features & contract (TenancyEngine)
Define what your product can do per environment. Features, offerings, roles, and claims form the product contract tenants inherit when they subscribe.
Console: Application workspace → Features (also Offerings, Roles, Claims)
Use the contract environment selector (Development / Staging / Production) to edit the copy for each stage.
Environments
| Environment | Purpose |
|---|---|
| Development | Experiment freely; bootstrap from Production when needed |
| Staging | Pre-production validation; promote to Production when ready |
| Production | Live tenant entitlements |
Promote contract copies Staging → Production (or Development → Staging) after review. The diff panel highlights additions and changes before you confirm.
Features
Each feature has a stable key, display metadata, and optional limits. On Production, set a rollout channel (Stable / Beta / Preview) to control which tenants receive the capability based on their release channel.
Default rollout for new production features is configured on Settings → Production contract.
Offerings, roles, claims
- Offerings — sellable plans; attach features as
featureKeyorfeatureKey:limit(comma-separated). - Roles — named permission bundles assigned to tenant users.
- Claims — custom JWT claims emitted at sign-in for your app to read.
Edit these tabs with the same environment selector; promote together with features.
Operator tips
- Build in Development, validate in Staging, then Promote to Production — avoid editing Production directly unless hotfixing.
- Use the contract diff view before promotion to catch accidental removals.
- Disabled lifecycle on the parent application blocks tenant access regardless of contract state.
Related
- Application settings — default rollout channel
- Applications — registration and lifecycle