Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
334f5d3
POST Retry
KelvinTegelaar Feb 13, 2026
2647486
first go at retry logic
KelvinTegelaar Feb 13, 2026
cffa9bd
retry logic
KelvinTegelaar Feb 13, 2026
f164421
universal search
Feb 13, 2026
cb04385
fix permission
JohnDuprey Feb 13, 2026
8cd1a81
chore: add .claude to .gitignore
kris6673 Feb 13, 2026
72260b3
fix: move AffectedDevices down in alert
kris6673 Feb 13, 2026
457f13d
refactor: change property type of affectedDevices in Invoke-ListDefen…
kris6673 Feb 13, 2026
eecda8b
feat: add Invoke-ExecSyncDEP function for DEP sync
kris6673 Feb 13, 2026
5d5492e
chore: remove some useless logging and an unneeded null check
kris6673 Feb 13, 2026
ac2c0e1
Import: dedupe templates and return status
JohnDuprey Feb 13, 2026
454154c
fix(reusable-settings): better normalize reusable setting metadata
MWG-Logan Feb 13, 2026
c6af4cf
Merge pull request #1826 from BezaluLLC/feature/reusable-settings-fixes
KelvinTegelaar Feb 13, 2026
4cad648
feat: add assignment filter handling in Invoke-AddPolicy
kris6673 Feb 13, 2026
59b3b0b
Merge pull request #1824 from kris6673/vuln-go-brrr
KelvinTegelaar Feb 13, 2026
0f5efdc
Update Invoke-AddUser.ps1
Zacgoose Feb 14, 2026
9542e72
fix: accidental pipeline output in New-CIPPCAPolicy when creating nam…
kris6673 Feb 14, 2026
80951c9
Merge pull request #1829 from kris6673/issue5368
KelvinTegelaar Feb 14, 2026
9faef8a
Merge pull request #1828 from Zacgoose/fix-user-creation
KelvinTegelaar Feb 14, 2026
2453809
fixes #5373
KelvinTegelaar Feb 14, 2026
74ae57a
Merge pull request #1825 from kris6673/DEP-sync
KelvinTegelaar Feb 14, 2026
bc029d3
Merge pull request #1827 from kris6673/issue5277
KelvinTegelaar Feb 14, 2026
a35798a
updated domain scores
KelvinTegelaar Feb 14, 2026
80e9bc1
fix: logging, appease the great PSScriptAnalyser and casing
kris6673 Feb 14, 2026
476c061
fix: sort licensed users and groups by display name
kris6673 Feb 14, 2026
feb8e7f
Add new alert
KelvinTegelaar Feb 14, 2026
922c744
alert add
KelvinTegelaar Feb 14, 2026
403588c
increase threshold for exchange missing roles
JohnDuprey Feb 14, 2026
2b4d555
Sort quarantine requests and log errors
JohnDuprey Feb 14, 2026
ccd9023
Use Write-LogMessage for scripted alert errors
JohnDuprey Feb 14, 2026
fd029dd
Use Graph bulk requests for admin password checks
JohnDuprey Feb 14, 2026
b81ecbb
Add permission cache sync and Append support
JohnDuprey Feb 15, 2026
7dfd70d
Use cached domains and adjust orchestrator schedule
JohnDuprey Feb 15, 2026
a3b63a3
fixed #5275
KelvinTegelaar Feb 15, 2026
63316dd
Add group membership change alert
KelvinTegelaar Feb 15, 2026
235ba76
Merge pull request #1830 from kris6673/isle4
KelvinTegelaar Feb 15, 2026
31f1773
DetectedApps
Feb 15, 2026
70a2eba
add db cache types
Feb 15, 2026
12ec2d5
Add retries for CA policies.
KelvinTegelaar Feb 16, 2026
1767fa4
add groups support for universal search
Feb 16, 2026
6b87f95
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Feb 16, 2026
eab2261
add top
KelvinTegelaar Feb 16, 2026
1e286a2
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Feb 16, 2026
3d43ac1
add too many requests for GET logic.
KelvinTegelaar Feb 16, 2026
e49d430
remove old measure tasks
KelvinTegelaar Feb 16, 2026
ab34d8d
fixes to CA for timeouts and better handling of standards
KelvinTegelaar Feb 16, 2026
14ece32
locationdependancy
KelvinTegelaar Feb 16, 2026
f2367f9
removes troubleshooting lines
KelvinTegelaar Feb 16, 2026
24ac8f8
POSt request retry logic improvements
KelvinTegelaar Feb 16, 2026
c2448ff
add log retention logic
Feb 16, 2026
2d71307
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Feb 16, 2026
82558d2
No batching on old log cleanup
Feb 16, 2026
4252f26
add member for template
KelvinTegelaar Feb 16, 2026
9648745
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Feb 16, 2026
d1aa064
use cache to preload locations
KelvinTegelaar Feb 16, 2026
b4b9d64
Minor standards optimization by moving license checks
Feb 16, 2026
a2c02ac
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Feb 16, 2026
df29e37
Duplicate API call in CIPPStandardSafeAttachmentPolicy
Feb 16, 2026
900aa1d
added rate limit capture for environments without retry header
KelvinTegelaar Feb 16, 2026
91890d3
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Feb 16, 2026
4afa274
Move NamedLocations CIPPDbRequest outside of the loop
Feb 16, 2026
b39170f
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Feb 16, 2026
970454c
Move helper functions outside of New-CIPPCAPolicy
Feb 16, 2026
4260885
updated CATemplates
KelvinTegelaar Feb 16, 2026
9a84cdc
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Feb 16, 2026
44d6eb8
Refine mailbox matching and contact filter
JohnDuprey Feb 16, 2026
9aa02ea
Guard against null grantControls before removal
JohnDuprey Feb 16, 2026
8e7cccb
Update Invoke-CIPPStandardPasswordExpireDisabled.ps1
TecharyJames Feb 17, 2026
11e8a48
Update Invoke-CIPPStandardPasswordExpireDisabled.ps1
TecharyJames Feb 17, 2026
677eb18
Merge pull request #2 from TecharyJames/TecharyJames-patch-1
TecharyJames Feb 17, 2026
4f3c610
Refactor domain ID handling for password expiration check
TecharyJames Feb 17, 2026
79e9eb6
Change DomainIds initialization to array format
TecharyJames Feb 17, 2026
8c94080
Merge pull request #1832 from TecharyJames/feature/exclude-subdomains…
KelvinTegelaar Feb 17, 2026
c77e8b8
remove backtics
KelvinTegelaar Feb 17, 2026
0b9ea4c
add OFFICE_BUSINESS license sku for standards targeting branding
JohnDuprey Feb 17, 2026
2ff0251
Improve GUID extraction for template lookups
JohnDuprey Feb 17, 2026
fda343e
Handle optional GDAP roles and batch group adds
JohnDuprey Feb 17, 2026
f34126f
Ignore deleted accessAssignments & add optional roles
JohnDuprey Feb 17, 2026
d95fa06
Use Graph bulk requests for JIT admin listing
JohnDuprey Feb 17, 2026
226cb24
Make user cache query dynamic based on licenses
JohnDuprey Feb 17, 2026
2c3bc5b
Fetch full managedDevices; improve NinjaOne sync
JohnDuprey Feb 17, 2026
c9afb7e
Orchestrator offboarding, task alerts, and fixes
JohnDuprey Feb 18, 2026
646ed28
Enforce tenant access in application entrypoints
JohnDuprey Feb 18, 2026
5ca0443
Enable servicePrincipalLockConfiguration in SAM
JohnDuprey Feb 18, 2026
7473508
Merge pull request #1823 from isgq-github01/dev
KelvinTegelaar Feb 19, 2026
68a5d08
feat: enhance SendFromAlias standard to be able to disable too
kris6673 Feb 19, 2026
d38391f
Merge pull request #1833 from kris6673/issue5399
KelvinTegelaar Feb 19, 2026
0452567
Add app lock config
JohnDuprey Feb 19, 2026
4447d60
Add app management policy helper
JohnDuprey Feb 19, 2026
49d4bcf
Handle errors from Update-AppManagementPolicy
JohnDuprey Feb 19, 2026
55ec43f
Update app management policy handling
JohnDuprey Feb 19, 2026
2c39eae
Add try/catch and logging for Autopilot assignment
JohnDuprey Feb 19, 2026
9fd4fc7
fix autopilot standard comparisons
JohnDuprey Feb 19, 2026
ac075b2
add default empty strings for better comparison
JohnDuprey Feb 19, 2026
d38f8af
return error if blob upload fails
JohnDuprey Feb 19, 2026
3aebafb
Prefer latest Intune policy when filtering by name
JohnDuprey Feb 19, 2026
46ec3ec
Validate LitigationHoldDuration input
JohnDuprey Feb 19, 2026
dc0de25
fix casing for json comparison
JohnDuprey Feb 20, 2026
115ab34
Group PIM cache items under P2 section
JohnDuprey Feb 20, 2026
7a33197
fix json body for webhooks
JohnDuprey Feb 20, 2026
4fef647
remove logging
JohnDuprey Feb 20, 2026
56f7e9b
endREceivedDate
KelvinTegelaar Feb 20, 2026
3cfb562
concept gdap trace
Feb 20, 2026
e228a4e
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Feb 20, 2026
d2aecb2
minor update to fix grantControls
KelvinTegelaar Feb 20, 2026
25d3254
UploadApplication changes
Feb 20, 2026
bf9fbc5
remove text identitfier in case its multiple errors
KelvinTegelaar Feb 20, 2026
c11ea82
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Feb 20, 2026
b0c42a2
small changes to allow CIPPW32ScriptApplications.
KelvinTegelaar Feb 20, 2026
ccc337b
add default empty strings
JohnDuprey Feb 20, 2026
ac2d462
custom apps
KelvinTegelaar Feb 20, 2026
1ecfa63
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Feb 20, 2026
fb7a409
version up
KelvinTegelaar Feb 20, 2026
d37f630
Support missing CIDR prefix and dedupe maxBits calc
JohnDuprey Feb 20, 2026
f674c92
Normalize default tenant groups JSON
JohnDuprey Feb 20, 2026
b6e89c2
Add log entry to Invoke-AddAlert
JohnDuprey Feb 20, 2026
5f240c1
fix quarantine return
JohnDuprey Feb 20, 2026
e9a01a9
Add cleanup rule and use OData timestamp filters
JohnDuprey Feb 21, 2026
80c4477
cleanup logging
JohnDuprey Feb 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ yarn.lock

