Skip to content

[pull] dev from KelvinTegelaar:dev#1

Open
pull[bot] wants to merge 8580 commits intojohn-murrayMA:devfrom
KelvinTegelaar:dev
Open

[pull] dev from KelvinTegelaar:dev#1
pull[bot] wants to merge 8580 commits intojohn-murrayMA:devfrom
KelvinTegelaar:dev

Conversation

@pull
Copy link

@pull pull bot commented Jul 23, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.3)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot locked and limited conversation to collaborators Jul 23, 2025
@pull pull bot added the ⤵️ pull label Jul 23, 2025
JohnDuprey and others added 28 commits March 7, 2026 14:45
Fix: AddDKIM standard failing if only 1 domain needs DKIM
feat: Add vacation mode feature with mailbox scheduling and calendar permissions
chore: Refactor logging to standardize header usage
No extra graph calls needed, not tested with a large tenant, (about 200 mailbox permissions works fine)
Feat: GrantSendOnBehalfTo Permissions Cache
Feat: Incident Report and Attachment options
…ns alert

Extends Get-CIPPAlertMFAAdmins with a second check for admins who have MFA registered but no enforcement gate (per-user, Security Defaults, or CA policy). Both checks now share a single MFA report snapshot to avoid mixed-staleness alerts. Adds IncludeDisabled input to optionally surface disabled admin accounts.
feat: Add MFA enforcement checks and IncludeDisabled option to MFAAdmins alert
Fix: fix null checks by moving casting to array to AddRange
…book

fixed API name in Set-CIPPDefaultAPDeploymentProfile function
Zacgoose and others added 30 commits March 24, 2026 17:06
Introduce an opt-in, versioned webhook schema and plumbing to emit it. Adds New-CIPPStandardizedWebhookSchema to normalize legacy payloads. Send-CIPPAlert gains SchemaSource, InvokingCommand and UseStandardizedSchema handling, builds/serializes standardized payloads and adapts Teams/Discord/Slack sends accordingly; also hardens extension config parsing. Notification config endpoints (Invoke-ExecNotificationConfig, Set-CIPPNotificationConfig, Invoke-ListNotificationConfig) now expose/handle UseStandardizedSchema. Callers (scheduler notifications, scheduled task alerts, webhook processing, offboarding) are updated to send titles, schema source, invoking command and the standardized flag where appropriate.
Use OMA-URI decryption to compare existing policy
Fix issue with detecting if policy is deployed
- Added `detectionScript` parameter to `Add-CIPPW32ScriptApplication` function, allowing for PowerShell detection scripts that take priority over file detection.
- Updated detection rules to prioritize detection scripts, followed by file detection and marker file fallback.
- Modified `Push-UploadApplication` to include `detectionScript` in application properties.
- Updated `Invoke-AddWin32ScriptApp` to handle `detectionScript` when creating Win32 applications.
- Refactored `Invoke-CIPPStandardDeployCheckChromeExtension` to implement Win32 script app deployment for Chrome and Edge extensions, replacing legacy OMA-URI policies.
- Introduced install, uninstall, and detection scripts for managing Chrome and Edge extension settings via registry keys.
- Enhanced logging and alerting mechanisms for deployment status and errors.
Introduce new Out of Office (OOO) calendar options, including the
ability to block calendar events, decline invitations, and cancel
meetings. Enhance the Set-MailboxAutoReplyConfiguration command with
parameters for managing OOO events, ensuring backward compatibility for
existing functionality.

Frontend PR: KelvinTegelaar/CIPP#5623
Expand mailbox properties cached by Set-CIPPDBCacheMailboxes to include litigation hold, retention, and compliance-related attributes. The Get-Mailbox select list and Select-Object output were updated to include PersistedCapabilities, LitigationHoldEnabled/Date/Duration, a computed LicensedForLitigationHold (from PersistedCapabilities), ComplianceTagHoldApplied, RetentionHoldEnabled, InPlaceHolds, and RetentionPolicy

Fixes issues where you were no longer able to set these actions due to missing values:
Enable Auto-Expanding Archive
Set Litigation Hold
Enable Online Archive
Propagate TenantFilter from HTTP entrypoint into test alerts and include it when sending alerts. Add webhook authentication support (bearer, basic, apikey, custom headers) in Send-CIPPAlert, including secret retrieval from Key Vault or a DevSecrets table and parsing custom header JSON. Refactor webhook request building to use a unified RestMethod/RequestHeaders hashtable and include CFZTNA headers into RequestHeaders. Extend Set-CIPPNotificationConfig to accept webhook auth fields, persist secrets to Key Vault/DevSecrets and mark stored secrets as 'SentToKeyVault'. Update Invoke-ListNotificationConfig to exclude the new webhook auth fields from logsToInclude.
Introduce three new PowerShell functions to support removing extension
API keys and Key Vault secrets:

- Invoke-ExecExtensionClearHIBPKey: HTTP entrypoint that clears the HIBP
API key by calling Remove-ExtensionAPIKey and returns an HTTP response.
- Remove-CippKeyVaultSecret: Lightweight REST-based Key Vault secret
deletion (no Az.KeyVault dependency). Derives vault name from
WEBSITE_DEPLOYMENT_ID when not provided, obtains an AAD token via
Get-CIPPAzIdentityToken, calls the Vault REST API, and returns deletion
metadata; handles 404 not found and reports errors.
- Remove-ExtensionAPIKey: Removes extension API keys from a DevSecrets
table when running with local Azurite/dev storage, or deletes the secret
from Key Vault in production; clears the corresponding env variable and
logs outcomes.

Adds error handling, informative logging, and safe behavior for local
development vs production Key Vault usage.

UI: KelvinTegelaar/CIPP#5703
Expand mailbox properties cached by Set-CIPPDBCacheMailboxes to include
litigation hold, retention, and compliance-related attributes. The
Get-Mailbox select list and Select-Object output were updated to include
PersistedCapabilities, LitigationHoldEnabled/Date/Duration, a computed
LicensedForLitigationHold (from PersistedCapabilities),
ComplianceTagHoldApplied, RetentionHoldEnabled, InPlaceHolds, and
RetentionPolicy

