Skip to main content

Feature Flags & Module Gates

Some Resgrid modules are behind feature flags so they can be rolled out gradually. On the hosted service Resgrid staff switch them on; on a self-hosted installation the operator does it with the tools console. Flags are stored in the database (FeatureFlags, FeatureFlagOverrides, FeatureFlagTargetingRules, FeatureFlagPrerequisites), cached, and evaluated per department: a department override wins over a percentage rollout and targeting rules, which win over the global default.

Managing flags (self-hosted)

# list flags and what a department resolves to
dotnet Resgrid.Console.dll --FeatureFlags --DepartmentId=1

# turn a flag on for one department (department override)
dotnet Resgrid.Console.dll --FeatureFlags --Key=Records.System --DepartmentId=1 --On

# turn a flag on globally (default for every department without an override)
dotnet Resgrid.Console.dll --FeatureFlags --Key=Checklists.System --On

# remove an override, staged rollout, list keys the code gates on
dotnet Resgrid.Console.dll --FeatureFlags --Key=Chat.System --DepartmentId=1 --Clear
dotnet Resgrid.Console.dll --FeatureFlags --Key=Chat.System --Rollout=25
dotnet Resgrid.Console.dll --FeatureFlags --Keys

Writes go through the feature-toggle service, so caches are invalidated and an audit event is written; web, API and workers pick up the change on their next read. FeatureFlagsConfig.FeatureFlagsEnabled=false turns the whole subsystem off (every flag reads as disabled).

Flags

KeyGatesDepends onSeeded
Chat.SystemRealtime chat, incident channels, Assistant conversation, moderation (web + apps). Free for all plans.M0108
Chatbot.TwilioTextIntegrationRoutes inbound SMS through the Assistant pipeline instead of the legacy text commands.
Dispatch.RunCardsRun cards, station-based / closest-unit selection, move-ups, alarm levels.M0116
Checklists.SystemChecklists module (free).M0189 (off)
Maintenance.WorkOrdersWork orders and preventive maintenance. Also needs the Readiness Pro add-on and the Maintenance module switch.M0189 (off)
Records.SystemThe Records module; replaces Logs in the sidebar. A department must also activate Records.M0152 (off)
Records.Field.Responder / .Unit / .IncidentCommand / .DispatchField Records surfaces in each app.Records.SystemM0152
Records.Prevention.OccupancyOccupancies and the pre-plan crosswalk.Records.SystemM0186
Records.Prevention.InspectionsInspection programs, code sets, inspections, violations.Records.Prevention.OccupancyM0186
Records.Prevention.HydrantsHydrants and water sources.Records.SystemM0186
Records.Prevention.PermitsPermits and plan review.Records.Prevention.OccupancyM0186
Records.Prevention.CrrCommunity risk reduction activities.Records.SystemM0186
Records.InvestigationsInvestigation cases.Records.SystemM0186
Records.QualityReviewQuality review rubrics and sampling.Records.SystemM0186
Records.AnalyticsRecords analytics dashboards.Records.SystemM0187
Security.DepartmentProtectedDataEnrollmentPlatform-wide admission gate for new Advanced Data Protection enrollments (operator-managed; never affects departments already enrolled).M0126

Other gates

Besides flags, a page can be hidden by:

GateWhere
Module switches (Messaging, Mapping, Shifts, Logs/Records, Reports, Documents, Calendar, Notes, Training, Inventory, Checklists, Maintenance)Department Settings → Module Settings (DepartmentModuleSettings)
Plan and add-ons (PTT, ADP, Readiness Pro, Enterprise SSO)Subscription & Billing; entitlement checked against the billing API (SubscriptionsService, ReadinessAccessService)
PermissionsSecurity & Permissions
Records activationRecords → Activate (RmsDepartmentCutover)
Installation confige.g. NERIS submission switched off system-wide, external connectors off, tracker gateway disabled

Environments

A flag can be restricted to an environment (SystemBehaviorConfig.Environment: Dev, QA, Staging, Production); a flag pinned to another environment evaluates as its off value.