Skip to content

Add MSP360 Backup and RMM integrations - #3559

Open
tonyzorin wants to merge 5 commits into
trycompai:mainfrom
tonyzorin:feat/msp360-backup-rmm-integrations
Open

Add MSP360 Backup and RMM integrations#3559
tonyzorin wants to merge 5 commits into
trycompai:mainfrom
tonyzorin:feat/msp360-backup-rmm-integrations

Conversation

@tonyzorin

@tonyzorin tonyzorin commented Aug 24, 2026

Copy link
Copy Markdown

Integration: MSP360 Backup + MSP360 RMM

Overview

  • Service: MSP360 Managed Backup and MSP360 RMM
  • Auth Type: Custom (Provider Login) / API key (RMM Bearer token)
  • Category: Monitoring / Infrastructure
  • Checks:
    • Backup: app availability, employee access (administrators), backup logs, restoration test
    • RMM: device list, secure devices, monitoring and alerting, infrastructure inventory

What This Integration Does

Two separate catalog providers so Backup Provider Login and the RMM API token are never mixed.

  • MSP360 Backup authenticates with POST /api/Provider/Login, then reads GET /api/Administrators and GET /api/Monitoring. GET /api/Users is backup customers and is not used as staff.
  • MSP360 RMM uses a Bearer token against fleet stats (/api/v1/computers/stat/{host,antivirus,summary,hardware,software}/latest). Live payloads wrap each computer as { header, data[] }; hid is normalized (braces/case) before joins.

Honest pass/fail:

  • Failed backup jobs still fail. A successful latest run older than 10 days is treated as paused / not in scope, not as a failed job.
  • No restore-family job in 90 days is a not-in-scope control pass, not a failed restore.
  • Linux/Unix hosts without antivirus are not applicable; Windows without AV still fails. BitLocker/FileVault/screen lock are unverified unless the API returns those fields.

Catalog logo is MSP360’s public BIMI SVG: https://images.msp360.com/bimi/msp360-logo.svg.

Testing

  • Connected successfully with live Backup Provider Login and a live RMM API token
  • All checks run without errors (bun test src/manifests/msp360-backup src/manifests/msp360-rmm)
  • Error handling works for missing credentials and empty host lists
  • Live RMM envelope parsing joins antivirus/hardware/software by hid

Task Mapping

  • Check: MSP360 Backup app availability → Task: App / system availability
  • Check: MSP360 Backup employee access → Task: Employee access
  • Check: MSP360 Backup logs → Task: Backup logs
  • Check: MSP360 Backup restoration test → Task: Backup restoration test
  • Check: MSP360 RMM device list → Task: Device list
  • Check: MSP360 RMM secure devices → Task: Secure devices
  • Check: MSP360 RMM monitoring and alerting → Task: Monitoring & alerting
  • Check: MSP360 RMM infrastructure inventory → Task: Infrastructure inventory

Breaking Changes

None

Notes

Community Edition has no RMM API. Do not paste Backup Provider Login into the RMM connection or an RMM token into Backup.


Summary by cubic

Adds MSP360 Backup (msp360-backup) and MSP360 RMM (msp360-rmm) as separate integrations with distinct auth, tightening backup/restore outcomes and RMM pagination to prevent false passes and missed hosts.

  • Review focus

    • Auth separation: Backup uses Provider Login (POST /api/Provider/Login) for /api/Administrators and /api/Monitoring; RMM uses a Bearer token for /api/v1/computers/stat/{host,antivirus,summary,hardware,software}/latest. Do not mix credentials.
    • Backup semantics: previously Running/Unknown were treated as paused; now they fail. A successful latest run older than 10 days is not in scope. Any restore-family job within 90 days without Success (missing or unrecognized status) now fails. Malformed monitoring payloads fail collection.
    • RMM parsing/paging: flatten { header, data[] }, normalize hids, keep paging bare-array responses until a short/repeated page, and only report truncation after probing past the cap returns new hosts; truncation findings include the effective page cap. Windows without AV fails; Linux/Unix without AV is not applicable. If RMM reports encryption or screen lock off, fail; absent fields are marked unverified.
  • Rollout

Written for commit 39577eb. Summary will update on new commits.

Review in cubic

Split Provider Login (administrators, monitoring, restore tests) from the RMM Bearer token (fleet host/antivirus/summary/inventory) so the two secrets are never mixed.
Use the official BIMI logo, parse RMM header/data envelopes, and treat paused backups, missing restore tests, and Linux-without-AV as honest not-in-scope passes.
@CLAassistant

CLAassistant commented Aug 24, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 22 files

Tip: instead of fixing issues one by one fix them all with cubic

Re-trigger cubic

Comment thread packages/integration-platform/src/manifests/msp360-rmm/client.ts Outdated
Comment thread packages/integration-platform/src/manifests/msp360-backup/types.ts
Comment thread packages/integration-platform/src/manifests/msp360-backup/monitoring.ts Outdated
Comment thread packages/integration-platform/src/manifests/msp360-backup/monitoring.ts Outdated
Stop treating Running/Unknown backups or failed restores as paused/N/A, fail encryption/screen-lock when RMM actually reports them off, and keep paging bare-array fleet stats instead of stopping after a full first page.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 14 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Fix all with cubic | Re-trigger cubic

Comment thread packages/integration-platform/src/manifests/msp360-rmm/client.ts Outdated
Comment thread packages/integration-platform/src/manifests/msp360-backup/monitoring.ts Outdated
…e cap.

A missing restore status is indeterminate, not out of scope. Truncation is only reported after a page beyond the cap still returns new hosts.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 5 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Fix all with cubic | Re-trigger cubic

Comment thread packages/integration-platform/src/manifests/msp360-rmm/client.ts Outdated
Custom maxPages tests were describing a 100-page/10k-host limit that was not in use. Also cover an unrecognized restore Status, not only a missing one.
@tonyzorin

Copy link
Copy Markdown
Author

Hi, is security review manual?

@tonyzorin
tonyzorin force-pushed the feat/msp360-backup-rmm-integrations branch from 39577eb to 154c32b Compare August 25, 2026 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants