Skip to content

[pull] dev from KelvinTegelaar:dev#93

Open
pull[bot] wants to merge 170 commits intoisgq-github01:devfrom
KelvinTegelaar:dev
Open

[pull] dev from KelvinTegelaar:dev#93
pull[bot] wants to merge 170 commits intoisgq-github01:devfrom
KelvinTegelaar:dev

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Mar 20, 2026

See Commits and Changes for more details.


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

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

kris6673 and others added 16 commits November 19, 2025 18:59
on-premises mailboxes standard
…itations, cancel meetings)

Add support for Exchange cloud-only Set-MailboxAutoReplyConfiguration
parameters: CreateOOFEvent, OOFEventSubject, AutoDeclineFutureRequestsWhenOOF,
DeclineEventsForScheduledOOF, DeclineAllEventsForScheduledOOF, and
DeclineMeetingMessage.

These are plumbed through all 3 OOO entry points:
- Set-CIPPOutOfOffice: 6 new [bool]/[string] params with PSBoundParameters guards
- Get-CIPPOutOfOffice: returns new fields + fixes null-safe StartTime/EndTime
- Invoke-ExecSetOoO: extracts calendar params from request body (Scheduled only)
- Set-CIPPVacationOOO: accepts StartTime/EndTime + calendar params; uses
  Scheduled state when dates are provided for Exchange calendar option support
- Invoke-ExecScheduleOOOVacation: converts epoch to datetime for Scheduled mode,
  conditionally attaches calendar params to the Add task

All changes are backwards compatible — callers that omit the new parameters
get identical behavior via $PSBoundParameters.ContainsKey() guards.
[pull] dev from KelvinTegelaar:dev
Refactor license utilization checks to return structured alert data for Entra ID P1 and P2 licenses. This change enhances the clarity of alert messages and includes detailed information such as usage percentage, overage, and thresholds.
The previous implementation batched all MFA method deletions into a single Graph bulk request, which introduced two problems:

1. Duplicate method types (e.g. two phone numbers) could collide within the same batch, causing one of the requests to fail silently.
2. The success/failure check only inspected a single status code from the bulk response. If one method was removed but another failed, the function logged full success — leaving the user's MFA partially intact despite the log stating otherwise.

Switching to a sequential foreach loop eliminates the collision window and tracks successes and failures independently, so partial failures are reported accurately.
- Improved condition handling in Test-DeltaQueryConditions to sanitize inputs and prevent invalid conditions from being processed.
- Added validation for dynamic rules in Invoke-ExecTenantGroup to prevent code injection by restricting allowed operators and properties.
- Implemented error handling and validation for conditions in Invoke-AddAlert, ensuring only safe operators and properties are processed.
- Updated New-CIPPAlertTemplate to include a CustomSubject parameter for more flexible alert titles.
- Refactored Update-CIPPDynamicTenantGroups to utilize a safer evaluation method for dynamic group rules, ensuring only valid conditions are processed.
- Enhanced webhook processing in Invoke-CIPPWebhookProcessing to include custom subjects from webhook rules for better context in alerts.
@pull pull bot locked and limited conversation to collaborators Mar 20, 2026
@pull pull bot added the ⤵️ pull label Mar 20, 2026
TecharyJames and others added 12 commits March 20, 2026 15:02
Added CIPP variable replacement to custom app powershell script block
This reverts commit 121a2cb.
- Introduced a new function to compare Intune policies from two sources.

feat: Add support for community repo sources in policy comparison
Replace bulk deletion of MFA methods with individual requests to improve
error handling and avoid silent failures.

Tested with removing 2 software OTP, 1 TAP, 1 QR and 1 SMS method at the
same time successfully.
- Implements KelvinTegelaar/CIPP#5552
- Add `Invoke-ListMDEOnboarding` endpoint to check MDE connector status
via Graph API
- Add `Set-CIPPDBCacheMDEOnboarding` and `Get-CIPPMDEOnboardingReport`
for ReportDB caching
- Add `MDEOnboarding` to Intune cache collection for automatic updates
Added CIPP variable replacement to custom app powershell script block
JohnDuprey and others added 30 commits March 31, 2026 14:35
)

Respect tenant app management policy password lifetime restrictions (if
configured) when creating CIPP API app credentials, otherwise we get the
error:
`Could not modify App Registrations. Check the CIPP documentation for
API requirements. Error: Failed to setup CIPP-API Access: Credential
lifetime exceeds the max value allowed as per assigned policy <policy
ID>`
Enhance functionality by implementing AllTenants support in various
endpoints, including app and compliance policies, assignment filters,
and Intune scripts.
- Remove unused Autopilot endpoint functions

Frontend PR: KelvinTegelaar/CIPP#5757
Improve logging for license utilization alerts by returning structured
data. Additionally, enhance MX record change logging with structured
output
…dards

lookup table for current transport rule config rather than the standards raw payload
adds explicit displayName existence check during drift eval- the logic count was seen as unchanged and the last detected state was aligned.
Fixes KelvinTegelaar/CIPP#5751
# Summary

Adds explicit displayName existence check during drift eval- the logic
count was seen as unchanged and the last detected state was aligned.
Fixes KelvinTegelaar/CIPP#5751

# Description

The drift optimization in Push-CIPPStandardsList was eagerly updating
the IntunePolicyTypeTracking cache before the standard actually ran, so
if a policy was deleted from Intune, subsequent runs saw "count
unchanged + compliant" and permanently skipped re-evaluation. The fix
adds a policy existence check — when the filter would skip an
IntuneTemplate standard, it now verifies the template's displayName
still exists in the bulk Graph response for that policy type, and if
it's missing (deleted), forces re-evaluation instead of trusting stale
compliance data. Additionally, Remove-CIPPCache now clears the
IntunePolicyTypeTracking table so that "Clear Cache" actually resets
drift optimization

# Testing

As a warning, others were having difficulty reproducing this.

1. Create an Intune configuration policy (e.g. "Test Config Refresh") in
a test tenant
2. In CIPP, create an Intune template from that policy and add it as a
drift standard for the tenant
3. Run drift - confirm it shows aligned
4. Delete "Test Config Refresh" from Intune
5. Run drift again - should now show not aligned (this is the bug fix,
previously it stayed aligned forever)
6. Run drift a third time - confirm it still shows not aligned (verifies
no regression from the tracking cache)
# Summary

`Remove-CIPPCache` now clears the `IntunePolicyTypeTracking` table when
performing a full cache clear. Related to
[KelvinTegelaar/CIPP#5751](KelvinTegelaar/CIPP#5751)

# Description

The "Clear Cache" action only removed tables matching `^cache`, which
didn't include `IntunePolicyTypeTracking`. This meant clearing cache had
no effect on drift optimization state - stale policy counts persisted
and the drift filter continued trusting old compliance data. The fix
adds an explicit removal of the `IntunePolicyTypeTracking` table
alongside the existing cache table cleanup.

# Testing

1. Run drift for a tenant with Intune template standards - confirm
alignment results
2. Go to CIPP > Clear Cache
3. Run drift again - confirm standards are fully re-evaluated (not
skipped by the optimization filter)
4. Check function logs for `Clearing Intune policy tracking data`
message during cache clear
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.

8 participants