Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getprimo.com/llms.txt

Use this file to discover all available pages before exploring further.

Platform compatibility

macOSWindowsLinuxiOS / iPadOSAndroid

Prerequisites

  • An existing MDM, Active Directory with GPO, or equivalent system capable of deploying packages to your devices.
On macOS, once the Fleet agent is installed silently, the MDM enrollment profile still needs to be installed by the employee. For a fully touchless experience, use Zero Touch for Apple instead.

Deploy via an existing MDM

Download the enrollment packages from Devices > Enroll devices in the Primo cockpit. Select the operating system and copy the package or download the installer. Distribute the package through your existing MDM (Jamf, Intune, SCCM, etc.) as a silent install. The agent will check in with Primo automatically once installed.

Migrate from another MDM

Enable Windows MDM Automatic Migration in Settings > MDM. Once enabled, Fleet will automatically migrate Windows devices enrolled with another MDM solution — no manual re-enrollment required.Migrating from Intune specificallyIf you have connected Intune and Entra ID, follow these steps before initiating migration:
1

Set Fleet as the external MDM in Entra

Go to your Fleet MDM URL: https://{company}.mdm.getprimo.com/settings/integrations/automatic-enrollment/windows
2

Switch automatic enrollment to Fleet in Entra

Go to entra.microsoft.com and search for Mobility. Select Intune, then set both options to None and save.
3

Migrate devices

  • One by one: enroll the device in Primo — it will appear with the status “On in another MDM”. Use the migration button in Primo to run the migration script.
  • All at once: upload the migration script to Controls > Scripts, create a policy using the detection query below, and link the script to the policy.
$EnrollmentsPath = "HKLM:\SOFTWARE\Microsoft\Enrollments\"
$Enrollments = Get-ChildItem -Path $EnrollmentsPath
$DiscoveryServerFullUrls = @("INPUT_URL_HERE")

FoEach ($Enrollment in $Enrollments) {
    $EnrollmentObject = Get-ItemProperty Registry::$Enrollment
    if ($EnrollmentObject."DiscoveryServiceFullURL" -in $DiscoveryServerFullUrls ) {
        $EnrollmentPath = $EnrollmentsPath + $EnrollmentObject."PSChildName"
        Remove-Item -Path $EnrollmentPath -Recurse
        & "C:\Windows\System32\deviceenroller.exe /c /AutoEnrollMDM"
    }
}
Detection query (replace INPUT_URL_HERE with your Fleet MDM URL):
SELECT 1 FROM registry
WHERE path LIKE 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Enrollments\%%'
AND name = "DiscoveryServiceFullURL"
AND data NOT IN ("INPUT_URL_HERE")