Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
726 commits
Select commit Hold shift + click to select a range
3cc4722
text
KelvinTegelaar Oct 17, 2025
71c8b58
added alert comment field.
KelvinTegelaar Oct 17, 2025
af2329a
mx record change detection
KelvinTegelaar Oct 17, 2025
9b14648
allow selection of country for named locations
KelvinTegelaar Oct 17, 2025
029b690
Feat: add support for setting group visibility in Microsoft 365 groups
kris6673 Oct 17, 2025
3962aab
include OAuth request types
JohnDuprey Oct 17, 2025
d7b95ab
update bobby tables
JohnDuprey Oct 18, 2025
b1cbf03
disable tracing messages in local dev
JohnDuprey Oct 18, 2025
f5b27ef
add alias text replacement support
JohnDuprey Oct 18, 2025
bfe1388
Merge pull request #1681 from kris6673/visibility
KelvinTegelaar Oct 18, 2025
99a28c0
improve delta query
JohnDuprey Oct 18, 2025
f4124e6
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Oct 18, 2025
ec25fe0
Fix: Remove wrong license check
kris6673 Oct 19, 2025
36d5c46
Merge pull request #1682 from kris6673/issue4843
KelvinTegelaar Oct 20, 2025
c67b785
fix group template add
JohnDuprey Oct 21, 2025
bb2080e
fix: error handling for $null props
JohnDuprey Oct 22, 2025
49103d1
Add dynamic tenant groups
KelvinTegelaar Oct 22, 2025
50823eb
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Oct 22, 2025
63ff49a
ensure policy template response is always an array
JohnDuprey Oct 22, 2025
e03b3c4
add more deleted item types
JohnDuprey Oct 22, 2025
a1b5b93
switch to beta url
JohnDuprey Oct 22, 2025
ec880d9
improve error handling
JohnDuprey Oct 22, 2025
883b360
feat: triggered tasks
JohnDuprey Oct 22, 2025
66d1f1d
remove delta link from scheduler table
JohnDuprey Oct 22, 2025
10014b3
fix color scheme in html template
JohnDuprey Oct 22, 2025
ae230e9
dynamic tenant group orchestrator
JohnDuprey Oct 23, 2025
342a78a
adding entrypoint designation to orchestrators
JohnDuprey Oct 23, 2025
6599bde
organize functions
JohnDuprey Oct 23, 2025
2602c29
switch http function to start orchestrator
JohnDuprey Oct 23, 2025
0370ba1
add API query support
JohnDuprey Oct 23, 2025
55184ae
fix dynamic rule output
JohnDuprey Oct 23, 2025
3061a75
tenant group tweaks
JohnDuprey Oct 23, 2025
293552f
updates to logic
KelvinTegelaar Oct 23, 2025
78d2927
add default groups button
KelvinTegelaar Oct 23, 2025
58df931
cache license for faster dynamic tenant group processing
JohnDuprey Oct 23, 2025
0f8f740
add support for flex
JohnDuprey Oct 23, 2025
1254f3f
fix missing response path for uncaught exceptions
JohnDuprey Oct 23, 2025
5dee2c2
add debug env to show some env vars
JohnDuprey Oct 23, 2025
9e02376
update write mode check
JohnDuprey Oct 23, 2025
cd99cf1
limit sync to policies/templates with SHA
JohnDuprey Oct 23, 2025
5d27fd0
version up
KelvinTegelaar Oct 23, 2025
ab46161
Merge pull request #1683 from KelvinTegelaar/dev
KelvinTegelaar Oct 23, 2025
1e309cb
handle objects that do not have group type
JohnDuprey Oct 24, 2025
98ec939
Fix edit tenant group
Oct 24, 2025
0b687c4
fix add task
JohnDuprey Oct 24, 2025
e5767b8
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Oct 24, 2025
0806d3a
offboarding, schedule immutable id
JohnDuprey Oct 24, 2025
813dc3d
Update version_latest.txt
JohnDuprey Oct 24, 2025
5568a7b
Merge pull request #1684 from KelvinTegelaar/dev
JohnDuprey Oct 24, 2025
8f52bcf
flex tweaks
JohnDuprey Oct 25, 2025
c5cd5b8
Fix: BPA logging on errors shows no tenant in the error message
kris6673 Oct 26, 2025
9fb0f85
prevent cleanup if no relationships are returned
JohnDuprey Oct 27, 2025
98d7ff8
Add '*.teams-sbc.dk' to domain lists in Push-DomainAnalyserTenant and…
kris6673 Oct 27, 2025
c9ff220
improve a few standards with more detailed error logging
kris6673 Oct 27, 2025
aa0fc23
temp tenant count feedback
Oct 28, 2025
4182026
write-info
Oct 28, 2025
b783c3d
remove top 300 for now
Oct 28, 2025
1883a42
unique tenants log
Oct 28, 2025
d4830f6
change to v1
Oct 28, 2025
b0127f3
remove MLT odata filter
Oct 29, 2025
3433d05
Update version_latest.txt
JohnDuprey Oct 29, 2025
2d672e4
Merge pull request #1687 from KelvinTegelaar/dev
JohnDuprey Oct 29, 2025
6a73bea
Error handling on tenant group updates
JohnDuprey Oct 31, 2025
327e75f
Refactor logging and variable usage in assignment filter functions
kris6673 Oct 30, 2025
7dc68ef
Add organization ID as a reserved variable and update text replacemen…
ZenTopBrandon Oct 31, 2025
9542576
Support for editing transport rules
Zacgoose Oct 31, 2025
61b63b8
Update teams module again
kris6673 Nov 3, 2025
1f2bef3
Feat: Add TeamsExternalChatWithAnyone standard
kris6673 Nov 3, 2025
14c4ade
fix timestamp localization
JohnDuprey Nov 3, 2025
64e1279
chore: update licenses to newest from MS
kris6673 Nov 4, 2025
a73069e
switch api url to env var to handle secure hosts
JohnDuprey Nov 5, 2025
499770d
Update Get-CippApiAuth.ps1
JohnDuprey Nov 5, 2025
5ad95a6
Merge pull request #1690 from Zacgoose/transportrules
JohnDuprey Nov 5, 2025
0777e7f
Merge pull request #1685 from kris6673/bpa-logging
JohnDuprey Nov 5, 2025
c79b8e0
Merge pull request #1686 from kris6673/fixes
JohnDuprey Nov 5, 2025
3f56cc9
Merge pull request #1688 from kris6673/assignment-filters
JohnDuprey Nov 5, 2025
c07ec72
Merge pull request #1689 from ZenTopBrandon/dev
JohnDuprey Nov 5, 2025
327bbe9
Merge pull request #1691 from kris6673/teams-anyone-chat
JohnDuprey Nov 5, 2025
fd85042
Merge pull request #1692 from kris6673/licenses
JohnDuprey Nov 5, 2025
c288ae7
cleanup .net472 folder
JohnDuprey Nov 5, 2025
c39b7be
Fix: Refactor group type determination logic in Invoke-ListGroups and…
kris6673 Nov 6, 2025
85e5fd8
chore: improve error handling if template is already deleted
JohnDuprey Nov 6, 2025
7bbde81
fix: setting package tags removes SHA hash
JohnDuprey Nov 6, 2025
ab6eeef
Update Invoke-ExecSetPackageTag.ps1
JohnDuprey Nov 6, 2025
b79c29d
fix: editing template name/description
JohnDuprey Nov 6, 2025
04be420
Chore: move file to correct folder
kris6673 Nov 6, 2025
f8c0b51
Fix: Refactor ExecGetRecoveryKey to get FileVault key too and add com…
kris6673 Nov 6, 2025
bad94a0
fix CA policy drift remediation
JohnDuprey Nov 7, 2025
df0a123
fix: remove some unneeded returns
kris6673 Nov 8, 2025
dd2ce0f
feat: add property to show what users has the license assigned
kris6673 Nov 8, 2025
1a28683
fix: filter out excluded licenses in Sync-CippExtensionData function
kris6673 Nov 8, 2025
e3cbc38
fix: sharepoint cmdlets
JohnDuprey Nov 9, 2025
80d4a41
fix: ensure previously loaded modules are removed for reloading new c…
kris6673 Nov 9, 2025
0e460f8
add skip cache parameter
JohnDuprey Nov 9, 2025
733ac24
fix: Exclude bulk registration accounts from MFA alerts and return st…
kris6673 Nov 9, 2025
0ae59e9
chore: general cleanup and capitalization
kris6673 Nov 9, 2025
b80465a
fix: add privacy information URL to Office App deployment and fix lar…
kris6673 Nov 9, 2025
5fc8be0
fix: standardize casing and improve error handling in Invoke-AddAPDev…
kris6673 Nov 9, 2025
996252a
fix: improve error handling and logging in Invoke-RemoveScheduledItem…
kris6673 Nov 9, 2025
16a943b
fix: standardize function casing and improve variable naming in conta…
kris6673 Nov 9, 2025
9ca9401
bit of basic cleanup and readability
kris6673 Nov 9, 2025
3b83c0e
fix: things with listing admin roles better
kris6673 Nov 9, 2025
77a1740
why did i make it json, we use psobjects in this town dawg
kris6673 Nov 10, 2025
373274e
add non-deterministic orchestrator detection
JohnDuprey Nov 10, 2025
984a328
limit graph renewals to active tenants
JohnDuprey Nov 10, 2025
5bd14ba
clarify immutable id clearing next steps
JohnDuprey Nov 10, 2025
642ae24
fix invalid image on standard office config
JohnDuprey Nov 10, 2025
0b46261
fix execution trigger
JohnDuprey Nov 10, 2025
126a075
Merge pull request #1696 from kris6673/listLicense-users
JohnDuprey Nov 11, 2025
57f2412
Merge pull request #1695 from kris6673/fix-filevault-action
JohnDuprey Nov 11, 2025
68c8228
Merge pull request #1693 from kris6673/fix-calculatedGroupType-arrat
JohnDuprey Nov 11, 2025
4f447e8
Merge pull request #1697 from kris6673/issue4878
JohnDuprey Nov 11, 2025
72fe57e
Merge branch 'dev' into issue4846
JohnDuprey Nov 11, 2025
8ea61a8
Merge pull request #1699 from kris6673/issue4846
JohnDuprey Nov 11, 2025
28b03c6
Merge pull request #1694 from kris6673/move-file
JohnDuprey Nov 11, 2025
6492331
quick remove ghost -or
Nov 11, 2025
2180c91
extract value from FileTypeAction
JohnDuprey Nov 11, 2025
79b314a
fix: state comparison for spoofwarn
JohnDuprey Nov 11, 2025
c0820ee
resolve username to guid for scheduled tasks
JohnDuprey Nov 11, 2025
04ade59
function offloading tweaks
JohnDuprey Nov 11, 2025
d01d74b
add mailnickname validation and string replacement
JohnDuprey Nov 11, 2025
c3981ee
Revise CIPP Alert Agent documentation
KelvinTegelaar Nov 12, 2025
4412abe
Initial plan
Copilot Nov 12, 2025
1e86b4f
Add Get-CIPPAlertReportOnlyCA alert function
Copilot Nov 12, 2025
5b7259f
Merge pull request #1704 from KelvinTegelaar/copilot/add-alert-for-re…
KelvinTegelaar Nov 12, 2025
ab86520
Merge pull request #1698 from kris6673/issue4907-exclude-bulk-reg-mfa
KelvinTegelaar Nov 12, 2025
d440b7a
Set user photo
KelvinTegelaar Nov 12, 2025
0b55586
Set user photo
KelvinTegelaar Nov 12, 2025
16a4aca
fixes #4849
KelvinTegelaar Nov 12, 2025
202554e
fixes #4849
KelvinTegelaar Nov 12, 2025
06c2f46
remove sync rate limit
JohnDuprey Nov 12, 2025
818991a
Update Invoke-NinjaOneTenantSync.ps1
JohnDuprey Nov 12, 2025
36af8d4
fix group management
JohnDuprey Nov 12, 2025
7765d81
Create Invoke-AddGroupTeam.ps1
JohnDuprey Nov 12, 2025
445df4a
fix: check current state before running task
JohnDuprey Nov 12, 2025
b187be2
fix: text replacement vars causing standard mismatch
JohnDuprey Nov 12, 2025
567f595
fix: custom role issues
JohnDuprey Nov 13, 2025
91abf7a
Delete dev_clouduptest.yml
JohnDuprey Nov 13, 2025
f21bdfd
fix cache check
JohnDuprey Nov 13, 2025
1c4c20d
prevent errors when no extensions have been configured
JohnDuprey Nov 13, 2025
9466ee6
feat: add functions to manage cloud status/SOA of groups
kris6673 Nov 13, 2025
587deac
Merge pull request #1700 from kris6673/this-and-that
JohnDuprey Nov 14, 2025
c472dde
Re-add business premium capability
chase-vgo Nov 14, 2025
d1b7745
Re-add enterprise capability as well
chase-vgo Nov 14, 2025
181e1db
Feat: Support user and contacts too
kris6673 Nov 14, 2025
021ebc8
Fix: Add roles for SOA transfer for contacts and users
kris6673 Nov 14, 2025
e9dfcd4
Fix: Update API endpoints to use beta version for user and contact on…
kris6673 Nov 14, 2025
c298ff1
Feat: move Invoke-ExecSetCloudManaged function to manage cloud status…
kris6673 Nov 14, 2025
7895681
update comment
kris6673 Nov 14, 2025
cb0d56a
Fix: Update Group API endpoint to use beta version for on-premises sy…
kris6673 Nov 14, 2025
696d9c9
Fix: Add graphId to contacts to enable setting SOA
kris6673 Nov 14, 2025
a537121
fix: json parsing errors
JohnDuprey Nov 15, 2025
4f1faa7
feat: AllTenants support with Custom Roles & Tenant Restrictions
JohnDuprey Nov 16, 2025
c54fd94
fix: alert uses non-existant TimeUntilRenew property so it never fires
kris6673 Nov 16, 2025
7bdce8f
Feat: Refactor alerts to return complex objects with more data for ea…
kris6673 Nov 16, 2025
2a8d820
support limited tenants in audit logs
JohnDuprey Nov 16, 2025
7ea65f3
remove anytenant for this endpoint
JohnDuprey Nov 16, 2025
af31045
fix permission
JohnDuprey Nov 16, 2025
93b25db
remove anytenant functionality from standards
JohnDuprey Nov 16, 2025
1a7a5dc
exclude mail.onmicrosoft.com domains
JohnDuprey Nov 16, 2025
cf62dba
audit log improvements
JohnDuprey Nov 17, 2025
b1c2f8a
refactor: update Teams global meeting policy to include AutoAdmittedU…
kris6673 Nov 17, 2025
59be19e
add return value
JohnDuprey Nov 17, 2025
b42b7f8
catch non-json exceptions
JohnDuprey Nov 17, 2025
d7b6ca8
fix: drift standard auto remediate
JohnDuprey Nov 17, 2025
77ec62c
Update Get-CIPPStandards.ps1
JohnDuprey Nov 17, 2025
97c2d93
update function logging
JohnDuprey Nov 17, 2025
92d6515
track frontend version
JohnDuprey Nov 17, 2025
0a9eb74
tweak http trigger
JohnDuprey Nov 17, 2025
5acf19e
remove proc workflow
JohnDuprey Nov 18, 2025
415e7db
update workflow to managed identity
JohnDuprey Nov 18, 2025
4db294b
remove publish profile
JohnDuprey Nov 18, 2025
d13dfa9
Merge pull request #1706 from chase-vgo/dev
JohnDuprey Nov 18, 2025
6122630
Merge pull request #1709 from kris6673/AutoAdmittedUsers
KelvinTegelaar Nov 18, 2025
9b9a50b
Merge pull request #1705 from kris6673/group-soa
KelvinTegelaar Nov 18, 2025
006db9e
fix: split template arrays to separate standard entries
JohnDuprey Nov 18, 2025
dc0b936
track cleanup count
JohnDuprey Nov 18, 2025
8ecaf98
chore: improve remove-cippgroups performance
JohnDuprey Nov 18, 2025
51ff626
fix: add license check
JohnDuprey Nov 19, 2025
5169c66
Validate JSON before parsing config in Invoke-ListExtensionsConfig
JohnDuprey Nov 19, 2025
4b58de2
Enhance standard info logging and rerun detection
JohnDuprey Nov 19, 2025
fff912e
Log last sign-in date when disabling guest users
JohnDuprey Nov 19, 2025
3ae9bd2
Improve webhook URL validation and logging
JohnDuprey Nov 19, 2025
ec3a550
new api for combined list
KelvinTegelaar Nov 19, 2025
2ffa768
Merge pull request #1708 from kris6673/alerts
KelvinTegelaar Nov 19, 2025
b6f25ca
Create CIPP Standards Engineer documentation
KelvinTegelaar Nov 19, 2025
a65875b
Initial plan
Copilot Nov 19, 2025
74b49ca
Add Invoke-CIPPStandardSecureScoreRemediation.ps1
Copilot Nov 19, 2025
9914b85
Fix SecureScoreRemediation to follow CIPP patterns - remove +=, simpl…
Copilot Nov 19, 2025
0763560
Refactor SecureScoreRemediation to use 4 separate autocomplete fields…
Copilot Nov 19, 2025
bbf203d
Merge pull request #1711 from KelvinTegelaar/copilot/add-secure-score…
KelvinTegelaar Nov 19, 2025
dcc9a01
whoops pushed to master
KelvinTegelaar Nov 19, 2025
ca2f281
forced vendor information
KelvinTegelaar Nov 19, 2025
3c0368f
fixed standards compare
KelvinTegelaar Nov 19, 2025
ea99b77
Refactor standard info handling in log functions
JohnDuprey Nov 19, 2025
9552a92
NewUserDefaults
KelvinTegelaar Nov 19, 2025
ae15356
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Nov 19, 2025
a068b09
Add tenant variable support to dynamic tenant groups
JohnDuprey Nov 19, 2025
6af8b42
fix: Intune policy template tweaks
JohnDuprey Nov 19, 2025
2e7ccd5
Refactor group member add/remove functions for bulk operations
JohnDuprey Nov 19, 2025
a201138
Remove redundant logging from scheduled item addition
JohnDuprey Nov 19, 2025
5d93e5e
Add group exclusion support to Set-CIPPCAExclusion
JohnDuprey Nov 19, 2025
8d103ea
Refactor CA exclusion to use vacation security group
JohnDuprey Nov 19, 2025
2135626
Update group creation logic in CA exclusion script
JohnDuprey Nov 20, 2025
102f3a8
change display name
JohnDuprey Nov 20, 2025
0cbd038
Refactor group member addition to use bulk requests
JohnDuprey Nov 20, 2025
5b14758
add option to search title
KelvinTegelaar Nov 20, 2025
efb70f8
added #4864
KelvinTegelaar Nov 20, 2025
54f6195
Fix scheduled items filtering by title
JohnDuprey Nov 20, 2025
9903bf2
fix addedfield displayname
JohnDuprey Nov 20, 2025
c6765cf
Fixes part of #4866
KelvinTegelaar Nov 20, 2025
0f0af2d
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Nov 20, 2025
b50c4bb
improve template imports
JohnDuprey Nov 20, 2025
6a58018
feat: vacation mode exclusions from audit log rules
JohnDuprey Nov 20, 2025
272768c
updates
KelvinTegelaar Nov 20, 2025
2d23f5c
fixes issues with names in drift
KelvinTegelaar Nov 20, 2025
829beb2
Add group creation and vacation exclusion handling to CA policy
JohnDuprey Nov 21, 2025
3996a7a
fix dynamic tenant group exception handling
JohnDuprey Nov 21, 2025
f687df2
add #4976
KelvinTegelaar Nov 21, 2025
559fd18
Add group template support to New-CIPPCAPolicy
JohnDuprey Nov 21, 2025
5404a56
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Nov 21, 2025
aae0b44
Enhance log listing with template details and filtering
JohnDuprey Nov 21, 2025
34b564c
Refactor log output object and standard info fields
JohnDuprey Nov 21, 2025
fff3c60
Standardize tenant variable usage in CA policy script
JohnDuprey Nov 21, 2025
18b4c1e
updates to template creation process
KelvinTegelaar Nov 21, 2025
788ca88
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Nov 21, 2025
b89e33e
up version
KelvinTegelaar Nov 21, 2025
32992a9
Merge branch 'master' into dev
KelvinTegelaar Nov 21, 2025
7264fdc
fix caching issues
JohnDuprey Nov 21, 2025
8a76748
Add error handling for tenant capabilities fetch
JohnDuprey Nov 22, 2025
72a6965
Add retry logic to New-GraphPOSTRequest
JohnDuprey Nov 22, 2025
995ca37
Add text replacement for alert HTML and webhook content
JohnDuprey Nov 22, 2025
38202c9
Update extension bundle and DurableTask settings
JohnDuprey Nov 22, 2025
53c35e6
simplify cleanup
JohnDuprey Nov 22, 2025
24c462e
Enhance app template creation and logging
JohnDuprey Nov 23, 2025
d6e7c52
Standardize result object keys in API client scripts
JohnDuprey Nov 23, 2025
6c3c764
Update Invoke-AddEditTransportRule.ps1
Zacgoose Nov 24, 2025
bc55aed
fix template type
JohnDuprey Nov 24, 2025
38f8f40
Add logging for tenant group evaluation
JohnDuprey Nov 24, 2025
c35c63d
Fix: Add MessageCopyForSendOnBehalfEnabled to Set-CIPPMessageCopy so …
kris6673 Nov 24, 2025
8909eb1
Add ScheduledTaskId tracking and filtering to logs
JohnDuprey Nov 24, 2025
ddbf50f
bump version
JohnDuprey Nov 24, 2025
c016119
Merge pull request #1713 from Zacgoose/transport-rule-fix
JohnDuprey Nov 24, 2025
56231d6
Merge pull request #1715 from kris6673/copysent
JohnDuprey Nov 24, 2025
bc3c5d6
Add StandardTaskFilter check to log listing
JohnDuprey Nov 24, 2025
7464743
Feat: Add support for assigning apps to custom groups
kris6673 Nov 24, 2025
e33b6f3
Fix: Update assignment mode handling and improve existing assignment …
kris6673 Nov 24, 2025
f8b962b
Merge pull request #1718 from kris6673/appAssignment
KelvinTegelaar Nov 25, 2025
ceac742
Restructure offboarding webhook notifications with descriptive keys a…
renada-jacob Nov 25, 2025
baac74e
Update Modules/CIPPCore/Public/Remove-CIPPMailboxPermissions.ps1
renada-jacob Nov 25, 2025
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
  •  
  •  
  •  
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'
113 changes: 113 additions & 0 deletions .github/agents/CIPP-Alert-Agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
# 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.

