diff --git a/ee/app/policies/ee/group_policy.rb b/ee/app/policies/ee/group_policy.rb
index e806e22f4b4e28962cfd784bc456acf2e8d1cd96..c9bcf5cfa78c979a851452381c079a50b3f37991 100644
--- a/ee/app/policies/ee/group_policy.rb
+++ b/ee/app/policies/ee/group_policy.rb
@@ -10,19 +10,19 @@ module GroupPolicy
 
       with_scope :subject
       condition(:ldap_synced) { @subject.ldap_synced? }
-      condition(:epics_available) { feature_available?(:epics) }
-      condition(:iterations_available) { feature_available?(:iterations) }
-      condition(:subepics_available) { feature_available?(:subepics) }
+      condition(:epics_available) { @subject.feature_available?(:epics) }
+      condition(:iterations_available) { @subject.feature_available?(:iterations) }
+      condition(:subepics_available) { @subject.feature_available?(:subepics) }
       condition(:contribution_analytics_available) do
-        feature_available?(:contribution_analytics)
+        @subject.feature_available?(:contribution_analytics)
       end
 
       condition(:cycle_analytics_available) do
-        feature_available?(:cycle_analytics_for_groups)
+        @subject.feature_available?(:cycle_analytics_for_groups)
       end
 
       condition(:group_merge_request_analytics_available) do
-        feature_available?(:group_merge_request_analytics)
+        @subject.feature_available?(:group_merge_request_analytics)
       end
 
       condition(:group_repository_analytics_available) do
@@ -30,7 +30,7 @@ module GroupPolicy
       end
 
       condition(:group_activity_analytics_available) do
-        feature_available?(:group_activity_analytics) && ::Feature.enabled?(:group_activity_analytics, @subject, default_enabled: true)
+        @subject.feature_available?(:group_activity_analytics) && ::Feature.enabled?(:group_activity_analytics, @subject, type: :licensed, default_enabled: true)
       end
 
       condition(:can_owners_manage_ldap, scope: :global) do
@@ -46,11 +46,11 @@ module GroupPolicy
       end
 
       condition(:security_dashboard_enabled) do
-        feature_available?(:security_dashboard)
+        @subject.feature_available?(:security_dashboard)
       end
 
       condition(:prevent_group_forking_available) do
-        feature_available?(:group_forking_protection)
+        @subject.feature_available?(:group_forking_protection)
       end
 
       condition(:needs_new_sso_session) do
@@ -62,11 +62,11 @@ module GroupPolicy
       end
 
       condition(:dependency_proxy_available) do
-        feature_available?(:dependency_proxy)
+        @subject.feature_available?(:dependency_proxy)
       end
 
       condition(:cluster_deployments_available) do
-        feature_available?(:cluster_deployments)
+        @subject.feature_available?(:cluster_deployments)
       end
 
       condition(:group_saml_enabled) do
@@ -74,7 +74,7 @@ module GroupPolicy
       end
 
       condition(:group_timelogs_available) do
-        feature_available?(:group_timelogs)
+        @subject.feature_available?(:group_timelogs)
       end
 
       with_scope :global
@@ -88,15 +88,15 @@ module GroupPolicy
       end
 
       condition(:commit_committer_check_available) do
-        feature_available?(:commit_committer_check)
+        @subject.feature_available?(:commit_committer_check)
       end
 
       condition(:reject_unsigned_commits_available) do
-        feature_available?(:reject_unsigned_commits)
+        @subject.feature_available?(:reject_unsigned_commits)
       end
 
       condition(:push_rules_available) do
-        feature_available?(:push_rules)
+        @subject.feature_available?(:push_rules)
       end
 
       condition(:over_storage_limit, scope: :subject) { @subject.over_storage_limit? }
@@ -245,8 +245,10 @@ module GroupPolicy
         prevent :update_default_branch_protection
       end
 
+      # TODO: Switch to `feature_enabled?` when we enable the feature flag by default
+      # https://gitlab.com/gitlab-org/gitlab/-/issues/207888
       desc "Group has wiki disabled"
