By
Mendy Green
July 15, 2025
•
20 min read
Tutorials
Fundamental Skills

HaloPSA reporting is a common stumbling block for MSP teams and it’s no wonder why. With decades-old naming conventions, SQL complexity, and inconsistent column naming, most folks give up before they get started.
But if you’ve worked the helpdesk, you already have the most important skill: troubleshooting.
At Rising Tide, we lean into that mindset. These 8 guidelines—developed by Mendy Green—are how we train team members to creatively and confidently troubleshoot their way through the HaloPSA database. This isn’t a ruleset: it’s a survival guide built from lived experience, experimentation, and a lot of Ctrl+F. The following is also available to view on a video from Mendy linked here: https://youtu.be/1h3lMqIQbXY.
Halo uses the term “fault” instead of “ticket.” That’s a legacy holdover from NetHelpDesk, Halo’s predecessor. If you see “fault,” translate it in your head to “ticket.”
🛠 Real Example: When writing a report, select from the faults table to get ticket data—even if you're working with projects, opportunities, or tasks. They're all stored as faults.
Every email, time entry, and status change lives in the actions table. If something happened to a ticket, it’s here.
🛠 Real Example: Time entries, incoming/outgoing emails, status changes, and internal notes all show up in actions, joined to tickets via fault ID.
Most tables prefix their column names based on the table itself. That prefix tells you where the data originated.
🛠 Real Example: In the site table, SArea refers to the client (Area). In the user table, USite points to the site ID. If you see a column like QHID, that’s the primary key from quotation header.
Once you know a table’s primary key, look for it in other tables to understand relationships.
🛠 Real Example: area, site number, UID, and fault ID show up across multiple tables. If you know a device’s DID, you can filter by it and join against other asset-related tables.
Skip loading massive reports. Use the Fields tab to explore column names and understand structure before you ever hit preview.
🛠 Real Example: Mendy uses Fields to inspect columns like OutcomeID, ActionByUNum, or SDeliveredBy to identify their function—without ever loading a full dataset.
Halo’s online report repository is a goldmine. You don’t even need to install a report—just open the data source and see how it’s built.
🛠 Real Example: When Mendy didn’t know how a report generated “Month Created,” he opened the data source and saw how CONVERT was used to format the date. Instant clarity.
This built-in schema reference report lets you search by table or column name—but don’t run it raw. Filter by table or field name first or it’ll crash your browser.
🛠 Real Example: Mendy uses this to find terms like “Azure Tenant” and locate where clients are mapped. It’s a last-resort treasure map—useful but slow.
If you know a real-world value (like an asset tag), pull that entity with SELECT * and search for it. That’ll reveal the column name you’re after.
🛠 Real Example: Mendy didn’t know which field stored an asset’s tag—until he filtered device by ID, Ctrl+F’d the tag, and found it was stored in INVNO (inventory number).
Conclusion
You don’t need to master SQL overnight to get value out of HaloPSA. You just need to lean into what helpdesk techs do best: problem-solve with what’s in front of you.
These 8 guidelines aren’t about perfection. They’re about being clever, resourceful, and creative with the tools you’ve got—and turning reporting from a weakness into a strength.

Episode 20 of By the [run]Book dives into HaloPSA v2.214 with a mix of practical improvements and some quirky additions. Connor and Mendy walk through everything from new dollar variables and asset controls to Avalara fixes and portal enhancements—highlighting what actually matters for day-to-day MSP operations. This episode is especially useful for MSPs refining workflows, automation, and reporting accuracy in Halo.
Watch Now: By the [run]Book: Episode 20
For easier tracking, check out haloreleases.remmy.dev to filter and search HaloPSA updates by ID, version, and keyword.
Mendy and Connor noted this was very useful.
Highlighted during the user action demo as a practical workflow improvement.
Called out as a genuinely useful UI improvement.
Allows more flexibility in how incoming emails are matched to tickets.
Enables automation of asset configuration through API usage.
Introduces a new variable to output custom fields in Q&A format.
Improves visibility into asset changes over time.
Returns the email address of the user associated with a purchase order.
Enhances usability and visibility of search results in the portal.
Provides control over configuration synchronization.
Ensures correct popup behavior when multiple rules trigger.
Makes ticket source available for reporting and filtering.
Adds safeguards when configuring email matching tags.
Allows distribution lists to target all email addresses tied to a user.
Improves clarity in Avalara transaction records.
Adds control over visibility of user actions in the portal.
Improves flexibility when using Accounts and Prospects.
Enables dynamic fields based on asset lifecycle status.
Ensures asset tagging consistency during stock processes.
Adds control over Avalara synchronization scope.
Allows a predefined score for surveys.
Improves visibility when prorating billing items.
Automatically generates a ticket alongside sales orders.
Allows column width customization in list views.
Changes ordering of lists in the team view.
Adds asset status as a usable variable in buttons.
Improves flexibility when viewing lists.
Allows visual customization of buttons.
Enables distribution lists based on ticket criteria.
Adds control over forecast data ranges.
Enhances performance of Azure/Entra sync.
Improves visibility of ticket closure information.
Optimizes webhook performance and payload handling.
Refines permissions for asset management.

