-
Notifications
You must be signed in to change notification settings - Fork 15
Adding a Feature Flag with FeatureToggle
FeatureToggle allows us to hide features behind a flag. Using this we can safely release partial features, hold back new UI until users have been prepared, and selectively activate features for testing with specific users. For UAT and Prod envs these feature toggles are managed in our appeals-deployment repository in features-config.yml.
- Either find your flag or add it under features_config -> certification -> prod in features-config.yml.
# Example of config_file:
# [
# {
# feature: "enable_all_feature",
# enable_all: true # this can only be a value of true
# },
# {
# feature: "enable_users",
# users: ["VHAISADJURIN", "VHAISAPROKOA", "VHAISWSTEWAA"]
# },
# {
# feature: "enable_regional_offices",
# users: ["CSS_ID_1"],
# regional_offices: ["RO01"]
# }
# ]
- You can add which users or regional offices the feature should be enabled for by adding users' css_ids or regional office codes
- Create a PR (example) with your changes and grab a fellow caseflower to review.
- Either wait for the standard deployment at 10:45a EST or manually run the enable feature script in jenkins
- Look for a successful deploy in slack
FeatureToggle.enable!(:foo)
FeatureToggle.enable!(:bar, regional_offices: ["RO01", "RO02"])
FeatureToggle.disable!(:bar, users: ["CSS_ID_1", "CSS_ID_2"])
Depending on where the feature flag is used in the backend, the current_user
method may or may not be in scope. However, because the StubbableUser
module includes a current_user
method, tests will pass even if current_user
is used out of scope. As a result, incorrectly using current_user
for the user parameter of a feature toggle could introduce a bug that won’t break tests.
To avoid this situation, be sure to only use current_user
where it is in scope. To test the scenario where current_user
is out of scope, you can mock the current_user
method to throw an error.
A script sets all FeatureFlags found in the code to active in dev scripts/enable_features_dev.rb
- Use
make enable-feature-flags
to run this script. - This is also part of
make reset
. - This script scans files for
FeatureToggle.enabled
orfeature_enabled
. - To prevent a toggle from being enabled by this script add it to this array
- Individual global features can be adjusted on the user selection page
FeatureToggle.details_for(:foo)
- You must specify the scope at which you're checking the feature
state: if you check
enabled?
without specifying a user, the result will befalse
if the feature is only enabled for specific user/regional office.
FeatureToggle.enabled?(:bar, user: current_user)
NB: State checking methods receive User
objects, not Arrays
FeatureToggle.features
=> [:appeals_status, :certification_v2, :reader]
In many parts of the caseflow application, we use the following pattern to pass feature flags to and check if they are enabled on the front end.
FeatureToggle
s are passed to a specific application through its index.html.erb file. This gives us the ability to check these feature toggles in specific components.
Toggle Name | Description | Related Epic/Tickets | Sprint Team | Created | Released | Paused | State | Notes |
---|---|---|---|---|---|---|---|---|
acd_cases_tied_to_judges_no_longer_with_board | Cases Tied to Judges No Longer with the Board or Otherwise Ineligible | |||||||
acd_disable_legacy_lock_ready_appeals | LOCK_READY_APPEALS | |||||||
acd_distribute_by_docket_date | By Docket Date | |||||||
acd_exclude_from_affinity | Named Judge Affinity Inclusion Levers | Named Judge Affinity Inclusion Levers | MoonWalkers 🌑 | Q1 2024 | ||||
alert_duplicate_veterans | ||||||||
api_v3 | ||||||||
appeal_viz | ||||||||
async_manual_start | Manually running Scheduled Jobs | |||||||
attorney_fees | ||||||||
automatic_ramp_rollback | ||||||||
bgs_forward_proxy | ||||||||
cavc_remand | Controls the JMR & JMPR CAVC Remand flow access | JMR/JMPR CAVC Remand Entry & JMR/JMPR Task & Routing Logic | 🐬 Echo | Dec 2020 | Feb 16, 2021 | |||
cavc_dashboard_workflow | In development | |||||||
ce_api_demo_toggle | Feature toggle to enable or disable the mocked Claim Evidence API success/failure response on Demo environments and local. | APPEALS-27311 and APPEALS-27458 | ||||||
cc_vacatur_visibility | Controls the visibility of the task descriptions for motions to vacate in case timeline | In development | ||||||
mdr_cavc_remand | Controls the MDR CAVC Remand flow access. Requires cavc_remand enabled |
🐬 Echo | Jan 2021 | |||||
reversal_cavc_remand | Controls the Straight Reversal CAVC Remand flow access. Requires cavc_remand enabled |
🐬 Echo | Jan 2021 | |||||
dismissal_cavc_remand | Controls the Death Dismissal CAVC Remand flow access. Requires cavc_remand enabled |
🐬 Echo | Jan 2021 | |||||
contestable_rating_decisions | ||||||||
correct_claim_reviews | ||||||||
covid_timeliness_exemption | ||||||||
detect_contention_exam | ||||||||
disability_issue_test | ||||||||
disable_claim_establishment | ||||||||
docket_switch | Related to work around enabling ClerkOfTheBoard users to initiate a docket switch |
#13978 | 🦊 Foxtrot | |||||
edit_contention_text | ||||||||
inbox | ||||||||
judge_admin_scm | Related to work around allowing judge teams to have admins that are neither attorneys or judges | #11801 | 🐬 Echo | PLANNED ROLLBACK | Was scrapped by board and has a planned rollback in #13991 | |||
justification_reason | Created for MST/PACT justification reason for adding/editing the MST/PACT status of an issue. This work was not enabled upon release but the work was hidden behind the justification_reason feature toggle in case it was needed in the future. Since this work was never released with MST/PACT, the toggle is disabled by default in disabled_flags within the file enabled_features_dev.rb . |
APPEALS-17497 and APPEALS-37777 | ||||||
legacy_das_deprecation | ||||||||
legacy_mst_pact_identification | Enable/disable MST/PACT special issue designation on Legacy appeals, and issues within Caseflow. | APPEALS-17497 and APPEALS-37777 | ||||||
mpi_nod_updates | Disables MPI NOD work for updating SFNOD in corres in VACOLS. | 10/13/2022 | IN DEV | |||||
mst_identification | Enable/disable MST special issue designation on Legacy/AMA appeals, request issues, and decision issues within Caseflow. | APPEALS-17497 and APPEALS-37777 | ||||||
overtime_revamp | Determines whether judges can mark cases as overtime in caseflow #13418 | #13418 | 🐬 Echo | 5/23/2020 | READY FOR PILOT | Will remove once enabled for all judges | ||
pact_identification | Enable/disable PACT special issue designation on Legacy/AMA appeals, request issues, and decision issues within Caseflow. | APPEALS-17497 and APPEALS-37777 | ||||||
priority_acd | Determines whether the requested case distribution for a judge should use the updated distribution logic described in #14538 | #14538 | 🐬 Echo | 6/29/2020 | IN DEV | Will remove once enabled for all judges | ||
queue_correspondence | Enable/disable C&P correspondence mail package workflow within Caseflow Queue | APPEALS-27311 and APPEALS-27458 | ||||||
ramp_intake | ||||||||
ratings_at_issue | ||||||||
release_db_connections | ||||||||
restrict_appeal_intakes | ||||||||
review_motion_to_vacate | ||||||||
schedule_virtual_hearings | Enables a dropdown in Hearing Details page to allow hearing coordinators to switch a video hearing to a virtual hearing | #11132 | 💃 Tango | 10/25/2019 | 05/19/2020 | IN PROD | It's been enabled for all hearing coordinators (#14282) and will be removed | |
schedule_virtual_hearings_for_central | Enables a dropdown in Hearing Details page to allow hearing coordinators to switch a central hearing to a virtual hearing | #13804 | 💃 Tango | WIP | It's being worked on in #13832 | |||
scm_view_judge_assign_queue | Gives members of the Case Movement team access to Judge Assign queues | #12423 | 🐬 Echo | Might be ready to be removed? | ||||
send_original_dta_contentions | ||||||||
set_no_cache_headers | ||||||||
show_future_ratings | ||||||||
special_issues_revamp | Controls whether the four new contentions & validation applies for Queue (Atty Checkout and Judge Checkout) | #13423 | 🐬 Echo | 8/3/2020 | FULLY RELEASED | To be removed after epic is user tested and fully released | ||
special_issues_revamp_dispatch | Controls whether the four new contentions & validation applies for Caseflow Dispatch | #13423 | 🐬 Echo | OBE | Feature to be removed from Caseflow Dispatch completely | |||
split_appeal_workflow | ||||||||
sys_admin_page | Allows system admins to access new admin page | APPEALS-10135 | 10/21/2022 | IN DEV | ||||
unidentified_issue_decision_date | ||||||||
use_ama_activation_date | ||||||||
use_poa_claimants | ||||||||
user_queue_pagination | Determines whether or not a user's queue is paginated on the back end | #14142 | 🐬 Echo | 7/30/2020 | FULLY RELEASED | To be removed after epic is user tested | ||
vbms_forward_proxy | ||||||||
vbms_pagination | ||||||||
verify_unidentified_issue | ||||||||
vso_claimant_representative | ||||||||
vso_virtual_opt_in | Limits access to the Hearings section of the Case Details page for VSO users to allow for a limited release of the VSO Virtual Opt-In feature. | #17295 | ||||||
window_slider |
- Home
- Acronyms and Glossary
- Caseflow products
- Caseflow Intake
- Caseflow Queue
- Caseflow Reader
- Caseflow eFolder
- Caseflow Hearings
- Caseflow Certification
- Caseflow APIs
- Appeal Status API
- Caseflow Dispatch
-
CSUM Roles
- System Admin
- VHA Team Management
- Active Record Queries Resource
- External Integrations
- Caseflow Demo
- Caseflow ProdTest
- Background
- Stuck Jobs
- VA Notify
- Caseflow-Team
- Frontend Best Practices
- Accessibility
- How-To
- Debugging Tips
- Adding a Feature Flag with FeatureToggle
- Editing AMA issues
- Editing a decision review
- Fixing task trees
- Investigating and diagnosing issues
- Data and Metric Request Workflow
- Exporting and Importing Appeals
- Explain page for Appeals
- Record associations and Foreign Keys
- Upgrading Ruby
- Stuck Appeals
- Testing Action Mailer Messages Locally
- Re-running Seed Files
- Rake Generator for Legacy Appeals
- Manually running Scheduled Jobs
- System Admin UI
- Caseflow Makefile
- Upgrading Postgresql from v11.7 to v14.8 Locally
- VACOLS VM Trigger Fix M1
- Technical Talks