Skip to content

Commit 39686b5

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 3c0ee1b + 4f8bc79 commit 39686b5

1,186 files changed

Lines changed: 61386 additions & 11880 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/agents/CIPP-Alert-Agent.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,16 +102,13 @@ When adding or modifying alerts:
102102

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

105-
- Use `Test-CIPPStandardLicense`
105+
- Use `Test-CIPPStandardLicense`
106+
- Prefer `-Preset` for common capability sets: `Exchange`, `SharePoint`, `Intune`, `Entra`, `EntraP2`, `Teams`, `Compliance`
107+
- Use `-RequiredCapabilities` only when no preset matches, or combine it with `-Preset` for extra edge-case capabilities
106108
- Do **not** manually inspect SKUs, raw license IDs, or raw capability lists.
107109

108110
Example pattern (adapt to the specific feature):
109111

110112
```powershell
111-
$TestResult = Test-CIPPStandardLicense -StandardName 'AutopilotProfile' -TenantFilter $Tenant -RequiredCapabilities @(
112-
'INTUNE_A',
113-
'MDM_Services',
114-
'EMS',
115-
'SCCM',
116-
'MICROSOFTINTUNEPLAN1'
117-
)
113+
$TestResult = Test-CIPPStandardLicense -StandardName 'AutopilotProfile' -TenantFilter $Tenant -Preset Intune
114+
```

.github/agents/CIPP-Standards-Agent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ When adding or modifying standards:
8282
- Similar logging and error handling
8383
- Reuse helper functions instead of inlining raw Graph calls or custom HTTP code.
8484
- Keep behaviour predictable.
85+
- If a standard needs license gating, use `Test-CIPPStandardLicense` with `-Preset` for common capability sets (`Exchange`, `SharePoint`, `Intune`, `Entra`, `EntraP2`, `Teams`, `Compliance`). Use `-RequiredCapabilities` only when no preset matches, or combine it with `-Preset` for extra edge-case capabilities.
8586

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

