diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/maintenance_window_callout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/maintenance_window_callout.tsx
new file mode 100644
index 000000000000000..32b131042bf8ea9
--- /dev/null
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/maintenance_window_callout.tsx
@@ -0,0 +1,26 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import React from 'react';
+import { EuiCallOut } from '@elastic/eui';
+import { useFetchRunningMaintenanceWindows } from './use_fetch_running_maintenance_windows';
+import * as i18n from './translations';
+
+export const MaintenanceWindowCallout = () => {
+ const { data } = useFetchRunningMaintenanceWindows();
+ const runningMaintenanceWindows = data || [];
+
+ if (runningMaintenanceWindows.length > 0) {
+ return (
+
+ {i18n.MAINTENANCE_WINDOW_RUNNING_DESCRIPTION}
+
+ );
+ }
+
+ return null;
+};
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/translations.ts
new file mode 100644
index 000000000000000..5fa20a56b20e71b
--- /dev/null
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/translations.ts
@@ -0,0 +1,36 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { i18n } from '@kbn/i18n';
+
+export const FETCH_ERROR = i18n.translate(
+ 'xpack.securitySolution.detectionEngine.ruleManagementUi.maintenanceWindowCallout.fetchError',
+ {
+ defaultMessage: 'Failed to check if maintenance window is running',
+ }
+);
+
+export const FETCH_ERROR_DESCRIPTION = i18n.translate(
+ 'xpack.securitySolution.detectionEngine.ruleManagementUi.maintenanceWindowCallout.fetchErrorDescription',
+ {
+ defaultMessage: "Notification actions won't run while the maintenance window is running.",
+ }
+);
+
+export const MAINTENANCE_WINDOW_RUNNING = i18n.translate(
+ 'xpack.securitySolution.detectionEngine.ruleManagementUi.maintenanceWindowCallout.maintenanceWindowRunning',
+ {
+ defaultMessage: 'A maintenance window is currently running.',
+ }
+);
+
+export const MAINTENANCE_WINDOW_RUNNING_DESCRIPTION = i18n.translate(
+ 'xpack.securitySolution.detectionEngine.ruleManagementUi.maintenanceWindowCallout.maintenanceWindowRunningDescription',
+ {
+ defaultMessage: "Notification actions won't run while the maintenance window is running",
+ }
+);
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/use_fetch_running_maintenance_windows.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/use_fetch_running_maintenance_windows.ts
new file mode 100644
index 000000000000000..9bc984369ee5d42
--- /dev/null
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/maintenance_window_callout/use_fetch_running_maintenance_windows.ts
@@ -0,0 +1,39 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+import { useQuery } from '@tanstack/react-query';
+import type { MaintenanceWindow } from '@kbn/alerting-plugin/common/maintenance_window';
+import { INTERNAL_BASE_ALERTING_API_PATH } from '@kbn/alerting-plugin/common';
+import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
+import { KibanaServices } from '../../../../common/lib/kibana';
+import * as i18n from './translations';
+
+const GET_RUNNING_MAINTENANCE_WINDOWS_URL = `${INTERNAL_BASE_ALERTING_API_PATH}/rules/maintenance_window/_active`;
+
+export const fetchRunningMaintenanceWindows = async (
+ signal?: AbortSignal
+): Promise => {
+ return KibanaServices.get().http.fetch(GET_RUNNING_MAINTENANCE_WINDOWS_URL, {
+ method: 'GET',
+ signal,
+ });
+};
+
+export const useFetchRunningMaintenanceWindows = () => {
+ const { addError } = useAppToasts();
+
+ return useQuery(
+ ['GET', GET_RUNNING_MAINTENANCE_WINDOWS_URL],
+ ({ signal }) => fetchRunningMaintenanceWindows(signal),
+ {
+ refetchInterval: 60000,
+ onError: (error) => {
+ addError(error, { title: i18n.FETCH_ERROR, toastMessage: i18n.FETCH_ERROR_DESCRIPTION });
+ },
+ }
+ );
+};
diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/rule_management/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/rule_management/index.tsx
index 95e0857874423b6..03231f2030eb2b9 100644
--- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/rule_management/index.tsx
+++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/pages/rule_management/index.tsx
@@ -42,6 +42,8 @@ import { RulesTableContextProvider } from '../../components/rules_table/rules_ta
import * as i18n from '../../../../detections/pages/detection_engine/rules/translations';
import { useInvalidateFetchRuleManagementFiltersQuery } from '../../../rule_management/api/hooks/use_fetch_rule_management_filters_query';
+import { MaintenanceWindowCallout } from '../../components/maintenance_window_callout/maintenance_window_callout';
+
const RulesPageComponent: React.FC = () => {
const [isImportModalVisible, showImportModal, hideImportModal] = useBoolState();
const [isValueListFlyoutVisible, showValueListFlyout, hideValueListFlyout] = useBoolState();
@@ -158,6 +160,7 @@ const RulesPageComponent: React.FC = () => {
prePackagedTimelineStatus === 'timelineNeedUpdate') && (
)}
+