QB-Flow ConnectWise RMM Setup
QB-Flow NinjaOne Setup
NinjaOne Setup
To get started with automating QuickBooks updates in NinjaOne (formerly NinjaRMM), create a PowerShell automation in the Script Library and run it against the Windows devices you want to update. QB-Flow can be deployed silently through NinjaOne by downloading the QB-Flow executable, passing your Customer ID, and writing a local deployment log to the endpoint.
Get Customer ID
Get your Customer ID that was emailed to you when you subscribed to QB-Flow. Your Customer ID will look similar to: cus_XXXXXXXXXXXXXXXX
Replace Your_Customer_ID in the script below with your assigned Customer ID.
Create the NinjaOne Automation
In NinjaOne:
- Go to Administration > Library > Automation.
- Click Add automation > New Script.
- Fill in the script details:
- Name:
QB-Flow Deployment - Description: (optional) "Automated QuickBooks Desktop updates via QB-Flow"
- Language: PowerShell
- Operating System: Windows
- Architecture: All
- Run As: System
- Name:
- Paste the script below into the script body.
- Click Save in the top right.
- Run it against a small test group before deploying broadly.
PowerShell Deployment Script
# QB-Flow Deployment for NinjaOne
# Run as a NinjaOne PowerShell automation (Run As: System)
$ErrorActionPreference = "Stop"
# Enter your Customer ID, which can be found in your Welcome Email after subscribing to QB-Flow
$CustomerId = "Your_Customer_ID"
# URL to download the QB-Flow executable
$Url = "https://flowdevsblob.blob.core.windows.net/qbflow/QB-flow.exe"
# Destination path for the QB-Flow executable
$Dest = "C:\Windows\Temp\qb-flow.exe"
# Log file location
$Log = "C:\Windows\Temp\qbflow_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
function Write-Log {
param([string]$Message)
$Line = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') $Message"
Write-Output $Line
Add-Content -Path $Log -Value $Line
}
try {
Write-Log "Starting QB-Flow deployment..."
Write-Log "Customer ID: $CustomerId"
Write-Log "Download URL: $Url"
Write-Log "Destination: $Dest"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
if (Test-Path $Dest) {
Write-Log "Removing existing QB-Flow executable at $Dest"
Remove-Item $Dest -Force
}
Write-Log "Downloading QB-Flow executable..."
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($Url, $Dest)
if (!(Test-Path $Dest)) {
throw "Download failed. File was not found at $Dest"
}
Write-Log "Download complete."
Write-Log "Executing QB-Flow..."
Write-Log "Command: $Dest /customerid $CustomerId"
$Output = & $Dest "/customerid" $CustomerId 2>&1
$ExitCode = $LASTEXITCODE
$Output | ForEach-Object { Write-Log $_ }
Write-Log "QB-Flow exit code: $ExitCode"
if ($ExitCode -ne 0) {
throw "QB-Flow failed with exit code $ExitCode"
}
Write-Log "QB-Flow deployment complete."
exit 0
}
catch {
Write-Log "ERROR: $($_.Exception.Message)"
exit 1
}Run the Automation
- Go to Devices in NinjaOne.
- Select the devices you want to run QB-Flow on.
- Click Run > Run Automation > Script.
- Choose the
QB-Flow Deploymentscript. - Confirm Run As: System and click Run Now (or schedule it).
- Review the output in the device's Activities log.
For recurring runs, attach the script to a Scheduled Automation or a Policy with a maintenance window that matches your environment.
Deployment Notes
We recommend running the automation against 1 to 3 test endpoints first before deploying to all devices.
The deployment log is written to: C:\Windows\Temp\qbflow_[timestamp].log
Example: C:\Windows\Temp\qbflow_20260505_143000.log
If the deployment fails, review the log file on the endpoint and confirm that:
- The endpoint has internet access
- The NinjaOne agent allowed the script to run as System
- The endpoint can download from the FlowDevs Azure Blob URL
- Endpoint security or application control is not blocking execution from
C:\Windows\Temp - The correct Customer ID was entered in the script
NinjaOne-specific notes
- The NinjaOne agent does not support custom scripts that issue reboots. If you want to reboot endpoints after QB-Flow runs, use NinjaOne's native reboot script as a follow-up step rather than putting a reboot command inside the QB-Flow script.
- NinjaOne does not allow the following characters in script parameters:
& | ; $ > < ` !. The QB-Flow script above avoids parameters and uses hardcoded variables instead, which sidesteps this restriction. - NinjaOne's local scripting working directory is
C:\ProgramData\NinjaRMMAgent\scriptingand gets cleared after a run. QB-Flow's own log lives inC:\Windows\Temp\, which is what you want to check for verification.
Verifying a Successful Run
QB-Flow doesn't pop a "success" dialog when it finishes. Instead, there are two reliable signals you can check on the endpoint:
- The log file exists. QB-Flow writes a log to
C:\Windows\Temp\qbflow_<yyyyMMdd_HHmmss>.logon every run. If a recent log is there, it ran. - The QuickBooks installer folder is empty (or no longer contains the latest .msi / .cab files). This is intentional. The QuickBooks updater uses the presence of those files as its trigger to apply an update. QB-Flow removes them after applying the release so Intuit can't re-trigger the same update outside your scheduled window.
Do not open the QuickBooks Update window to verify a run
The QuickBooks Update window inside QuickBooks Desktop is not a passive status screen. Simply opening it can re-enable Intuit's automatic update service in the background, even if you never click "Update Now." That's the exact behavior QB-Flow is built to prevent.
If you want to confirm QB-Flow ran, check the log file. That is the source of truth, not the in-app Update window.
Quick verification checklist
- Recent log present at
C:\Windows\Temp\qbflow_*.log✔ - QuickBooks installer folder empty or pruned of latest installers ✔
- Nobody opened the QuickBooks Update window during or after the run ✔
If the log is missing entirely, the script never executed. The usual culprits are AV blocking the signed executable, or a firewall blocking the download URL: https://flowdevsblob.blob.core.windows.net/qbflow/QB-flow.exe.
Optional Reboot
A reboot is not always required for QB-Flow deployment, but you may schedule one through NinjaOne after the automation runs if that matches your normal patching or maintenance process. Use NinjaOne's native reboot script (the agent doesn't allow custom scripts to issue reboots). For larger rollouts, schedule the QB-Flow run and the reboot together during a maintenance window.
New Client Information
Looking for detailed information about Customer IDs, pricing, and billing?