-      condition(:wiki_disabled, score: 32) { !feature_available?(:group_wikis) }
+      condition(:wiki_disabled, score: 32) { !@subject.beta_feature_available?(:group_wikis) }
 
       rule { wiki_disabled }.policy do
         prevent(*create_read_update_admin_destroy(:wiki))
@@ -304,19 +306,6 @@ def lookup_access_level!
       super
     end
 
-    # TODO: Once we implement group-level feature toggles, see if we can refactor
-    # the shared logic in ProjectPolicy and GroupPolicy.
-    # https://gitlab.com/gitlab-org/gitlab/-/issues/208412
-    def feature_available?(feature)
-      if feature == :group_wikis
-        # TODO: Remove this special case when we remove the feature flag
-        # https://gitlab.com/gitlab-org/gitlab/-/issues/207888
-        ::Feature.enabled?(:group_wikis_feature_flag, subject) && subject.feature_available?(feature)
-      else
-        subject.feature_available?(feature)
-      end
-    end
-
     def ldap_lock_bypassable?
       return false unless ::Feature.enabled?(:ldap_settings_unlock_groups_by_owners)
       return false unless ::Gitlab::CurrentSettings.allow_group_owners_to_manage_ldap?
diff --git a/ee/config/feature_flags/development/group_wikis_feature_flag.yml b/ee/config/feature_flags/licensed/group_wikis.yml
similarity index 71%
rename from ee/config/feature_flags/development/group_wikis_feature_flag.yml
rename to ee/config/feature_flags/licensed/group_wikis.yml
index cbf563ec30a52b802eafcb4e1cfd12a91f85dafe..e4d722ca087c268449ca9fbab4dc222bcf6d45b6 100644
--- a/ee/config/feature_flags/development/group_wikis_feature_flag.yml
+++ b/ee/config/feature_flags/licensed/group_wikis.yml
@@ -1,7 +1,7 @@
 ---
-name: group_wikis_feature_flag
+name: group_wikis
 introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/29176
 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/207888
 group: group::knowledge
-type: development
-default_enabled: false
+type: licensed
+default_enabled: [false, true]
diff --git a/ee/spec/policies/group_policy_spec.rb b/ee/spec/policies/group_policy_spec.rb
index 5e68e9e341861b17779b14628ef5ddae9ebe709a..3cb18280fb36bae4fc4f060316ccadf247dd7fd6 100644
--- a/ee/spec/policies/group_policy_spec.rb
+++ b/ee/spec/policies/group_policy_spec.rb
@@ -1075,9 +1075,9 @@
     def set_access_level(access_level)
       case access_level
       when ProjectFeature::ENABLED
-        stub_feature_flags(group_wikis_feature_flag: true)
+        stub_feature_flags(group_wikis: true)
       when ProjectFeature::DISABLED
-        stub_feature_flags(group_wikis_feature_flag: false)
+        stub_feature_flags(group_wikis: false)
       when ProjectFeature::PRIVATE
         skip('Access level private is not supported yet for group wikis, see https://gitlab.com/gitlab-org/gitlab/-/issues/208412')
       end
@@ -1085,7 +1085,7 @@ def set_access_level(access_level)
 
     context 'when the feature flag is disabled on this group' do
       before do
-        stub_feature_flags(group_wikis_feature_flag: create(:group))
+        stub_feature_flags(group_wikis: create(:group))
       end
 
       it 'does not include the wiki permissions' do
diff --git a/spec/support/helpers/wiki_helpers.rb b/spec/support/helpers/wiki_helpers.rb
index c311c2c1c80440310ed3fbf401173127b6787324..e59c6bde264ddfa4314a666718856a8492ddff21 100644
--- a/spec/support/helpers/wiki_helpers.rb
+++ b/spec/support/helpers/wiki_helpers.rb
@@ -4,7 +4,7 @@ module WikiHelpers
   extend self
 
   def stub_group_wikis(enabled)
-    stub_feature_flags(group_wikis_feature_flag: enabled)
+    stub_feature_flags(group_wikis: enabled)
     stub_licensed_features(group_wikis: enabled)
   end