Episode 19 walks through HaloPSA v2.212 and v2.214, covering a wide range of quality-of-life improvements, admin controls, and workflow enhancements. Connor and Robbie highlight updates around ticket forms, invoicing, templates, and automation, making this especially useful for MSPs looking to tighten processes and improve day-to-day efficiency.
Watch Now: By the [run]Book: Episode 19
For easier tracking, check out haloreleases.remmy.dev to filter and search HaloPSA updates by ID, version, and keyword.
Allows assets to be linked directly to a client instead of only via a site.
Improves tracking of report usage across dashboards.
Adds control over end-user assignment in templates.
Prevents actions on tickets for stopped clients or sites.
Allows updating custom fields directly via actions.
Prevents approval of expired quotes.
Adds variables for original customer addresses.
Ensures hidden fields do not retain values.
Adds advanced relative date filtering.
Adds preview functionality for templates.
Allows editing of existing meter readings.
Improves grouping of invoice items.
Enables merging duplicate assets.
Displays number of related tickets.
Enhances monitoring integration mapping.
Adds more control to purchase order lifecycle.
Enables workflows triggered by agent emails.
Adds mapping and geolocation features.
Introduces guided project setup.
Allows updating ticket fields post-creation in chat.
Prevents deletion of populated top-level structures.
Improves timesheet usability.
Fixes inconsistent quote PDF behavior.
Aligns quote email behavior with configuration.
Adds access to billing profiles from invoice screen.
Allows use of quote data in actions.
Adds new automation trigger.
Adds rich text support for asset fields.
Prevents closure when tasks remain open.
Adds approvals to activity feed.
Removes agent login option from portal.
Adds ordering control to lookup codes.
Adds planning field to releases.
Enables guided onboarding tools.
Adds note field to consignment lines.
Expands team visibility.
Extends accessibility tools to main app.
Displays previous invoice values.
Exposes billing data to API.
Adds search to selection fields.
Aligns call screen logic with ticket settings.
Links credit lines to original sales orders.
Improves invoice ID handling.
Introduces role-based API identity.

In this episode of By the Runbook, the team continues through the HaloPSA 2.212 release notes and spends time unpacking what several of these changes actually mean in practice. The conversation covers workflow design, mail campaigns, ticket views, reporting, and automation behavior, with especially useful commentary for MSPs trying to decide what to enable, what to ignore, and what to be careful with.
Watch Now: By the [run]Book: Episode 18
For easier tracking, check out haloreleases.remmy.dev to filter and search HaloPSA updates by ID, version, and keyword.
Check out MSP Blueprint for info on runbooks: MSPBlueprint
This allows the ticket screen to automatically refresh when a background automation completes.
Expands qualification matching to include custom field criteria.
Adds delayed and retry-based webhook processing options.
This change limits the available “From” addresses on a ticket action to mailboxes the assigned team can actually access.
Adds Email Address as another attribute option for follower behavior on the portal.
Allows changes to Mail Campaigns after they have started.
Restricts pipeline stages based on opportunity type.
Adds webhook processing options including delayed and retry handling.
Adds the ability to hide tickets from the change calendar.
Adds Service Users as a selectable option in distribution and user lists.
Allows campaigns to be sent from sales mailboxes.
Adds a warning when an action email will fail.
Adds asset relationship mapping during SQL imports.
Adds an isRunning field to asset discovery.
Expands qualification matching with custom field rules.
Allows ticket view to auto-refresh after automation runs.
Adds ability to update currency values on quotes.
Requires comments for negative KB feedback.
Adds control for showing nested tickets.
Enhances AI reporting capabilities.
Restricts KB edits to owners only.
Adds translation support in the portal.
Adds secondary MAC address support.
Adds character limits to text fields.
Adds more fields for OLA and rule reporting.
Prevents approvals from email replies.
Extends field copying to deeper ticket levels.
Adds primary asset as a runbook condition.
Adds AgentID variable for lookups.
Adds reporting changes to config tracking.
Adds filter profiles to child ticket views.
Adds more configuration options to other open tickets view.