Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
7624 commits
Select commit Hold shift + click to select a range
97cc6b2
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Apr 9, 2026
98307db
fix: Remove hidden parameter from Add-CIPPScheduledTask in onboarding…
JohnDuprey Apr 9, 2026
14e913e
Merge pull request #23 from KelvinTegelaar/dev
pull[bot] Apr 9, 2026
c4b5bb6
Add AnyTenant parameter to Invoke-ExecExtensionMapping
Zacgoose Apr 10, 2026
3dfafab
fix editor for custom scripts
KelvinTegelaar Apr 10, 2026
c2d53d1
Merge pull request #24 from KelvinTegelaar/dev
pull[bot] Apr 10, 2026
3d4cee5
Update Get-CIPPAlertUnusedLicenses.ps1
Zacgoose Apr 10, 2026
d6a7b51
Spelling mistakes in alerts
rvdwegen Apr 10, 2026
c00453f
only write alert if there is data to write
Zacgoose Apr 10, 2026
c3f3e25
Wrong alert severity on two alerts
rvdwegen Apr 10, 2026
cb4c25a
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Zacgoose Apr 10, 2026
b1c177e
group creation error handling
KelvinTegelaar Apr 10, 2026
9f60774
group creation error handling
KelvinTegelaar Apr 10, 2026
312b254
guarding for errors on compare
KelvinTegelaar Apr 10, 2026
409a8ed
better compares,. final bug fix
KelvinTegelaar Apr 10, 2026
66bd315
okay this is the final one, linting.
KelvinTegelaar Apr 10, 2026
65a0899
update version
KelvinTegelaar Apr 10, 2026
e0d0230
Dev to release (#1990)
KelvinTegelaar Apr 10, 2026
8bbe7e1
Migrate alerts to using Get-CippException
rvdwegen Apr 10, 2026
18e6ecb
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
rvdwegen Apr 10, 2026
9cf6be4
Better AI instructions
rvdwegen Apr 10, 2026
0de8fa3
Merge pull request #26 from KelvinTegelaar/dev
pull[bot] Apr 10, 2026
09cbac3
Add ConnectionString parameter to backup cleanup function
Zacgoose Apr 12, 2026
1d48b53
Merge pull request #27 from KelvinTegelaar/dev
pull[bot] Apr 12, 2026
a059397
fix: update duration validation message for snooze alert
kris6673 Apr 13, 2026
8212439
Enhance Get-TenantProperties to resolve customer IDs
Zacgoose Apr 13, 2026
796861a
add member replacement
KelvinTegelaar Apr 13, 2026
10656ae
Improve service principal lookup and error handling
Zacgoose Apr 13, 2026
193c772
Merge pull request #28 from KelvinTegelaar/dev
pull[bot] Apr 13, 2026
1a10684
fix: Enhance New-CIPPCAPolicy to improve location handling and policy…
JohnDuprey Apr 13, 2026
994098c
fix: Update Invoke-ExecRestoreBackup to handle Azure Table column typ…
JohnDuprey Apr 13, 2026
8fc758b
Merge pull request #29 from KelvinTegelaar/dev
pull[bot] Apr 13, 2026
ee73caa
fix: Enhance Invoke-ExecIncidentsList to improve incident filtering a…
JohnDuprey Apr 13, 2026
c3fdef4
fix: Improve error handling and logging in Push-UpdatePermissionsQueu…
JohnDuprey Apr 13, 2026
a0872fe
chore: bump version to 10.3.1
JohnDuprey Apr 13, 2026
29a7044
fix: Correct anchor mailbox for Get-MailboxCalendarConfiguration
JohnDuprey Apr 13, 2026
074a969
fix: limit to just applicationid on self app lookup
JohnDuprey Apr 13, 2026
33d1b99
Dev to hotfix (#1995)
JohnDuprey Apr 13, 2026
628ba95
Merge pull request #31 from KelvinTegelaar/dev
pull[bot] Apr 13, 2026
54a5441
fix: update tenant retrieval logic to handle cases where TenantFilter…
JohnDuprey Apr 15, 2026
18f34b5
Merge pull request #32 from KelvinTegelaar/dev
pull[bot] Apr 15, 2026
e964a41
fix: Update duration validation message for snooze alert (#1993)
KelvinTegelaar Apr 15, 2026
06dd279
allow null
KelvinTegelaar Apr 15, 2026
e7e110c
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Apr 15, 2026
0243355
add expected
KelvinTegelaar Apr 15, 2026
a1c72de
add expected and currentValue Caldefaults
KelvinTegelaar Apr 15, 2026
3377746
Merge pull request #33 from KelvinTegelaar/dev
pull[bot] Apr 15, 2026
3bbfe44
Feat: CIPPCore breakout and performance tuning
Zacgoose Apr 5, 2026
ceae1ce
CIPPCore breakout into smaller modules, supporting cache and helper s…
KelvinTegelaar Apr 15, 2026
74d5f2e
remove old tenant failed tracing.
KelvinTegelaar Apr 15, 2026
ba86d08
Merge pull request #34 from KelvinTegelaar/dev
pull[bot] Apr 15, 2026
676b5bb
remove duplicate count
KelvinTegelaar Apr 15, 2026
c984ded
added websession for now
KelvinTegelaar Apr 15, 2026
21eb0d0
Merge pull request #35 from KelvinTegelaar/dev
pull[bot] Apr 15, 2026
5f75629
improvements and profiling
KelvinTegelaar Apr 15, 2026
eaaa1ca
Delete Cronos.dll from module location as it now lives in shared dir
Zacgoose Apr 16, 2026
25d60ef
Check and install ModuleBuilder if missing
Zacgoose Apr 16, 2026
e82ee11
Merge pull request #36 from KelvinTegelaar/dev
pull[bot] Apr 16, 2026
1047167
Return custom subject object for audit log alerts
Zacgoose Apr 16, 2026
aab6362
fix user logging for group creation api
Zacgoose Apr 16, 2026
ae50bee
Improvements to remove gc which increase throughput
KelvinTegelaar Apr 16, 2026
5a5310b
Merge pull request #37 from KelvinTegelaar/dev
pull[bot] Apr 16, 2026
9e64fb3
token warmup function
KelvinTegelaar Apr 16, 2026
11d0091
token warmup improvements
KelvinTegelaar Apr 16, 2026
a2eab38
Merge pull request #38 from KelvinTegelaar/dev
pull[bot] Apr 16, 2026
e3d2b68
Account for drift deviation acceptance in alignment overview
Zacgoose Apr 17, 2026
2781dd1
correct exception error message handling
Zacgoose Apr 17, 2026
2479571
Add custom scripts to backup
Zacgoose Apr 17, 2026
6505e4d
skip text replacement if tenantfilter is null
Zacgoose Apr 17, 2026
688d29a
Merge pull request #39 from KelvinTegelaar/dev
pull[bot] Apr 17, 2026
89f8894
STOPPPPPPPP
Zacgoose Apr 17, 2026
858e2d5
Merge pull request #40 from KelvinTegelaar/dev
pull[bot] Apr 17, 2026
1ee6169
add multi-tenant support for Scripted CIPP Alerts
Apr 13, 2026
e0509bf
In the name of SPEEEEEEEED
Zacgoose Apr 17, 2026
bf1733e
Merge pull request #41 from KelvinTegelaar/dev
pull[bot] Apr 17, 2026
4c4d308
introduce ng orchs
KelvinTegelaar Apr 19, 2026
5a83257
Merge pull request #42 from KelvinTegelaar/dev
pull[bot] Apr 19, 2026
019d889
cipprest updates
Zacgoose Apr 20, 2026
2b369db
reduce backup size by not including completed tasks
Zacgoose Apr 20, 2026
7483979
Merge pull request #43 from KelvinTegelaar/dev
pull[bot] Apr 20, 2026
fa1620f
"syncInfoNote": "Outlook for iOS and Android uses modern authenticati…
fit-jv Apr 20, 2026
cb4833d
fix: update boolean conversion for query parameters
kris6673 Apr 20, 2026
a76fd55
Fix: Fixes manual processing of audit log searches
Zacgoose Apr 20, 2026
6055de0
Update profile.ps1
Zacgoose Apr 20, 2026
765bc5c
just no
Zacgoose Apr 20, 2026
6d45d05
Update bobby tables for even more speeeeeeeeeed
Zacgoose Apr 20, 2026
e44dc0a
typo
Zacgoose Apr 21, 2026
7093111
Update standards comments and required license sections
Zacgoose Apr 21, 2026
bdf545d
Fixes for exchange being dumb
Zacgoose Apr 21, 2026
9ced3b8
faster graph response times for cached data
Zacgoose Apr 21, 2026
a9ad195
make guest check less expensive
Zacgoose Apr 21, 2026
ef3daff
expose max server connections via env AZBOBBY_MAX_CONNECTIONS_PER_SERVER
Zacgoose Apr 21, 2026
d4fe3d7
docs: update CIPP standards agents and instructions file
kris6673 Apr 21, 2026
635421d
no more networking issues
Zacgoose Apr 21, 2026
0a33a38
Update Invoke-CIPPRestMethod.ps1
Zacgoose Apr 21, 2026
784497f
Update New-DeviceLogin.ps1
Zacgoose Apr 21, 2026
3523a9f
tweaks
Zacgoose Apr 21, 2026
2a9456a
fix: reporting on check extension standard
JohnDuprey Apr 21, 2026
08f0d30
feat: Support granular template resolution in alignment
JohnDuprey Apr 21, 2026
6fc4ca5
feat: Add templateType to alignment results in Invoke-ListTenantAlign…
JohnDuprey Apr 21, 2026
c2588ee
fix: Could not get token: Unable to find type [CIPP.CIPPRestClient]. …
kris6673 Apr 21, 2026
146d993
Update Invoke-ExecCIPPDBCache.ps1
Zacgoose Apr 22, 2026
747ab0c
Fix: Better batching for EXO caching
Zacgoose Apr 22, 2026
29aadfc
Merged into Dev
Zacgoose Apr 22, 2026
9972f08
Merged into Dev
Zacgoose Apr 22, 2026
1e06116
Collect admin UPNs from role groups and users
TecharyJames Apr 22, 2026
aa98c9e
Merged into dev
Zacgoose Apr 22, 2026
f60611a
Remove duplicate EXO cache calls
Zacgoose Apr 22, 2026
4721da0
introduce stable id for cache and greatly improve exo permission cach…
Zacgoose Apr 22, 2026
c220738
Introduce re-batching bulk requests when batches return next links an…
Zacgoose Apr 22, 2026
2907acc
Reduce table write ops for tests by doing bulk writes
Zacgoose Apr 22, 2026
ed63529
feat: add AdminSSPR standard
kris6673 Apr 22, 2026
c5bbb4b
Rename to CIPPSharp, introduce cached testdb calls
Zacgoose Apr 22, 2026
454f273
Update Get-CIPPTestData.ps1
Zacgoose Apr 22, 2026
e0cbf6e
Better error handling around CA exclusion groups and better error mes…
Zacgoose Apr 22, 2026
d59b361
Update Invoke-ExecCAExclusion.ps1
Zacgoose Apr 22, 2026
2e2e721
feat(onedrive-shortcut): support custom library and subfolder paths
kris6673 Apr 22, 2026
dd535af
fix: notification contact removal in tenant offboarding
kris6673 Apr 22, 2026
194c980
prevent logging stuff
KelvinTegelaar Apr 22, 2026
dffc2e5
Delete AzBobbyTables.PS.dll
JohnDuprey Apr 22, 2026
9517ffb
fix: Use bulk skip pagination for detectedApps cache
Zacgoose Apr 23, 2026
7fc61f5
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Zacgoose Apr 23, 2026
002b867
Fix: Fix notification contact removal during tenant offboarding (#2011)
KelvinTegelaar Apr 23, 2026
9bdb79b
feat: Add AdminSSPR standard (#2009)
KelvinTegelaar Apr 23, 2026
d09601d
Fix: JIT Admin template support for groups and fix selected user
Zacgoose Apr 23, 2026
0115569
Update Add-CIPPDbItem.ps1
Zacgoose Apr 23, 2026
c0e8427
Fix : Last Sync Attempt Time & Last Sync Success fields blank in Acti…
KelvinTegelaar Apr 23, 2026
dcfe667
fix: remove the extra added ")" for better flavor
kris6673 Apr 23, 2026
62da948
Fix: Fix syntax error in PowerShell script (#2013)
Zacgoose Apr 23, 2026
7f13d53
Fix log severity levels from 'Warn' to 'Warning'
bmsimp Apr 23, 2026
4889191
Merge branch 'dev' into fix/severity-warn-to-warning
bmsimp Apr 23, 2026
20b55c4
fix: pass 'AllTenants' tenant filter for tenant-agnostic alert notifi…
bmsimp Apr 14, 2026
2d71a22
fix: restore AlertComment on webhook template and complete CustomSubj…
bmsimp Apr 14, 2026
978097d
fix: honor CustomSubject on scheduled task alert titles
bmsimp Apr 14, 2026
de762a5
fix: include CustomSubject in webhook rule clause projection (followu…
bmsimp Apr 15, 2026
fb38e72
fix: also include CustomSubject in $Configuration projection (followu…
bmsimp Apr 15, 2026
117c0ef
chore: add more stats
JohnDuprey Apr 23, 2026
97bafbe
Add "Drop" method
KelvinTegelaar Apr 23, 2026
a96f209
Check Alert
KelvinTegelaar Apr 23, 2026
d7c6230
fix: Return value for bultin repo indicating it can not be deleted
Zacgoose Apr 24, 2026
8371be0
Better tenant alignment info
Zacgoose Apr 24, 2026
1d440d9
Update Invoke-ListGraphRequest.ps1
Zacgoose Apr 24, 2026
396c000
Update Start-UserTasksOrchestrator.ps1
Zacgoose Apr 24, 2026
cc41963
Don't backup offloaded configuration
Zacgoose Apr 24, 2026
6c36cd7
fix: incorrect next link parsing
Zacgoose Apr 24, 2026
0e8df7b
update permissions with Domain.ReadWrite.All
Zacgoose Apr 24, 2026
c79cf7b
Use reporting db for oauth app list and all tenants support
Zacgoose Apr 24, 2026
6f2c0a0
Update profile.ps1
Zacgoose Apr 24, 2026
e71eb10
Update CIPPTimers.json
Zacgoose Apr 24, 2026
0b2f2bd
Fix log severity levels from 'Warn' to 'Warning' (#2014)
KelvinTegelaar Apr 24, 2026
3cabc5e
feat: Allow custom paths for OneDrive shortcuts (#2010)
KelvinTegelaar Apr 24, 2026
28bc747
Fix: alert notification pipeline (#2006)
KelvinTegelaar Apr 24, 2026
0ed14fb
fix: multi-tenant support for Scripted CIPP Alerts (#1992)
KelvinTegelaar Apr 24, 2026
f0331a0
feat: move ap devices and status page to generic graph request endpoi…
KelvinTegelaar Apr 24, 2026
323ecca
chore: update DNSHealth to 1.1.5
JohnDuprey Apr 24, 2026
20f94fc
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Apr 24, 2026
f57e286
version latest
KelvinTegelaar Apr 24, 2026
56d33cc
Dev to release (#2015)
KelvinTegelaar Apr 24, 2026
61b43b9
version latest (#2016)
KelvinTegelaar Apr 24, 2026
07ae216
fix: update workflow files to include modulebuilder
JohnDuprey Apr 24, 2026
e9017f6
Fixes manual pagination
Zacgoose Apr 24, 2026
b721e0e
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Zacgoose Apr 24, 2026
2a361a8
hotfix
Zacgoose Apr 24, 2026
f77ffa6
Dev to hotfix (#2017)
JohnDuprey Apr 24, 2026
c2195e4
fix: dnshealth
JohnDuprey Apr 24, 2026
e07e70b
dev to hotfix (#2018)
JohnDuprey Apr 24, 2026
66596cf
fix: copilot license matching test
JohnDuprey Apr 24, 2026
0e2f601
feat: Add Invoke-ExecTestRefresh HTTP entrypoint
JohnDuprey Apr 24, 2026
83cf867
fix: copilot license checks
JohnDuprey Apr 24, 2026
956c732
fix: save test result
JohnDuprey Apr 24, 2026
0ff7d1e
Update Invoke-ExecTestRefresh.ps1
JohnDuprey Apr 24, 2026
821b92e
fix: base role permissions
JohnDuprey Apr 24, 2026
870b94d
fix: getversion api role
JohnDuprey Apr 24, 2026
40cb7fc
chore: Block Az Function app setting cmdlets
JohnDuprey Apr 24, 2026
24fcd6b
fix: Fallback to legacy REST when CIPP client missing
JohnDuprey Apr 25, 2026
07a3bae
shuffle
Zacgoose Apr 25, 2026
f796dea
Token update locking
Zacgoose Apr 25, 2026
1249d1b
more shuffles
Zacgoose Apr 26, 2026
42e980b
move more files to make root cleaner
Zacgoose Apr 26, 2026
9ece8de
harden orc start and audit log error message
Zacgoose Apr 26, 2026
10012b4
more audit log error handling
Zacgoose Apr 26, 2026
85e3a88
Update Start-CIPPOrchestrator.ps1
Zacgoose Apr 26, 2026
ef2fff0
Merge branch 'KelvinTegelaar:master' into feat/-Configure-Encrypted-M…
chris-dewey-1991 Apr 26, 2026
f2cd153
Creation of OME Encrypted Message Branding Standard
chris-dewey-1991 Apr 26, 2026
c9ca4f0
Merge branch 'KelvinTegelaar:master' into fix-add-support-for-group-a…
TecharyJames Apr 27, 2026
e30eaa5
fix: Update docs links that 404
bmsimp Apr 27, 2026
6f4c32c
feat(mde-onboarding): cache full connector properties
kris6673 Apr 27, 2026
307db51
fix: handle case when no tenants found for MDE report
kris6673 Apr 27, 2026
9b24f33
refactor: Vacation group filter url encoding
JohnDuprey Apr 27, 2026
25a06e3
fix: update restricted tables for superadmin backup restoration
JohnDuprey Apr 27, 2026
16d2ff4
fix: correct path to version_latest.txt in version.json creation step
JohnDuprey Apr 27, 2026
12d93fe
refactor: enhance IP validation and result handling in Invoke-ExecApi…
JohnDuprey Apr 27, 2026
1141713
Add Add-CIPPTestResult as an allowed custom test command
Zacgoose Apr 28, 2026
4255573
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Zacgoose Apr 28, 2026
dd73a6f
fix standards logging issues
Zacgoose Apr 28, 2026
7b17a58
fix: Update docs links that 404 (#2025)
KelvinTegelaar Apr 28, 2026
e7a9d88
Add SP/Exchange standards
Zacgoose Apr 28, 2026
61b172b
Update CippEntrypoints.psm1
Zacgoose Apr 28, 2026
ea6cc64
Handle midterm license changes and enrich response to contain started…
Zacgoose Apr 28, 2026
f5ecbb0
Fix GDAP requests to use more than 300 results
Zacgoose Apr 28, 2026
4c70122
Don't use cache for app permissions, causes issues if stale or missing
Zacgoose Apr 28, 2026
33ee646
typo
Zacgoose Apr 28, 2026
f652a1a
fix: correct version_latest.txt path in remote API version check
bmsimp Apr 28, 2026
7687325
fix: correct version_latest.txt path in remote API version check (#2029)
KelvinTegelaar Apr 28, 2026
a1bed60
Clear drift remediation tasks if reoccurring ones were created
Zacgoose Apr 28, 2026
f896701
Ensure only HTML fragments are generated
Zacgoose Apr 28, 2026
7b61a9d
Fix standard to only apply to users and shared accounts if enabled, e…
Zacgoose Apr 28, 2026
217416d
add back to root :(
Zacgoose Apr 28, 2026
ae39bce
fix: version locations
JohnDuprey Apr 28, 2026
8c0ca04
fix: disable transitive failures error logging for now
JohnDuprey Apr 28, 2026
658acea
fix: add caching to sharepoint/onedrive site listings
JohnDuprey Apr 28, 2026
3ff08f0
feat: update intuneCollection with new properties
kris6673 Apr 28, 2026
0e3413c
feat: enrich Intune policy setting details
kris6673 Apr 28, 2026
e2f71c2
fix: group types in edit user
JohnDuprey Apr 28, 2026
2161569
chore: bump version to 10.4.2
JohnDuprey Apr 28, 2026
d15734d
Merge branch 'settings-tooltips' of https://github.com/kris6673/CIPP-…
kris6673 Apr 28, 2026
66e7da5
Bring in tenant deviations into calculation and expose confirmed devi…
Zacgoose Apr 29, 2026
d6e0c01
tweak ninja sync interval
Zacgoose Apr 29, 2026
d9f630e
offset some activities to help spread the load
Zacgoose Apr 29, 2026
70642a2
Surface errors correctly for secret reset
Zacgoose Apr 29, 2026
3fc9675
tweaks for webhook table lookups
Zacgoose Apr 29, 2026
8bbefe1
Update version_latest.txt
Zacgoose Apr 29, 2026
4727715
feat: show full MDE connector details (#2026)
KelvinTegelaar Apr 29, 2026
10ddece
Merge branch 'dev' into settings-tooltips
KelvinTegelaar Apr 29, 2026
1606bf1
feat: enrich Intune policy setting details (#2031)
KelvinTegelaar Apr 29, 2026
c39d061
Fix: Add support for group assigned admin roles to 'disable exo' stan…
KelvinTegelaar Apr 29, 2026
834b4c6
fix: calculated group type in listusergroups
JohnDuprey Apr 29, 2026
fe7b013
Feat/Configure Encrypted Message Branding OME (#2023)
KelvinTegelaar Apr 29, 2026
9700734
Use ConvertTo-SafeArray for all EXO domain checks
Zacgoose Apr 30, 2026
e0df450
account for trials
Zacgoose Apr 30, 2026
29e3006
Update Get-CIPPLicenseOverview.ps1
Zacgoose Apr 30, 2026
1416a14
Simple is best
Zacgoose Apr 30, 2026
264abca
Update Invoke-CIPPDBCacheCollection.ps1
Zacgoose Apr 30, 2026
3ed7bdd
Update New-CIPPAPIConfig.ps1
Zacgoose Apr 30, 2026
a78bd50
slight orc changes
Zacgoose Apr 30, 2026
b446c02
Update Add-CippQueueMessage.ps1
Zacgoose Apr 30, 2026
f036c0b
fix: odata sanitization
JohnDuprey Apr 30, 2026
89ade0e
How long has this been wrong?
Zacgoose May 1, 2026
e0db8da
Fix oauth consent not adding ms app id after the fact
Zacgoose May 1, 2026
b937399
Add specific DNS endpoints to TCP connection limits
Zacgoose May 1, 2026
924a078
Fix listing of excluded tenants in scripted alerts
Zacgoose May 1, 2026
1639700
Update add CA exclusion to account for targeted roles
Zacgoose May 1, 2026
0a08f63
Add ResultMode, CIPP wrapper handling, Github save/import and custom …
Zacgoose May 1, 2026
6c27c34
Custom variable support + block explicit calls with tenantfilter
Zacgoose May 1, 2026
4589d5d
So the docs are wrong about this one
Zacgoose May 1, 2026
1cf4ee6
Prevent race conditions for duplicate audit logs
Zacgoose May 1, 2026
78eb1ae
More escaping for HMTL alerts that contain objects
Zacgoose May 1, 2026
cf66039
Silly audit logs
Zacgoose May 1, 2026
8c4f9bd
fix: Add SHAREPOINTENTERPRISE_GOV to license checks
JohnDuprey May 1, 2026
a0b7655
chore: bump version to 10.4.3
JohnDuprey May 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file added .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
local.settings.json
22 changes: 22 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Editor configuration, see http://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
insert_final_newline = true

[*.{ps1, psd1, psm1}]
indent_size = 4
end_of_line = lf
trim_trailing_whitespace = true

[*.json]
indent_size = 2
end_of_line = lf
trim_trailing_whitespace = true

[*.{md, txt}]
end_of_line = crlf
max_line_length = off
trim_trailing_whitespace = false
7 changes: 7 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FUNCTIONS_WORKER_RUNTIME='powershell'
FUNCTIONS_WORKER_RUNTIME_VERSION='7.4'
AzureWebJobsStorage='DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNoBnZf6KgBVU4=;BlobEndpoint=http://azurite:10000/devstoreaccount1;QueueEndpoint=http://azurite:10001/devstoreaccount1;TableEndpoint=http://azurite:10002/devstoreaccount1;'
DEV_SKIP_BPA_TIMER='true'
DEV_SKIP_DOMAIN_TIMER='true'
FUNCTIONS_EXTENSION_VERSION='4'
NonLocalHostAzurite='true'
13 changes: 13 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
* text=lf

*.txt text eol=crlf
*.md text eol=crlf

*.ps1 text eol=lf
*.psd1 text eol=lf
*.psm1 text eol=lf

*.json text eol=lf

*.png binary
*.jpg binary
117 changes: 117 additions & 0 deletions .github/agents/CIPP-Alert-Agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
---
# Fill in the fields below to create a basic custom agent for your repository.
# The Copilot CLI can be used for local testing: https://gh.io/customagents/cli
# To make this agent available, merge this file into the default repository branch.
# For format details, see: https://gh.io/customagents/config

name: CIPP Alert Engineer
description: >
Implements and maintains CIPP tenant alerts in PowerShell using existing CIPP
patterns, without touching API specs, avoiding CodeQL, and using
Test-CIPPStandardLicense for license/SKU checks.
---

# CIPP Alert Engineer

## Mission

You are an expert CIPP alert engineer for the CIPP repository.

Your job is to implement, update, and review **alert-related functionality** in CIPP, following existing repository patterns and conventions. You primarily work on:

- Creating new `Get-CIPPAlert*` PowerShell functions
- Adjusting existing alert logic when requested
- Ensuring alerts integrate cleanly with the existing scheduler and alerting framework
- Performing light validation and linting

You **must follow all constraints in this file** exactly.

## Secondary Reference

For detailed scaffolding patterns, parameter conventions, API call examples, and output standards, refer to `.github/instructions/alerts.instructions.md`. That file provides comprehensive technical reference for alert development. **If anything in this agent file conflicts with the instructions file, this agent file takes precedence.**

---

## Scope of Work

Use this agent when a task involves:

- Adding a new alert (e.g. “implement alert for X condition”)
- Modifying logic of an existing alert
- Investigating how alerts are scheduled, run, or configured
- Performing small refactors or improvements to alert-related PowerShell code

You **do not** make broad architectural changes. Keep changes focused and minimal.

---

## Key Directories & Patterns

When working on alerts, you should:

1. **Discover existing alerts and patterns**
- Use shell commands to explore:
- `Modules/CIPPCore/Public/Alerts/`
- Inspect several existing alert files, e.g.:
- `Modules/CIPPCore/Public/Alerts/Get-CIPPAlertNoCAConfig.ps1`
- Other `Get-CIPPAlert*.ps1` files
- Understand how alerts are **named, parameterized, and how they call Graph / Exo and helper functions**.

2. **Follow the standard alert pattern**
- Alert functions live in:
`Modules/CIPPCore/Public/Alerts/`
- Alert functions are named:
`Get-CIPPAlert<Something>.ps1`
- Typical characteristics:
- Standard parameter set, including `TenantFilter` and similar common params.
- Uses CIPP helper functions like:
- `New-GraphGetRequest` / other Graph or Exo helpers
- `Write-AlertTrace` for emitting alert results
- Uses CIPP logging and error-handling patterns (try/catch, consistent message formatting).

3. **Rely on existing module loading**
- The CIPP module auto-loads `Public` functions recursively.
- **Do not** modify module manifest or loader behavior just to pick up your new alert.

---

## Critical Constraints

You **must** respect all of these:

### 1. Always follow existing CIPP alert patterns

When adding or modifying alerts:

- Use the **same structure** as existing `Get-CIPPAlert*.ps1` files:
- Similar function signatures
- Similar logging and error handling
- Same approach to returning alert data via `Write-AlertTrace`
- Reuse helper functions instead of inlining raw Graph calls or custom HTTP code, whenever possible.
- Keep alert behavior predictable and consistent with existing alerts.

### 2. No CodeQL runs

- **Do not** invoke CodeQL or similar heavy security tooling in your workflow.
- Rely on:
- PowerShell syntax checking
- `PSScriptAnalyzer`
- Manual/code-review style reasoning for security (no secrets, least privilege, etc.)

### 3. License / SKU checks must use `Test-CIPPStandardLicense`

When an alert depends on a tenant having certain SKUs or capabilities, you **must**:

- Use `Test-CIPPStandardLicense`
- Do **not** manually inspect SKUs, raw license IDs, or raw capability lists.

Example pattern (adapt to the specific feature):

```powershell
$TestResult = Test-CIPPStandardLicense -StandardName 'AutopilotProfile' -TenantFilter $Tenant -RequiredCapabilities @(
'INTUNE_A',
'MDM_Services',
'EMS',
'SCCM',
'MICROSOFTINTUNEPLAN1'
)
137 changes: 137 additions & 0 deletions .github/agents/CIPP-Standards-Agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
---
name: CIPP Standards Engineer
description: >
This agent creates a new standard based on existing standards inside of the CIPP codebase.
The agent must never modify any other file or perform any other change than creating a new standard.
---

# CIPP Standards Engineer

## Mission

You are an expert CIPP Standards engineer for the CIPP repository.

Your job is to implement, update, and review **Standards-related functionality** in CIPP, following existing repository patterns and conventions. You primarily work on:

- Creating new `Invoke-CIPPStandard*` PowerShell functions
- Adjusting existing standard logic when requested
- Ensuring standards integrate into the frontend by returning the correct information
- Performing light validation and linting

You **must follow all constraints in this file** exactly.

## Secondary Reference

For detailed scaffolding patterns, the three action modes (remediate/alert/report), `$Settings` conventions, API call patterns, and frontend JSON payloads, refer to `.github/instructions/standards.instructions.md`. That file provides comprehensive technical reference for standard development. **If anything in this agent file conflicts with the instructions file, this agent file takes precedence.**

---

## Scope of Work

Use this agent when a task involves:

- Adding a new standard (e.g. "implement a standard to enable the audit log")

You **do not** make broad architectural changes. Keep changes focused and minimal.

---

## Key Directories & Patterns

When working on standards, you should:

1. **Discover existing standards and patterns**
- Use shell commands to explore:
- `Modules/CIPPStandards/Public/Standards/`
- Inspect several existing standard files, e.g.:
- `Modules/CIPPStandards/Public/Standards/Invoke-CIPPStandardAddDKIM.ps1`
- `Modules/CIPPStandards/Public/Standards/Invoke-CIPPStandardlaps.ps1`
- `Modules/CIPPStandards/Public/Standards/Invoke-CIPPStandardOutBoundSpamAlert.ps1`
- Other `Invoke-CIPPStandard*.ps1` files
- Understand how standards are **named, parameterized, and how they call Graph / Exo and helper functions**.

2. **Follow the standard pattern**
- Standard functions live in:
`Modules/CIPPStandards/Public/Standards/`
- Standard functions are named:
`Invoke-CIPPStandard<Name>.ps1`
- Typical characteristics:
- Standard parameter set, including `Tenant` and `Settings` which can be a complex object with subsettings, and similar common params.
- Uses CIPP helper functions like:
- `New-GraphGetRequest` for any Graph requests
- `New-ExoRequest` for Exchange Online requests
- Uses CIPP logging and error-handling patterns (try/catch, consistent message formatting).
- Each standard requires a Remediate, Alert, and Report section.

3. **Rely on existing module loading**
- The CIPPStandards module auto-loads `Public` functions recursively.
- **Do not** modify module manifest or loader behavior just to pick up your new standard.

---

## Critical Constraints

You **must** respect all of these:

### 1. Always follow existing CIPP standard patterns

When adding or modifying standards:

- Use the **same structure** as existing `Invoke-CIPPStandard*.ps1` files:
- Similar function signatures
- Similar logging and error handling
- Reuse helper functions instead of inlining raw Graph calls or custom HTTP code.
- Keep behaviour predictable.

### 2. Return the code for the frontend.

The frontend requires a section to be changed in standards.json. This is an example JSON payload:

```json
{
"name": "standards.MailContacts",
"cat": "Global Standards",
"tag": [],
"helpText": "Defines the email address to receive general updates and information related to M365 subscriptions. Leave a contact field blank if you do not want to update the contact information.",
"docsDescription": "",
"executiveText": "Establishes designated contact email addresses for receiving important Microsoft 365 subscription updates and notifications. This ensures proper communication channels are maintained for general, security, marketing, and technical matters, improving organizational responsiveness to critical system updates.",
"addedComponent": [
{
"type": "textField",
"name": "standards.MailContacts.GeneralContact",
"label": "General Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.SecurityContact",
"label": "Security Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.MarketingContact",
"label": "Marketing Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.TechContact",
"label": "Technical Contact",
"required": false
}
],
"label": "Set contact e-mails",
"impact": "Low Impact",
"impactColour": "info",
"addedDate": "2022-03-13",
"powershellEquivalent": "Set-MsolCompanyContactInformation",
"recommendedBy": []
},
```

the name of the standard should be standards.<standardname>. e.g. Invoke-CIPPStandardMailcontacts becomes standards.Mailcontacts.

Added components might be required to populate the $settings variable. for example addedcomponent "standards.MailContacts.GeneralContact" becomes $Settings.GeneralContact

When creating the PR, return the json in the PR text so a frontend engineer can update the frontend repository.
Loading