Fixes issues where you were no longer able to set these actions due to
missing values: Enable Auto-Expanding Archive
Set Litigation Hold
Enable Online Archive
- Resolves KelvinTegelaar/CIPP#5678
- Sanitize `mailNickname` for security group creation
- Add input validation for `username` and `groupType` in group template
creation
…ods (#1957)

This pull request introduces significant enhancements to the alerting
and notification system, focusing on improved webhook support,
standardized payload schemas, and expanded configuration options for
webhook authentication. The changes aim to make webhook integrations
more flexible, secure, and easier to consume for downstream systems.

**Key improvements include:**
- Introduction of a standardized webhook payload schema for consistent
alert delivery.
- Expanded support for various webhook authentication methods, including
secrets retrieval from Azure Key Vault.
- Additional configuration options for notification settings, including
schema usage and custom headers.
- Updates to alert-sending logic to leverage new schema and
authentication features.

### Standardized Webhook Schema Support
* Added the `New-CIPPStandardizedWebhookSchema` function to generate a
stable, versioned JSON schema for webhook alerts, ensuring consistent
payloads for consumers.
* Updated `Send-CIPPAlert` to support a `-UseStandardizedSchema` switch,
generating and sending standardized payloads for webhooks when enabled.
[[1]](diffhunk://#diff-bc6e0d2ff2ecb8a1c2e819169a3d3b7663f3e49f6616171e8311c22aa34bf442R13-R18)
[[2]](diffhunk://#diff-bc6e0d2ff2ecb8a1c2e819169a3d3b7663f3e49f6616171e8311c22aa34bf442R107-R269)

### Webhook Authentication Enhancements
* Extended notification configuration to support multiple webhook
authentication types (Bearer, Basic, API Key, custom headers), with
support for retrieving secrets from Azure Key Vault or development
storage.
[[1]](diffhunk://#diff-0d2db73f927d93615add2647cdb47bc8695f6092c2275c24787682a08cf44e98R14-R24)
[[2]](diffhunk://#diff-bc6e0d2ff2ecb8a1c2e819169a3d3b7663f3e49f6616171e8311c22aa34bf442R107-R269)
* Modified `Send-CIPPAlert` to dynamically build request headers based
on the configured authentication method, including error handling for
malformed custom headers.

### Notification Configuration and Delivery Updates
* Added new configuration fields (`UseStandardizedSchema`, webhook auth
fields) to notification config objects and ensured they are handled in
config listing and setting functions.
[[1]](diffhunk://#diff-0d2db73f927d93615add2647cdb47bc8695f6092c2275c24787682a08cf44e98R14-R24)
[[2]](diffhunk://#diff-5935bf8134715b7da8a6a01b1d732fa97a02f2b90865ce30d1cd73aefafcd3ceL19-R19)
* Updated alert-sending logic in various entrypoints to pass new
parameters (e.g., `TenantFilter`, `Title`, `SchemaSource`,
`InvokingCommand`, `UseStandardizedSchema`) to `Send-CIPPAlert`.
[[1]](diffhunk://#diff-1bfade26dc62263ceeb71b029d7b9bdced397b24046eb5b6ad5557b7a8bf982dL110-R110)
[[2]](diffhunk://#diff-c2f9cd031938c1979288bc280c20aa02b3a28573f2d9d7b01621b79b1ba5a26fL112-R113)
[[3]](diffhunk://#diff-c2f9cd031938c1979288bc280c20aa02b3a28573f2d9d7b01621b79b1ba5a26fL121-R123)
[[4]](diffhunk://#diff-e483db11e7556354f2f1266e4e13d3d5606539b589b5eb8719b077db21810ec2L11-R22)
[[5]](diffhunk://#diff-e483db11e7556354f2f1266e4e13d3d5606539b589b5eb8719b077db21810ec2R35)
[[6]](diffhunk://#diff-e483db11e7556354f2f1266e4e13d3d5606539b589b5eb8719b077db21810ec2R44)

### Webhook Platform Compatibility
* Enhanced webhook delivery logic in `Send-CIPPAlert` to send either
standardized or legacy payloads, with platform-specific formatting for
Teams, Discord, and Slack webhooks.
[[1]](diffhunk://#diff-bc6e0d2ff2ecb8a1c2e819169a3d3b7663f3e49f6616171e8311c22aa34bf442R107-R269)
[[2]](diffhunk://#diff-bc6e0d2ff2ecb8a1c2e819169a3d3b7663f3e49f6616171e8311c22aa34bf442L142-R283)

These changes collectively improve the robustness, interoperability, and
security of the alerting system, making it easier to integrate with a
wide range of webhook consumers and authentication scenarios.Introduce
an opt-in, versioned webhook schema and plumbing to emit it. Adds
New-CIPPStandardizedWebhookSchema to normalize legacy payloads.
Send-CIPPAlert gains SchemaSource, InvokingCommand and
UseStandardizedSchema handling, builds/serializes standardized payloads
and adapts Teams/Discord/Slack sends accordingly; also hardens extension
config parsing. Notification config endpoints
(Invoke-ExecNotificationConfig, Set-CIPPNotificationConfig,
Invoke-ListNotificationConfig) now expose/handle UseStandardizedSchema.
Callers (scheduler notifications, scheduled task alerts, webhook
processing, offboarding) are updated to send titles, schema source,
invoking command and the standardized flag where appropriate.

Resolves: KelvinTegelaar/CIPP#3884
UI: KelvinTegelaar/CIPP#5705
…me (#1955)

This change hardens CIPP API client setup against transient Entra/Graph
replication timing issues. During app registration creation, Graph can
briefly fail service principal creation with “resource does not exist or
queried reference-property objects are not present” even though the app
was just created.
Signed-off-by: KelvinTegelaar <49186168+KelvinTegelaar@users.noreply.github.com>
…ble licenses (#1941)

- Implements KelvinTegelaar/CIPP#5595
- Fetch group memberships via Graph API when creating a template with
`sourceUserId` and store them in the template
- Filter out licenses with no available units before assignment, log
skipped licenses
- Implement Set-CIPPDefenderASRPolicy to manage Attack Surface Reduction settings.
- Implement Set-CIPPDefenderAVPolicy for configuring Antivirus policy settings.
- Implement Set-CIPPDefenderCompliancePolicy to manage compliance settings for devices.
- Implement Set-CIPPDefenderEDRPolicy for configuring Endpoint Detection and Response settings.
- Implement Set-CIPPDefenderExclusionPolicy to manage exclusions for Antivirus.
if batches are provided, store in table with unique guid partition key and replace .Batch property with .QueueFunction to retrieve from batch
Add an InvokingCommand = 'Invoke-ExecAddAlert' property to the webhook CIPPAlert so downstream consumers can identify the originating command. Also normalize alignment/spacing of hashtable keys for consistency in the Invoke-ExecAddAlert.ps1 entrypoint; no other functional changes were made.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.