GO Reports produces the bandwidth reports you would otherwise click through by hand. Add your sites once; after that it signs in, runs each report, checks the figures against the line's capacity, files the PDFs and drafts the email. Two report systems live in the one window — Bell (FortiAnalyzer SD-WAN) and Telus (GOnet bandwidth) — and the switch in the header tints everything blue or purple so it is always obvious which one you are pointed at.
Get it
Latest release v1.2.2
Scrolling behaves: a touchpad’s small movements add up instead of each one jumping a full notch, and dragging the scrollbar no longer leaves text trailing behind the page.
Shared internally, not from this page.
The zip and the installer live in your team's SharePoint folder — ask whoever pointed you here for the link. Everything below applies whichever one you were given.
Two forms of the same app. The installer (GOReportsSetup.exe) is the easy one — it unpacks the app and makes your shortcuts. The portable zip is for locked-down machines where you can't run an installer: unblock it, extract it, and open GO Reports.exe in the folder. No Python, no browser to download — the app carries its own.
GO Reports.zip → Properties → tick Unblock → OK, then extract. Windows tags downloads as untrusted and passes that tag to all ~1,800 files inside, which triggers security warnings and can stop the app opening at all. Doing it first takes a second; afterwards means doing it file by file.- Extract somewhere local — Desktop or Documents. Extracting into a OneDrive-synced folder uploads all ~1,800 files and syncs them back down to everyone sharing that library.
- The
_internalfolder beside the .exe is part of the app. Keep them together; it won't start without it. - Windows may show a blue “Windows protected your PC” box the first time, because the app isn't code-signed. Choose More info → Run anyway.
Your first run
Once-only setup, per system. The Start here tab walks the same steps with buttons that take you to each one.
1Sign in once
On the Connection tab, paste your FortiAnalyzer address into Host URL — it ships blank on purpose, and nothing runs until it is filled in. Then click Browser sign-in (one-time SSO) and sign in exactly as you normally would, MFA included.
The session is saved. You won't be asked again until it expires.
2Point it at your reports folder
On Reports, type your folder name exactly as it appears under Reports → Report Definitions, click Fetch reports in this folder, and pick the report file the app should drive.
It reads that one top-level folder and nothing else. If the name doesn't match, it stops and lists what it could see rather than guessing at something similar.
3Build the queue
Add a row per report — a Name and the MSUID(s) it covers. Got the whole request in an email? Bulk add… takes it pasted, and shows a preview before anything is queued.
Better still, fetch the device inventory once from the Devices tab and search by street or town instead of typing ids.
4Generate
Check the readiness line bottom-left, then Generate report. A browser works through the queue by itself while the Run tab fills in.
Reading a run
Finished PDFs land in a dated folder, and every site you asked about appears in the summary with its numbers — so a line that is missing is itself a signal. The Run tab is colour-coded, and the email carries the same three colours.
A report saved, a check that came back healthy.
Measured trouble — a link over its threshold, an unusual dip.
Something was not measured at all: no data, a report never collected.
Red is the loud one on purpose. A bad number is a fact you can act on; a number nobody took is a gap, and this app never lets a gap read quieter than a problem.
Email, and running it unattended
The app never sends by itself. A finished run opens a ready-made draft in your own Outlook — reports attached, message filled in, your signature underneath — and a person presses Send. Point the Email tab at a saved .oft template and every draft starts from it; recipient presets, a reply-to and a shared from-mailbox live there too, and Bell and Telus keep their own wording.
The Schedule tab registers named Windows tasks — same reports, same email, nobody at the keyboard. Give one a time, tick the days, choose the collection it covers, and set whether it emails. Rows can be paused and resumed in place with ⏸ / ▶, and double-clicking one opens the whole picture in a single card. The app doesn't need to be open, and nothing appears on screen while it runs.
If the PC is asleep at the scheduled time the run catches up shortly after it wakes; a machine that stays off simply misses that day. One thing worth remembering: if you ever remove the app, remove its schedules first — the Windows tasks are registered with the system and would otherwise keep firing.
If something goes wrong
- Windows blocks it, or nothing happens on double-click. The zip wasn't unblocked before extracting — see above. Also check the
_internalfolder is still sitting next to the .exe. - Generate says something is missing. That's the readiness check. It names exactly what to fill in and jumps you to the right tab.
- Bell: it stops at a sign-in page. The saved session expired. Connection → Browser sign-in, once.
- Bell: it can't find your folder. The name has to match a top-level folder under Reports → Report Definitions exactly — capitals and spacing included.
- Telus: the portal refused the sign-in. Wrong or expired password. Fix it before running again rather than retrying — accounts lock.
- A report never finishes. Big date windows take a while. Raise
report_timeout_minutesinconfig.yaml(15 by default). - Still stuck? Send the text from the Run tab with the version shown at the bottom of the window. Between them they usually explain it.
About the project
A Windows desktop app that replays two manual reporting procedures — signing in through your normal SSO or portal login, filling in the report form, running each one, downloading the result and reading the figures back out of it. Everything runs locally: credentials are encrypted to your Windows account, and nothing leaves the machine except the visits to the report portals themselves and the drafts it opens in your Outlook.
- Platform Windows
- Stack Python, Tkinter, Playwright
- Packaging PyInstaller + Inno Setup, browser bundled
- Systems Bell / FortiAnalyzer and Telus / GOnet
- Predecessor FAZ Reporter, whose history it carries
Careful on shared systems
Both portals are shared, multi-admin systems, so the automation is deliberately conservative. It visits the reporting areas only — never settings, administration or device configuration. It deletes nothing, locally or remotely; the only files it writes are the reports you asked for, in a folder you picked. Every click is restricted to an allow-list of expected labels, and it refuses to press anything whose text reads destructive — delete, remove, reset, purge — even where that label would otherwise match.
Updates
Off by default, and genuinely off: with no manifest address set, the app makes no network call at all for updates — deliberate, for networks where unexpected egress matters. To turn it on, point config.yaml at the published manifest:
update:
manifest_url: https://ioscu.com/go-reports/latest.jsonThe Updates window then lists every published version, marks the one you're running, and can move you to any of them — newer to update, older to roll back. Nothing installs on its own.
What's new
The short version. You are on v1.2.2 if the bottom of the window says so.
Scrolling behaves: a touchpad’s small movements add up instead of each one jumping a full notch, and dragging the scrollbar no longer leaves text trailing behind the page.
A round of live-run feedback across both systems — the email reads like a letter again, a missed schedule decides its own catch-up, and the capacity check gained a low-bandwidth floor you can set.
The Telus reporting window opened right up: previous 6 and 12 months, a custom From/To range, and the patience long windows need.
Every release, in full, is inside the app: Run tab → What's new.