PRODUCTION · DEVICE FLEET MANAGEMENT

One inventory for every device we own.

Device Inventory merges NinjaOne and Intune into a single searchable fleet view, tracks each machine's deployment status through its lifecycle, and runs the offboarding return workflow end-to-end — Shippo label, Slack approval, tracking, and reminders until the laptop's back.

NinjaOne + Intune Microsoft Entra SSO GitHub ↗
COMPONENTS
01 · Sync Engine
🔄
Internal · Railway
NinjaOne + Intune merge

Every sync cycle pulls all devices from NinjaOne and Intune into staging tables, then merges them into one devices table keyed by normalized serial number. Warranty status is computed from NinjaOne's warranty field, and Lenovo machines get spec-sheet enrichment from PSREF. Deployment status is a separate, protected field — the merge job never overwrites it, so IT's manual tracking survives every re-sync.

Cadence Configurable cron, default every 6 hours
Sources NinjaOne RMM API · Microsoft Graph (Intune)
Key Normalized serial number
Enrichment Lenovo PSREF spec lookup, warranty computation
Internal service · scheduled job
02 · Fleet Dashboard
🔍
Internal · Entra SSO
Searchable device dashboard

A dark/light dashboard gated behind Microsoft Entra sign-in. Full-text search across hostname, user, and serial number, filterable by deployment and warranty status, with a detail modal showing every spec — CPU, RAM, storage, Lenovo warranty window — plus the raw NinjaOne record for troubleshooting. A JSON API backs every view.

Auth Microsoft Entra SSO (same tenant as Intune)
Search Full-text — hostname, user, serial, model
API GET /api/devices, GET /api/devices/:serial, PATCH deployment-status
Health GET /health + recent sync run log
Internal · Entra-gated
03 · Return Workflow
📦
Internal · Shippo + Slack
Automated device returns

An HRIS webhook triggers the whole return flow: match the departing employee to their device, quote a return-shipping rate through Shippo, post a Slack approval request, and — once approved — buy the label and email it straight to the employee's personal inbox. A daily poll tracks the shipment, escalates reminder emails if the box sits unsent, and flags the device for wipe once it's back.

Trigger HRIS offboarding webhook
Approval Slack approve/deny, cost + carrier shown
Shipping Shippo rate quote → label purchase → tracking
Reminders Gentle → firm → urgent, escalating by day
Internal · webhook-triggered
Runtime
Node.js ≥20 Express TypeScript
Data Sources
NinjaOne API Microsoft Graph (Intune) Lenovo PSREF
Integrations
Shippo Slack Microsoft Graph Mail
Infrastructure
Railway PostgreSQL Microsoft Entra SSO

Device Inventory is an internal system at YourPolicy — not a public product. Built on Express and Postgres, deployed on Railway, syncing live from NinjaOne and Intune.