Skip to content

[pull] dev from KelvinTegelaar:dev - #140

Open
pull[bot] wants to merge 4713 commits into
BNWEIN:devfrom
KelvinTegelaar:dev
Open

pull[bot] wants to merge 4713 commits into
BNWEIN:devfrom
KelvinTegelaar:dev

Conversation

@pull

@pull pull Bot commented Jun 27, 2025 •

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.2)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull Bot locked and limited conversation to collaborators Jun 27, 2025
@pull pull Bot added the ⤵️ pull label Jun 27, 2025
- an unfinished self-service password reset counts as a failed try, not activity
- a failed interactive sign-in that got past the password (MFA or Conditional Access stopped it) scores against an address with no successful sign-in
- investigators can mark an address Suspicious in the IP review

Synced from CyberDrain/CIPP@c678acf
- read the user's scheduled travel policies (countries and dates) into the case
- a sign-in or action from a trip country during the trip is not foreign or a new country
- the rest of the address evidence is still judged

Synced from CyberDrain/CIPP@637dcf7
…date-20260929

chore(docs): refresh published docs page snapshot (2026-09-29)

Synced from CyberDrain/CIPP@63c1abd
Test for transient error codes and do not raise an alert if one is found

Synced from CyberDrain/CIPP@b522aad
…tes as Error

Standards that write on every run (checkBeforeRun: false) raised a Remediated alert on
every scheduled cycle even when nothing changed. The alert now fires only on the
transition out of a non-compliant state, matching how Drift alerts already behave.

A remediation write that threw left the row at its graded Drift status, so the alignment
page showed Drift with an empty diff and expected equal to current. The row now persists
as Error, a pending Denied status survives the failure, and the failure log carries the
exception detail so a 403 response body is no longer lost. The alignment page gets an
error colour for that status and offers no Accept/Deny action on it.

Synced from CyberDrain/CIPP@f986260
…'s tenants

- Get-CIPPDbItem reads only a restricted caller's tenant partitions for allTenants; -ByTenant groups rows per managed tenant
- Report helpers hand each tenant its rows instead of reading every row to find tenants and re-reading each tenant
- Move the inactive users helper into Get-CIPPInactiveUsersReport
- Add module-boundary tests for the request tenant scope

Synced from CyberDrain/CIPP@1c1ffd7
The plan-loss helper built its empty target set inline in an if expression, which
PowerShell enumerates to nothing, so a "Remove license" row hit a null set and the
whole report returned 500. The set is now assigned before the branch. The downgrade
call site also passed the user's disabled plans as enumerated strings instead of the
set, so only the first disabled plan was honoured.

Synced from CyberDrain/CIPP@2fea942
- index licensed users by SKU and look up plan names once instead of scanning per license and plan
- project wide cache types and compliance statuses to the fields the sync reads
- build CVE rows from directly read device names in bulk and write the CSV as UTF-8
- serialise the cached device with CippJson.ToJson and format compliance dates without Get-Date
- stop writing the unread user scratch tables
- CippJson: match ConvertFrom-Json date parsing, write AutomationNull as null, add ReadStringField

Synced from CyberDrain/CIPP@8126ff9
- Look up services by name from one catalogue read instead of fetching it for every licence of every tenant
- Look up SKU display names from a hashtable instead of scanning the conversion table per licence
- Skip the sync when the catalogue cannot be read rather than creating duplicate services

Synced from CyberDrain/CIPP@5b968d1
- NinjaOne: check the token once before queuing the daily, catch-up or on-demand per-tenant sync, and queue nothing if it fails
- Hudu: check api_info at the start of each tenant sync and stop with the Hudu error instead of failing every call
- Hudu integration test: treat the 0.0.0.0 fallback version as a failed connection and show the error

Synced from CyberDrain/CIPP@24d0837
- One sequential orchestration per investigation: a Push-BECRun job per phase, run in order on one worker, each within its own timeout
- Phases hand data forward through the BecRunState table; a failed phase is flagged on the case and the later phases still run
- Containment can run while an investigation is in progress and is recorded on that case
- Users list keeps one bulk-capable BEC Remediation action

Synced from CyberDrain/CIPP@9932a74
Get-CIPPBaseline built a stage's standards via member access on the delta rows, which
yields a lone null when the stage is empty. The editor then crashed on reopening the
baseline. The list is now enumerated explicitly so an empty stage is an empty array.

Synced from CyberDrain/CIPP@b501d55
github-actions Bot and others added 30 commits October 16, 2026 14:19
Short names like [List[string]] only resolve where `using namespace` is
in effect, which the compiled modules do not guarantee, so they fail at
runtime on the path that hits them. Fix the last one and add a static
test that fails on any short generic type name in CIPP-owned modules.

Synced from CyberDrain/CIPP@8158983
- mailbox permission, calendar and rules stores skip the write when a batch returned no result
- calendar folder cache leaves out UPNs that are not valid table keys

Synced from CyberDrain/CIPP@927288a
…nges

Detect secrets, certificates, permission grants, owner adds, and directory
role membership when initiated by an application or a user, with KeyDescription
diffing so credential alerts only fire on newly added Verify keys.

Synced from CyberDrain/CIPP@c17c9d3
Keep backend and frontend copies in sync. Backend VendorTenantList.json is
additive for upcoming consumers; existing offboarding still uses the frontend list.

Synced from CyberDrain/CIPP@9f5f17e
…t log

- PIM assignments, activations and removals are logged as plain role operations by MS-PIM; role setting changes are not logged

Synced from CyberDrain/CIPP@4f74579
Write-LogMessage calls in New-CIPPRestoreTask previously included the plaintext temporary password, duplicated from the task results.

Also fixes a missing -tenant parameter on one of the log calls.

Synced from CyberDrain/CIPP@b12e800
Normalise and validate the ClientId as a GUID before the lookup, rejecting invalid values with a 400. Adds tests covering case-insensitive matching and invalid ClientId rejection.

Synced from CyberDrain/CIPP@43fd56a
- Tests run detects tenants with data from each tenant's Users count row instead of scanning every count row
- Stats timer reads only the count types it reports, one key per tenant per type

Synced from CyberDrain/CIPP@41de836
- ApplyTZOffset on in every appsettings, jitter shorter than each timer's slot gap, no jitter on timers that must fire when due
- Dependent timers keep their order on every site, and the update check stays inside its window

Synced from CyberDrain/CIPP@1f60f29
…Sites filter

- select isPersonalSite in the OneDrive root permissions and long paths site lists so the filter returns sites
- read the SharePoint admin site list in 5,000-row pages with only the fields used
- request only the read fields from getAllSites, the channel site lookup and the library lookup
- leave AutoMapUrl empty for sites without a document library

Synced from CyberDrain/CIPP@2540233
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant