Purpose
Keep Mosyle and Snipe-IT aligned so device operations do not have to correct inventory drift manually.
Current state
The registry now treats this as an active production workflow with a documented 30-minute cadence between 06:00 and 23:00. Script evidence narrows write-scope uncertainty: `snipeit_sync_mosyle.sh` performs Snipe-IT create/update plus Mosyle passback (`mosyle_api updatecsv`) for tvOS/macOS/iOS, while `snipeit_sync_mosyle_asset_tags.sh` is a narrower Mosyle asset-tag update path. Host/scheduler normalization now identifies `sal-01.bousd.us` + Linux cron as the primary runtime pattern, with `snipeit_sync_mosyle.sh` as the evidenced scheduled wrapper.
Next step
Publish one runbook naming the canonical scheduled wrapper on `sal-01`, approval authority for write-enabled runs, credential custodian, fallback operator, and when the asset-tags-only sidecar is allowed.
Interfaces
Inputs- Mosyle device inventory
- Snipe-IT asset records
- mapping JSON
- scheduled wrapper runs
Outputs- Snipe-IT asset updates
- Mosyle asset-tag updates
- CSV audit artifacts
Reality to Action trace
Reality IngestionContributes in this stage.
Canonical StorageNot in scope.
Automation EnginesNot in scope.
Human InterfacesContributes in this stage.
Operational AdoptionContributes in this stage.
Core workflow
TBD. Document the 5-10 steps that define the core workflow.
Data integrity and contracts
Source of truth rules
- Mosyle is canonical for MDM-side device state.
- Snipe-IT is canonical for asset inventory state and asset-tag governance where district policy defines it as the inventory record.
- The sync exists to reduce drift, not to let either side accumulate undocumented override rules.
Safe handling
- Restrict API credentials and mapping files.
- Treat CSV exports and asset-tag corrections as internal operational artifacts.
- Document approval expectations for write-enabled reconciliation runs.
Operational notes
Reliability posture
The registry now documents an active 30-minute reconciliation loop (`aether/docs/cron-example.txt`), with strong script-level evidence of write actions in both directions. Host normalization maps this cron-driven Linux workflow primarily to `sal-01.bousd.us`. Key remaining risks are approval/governance boundaries for write-enabled runs and credential custody.
Observability
- CSV artifacts in data/
- wrapper stdout/stderr
- drift symptoms in Mosyle and Snipe-IT when runs fail
Security and privacy
Device-assignment context, asset tags, and API credentials are internal operational data and should remain restricted.
Dependencies
Upstream- Mosyle API access
- Snipe-IT API access
- mapping accuracy
- scheduler ownership
Downstream- device refresh planning
- asset reconciliation workflows
Ownership
OwnersTechnology Services
UsersTechnology Services, device operations staff
Mosyle to/from Snipe-IT Asset and Tag Sync
Operational Notes
- Wrapper scripts provide the live district workflow: full reconciliation via
snipeit_sync_mosyle.sh and targeted asset-tag updates via snipeit_sync_mosyle_asset_tags.sh. - The workflow exports Mosyle devices, maps them against Snipe-IT, updates Snipe-IT assets, and can push corrected asset tags back into Mosyle.
- Runtime-path evidence in
aether/docs/cron-example.txt currently schedules snipeit_sync_mosyle.sh every 30 minutes; the asset-tags-only wrapper appears available as a sidecar/manual path. - Runtime host context: this cron-based workflow is now normalized to
sal-01.bousd.us for Linux automation. - Notification evidence is partial:
snipeit_sync_mosyle.sh sends a summary through email_template_mailer --override-email ..., but Atlas still needs the official escalation/distribution list and backup operator map. - Related component page: MDM Integration Automation (Mosyle).
Registry Alignment
- Mapped registry entry:
INT-071. - Registry clarified: this is the production workflow layer above the standalone Mosyle API component.
- Validation gaps: approved write-mode authority, escalation recipient map, and explicit primary-versus-sidecar wrapper governance remain unresolved.