From a74f72861bd0acb686d44b6b3b3d40b03e59d633 Mon Sep 17 00:00:00 2001 From: Daniel Sill Date: Mon, 23 Mar 2026 14:46:05 -0400 Subject: [PATCH 1/3] Gate all Entra content behind entraMonitor feature flag The entraMonitor flag was only checked in the Add Integration modal. Existing Entra integrations leaked through to the integration list, detail page, and action center. This adds flag checks to: - Integration list: filter ENTRA from the connection types query - Integration detail: redirect to list if Entra + flag off - Action center MonitorList: filter Entra monitors from results Co-Authored-By: Claude Opus 4.6 (1M context) --- .../action-center/MonitorList.tsx | 18 +++++++++++---- .../admin-ui/src/pages/integrations/[id].tsx | 6 ++++- .../admin-ui/src/pages/integrations/index.tsx | 23 +++++++++++-------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/clients/admin-ui/src/features/data-discovery-and-detection/action-center/MonitorList.tsx b/clients/admin-ui/src/features/data-discovery-and-detection/action-center/MonitorList.tsx index 463c8725f8a..86d116c6ba5 100644 --- a/clients/admin-ui/src/features/data-discovery-and-detection/action-center/MonitorList.tsx +++ b/clients/admin-ui/src/features/data-discovery-and-detection/action-center/MonitorList.tsx @@ -11,6 +11,7 @@ import { useEffect } from "react"; import { useAppSelector } from "~/app/hooks"; import { selectUser } from "~/features/auth"; import { useFeatures } from "~/features/common/features"; +import { ConnectionType } from "~/types/api"; import { ACTION_CENTER_ROUTE } from "~/features/common/nav/routes"; import { useAntPagination } from "~/features/common/pagination/useAntPagination"; import { useGetAggregateMonitorResultsQuery } from "~/features/data-discovery-and-detection/action-center/action-center.slice"; @@ -30,7 +31,7 @@ import { const MonitorList = () => { const toast = useToast(); const { - flags: { webMonitor: webMonitorEnabled }, + flags: { entraMonitor: entraMonitorEnabled, webMonitor: webMonitorEnabled }, } = useFeatures(); const { paginationProps, pageIndex, pageSize, resetPagination } = useAntPagination(); @@ -96,9 +97,18 @@ const MonitorList = () => { }, [isError, toast]); const results = - data?.items?.flatMap((monitor) => - !!monitor.key && typeof monitor.key !== "undefined" ? [monitor] : [], - ) || []; + data?.items?.flatMap((monitor) => { + if (!monitor.key || typeof monitor.key === "undefined") { + return []; + } + if ( + !entraMonitorEnabled && + monitor.connection_type === ConnectionType.ENTRA + ) { + return []; + } + return [monitor]; + }) || []; return ( diff --git a/clients/admin-ui/src/pages/integrations/[id].tsx b/clients/admin-ui/src/pages/integrations/[id].tsx index 8e570185e26..97880434304 100644 --- a/clients/admin-ui/src/pages/integrations/[id].tsx +++ b/clients/admin-ui/src/pages/integrations/[id].tsx @@ -3,6 +3,7 @@ import { NextPage } from "next"; import { useRouter } from "next/router"; import ErrorPage from "~/features/common/errors/ErrorPage"; +import { useFlags } from "~/features/common/features"; import FixedLayout from "~/features/common/FixedLayout"; import { INTEGRATION_MANAGEMENT_ROUTE } from "~/features/common/nav/routes"; import PageHeader from "~/features/common/PageHeader"; @@ -25,6 +26,7 @@ import { ConnectionType } from "~/types/api"; const IntegrationDetailView: NextPage = () => { const router = useRouter(); const id = router.query.id as string; + const { flags } = useFlags(); const { data: connection, @@ -73,7 +75,9 @@ const IntegrationDetailView: NextPage = () => { if ( !!connection && - !SUPPORTED_INTEGRATIONS.includes(connection.connection_type) + (!SUPPORTED_INTEGRATIONS.includes(connection.connection_type) || + (connection.connection_type === ConnectionType.ENTRA && + !flags.entraMonitor)) ) { router.push(INTEGRATION_MANAGEMENT_ROUTE); } diff --git a/clients/admin-ui/src/pages/integrations/index.tsx b/clients/admin-ui/src/pages/integrations/index.tsx index e68cb277986..6200badf5cc 100644 --- a/clients/admin-ui/src/pages/integrations/index.tsx +++ b/clients/admin-ui/src/pages/integrations/index.tsx @@ -78,7 +78,7 @@ const IntegrationListView: NextPage = () => { const router = useRouter(); const { - flags: { newIntegrationManagement }, + flags: { entraMonitor, newIntegrationManagement }, } = useFlags(); const handleSearchChange = (value: string) => { @@ -105,17 +105,20 @@ const IntegrationListView: NextPage = () => { [connectionTypesData], ); - // Filter connection types based on the new integration management flag + // Filter connection types based on feature flags const connectionTypesToQuery = useMemo(() => { - if (newIntegrationManagement) { - // Show all integrations (including SaaS) when the flag is enabled - return SUPPORTED_INTEGRATIONS; + let types = SUPPORTED_INTEGRATIONS; + + if (!entraMonitor) { + types = types.filter((type) => type !== ConnectionType.ENTRA); } - // Hide SaaS integrations when the flag is disabled - return SUPPORTED_INTEGRATIONS.filter( - (type) => type !== ConnectionType.SAAS, - ); - }, [newIntegrationManagement]); + + if (!newIntegrationManagement) { + types = types.filter((type) => type !== ConnectionType.SAAS); + } + + return types; + }, [entraMonitor, newIntegrationManagement]); const { data, isLoading, error } = useGetAllDatastoreConnectionsQuery({ connection_type: connectionTypesToQuery, From e88c2380279040ea39463047c4b71769f60b1a00 Mon Sep 17 00:00:00 2001 From: Daniel Sill Date: Tue, 24 Mar 2026 11:53:37 -0400 Subject: [PATCH 2/3] Fix import sort order in MonitorList.tsx Co-Authored-By: Claude Opus 4.6 (1M context) --- .../data-discovery-and-detection/action-center/MonitorList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clients/admin-ui/src/features/data-discovery-and-detection/action-center/MonitorList.tsx b/clients/admin-ui/src/features/data-discovery-and-detection/action-center/MonitorList.tsx index 86d116c6ba5..f519c1aa1c4 100644 --- a/clients/admin-ui/src/features/data-discovery-and-detection/action-center/MonitorList.tsx +++ b/clients/admin-ui/src/features/data-discovery-and-detection/action-center/MonitorList.tsx @@ -11,7 +11,6 @@ import { useEffect } from "react"; import { useAppSelector } from "~/app/hooks"; import { selectUser } from "~/features/auth"; import { useFeatures } from "~/features/common/features"; -import { ConnectionType } from "~/types/api"; import { ACTION_CENTER_ROUTE } from "~/features/common/nav/routes"; import { useAntPagination } from "~/features/common/pagination/useAntPagination"; import { useGetAggregateMonitorResultsQuery } from "~/features/data-discovery-and-detection/action-center/action-center.slice"; @@ -20,6 +19,7 @@ import useSearchForm from "~/features/data-discovery-and-detection/action-center import { MonitorResult } from "~/features/data-discovery-and-detection/action-center/MonitorResult"; import { MONITOR_TYPES } from "~/features/data-discovery-and-detection/action-center/utils/getMonitorType"; import { useGetUserMonitorsQuery } from "~/features/user-management"; +import { ConnectionType } from "~/types/api"; import MonitorListSearchForm from "./forms/MonitorListSearchForm"; import { From b82512ce59d9e64aa6d7b249d991f3a1f1f0056a Mon Sep 17 00:00:00 2001 From: Daniel Sill Date: Tue, 24 Mar 2026 11:53:48 -0400 Subject: [PATCH 3/3] Add changelog entry for PR #7744 Co-Authored-By: Claude Opus 4.6 (1M context) --- changelog/7744.yaml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog/7744.yaml diff --git a/changelog/7744.yaml b/changelog/7744.yaml new file mode 100644 index 00000000000..a3df4eefe54 --- /dev/null +++ b/changelog/7744.yaml @@ -0,0 +1,3 @@ +type: changed +description: Gate all Entra UI content behind entraMonitor feature flag across integration list, detail page, and action center +pr: 7744