Skip to content

[pull] dev from KelvinTegelaar:dev - #105

Open
pull[bot] wants to merge 1146 commits into
isgq-github01:devfrom
KelvinTegelaar:dev
Open

pull[bot] wants to merge 1146 commits into
isgq-github01:devfrom
KelvinTegelaar:dev

Conversation

@pull

@pull pull Bot commented Jun 16, 2026

Copy link
Copy Markdown

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 : )

@pull pull Bot locked and limited conversation to collaborators Jun 16, 2026
@pull pull Bot added the ⤵️ pull label Jun 16, 2026
When a role rule grants X.ReadWrite, it now also matches X.Read endpoints in the permission universe. Previously, objects that only declare a .Read endpoint (e.g. Endpoint.Device) would silently lose access when the role was configured with the .ReadWrite variant.

Synced from CyberDrain/CIPP@47644a1
When Graph or Exchange reads failed, the GroupTemplate standard treated the empty result as 'tenant has no groups' and recreated every templated group on each run. Entra permits duplicate displayNames, so each failed read silently produced twins (2→4→6…).

Adds try/catch guards around both the Graph groups read and the Exchange dynamic distribution group read, logging an error and returning early on failure rather than proceeding with an empty baseline.

Also adds Pester tests covering the happy path (existing group not recreated, genuinely empty tenant creates group) and the failure paths (Graph failure, Exchange failure, report mode).

Synced from CyberDrain/CIPP@0e93789
Replace the legacy name-list policy lookup with a two-pass resolution: prefer an exact name match, then fall back to the built-in default policy (via IsDefault flag or 'Default' name) when the configured name is one of the known portal/cmdlet aliases. Also detect the built-in policy via IsDefault rather than relying solely on the 'Default' name string.

Synced from CyberDrain/CIPP@325b40a
…ink-to-SharePoint-Portal

feat: Add SharePoint Portal link to Hudu Magic Dash

Synced from CyberDrain/CIPP@bcb443a
…dash-to-purview-portal

fix: Update Compliance Portal URL to Purview link

Synced from CyberDrain/CIPP@9cba749
- Improved `Invoke-EditGroup` function to better handle owner additions and removals with enhanced identity resolution.
- Updated `CippApiDialog` to integrate CSV field handling and nested value resolution.
- Introduced `CippDataTableButton` and `CippTableCardButton` components for improved action handling in data tables.
- Added sub-table functionality in `CippDataTable` for displaying members and owners with dynamic API integration.
- Refactored `CIPPTableToptoolbar` to support parent row attachment for bulk actions.

These changes enhance the usability and functionality of group management and data display within the CIPP module.

Synced from CyberDrain/CIPP@791c697
fix(standards): clarify UserSubmissions drift rule state

Synced from CyberDrain/CIPP@2ad9c1f
Feat: Quarantine overhaul with enhanced message details and actions

Synced from CyberDrain/CIPP@23ff8d1
…-team-site

feat: add M365 group-connected team SharePoint site option

Synced from CyberDrain/CIPP@66d0971
…etection

fix(orca): correct domain policy evaluation and align checks with upstream ORCA

Synced from CyberDrain/CIPP@4530a44
feat(jit-admin): add vacation mode to JIT admin and templates

Synced from CyberDrain/CIPP@50576ef
Add a new `SharePointUsageReport` cache type and include it in the cache collection pipeline. The new cache job reads SharePoint `StorageQuotas`, aggregates usage across geo locations, and stores tenant-level quota data.

Synced from CyberDrain/CIPP@218851b
ListSharepointQuota now serves cached SharePoint usage data by default and only calls the live admin endpoint when `live=true` is requested. This also updates the OpenAPI spec to document the new query parameter, the shaped response fields, and the endpoint's 500 error response.

Synced from CyberDrain/CIPP@449aaec
Feat: Add backup and restore functionality for Teams phone number assignments

Synced from CyberDrain/CIPP@52ea023
Feat: Add Clear on-premises attributes for cloud-only users action/helper

Synced from CyberDrain/CIPP@83d86c7
…on policy

Enhanced the helpText and docsDescription for the PlannerBlockTaskDelete standard to clarify that only enabled members with the Microsoft Planner service plan are affected. Adjusted the label for group inclusion to specify that it applies to all Planner-licensed enabled members. Updated the script to ensure disabled accounts are excluded from the policy application.

Synced from CyberDrain/CIPP@7667491
…p duplicate-key crash on re-analysed onmicrosoft.com domains

Synced from CyberDrain/CIPP@f6539a3
…s rejected on deploy

Microsoft tightened Intune DCV2 (settings catalog / configurationPolicies)
and device-compliance model validation to reject null values on required
properties that older template captures left null. CIPP re-sends the stored
template verbatim, so the write now fails with an opaque Graph error
("value cannot be null" / "A null value was found for the property named
'bitLockerEnabled' ... does not allow null") on a value the operator cannot
see in the UI, and patching only the live policy does not help because the
template still carries the null on the next run.

Detect that specific rejection in the single Set-CIPPIntunePolicy write choke
point (covering both the deploy drawer and standards/drift remediation), name
the offending property, and tell the operator to edit or re-capture the
template. No replacement value is guessed - several of these properties are
security-relevant (e.g. bitLockerEnabled), so a wrong default would be unsafe.
Unrelated failures keep the existing generic error path unchanged.

Synced from CyberDrain/CIPP@be86d60
…parison

The Intune Template standard resolved %variables% in the payload it deploys,
but passed the template's Displayname and Description columns through raw. For
column-named policy types (Device / OMA custom config and deviceCompliancePolicies)
Set-CIPPIntunePolicy both searches for the existing policy by that name and forces
it onto the policy it creates, so the tenant's real policy carries the resolved
name (e.g. CONTOSO-WIN-COMP) while the standard looked it up under the raw token
(%shortname%-WIN-COMP). The lookup never matched, so every remediate run treated
the policy as missing and POSTed a fresh duplicate.

Resolve the Displayname and Description columns through Get-CIPPTextReplacement
once, right after the payload is resolved, and use the resolved values for the
existence lookup, the compare identity (Merge-CIPPIntuneTemplateIdentity) and the
deployment. The lookup name and the created name now agree, so a second run finds
the policy it created and edits it in place instead of duplicating it. Names with
no variable are unchanged (replacement is a no-op), and Settings Catalog / Windows
update profiles are untouched - they were already named from the resolved payload.

The same raw-column bug applied to the baseline deployer, so resolve its
Displayname and Description columns too.

Synced from CyberDrain/CIPP@dc1bcf3
Fix: Return result message from force refresh on tenants page

Synced from CyberDrain/CIPP@3f54a1b
Picks up the new query parameters added across Tier A: ListTests
summaryOnly (boolean), ListDBCache select/top/latestOnly/groupBy/dateField
and the now-optional type, ListLogs Search/summaryOnly/countsOnly, and
ListTenants Search.

Synced from CyberDrain/CIPP@9238580
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.

1 participant