# Cursor IDE
.cursor/rules
.claude

# Ignore all root PowerShell files except profile.ps1
/*.ps1
Expand Down
332 changes: 332 additions & 0 deletions CIPPDBCacheTypes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,332 @@
[
{
"type": "Users",
"friendlyName": "Users",
"description": "All Azure AD users with sign-in activity"
},
{
"type": "Groups",
"friendlyName": "Groups",
"description": "All Azure AD groups with members"
},
{
"type": "Guests",
"friendlyName": "Guest Users",
"description": "All guest users in the tenant"
},
{
"type": "ServicePrincipals",
"friendlyName": "Service Principals",
"description": "All service principals (applications)"
},
{
"type": "Apps",
"friendlyName": "Application Registrations",
"description": "All application registrations with owners"
},
{
"type": "Devices",
"friendlyName": "Azure AD Devices",
"description": "All Azure AD registered devices"
},
{
"type": "Organization",
"friendlyName": "Organization",
"description": "Tenant organization information"
},
{
"type": "Roles",
"friendlyName": "Directory Roles",
"description": "All Azure AD directory roles with members"
},
{
"type": "AdminConsentRequestPolicy",
"friendlyName": "Admin Consent Request Policy",
"description": "Admin consent request policy settings"
},
{
"type": "AuthorizationPolicy",
"friendlyName": "Authorization Policy",
"description": "Tenant authorization policy"
},
{
"type": "AuthenticationMethodsPolicy",
"friendlyName": "Authentication Methods Policy",
"description": "Authentication methods policy configuration"
},
{
"type": "DeviceSettings",
"friendlyName": "Device Settings",
"description": "Device management settings"
},
{
"type": "DirectoryRecommendations",
"friendlyName": "Directory Recommendations",
"description": "Azure AD directory recommendations"
},
{
"type": "CrossTenantAccessPolicy",
"friendlyName": "Cross-Tenant Access Policy",
"description": "Cross-tenant access policy configuration"
},
{
"type": "DefaultAppManagementPolicy",
"friendlyName": "Default App Management Policy",
"description": "Default application management policy"
},
{
"type": "Settings",
"friendlyName": "Directory Settings",
"description": "Directory settings configuration"
},
{
"type": "SecureScore",
"friendlyName": "Secure Score",
"description": "Microsoft Secure Score and control profiles"
},
{
"type": "PIMSettings",
"friendlyName": "PIM Settings",
"description": "Privileged Identity Management settings and assignments"
},
{
"type": "Domains",
"friendlyName": "Domains",
"description": "All verified and unverified domains"
},
{
"type": "RoleEligibilitySchedules",
"friendlyName": "Role Eligibility Schedules",
"description": "PIM role eligibility schedules"
},
{
"type": "RoleManagementPolicies",
"friendlyName": "Role Management Policies",
"description": "Role management policies"
},
{
"type": "RoleAssignmentScheduleInstances",
"friendlyName": "Role Assignment Schedule Instances",
"description": "Active role assignment instances"
},
{
"type": "B2BManagementPolicy",
"friendlyName": "B2B Management Policy",
"description": "B2B collaboration policy settings"
},
{
"type": "AuthenticationFlowsPolicy",
"friendlyName": "Authentication Flows Policy",
"description": "Authentication flows policy configuration"
},
{
"type": "DeviceRegistrationPolicy",
"friendlyName": "Device Registration Policy",
"description": "Device registration policy settings"
},
{
"type": "CredentialUserRegistrationDetails",
"friendlyName": "Credential User Registration Details",
"description": "User credential registration details"
},
{
"type": "UserRegistrationDetails",
"friendlyName": "User Registration Details",
"description": "MFA registration details for users"
},
{
"type": "OAuth2PermissionGrants",
"friendlyName": "OAuth2 Permission Grants",
"description": "OAuth2 permission grants"
},
{
"type": "AppRoleAssignments",
"friendlyName": "App Role Assignments",
"description": "Application role assignments"
},
{
"type": "LicenseOverview",
"friendlyName": "License Overview",
"description": "License usage overview"
},
{
"type": "MFAState",
"friendlyName": "MFA State",
"description": "Multi-factor authentication state"
},
{
"type": "ExoAntiPhishPolicies",
"friendlyName": "Exchange Anti-Phish Policies",
"description": "Exchange Online anti-phishing policies"
},
{
"type": "ExoMalwareFilterPolicies",
"friendlyName": "Exchange Malware Filter Policies",
"description": "Exchange Online malware filter policies"
},
{
"type": "ExoSafeLinksPolicies",
"friendlyName": "Exchange Safe Links Policies",
"description": "Exchange Online Safe Links policies"
},
{
"type": "ExoSafeAttachmentPolicies",
"friendlyName": "Exchange Safe Attachment Policies",
"description": "Exchange Online Safe Attachment policies"
},
{
"type": "ExoTransportRules",
"friendlyName": "Exchange Transport Rules",
"description": "Exchange Online transport rules"
},
{
"type": "ExoDkimSigningConfig",
"friendlyName": "Exchange DKIM Signing Config",
"description": "Exchange Online DKIM signing configuration"
},
{
"type": "ExoOrganizationConfig",
"friendlyName": "Exchange Organization Config",
"description": "Exchange Online organization configuration"
},
{
"type": "ExoAcceptedDomains",
"friendlyName": "Exchange Accepted Domains",
"description": "Exchange Online accepted domains"
},
{
"type": "ExoHostedContentFilterPolicy",
"friendlyName": "Exchange Hosted Content Filter Policy",
"description": "Exchange Online hosted content filter policy"
},
{
"type": "ExoHostedOutboundSpamFilterPolicy",
"friendlyName": "Exchange Hosted Outbound Spam Filter Policy",
"description": "Exchange Online hosted outbound spam filter policy"
},
{
"type": "ExoAntiPhishPolicy",
"friendlyName": "Exchange Anti-Phish Policy",
"description": "Exchange Online anti-phishing policy"
},
{
"type": "ExoSafeLinksPolicy",
"friendlyName": "Exchange Safe Links Policy",
"description": "Exchange Online Safe Links policy"
},
{
"type": "ExoSafeAttachmentPolicy",
"friendlyName": "Exchange Safe Attachment Policy",
"description": "Exchange Online Safe Attachment policy"
},
{
"type": "ExoMalwareFilterPolicy",
"friendlyName": "Exchange Malware Filter Policy",
"description": "Exchange Online malware filter policy"
},
{
"type": "ExoAtpPolicyForO365",
"friendlyName": "Exchange ATP Policy for O365",
"description": "Exchange Online Advanced Threat Protection policy"
},
{
"type": "ExoQuarantinePolicy",
"friendlyName": "Exchange Quarantine Policy",
"description": "Exchange Online quarantine policy"
},
{
"type": "ExoRemoteDomain",
"friendlyName": "Exchange Remote Domain",
"description": "Exchange Online remote domain configuration"
},
{
"type": "ExoSharingPolicy",
"friendlyName": "Exchange Sharing Policy",
"description": "Exchange Online sharing policies"
},
{
"type": "ExoAdminAuditLogConfig",
"friendlyName": "Exchange Admin Audit Log Config",
"description": "Exchange Online admin audit log configuration"
},
{
"type": "ExoPresetSecurityPolicy",
"friendlyName": "Exchange Preset Security Policy",
"description": "Exchange Online preset security policy"
},
{
"type": "ExoTenantAllowBlockList",
"friendlyName": "Exchange Tenant Allow/Block List",
"description": "Exchange Online tenant allow/block list"
},
{
"type": "Mailboxes",
"friendlyName": "Mailboxes",
"description": "All Exchange Online mailboxes"
},
{
"type": "CASMailboxes",
"friendlyName": "CAS Mailboxes",
"description": "Client Access Server mailbox settings"
},
{
"type": "MailboxUsage",
"friendlyName": "Mailbox Usage",
"description": "Exchange Online mailbox usage statistics"
},
{
"type": "OneDriveUsage",
"friendlyName": "OneDrive Usage",
"description": "OneDrive usage statistics"
},
{
"type": "ConditionalAccessPolicies",
"friendlyName": "Conditional Access Policies",
"description": "Azure AD Conditional Access policies"
},
{
"type": "RiskyUsers",
"friendlyName": "Risky Users",
"description": "Users flagged as risky by Identity Protection"
},
{
"type": "RiskyServicePrincipals",
"friendlyName": "Risky Service Principals",
"description": "Service principals flagged as risky by Identity Protection"
},
{
"type": "ServicePrincipalRiskDetections",
"friendlyName": "Service Principal Risk Detections",
"description": "Risk detections for service principals"
},
{
"type": "RiskDetections",
"friendlyName": "Risk Detections",
"description": "Identity Protection risk detections"
},
{
"type": "ManagedDevices",
"friendlyName": "Managed Devices",
"description": "Intune managed devices"
},
{
"type": "IntunePolicies",
"friendlyName": "Intune Policies",
"description": "All Intune policies including compliance, configuration, and app protection"
},
{
"type": "ManagedDeviceEncryptionStates",
"friendlyName": "Managed Device Encryption States",
"description": "BitLocker encryption states for managed devices"
},
{
"type": "IntuneAppProtectionPolicies",
"friendlyName": "Intune App Protection Policies",
"description": "Intune app protection policies for iOS and Android"
},
{
"type": "DetectedApps",
"friendlyName": "Detected Apps",
"description": "All detected applications with devices where each app is installed"
}
]
17 changes: 13 additions & 4 deletions CIPPTimers.json
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@
"Id": "c2ebde3f-fa35-45aa-8a6b-91c835050b79",
"Command": "Start-DomainOrchestrator",
"Description": "Orchestrator to process domains",
"Cron": "0 0 0 * * *",
"Priority": 10,
"Cron": "0 30 3 * * *",
"Priority": 22,
"RunOnProcessor": true
},
{
Expand Down Expand Up @@ -223,12 +223,21 @@
"RunOnProcessor": true,
"IsSystem": true
},
{
"Id": "a9e8d7c6-b5a4-3f2e-1d0c-9b8a7f6e5d4c",
"Command": "Start-LogRetentionCleanup",
"Description": "Timer to cleanup old logs based on retention policy",
"Cron": "0 30 2 * * *",
"Priority": 22,
"RunOnProcessor": true,
"IsSystem": true
},
{
"Id": "9a7f8e6d-5c4b-3a2d-1e0f-9b8c7d6e5f4a",
"Command": "Start-CIPPDBCacheOrchestrator",
"Description": "Timer to collect and cache Microsoft Graph data for all tenants",
"Cron": "0 0 3 * * *",
"Priority": 22,
"Priority": 23,
"RunOnProcessor": true,
"IsSystem": true
},
Expand All @@ -237,7 +246,7 @@
"Command": "Start-TestsOrchestrator",
"Description": "Timer to run security and compliance tests against cached data",
"Cron": "0 0 4 * * *",
"Priority": 23,
"Priority": 24,
"RunOnProcessor": true,
"IsSystem": true
}
Expand Down
Loading