.github/instructions/alerts.instructions.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,11 @@ if ($InputValue -is [string] -and $InputValue.Trim().StartsWith('{')) {
9797
If the alert depends on a specific M365 capability (Intune, Exchange, Defender, etc.), gate it early with `Test-CIPPStandardLicense`. Never inspect raw SKU IDs manually.
9898

9999
```powershell
100-
$Licensed = Test-CIPPStandardLicense -StandardName '<AlertName>' -TenantFilter $TenantFilter -RequiredCapabilities @(
101-
'INTUNE_A',
102-
'MDM_Services'
103-
)
100+
$Licensed = Test-CIPPStandardLicense -StandardName '<AlertName>' -TenantFilter $TenantFilter -Preset Intune
104101
if (-not $Licensed) { return }
105102
```
106103

107-
Reference existing alerts in the same domain for common capability strings. The `Test-CIPPStandardLicense` function source documents the capability matching logic.
104+
Use presets for common service families: `Exchange`, `SharePoint`, `Intune`, `Entra`, `EntraP2`, `Teams`, and `Compliance`. Use `-RequiredCapabilities` only when no preset matches, or combine it with `-Preset` when an alert needs a preset plus extra edge-case capabilities.
108105

109106
## Querying data
110107

.github/instructions/cippdb.instructions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ function Set-CIPPDBCacheMyNewType {
141141
142142
try {
143143
# 1. Optional license check
144-
$Licensed = Test-CIPPStandardLicense -StandardName 'MyFeature' -TenantFilter $TenantFilter -RequiredCapabilities @('REQUIRED_SKU')
144+
$Licensed = Test-CIPPStandardLicense -StandardName 'MyFeature' -TenantFilter $TenantFilter -Preset Intune
145145
if (-not $Licensed) { return }
146146
147147
# 2. Fetch data from API
@@ -160,7 +160,7 @@ function Set-CIPPDBCacheMyNewType {
160160

161161
- **Always use `-AddCount`** unless you handle count rows manually
162162
- **Pipeline streaming** for large datasets: pipe directly from `New-GraphGetRequest` into `Add-CIPPDbItem`
163-
- **License gating**: use `Test-CIPPStandardLicense` when the API requires specific SKUs
163+
- **License gating**: use `Test-CIPPStandardLicense -Preset <Name>` for common capability sets (`Exchange`, `SharePoint`, `Intune`, `Entra`, `EntraP2`, `Teams`, `Compliance`); use `-RequiredCapabilities` only for non-preset capabilities or additional edge-case capabilities
164164
- **Conditional `$select`**: expand Graph `$select` fields based on license capabilities
165165
- **Error handling**: catch, log with `Write-LogMessage`, do not rethrow (allows other types in the collection to continue)
166166
- **No explicit return** of data — these functions write to the table as a side effect

.github/instructions/standards.instructions.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ function Invoke-CIPPStandard<Name> {
5757
UPDATECOMMENTBLOCK
5858
Run the Tools\Update-StandardsComments.ps1 script to update this comment block
5959
.LINK
60-
https://docs.cipp.app/user-documentation/tenant/standards/list-standards
60+
https://docs.cipp.app/user-documentation/tenant/standards/alignment/templates/available-standards
6161
#>
6262
6363
param(
@@ -67,7 +67,7 @@ function Invoke-CIPPStandard<Name> {
6767
6868
# 1. License gate (if the data source requires a specific SKU)
6969
$TestResult = Test-CIPPStandardLicense -StandardName '<Name>' -TenantFilter $Tenant `
70-
-RequiredCapabilities @('CAPABILITY_1', 'CAPABILITY_2')
70+
-Preset Exchange
7171
if ($TestResult -eq $false) { return $true }
7272
7373
# 2. Get current state
@@ -235,13 +235,13 @@ Gate early using `Test-CIPPStandardLicense`. Never inspect raw SKU IDs.
235235

236236
```powershell
237237
$TestResult = Test-CIPPStandardLicense -StandardName '<Name>' -TenantFilter $Tenant `
238-
-RequiredCapabilities @('EXCHANGE_S_STANDARD', 'EXCHANGE_S_ENTERPRISE')
238+
-Preset Exchange
239239
if ($TestResult -eq $false) { return $true }
240240
```
241241

242242
The function checks tenant capabilities, logs if missing, and automatically sets the `Set-CIPPStandardsCompareField` with `LicenseAvailable = $false`.
243243

244-
Reference existing standards in the same domain for common capability strings. The `Test-CIPPStandardLicense` function source documents the capability matching logic.
244+
Use presets for common service families: `Exchange`, `SharePoint`, `Intune`, `Entra`, `EntraP2`, `Teams`, and `Compliance`. Use `-RequiredCapabilities` only when no preset matches, or combine it with `-Preset` when a standard needs a preset plus extra edge-case capabilities.
245245

246246
## API call patterns
247247

@@ -337,7 +337,7 @@ The comment-based help `.NOTES` block drives the frontend UI. Each field maps to
337337
| `RECOMMENDEDBY` | `recommendedBy` | `"CIS"`, `"CIPP"`, etc. |
338338
| `MULTIPLE` | `multiple` | `True` for template-based standards (can have multiple instances) |
339339
| `DISABLEDFEATURES` | `disabledFeatures` | JSON object disabling specific action modes |
340-
| `REQUIREDCAPABILITIES` | *(discovery only)* | One capability string per line; parsed for standards metadata/JSON generation. The explicit `Test-CIPPStandardLicense` call in the function body still performs the actual runtime license check. |
340+
| `REQUIREDCAPABILITIES` | *(discovery only)* | One capability string per line; generated from `Test-CIPPStandardLicense -Preset` and/or `-RequiredCapabilities` for standards metadata/JSON generation. The explicit `Test-CIPPStandardLicense` call in the function body still performs the actual runtime license check. |
341341
| `UPDATECOMMENTBLOCK` | *(tooling only)* | Always include with the literal value `Run the Tools\Update-StandardsComments.ps1 script to update this comment block`. Signals the comment-update tooling to regenerate this block. |
342342

343343
### Valid CAT values
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action
2+
# More GitHub Actions for Azure: https://github.com/Azure/actions
3+
4+
name: Build and deploy Powershell project to Azure Function App - cippjta72
5+
6+
on:
7+
push:
8+
branches:
9+
- dev
10+
workflow_dispatch:
11+
12+
env:
13+
AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root
14+
15+
jobs:
16+
deploy:
17+
runs-on: ubuntu-latest
18+
19+
steps:
20+
- name: 'Checkout GitHub Action'
21+
uses: actions/checkout@v4
22+
23+
- name: 'Run Azure Functions Action'
24+
uses: Azure/functions-action@v1
25+
id: fa
26+
with:
27+
app-name: 'cippjta72'
28+
slot-name: 'Production'
29+
package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
30+
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_1EBE9D73F9EC4528BA666FC934055536 }}
31+
sku: 'flexconsumption'
32+

Config/CIPPDBCacheTypes.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,11 @@
244244
"friendlyName": "Mailboxes",
245245
"description": "All Exchange Online mailboxes"
246246
},
247+
{
248+
"type": "HVEAccounts",
249+
"friendlyName": "HVE Accounts",
250+
"description": "High Volume Email accounts"
251+
},
247252
{
248253
"type": "CASMailboxes",
249254
"friendlyName": "CAS Mailboxes",
@@ -358,5 +363,10 @@
358363
"type": "CopilotUserCountTrend",
359364
"friendlyName": "Copilot User Count Trend",
360365
"description": "Daily Copilot active user count trend (7-day period)"
366+
},
367+
{
368+
"type": "ExoTransportConfig",
369+
"friendlyName": "Exchange Transport Config",
370+
"description": "Exchange Online transport configuration including SMTP authentication settings"
361371
}
362372
]

Config/CIPPTimers.json

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,6 @@
1717
"RunOnProcessor": true,
1818
"PreferredProcessor": "usertasks"
1919
},
20-
{
21-
"Id": "168decf3-7ddd-471e-ab46-8b40be0f18ae",
22-
"Command": "Start-CIPPProcessorQueue",
23-
"Description": "Timer to handle user initiated tasks",
24-
"Cron": "0 */15 * * * *",
25-
"Priority": 1,
26-
"RunOnProcessor": true
27-
},
2820
{
2921
"Id": "44a40668-ed71-403c-8c26-b32e320086ad",
3022
"Command": "Start-AuditLogOrchestrator",
@@ -264,5 +256,23 @@
264256
"RunOnProcessor": true,
265257
"TZOffset": true,
266258
"IsSystem": true
259+
},
260+
{
261+
"Id": "a3b4c5d6-e7f8-4a9b-8c1d-2e3f4a5b6c7d",
262+
"Command": "Start-ContainerUpdateCheck",
263+
"Description": "Check for container image updates and optionally auto-restart",
264+
"Cron": "0 0 * * * *",
265+
"Priority": 30,
266+
"RunOnProcessor": false,
267+
"IsSystem": true
268+
},
269+
{
270+
"Id": "7e2a9b4c-1d5f-4a8e-b3c6-0f9d2e7a4b1c",
271+
"Command": "Start-UserSyncTimer",
272+
"Description": "Sync partner tenant users and group-based roles into allowedUsers table",
273+
"Cron": "0 */15 * * * *",
274+
"Priority": 11,
275+
"RunOnProcessor": false,
276+
"IsSystem": true
267277
}
268278
]

Config/FeatureFlags.json

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,42 @@
1919
"/tenant/standards/bpa-report",
2020
"/tenant/standards/bpa-report/builder",
2121
"/tenant/standards/bpa-report/view"
22-
]
22+
],
23+
"Hidden": false
24+
},
25+
{
26+
"Id": "SuperAdminNG",
27+
"Name": "Super Admin",
28+
"Description": "Additional super admin pages for CIPP instances (CIPP Users, SSO, Container management).",
29+
"Enabled": false,
30+
"AllowUserToggle": false,
31+
"Timers": [],
32+
"Endpoints": [
33+
"ExecCIPPUsers",
34+
"ListCIPPUsers",
35+
"ExecContainerManagement",
36+
"ListContainerLogs",
37+
"ListWorkerHealth"
38+
],
39+
"Pages": [
40+
"/cipp/advanced/super-admin/cipp-users",
41+
"/cipp/advanced/super-admin/container",
42+
"/cipp/advanced/container-logs",
43+
"/cipp/advanced/worker-health"
44+
],
45+
"Hidden": true
46+
},
47+
{
48+
"Id": "MCPServer",
49+
"Name": "MCP Server",
50+
"Description": "Model Context Protocol (MCP) server endpoint that exposes CIPP's read-only API surface as tools for AI clients. Disabled by default; enable to allow MCP access.",
51+
"Enabled": false,
52+
"AllowUserToggle": true,
53+
"Timers": [],
54+
"Endpoints": [
55+
"ExecMcp"
56+
],
57+
"Pages": [],
58+
"Hidden": false
2359
}
2460
]

0 commit comments

Comments
 (0)