---

## 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'
)
142 changes: 142 additions & 0 deletions .github/agents/CIPP-Standards-Agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
---
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

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 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.

---

## 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 alerts, you should:

1. **Discover existing alerts and patterns**
- Use shell commands to explore:
- `Modules/CIPPCore/Public/Standards/`
- Inspect several existing alert files, e.g.:
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardAddDKIM.ps1`
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardlaps.ps1`
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardOutBoundSpamAlert.ps1`
- Other `Invoke-CIPPStandard*.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/Standardss/`
- Alert functions are named:
`Invoke-CIPPStandardAddDKIM.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-ExoReques` for creating exo 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 CIPP 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 alert patterns

When adding or modifying alerts:

- 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.
73 changes: 42 additions & 31 deletions .github/workflows/dev_api.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,42 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: dev_api

on:
push:
branches:
- dev
workflow_dispatch:

env:
AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root

jobs:
deploy:
if: github.event.repository.fork == false && github.event_name == 'push'
runs-on: windows-latest

steps:
- name: 'Checkout GitHub Action'
uses: actions/checkout@v4

- name: 'Run Azure Functions Action'
uses: Azure/functions-action@v1
id: fa
with:
app-name: 'cippjta72'
slot-name: 'Production'
package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_5B44448119C645C099EE192346D7433A }}
# Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: dev_api

on:
push:
branches:
- dev
workflow_dispatch:

env:
AZURE_FUNCTIONAPP_PACKAGE_PATH: "." # set this to the path to your web app project, defaults to the repository root

jobs:
deploy:
permissions:
id-token: write #This is required for requesting the JWT
contents: read #This is required for actions/checkout
if: github.event.repository.fork == false && github.event_name == 'push'
runs-on: windows-latest

steps:
- name: "Checkout GitHub Action"
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.DEV_CLIENTID }}
tenant-id: ${{ secrets.DEV_TENANTID }}
subscription-id: ${{ secrets.DEV_SUBSCRIPTIONID }}

- name: "Run Azure Functions Action"
uses: Azure/functions-action@v1
id: fa
with:
app-name: "cippjta72"
slot-name: "Production"
package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
31 changes: 0 additions & 31 deletions .github/workflows/dev_api_proc.yml

This file was deleted.

16 changes: 8 additions & 8 deletions AddChocoApp/Choco.App.xml
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<ApplicationInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ToolVersion="1.8.3.0">
<Name>Install.ps1</Name>
<UnencryptedContentSize>28319</UnencryptedContentSize>
<Name>install.ps1</Name>
<UnencryptedContentSize>1154</UnencryptedContentSize>
<FileName>IntunePackage.intunewin</FileName>
<SetupFile>Install.ps1</SetupFile>
<SetupFile>install.ps1</SetupFile>
<EncryptionInfo>
<EncryptionKey>bmoyHXFtIws7JrnXNDV4rjzap+Be+4ZJEDJkTfbVIL8=</EncryptionKey>
<MacKey>xNh8ZUZ6TLsAtihUEAU/NHiRfutDzz+eSgEdpaXUo9Q=</MacKey>
<InitializationVector>3aQFPhO8ywEC4Ojby1lR0w==</InitializationVector>
<Mac>PXX+hj3DXEpzMEMYBDXmAIlSyDIGuAwmAHIQpZIt8hU=</Mac>
<EncryptionKey>v8i9okyqxp8xlw3/r2QXMNnXcuGwrBkD54QQ7F/UJbc=</EncryptionKey>
<MacKey>XjT9kWc7gQRKRdEQ/PA/lbQDDH8kFjnuPFILxAldRTI=</MacKey>
<InitializationVector>iyAbM3kIYqA4AlWP89S5oA==</InitializationVector>
<Mac>w+2KMctRWmJzYjKcMTAKCLz15K559SgZ3pnQuQD3P/I=</Mac>
<ProfileIdentifier>ProfileVersion1</ProfileIdentifier>
<FileDigest>fx41h3rGZYZO3Jux7JnPgatlmpMc2ZFIZS8ipF5VDDw=</FileDigest>
<FileDigest>tyjBbJZ+Zj9AqD7UjEfQfe/HojN/q1+zFPidXWbiVuE=</FileDigest>
<FileDigestAlgorithm>SHA256</FileDigestAlgorithm>
</EncryptionInfo>
</ApplicationInfo>
Binary file modified AddChocoApp/IntunePackage.intunewin
Binary file not shown.
Loading