+
{/* Loading alert */}
{!errorsOnly && (
diff --git a/src/components/CippComponents/CippApplicationDeployDrawer.jsx b/src/components/CippComponents/CippApplicationDeployDrawer.jsx
index 410be49561c0..7d6d2366301f 100644
--- a/src/components/CippComponents/CippApplicationDeployDrawer.jsx
+++ b/src/components/CippComponents/CippApplicationDeployDrawer.jsx
@@ -869,22 +869,55 @@ export const CippApplicationDeployDrawer = ({
rows={6}
/>
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
multiline
rows={4}
/>
+
+ {!areDateFieldsDisabled && (
+ <>
+
+ Calendar Options
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )}
>
);
};
diff --git a/src/components/CippFormPages/CippExchangeSettingsForm.jsx b/src/components/CippFormPages/CippExchangeSettingsForm.jsx
index ee8bfc143074..ee44517b8c51 100644
--- a/src/components/CippFormPages/CippExchangeSettingsForm.jsx
+++ b/src/components/CippFormPages/CippExchangeSettingsForm.jsx
@@ -14,6 +14,7 @@ import {
} from "@mui/material";
import { Check, Error, Sync } from "@mui/icons-material";
import CippFormComponent from "../CippComponents/CippFormComponent";
+import { CippFormCondition } from "../CippComponents/CippFormCondition";
import { ApiGetCall, ApiPostCall } from "../../api/ApiCall";
import { useSettings } from "../../hooks/use-settings";
import { Grid } from "@mui/system";
@@ -81,6 +82,11 @@ const CippExchangeSettingsForm = (props) => {
"ExternalMessage",
"StartTime",
"EndTime",
+ "CreateOOFEvent",
+ "OOFEventSubject",
+ "AutoDeclineFutureRequestsWhenOOF",
+ "DeclineEventsForScheduledOOF",
+ "DeclineMeetingMessage",
];
// Reset the form
@@ -266,6 +272,72 @@ const CippExchangeSettingsForm = (props) => {
rows={4}
/>
+ {!areDateFieldsDisabled && (
+ <>
+
+
+
+ Calendar Options
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )}
diff --git a/src/components/CippWizard/CippWizardVacationActions.jsx b/src/components/CippWizard/CippWizardVacationActions.jsx
index c7376a1528da..1d8ac1611af7 100644
--- a/src/components/CippWizard/CippWizardVacationActions.jsx
+++ b/src/components/CippWizard/CippWizardVacationActions.jsx
@@ -42,6 +42,22 @@ export const CippWizardVacationActions = (props) => {
if (!currentExternal) {
formControl.setValue("oooExternalMessage", oooData.data.ExternalMessage || "");
}
+ // Pre-populate calendar options from existing config
+ if (oooData.data.CreateOOFEvent != null) {
+ formControl.setValue("oooCreateOOFEvent", !!oooData.data.CreateOOFEvent);
+ }
+ if (oooData.data.OOFEventSubject) {
+ formControl.setValue("oooOOFEventSubject", oooData.data.OOFEventSubject);
+ }
+ if (oooData.data.AutoDeclineFutureRequestsWhenOOF != null) {
+ formControl.setValue("oooAutoDeclineFutureRequests", !!oooData.data.AutoDeclineFutureRequestsWhenOOF);
+ }
+ if (oooData.data.DeclineEventsForScheduledOOF != null) {
+ formControl.setValue("oooDeclineEvents", !!oooData.data.DeclineEventsForScheduledOOF);
+ }
+ if (oooData.data.DeclineMeetingMessage) {
+ formControl.setValue("oooDeclineMeetingMessage", oooData.data.DeclineMeetingMessage);
+ }
}
}, [oooData.isSuccess, oooData.data]);
@@ -359,6 +375,70 @@ export const CippWizardVacationActions = (props) => {
/>
)}
+
+ {/* Calendar Options */}
+
+
+
+ Calendar Options
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/CippWizard/CippWizardVacationConfirmation.jsx b/src/components/CippWizard/CippWizardVacationConfirmation.jsx
index da86c414feb0..70a55423a6fb 100644
--- a/src/components/CippWizard/CippWizardVacationConfirmation.jsx
+++ b/src/components/CippWizard/CippWizardVacationConfirmation.jsx
@@ -58,18 +58,31 @@ export const CippWizardVacationConfirmation = (props) => {
}
if (values.enableOOO) {
+ const oooData = {
+ tenantFilter,
+ Users: values.Users,
+ internalMessage: values.oooInternalMessage,
+ externalMessage: values.oooExternalMessage,
+ startDate: values.startDate,
+ endDate: values.endDate,
+ reference: values.reference || null,
+ postExecution: values.postExecution || [],
+ };
+ // Calendar options — only include when truthy
+ if (values.oooCreateOOFEvent) {
+ oooData.CreateOOFEvent = true;
+ if (values.oooOOFEventSubject) oooData.OOFEventSubject = values.oooOOFEventSubject;
+ }
+ if (values.oooAutoDeclineFutureRequests) {
+ oooData.AutoDeclineFutureRequestsWhenOOF = true;
+ }
+ if (values.oooDeclineEvents) {
+ oooData.DeclineEventsForScheduledOOF = true;
+ if (values.oooDeclineMeetingMessage) oooData.DeclineMeetingMessage = values.oooDeclineMeetingMessage;
+ }
oooVacation.mutate({
url: "/api/ExecScheduleOOOVacation",
- data: {
- tenantFilter,
- Users: values.Users,
- internalMessage: values.oooInternalMessage,
- externalMessage: values.oooExternalMessage,
- startDate: values.startDate,
- endDate: values.endDate,
- reference: values.reference || null,
- postExecution: values.postExecution || [],
- },
+ data: oooData,
});
}
};
@@ -244,6 +257,24 @@ export const CippWizardVacationConfirmation = (props) => {
)}
+ {(values.oooCreateOOFEvent || values.oooAutoDeclineFutureRequests || values.oooDeclineEvents) && (
+
+
+ Calendar Options
+
+
+ {values.oooCreateOOFEvent && (
+
+ )}
+ {values.oooAutoDeclineFutureRequests && (
+
+ )}
+ {values.oooDeclineEvents && (
+
+ )}
+
+
+ )}
diff --git a/src/data/standards.json b/src/data/standards.json
index fe08f2fcbb45..d68360bd98d3 100644
--- a/src/data/standards.json
+++ b/src/data/standards.json
@@ -5847,15 +5847,21 @@
"name": "standards.DeployCheckChromeExtension",
"cat": "Intune Standards",
"tag": [],
- "helpText": "Deploys the Check Chrome extension via Intune OMA-URI custom policies for both Chrome and Edge browsers with configurable settings. Chrome ID: benimdeioplgkhanklclahllklceahbe, Edge ID: knepjpocdagponkonnbggpcnhnaikajg",
- "docsDescription": "Creates Intune OMA-URI custom policies that automatically install and configure the Check Chrome extension on managed devices for both Google Chrome and Microsoft Edge browsers. This ensures the extension is deployed consistently across all corporate devices with customizable settings.",
- "executiveText": "Automatically deploys the Check browser extension across all company devices with configurable security and branding settings, ensuring consistent security monitoring and compliance capabilities. This extension provides enhanced security features and monitoring tools that help protect against threats while maintaining user productivity.",
+ "helpText": "Deploys the Check by CyberDrain browser extension via a Win32 script app in Intune for both Chrome and Edge browsers with configurable settings. Chrome ID: benimdeioplgkhanklclahllklceahbe, Edge ID: knepjpocdagponkonnbggpcnhnaikajg",
+ "docsDescription": "Creates an Intune Win32 script application that writes registry keys to install and configure the Check by CyberDrain browser extension on managed devices for both Google Chrome and Microsoft Edge browsers. Uses a PowerShell detection script to enforce configuration drift — when settings change in CIPP the app is automatically redeployed.",
+ "executiveText": "Automatically deploys the Check by CyberDrain browser extension across all company devices with configurable security and branding settings, ensuring consistent security monitoring and compliance capabilities. This extension provides enhanced security features and monitoring tools that help protect against threats while maintaining user productivity.",
"addedComponent": [
+ {
+ "type": "switch",
+ "name": "standards.DeployCheckChromeExtension.showNotifications",
+ "label": "Show notifications",
+ "defaultValue": true
+ },
{
"type": "switch",
"name": "standards.DeployCheckChromeExtension.enableValidPageBadge",
"label": "Enable valid page badge",
- "defaultValue": true
+ "defaultValue": false
},
{
"type": "switch",
@@ -5863,6 +5869,12 @@
"label": "Enable page blocking",
"defaultValue": true
},
+ {
+ "type": "switch",
+ "name": "standards.DeployCheckChromeExtension.forceToolbarPin",
+ "label": "Force pin extension to toolbar",
+ "defaultValue": false
+ },
{
"type": "switch",
"name": "standards.DeployCheckChromeExtension.enableCippReporting",
@@ -5874,13 +5886,14 @@
"name": "standards.DeployCheckChromeExtension.customRulesUrl",
"label": "Custom Rules URL",
"placeholder": "https://YOUR-CIPP-SERVER-URL/rules.json",
+ "helperText": "Enter the URL for custom rules if you have them. This should point to a JSON file with the same structure as the rules.json used for CIPP reporting.",
"required": false
},
{
"type": "number",
"name": "standards.DeployCheckChromeExtension.updateInterval",
"label": "Update interval (hours)",
- "defaultValue": 12
+ "defaultValue": 24
},
{
"type": "switch",
@@ -5888,6 +5901,39 @@
"label": "Enable debug logging",
"defaultValue": false
},
+ {
+ "type": "switch",
+ "name": "standards.DeployCheckChromeExtension.enableGenericWebhook",
+ "label": "Enable generic webhook",
+ "defaultValue": false
+ },
+ {
+ "type": "textField",
+ "name": "standards.DeployCheckChromeExtension.webhookUrl",
+ "label": "Webhook URL",
+ "placeholder": "https://webhook.example.com/endpoint",
+ "required": false
+ },
+ {
+ "type": "autoComplete",
+ "multiple": true,
+ "creatable": true,
+ "required": false,
+ "name": "standards.DeployCheckChromeExtension.webhookEvents",
+ "label": "Webhook Events",
+ "placeholder": "e.g. pageBlocked, pageAllowed"
+ },
+ {
+ "type": "autoComplete",
+ "multiple": true,
+ "creatable": true,
+ "required": false,
+ "freeSolo": true,
+ "name": "standards.DeployCheckChromeExtension.urlAllowlist",
+ "label": "URL Allowlist",
+ "placeholder": "e.g. https://example.com/*",
+ "helperText": "Enter URLs to allowlist in the extension. Press enter to add each URL. Wildcards are allowed. This should be used for sites that are being blocked by the extension but are known to be safe."
+ },
{
"type": "textField",
"name": "standards.DeployCheckChromeExtension.companyName",
@@ -5895,6 +5941,13 @@
"placeholder": "YOUR-COMPANY",
"required": false
},
+ {
+ "type": "textField",
+ "name": "standards.DeployCheckChromeExtension.companyURL",
+ "label": "Company URL",
+ "placeholder": "https://yourcompany.com",
+ "required": false
+ },
{
"type": "textField",
"name": "standards.DeployCheckChromeExtension.productName",
@@ -5913,7 +5966,7 @@
"type": "textField",
"name": "standards.DeployCheckChromeExtension.primaryColor",
"label": "Primary Color",
- "placeholder": "#0044CC",
+ "placeholder": "#F77F00",
"required": false
},
{
@@ -5925,7 +5978,7 @@
},
{
"name": "AssignTo",
- "label": "Who should this policy be assigned to?",
+ "label": "Who should this app be assigned to?",
"type": "radio",
"options": [
{
@@ -5957,11 +6010,11 @@
"label": "Enter the custom group name if you selected 'Assign to Custom Group'. Wildcards are allowed."
}
],
- "label": "Deploy Check Chrome Extension",
+ "label": "Deploy Check by CyberDrain Browser Extension",
"impact": "Low Impact",
"impactColour": "info",
"addedDate": "2025-09-18",
- "powershellEquivalent": "New-GraphPostRequest -uri 'https://graph.microsoft.com/beta/deviceManagement/configurationPolicies'",
+ "powershellEquivalent": "Add-CIPPW32ScriptApplication",
"recommendedBy": ["CIPP"]
},
{
diff --git a/src/layouts/config.js b/src/layouts/config.js
index 4f8be5c348c7..bcd5bb786896 100644
--- a/src/layouts/config.js
+++ b/src/layouts/config.js
@@ -347,13 +347,18 @@ export const nativeMenuItems = [
},
{
title: "Reports",
- permissions: ["Tenant.DeviceCompliance.*"],
+ permissions: ["Tenant.DeviceCompliance.*", "Security.Defender.*"],
items: [
{
title: "Device Compliance",
path: "/security/reports/list-device-compliance",
permissions: ["Tenant.DeviceCompliance.*"],
},
+ {
+ title: "MDE Onboarding",
+ path: "/security/reports/mde-onboarding",
+ permissions: ["Security.Defender.*"],
+ },
],
},
{
@@ -903,7 +908,6 @@ export const nativeMenuItems = [
path: "/cipp/scheduler",
roles: ["editor", "admin", "superadmin"],
permissions: ["CIPP.Scheduler.*"],
- scope: "global",
},
],
},
diff --git a/src/pages/cipp/scheduler/index.js b/src/pages/cipp/scheduler/index.js
index 73b2396f5171..446f7ca0593f 100644
--- a/src/pages/cipp/scheduler/index.js
+++ b/src/pages/cipp/scheduler/index.js
@@ -66,7 +66,6 @@ const Page = () => {