Repository navigation
Group processing per source type (ProcessGroupsAD/ProcessGroupsGoogle); one deactivate-strip gate that honors WhatIf — release 26.10.9.0 - #15
Merged
Conversation
…); one deactivate-strip gate that honors WhatIf New per-record [bool] flags on New-IDBridgeSourceRecord (default $true). A record with ProcessGroups<Dir> = $false is left alone by that directory's group processing: no adds, no removes, no deactivate strip. The flags only narrow enableGroupProcessing. Staff, Skyward and Infinite Campus templates expose them (staff-wide / per grade) and bump their TemplateVersion. Tests cover the diff skip, override-sheet strings, and factory defaults. The deactivate group strip now requires enableGroupProcessing + enableGroupProcessingTrash on and enableGroupProcessingWhatIf off in both directories (AD ignored the master switch, and neither honored WhatIf), and skips opted-out users. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Group processing could only be switched on or off per directory (
AD/Google.enableGroupProcessing), so a district couldn't, for example, manage student groups while leaving staff groups alone.ProcessGroupsAD/ProcessGroupsGoogleonNew-IDBridgeSourceRecord, default$true. When a record's flag is$false, that directory's group processing leaves the person alone entirely: no adds, no removes, and no deactivate strip. It's a user-level skip rather than an emptyGroupsProposed, which with Remove on would strip every group. The flags only narrowenableGroupProcessing; they can never turn it on.Get-ADUserGroupsToUpdate/Get-GoogleUserGroupsToUpdatelog the skipped count at Trace, and the groups-not-processed trace ignores opted-out users.$ADProcessGroups/$GoogleProcessGroups. Skyward (TemplateVersion 3) and Infinite Campus (TemplateVersion 2): per grade viaAD/Google.ProcessGroupsinGradeDefaultSettings/GradeOverrides, read as-ne $falseso a settings block without the key stays opted in. Installed plugins need no change.enableGroupProcessingTrashwas on, even withAD.enableGroupProcessing = $false. Google also required the master switch. Neither checkedenableGroupProcessingWhatIf, so with Trash on, deactivations stripped groups for real in WhatIf mode, contradicting the documented "no group writes happen". Both directories now strip only whenenableGroupProcessingandenableGroupProcessingTrashare on, WhatIf is off, and the user hasn't opted out. Behavior change: Trash on with WhatIf on (either directory), or with AD group processing off, no longer strips on deactivate.Verification
main): 252 passed, 0 failed. After: 259 passed, 0 failed (7 new cases). Against the old code, the 6 behavior cases fail and the 2 regression guards (record without the property; AD-only opt-out still processed in Google) pass.Test-ModuleManifestpasses at 26.10.9.0.Invoke-IDBridge's execute phase, which the decide-phase suite doesn't cover. Its actual expressions were lifted from the file through the PowerShell parser and checked against all 8 Enable/Trash/WhatIf combinations × 4 flag values ($null,$true,$false,'FALSE') for both directories.Not included
The shipped
Invoke-PluginStaffOverrideonly accepts a fixed list of overrideTypes, so the override sheet can't set these flags yet.Merge-IDBridgeOverrideDataalready handles them, including a sheet's'FALSE'string.After merge
Tag the merge commit
v26.10.9.0(or dispatch the Publish workflow), which publishes to the Gallery and creates the GitHub Release.🤖 Generated with Claude Code