Grandfather orgs already running a gated commerce market

FixInitializerService
Shipped
August 8, 2026 at 5:37 PM UTC
Author
Kamo
Commit
c5b79a7

Gating MORTGAGE behind MLOS made the gate unsatisfiable for tenants: MLOS is still PLANNING, and FeatureController.enable refuses a non-COMPLETED app for a child org, so an org with a live mortgage pipeline would lose it with no self-service way back. Found on a real 6-member tenant (OptionOne) with an active MORTGAGE market and no MLOS OrgFeature row. Any non-top-level org that already runs an active market of a gated vertical now gets the matching OrgFeature row. This grants nothing new — the market exists and already works — it just preserves the status quo so the gate means what it was asked to mean: the vertical disappears when a member disables the app, or when the plan stops including it. OptionOne is on an active trial, so it stays entitled until that lapses and drops it onto FREE, where MLOS is explicitly excluded. Markets created from here on are gated at creation. Verified in prod: all three active gated markets (KamoCRM MORTGAGE, KamoCRM PERSONAL_LOANS, OptionOne MORTGAGE) now carry their app row, and a second full run was a no-op (0 features created, 0 plan rows inserted, 0 grandfathered), confirming idempotence.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing