Refresh your Resume

By  
El Copeland
January 4, 2025
20 min read
Share this post

When is the last time you updated your Resume/CV?  

There was a little bit of chatter in the MSPGeek Discord last month about what actually needs to go on a resume.  (MSPGeek Website | MSPGeek Discord)

It got me curious: how many of my friends in the MSP space have an up-to-date resume, and one that they’re proud of?  

Uh-oh, have you not dusted yours off in a few years?

Let’s talk about why you might want to change that even if you’re happy where you are and some practical advice for updating yours into something you’re proud to showcase.  

What is a Resume and how is it different from a CV?  

Let’s start with the basics.  

A resume is a generally a concise document highlighting your professional experience, skills, and accomplishments. When I’m coaching others, I use the analogy that a good resume is just a firm handshake. It's what gets your foot in the door for hopefully further conversations. You’ll want your resume to be tailored to your current interests and objectives, whittled down to reflect your story and expertise.  

On the other hand, a CV, or curriculum vitae, comes from Latin words curriculum, which came from the original word currere which translates to run, as in a race; and vitae, meaning life. Curriculum has since been adapted as an educational term for what you’d be learning in a class or program, but it originally just meant “what race are you running?”  

With that in mind, a CV literally translates to course of life, and as such it’s a beefier document than a resume, reflecting a detailed account of one’s professional journey, path, and achievements, showcasing a full history of your education, research, and work. I coach my people to keep both on hand, considering the CV as the “source of truth” for everything you’ve ever done with complete timelines and full descriptions, and creating multiple child resumes depending on your specific job application or use case.  

In general, in the MSP (Managed Service Provider) space and in the employment arena, these words are often used interchangeably but I encourage you to default to providing a simpler resume, and as such we’ll be focusing on that term in this article. However, there are places and times that it makes sense to provide a full CV and we’ll address that as we go.  

The Value of Keeping a Resume on Hand

Having an up-to-date resume is a good practice to keep even if you’re not actively looking for jobs.  Some companies that bid for work include team member resumes and CVs as evidence of that company’s competence and fit to win a particular Request for Proposal (RFP).  

It’s also helpful because you never know when the random person you meet at a conference, church, or bar, likes the cut of your jib and wants your resume to see if you’re a good fit for their company!

If you’re in Sales or Marketing, knowing what your technical teams’ Resumes and CVs look like can be a wealth of data for building proposals or providing accomplishments to prospective clients. It’s worth seeing if your team has up-to-date resumes so you know the high points of their skills and accomplishments and can brag about them accordingly.  

So enough about the why of a good Resume. Let’s talk about the how.  

Building a "Good” Resume

As someone who has applied for many jobs, read a good number of applications for my own businesses, and coached others in cleaning up their own, let’s talk about what makes a resume or CV successful to me and how I applied those ideals in my own resume. As you’ve surely noticed, the word good is in quotation marks – every bit of advice in here is built on years of learning and experience, but is by no means dictatorial or the final word on the resume that will get you the job of your dreams.  

My goal is to give you inspiration on revamping and practical advice further editing your own! If you follow these ideas, hopefully, you'll take your resume from "meh" to "good" and as you build your idea of what good looks like, you can make it "great."

Here is my current resume, for reference:  

What are your first thoughts? It’s ok if you hate it, it won’t hurt my feelings. The fact that you’re thinking about what could be a resume is the exciting part for me. We’ll use my resume to tear apart some of these rules so you have practical ideas for what to do, or not!

Rules I kept in mind:  

  1. You’re the Hero.  
  1. Lead with action.
  1. Context, context, context.  
  1. Show your Work

You’re the Hero.  

For the uninitiated, Doctor Who is a BBC Family Show about a millennia-old time-traveling alien who consistently finds himself saving the human race while meeting historic people and events from the past, present, and future.  In the 2024 Christmas special, Ncuti Gatwa as the Doctor finds himself trapped in a crappy hotel room by himself, for a year. “The long way ‘round” rings in the viewers’ ears as we are then escorted through the next year of the Doctor, watching his character development as he performs menial labor and often comical tasks. It’s heartwarming and tearjerking, and....

Don’t do that.  

Yeah, you heard me. Your resume is not the place for your growth or development. It’s not the place to give the ins and outs of your day-to-day. Your resume needs to be the high points. This is just the book cover, the summary, the short review enticing someone to pick you up and actually flip through the pages.  

Ways that you can do that include:  

  • Use a “Summary” and/or “Objective”.
    What is your overall story? Are you a phenomenal Tier 2 Technician looking for her next role leading a team as a Tier 3? Are you hoping to transition to leadership with your people skills? Are you wanting to contribute to a team with your depth of knowledge of security infrastructures? What should the reader of your Resume see first, and how should they read your story?  
  • Keep to the point.
    A rule of thumb often used is 10 years of work experience to one page of resume. IF you have more experience that requires more words, try to shorten it first. Or, include an appendix fully describing a project or situation.  
  • Maybe a picture.
    Honestly, I hate having a photo on a resume, but I was applying for a job outside of my local area and industry I wanted something that showed my character. I left it on the styling because I’m lazy. Be careful with photos, they can seem unprofessional.  

We want to know that you can speak Judoon, have commandeered a TARDIS, and are adept with both psychic paper and a Sonic Screwdriver. We do not need to know that you carjacked said TARDIS, brought someone a cheese toastie and pumpkin latte, or snogged Queen Elizabeth.  If the devil is in the details, well, leave the details and the devil out of your resume, dude.

This example is a little silly, but the point remains that YOU are the hero and YOU write your own story. Make sure the readers of your resume know what that is. And regardless of what story you write, your resume should always lead with Action.  

Lead with Action

What have you done that you have control over? Your resume should show that you’re an asset to the teams that you’re on and that the work you’ve done has shown your strength.  

Instead of framing things as being a part of a project or that something was imposed on you, stretch yourself to consider the decisions you made and how they were impactful.  

Check your resume in a grammar checker for  “passive voice” and eliminate it from your resume as much as possible. Passive voice makes it seem like you are just that: a passive bystander to things that you created. This isn’t the place for modesty, it’s a place for groundedness and intentionality! Don’t be scared to show them what you’ve got! Here are some good rules of thumb for your resume:  

  1. Start with action verbs: Use strong verbs such as developed, managed, increased, led, implemented, and optimized.
  1. Ask 'who did what?': When reviewing your bullet points, ask yourself who is performing the action, and make that the subject of the sentence.
  1. Quantify results: Adding metrics helps make the statement more assertive and shows the impact of your actions.

Here are some practical examples for how you can update passive voice with active voice.  

  • Ticket System Implementation
    • Passive: “A new ticketing system was implemented to streamline support requests.”
    • Active: “Implemented a new ticketing system that streamlined support requests, reducing response times by 20%.”
  • Customer Care
    • Passive: “Client issues were resolved in a timely manner.”
    • Active: “Resolved client issues within 24 hours, improving customer satisfaction ratings by 15%.”
  • Report Preparation
    • Passive: “Quarterly reports were prepared and presented by me for leadership review.”
    • Active: “Prepared and presented quarterly reports to leadership, providing data-driven insights that influenced key decisions.”
  • Training Employees
    • Passive: “Training programs were created for new hires.”
    • Active: “Created and led training programs for new hires, resulting in a 30% reduction in onboarding time.”
  • Security Updates
    • Passive: “System upgrades were performed to improve security.”
    • Active: “Performed system upgrades to improve security, reducing vulnerability incidents by 40% compared to previous year.”

Of note, it is highly possible that you don’t feel like you have the numbers or the confidence to do this, today.  There is a certain amount of intentionality and care that is required to start gathering these types of Key Performance Metrics or goals. It’s possible that your management is tracking some of these things already and you can talk to your manager about their goals for your department and roll those into your own successes.  

Context, Context, Context

Know your audience and keep it relevant in all the ways possible, I’d specifically encourage you to consider context of content and context of delivery.  

Content

We allude to this in the section on being the Hero, but keep multiple versions of your resume on hand depending on the role and company you are applying for! Review the business’s website and job listing for key words, phrases, or values to show you are a good fit. Remove work experience that isn’t applicable to the role. Don’t keep things in if they dilute what you are actually seeking to present yourself as. Customize your bullet points: Swap in key accomplishments that fit the job description. If the role focuses on leadership, highlight examples of mentoring or leading a team. If it’s technical, detail relevant certifications, tools, and projects.

Formatting

Use consistent headers, bullet points, and spacing to make your resume easy to scan. Avoid excessive detail that clutters the page. Stick to clean, professional fonts and clear section breaks.  

Keep it simple, but don’t be afraid of a little personality: A pop of color, a different font, or slightly unique formatting can be memorable—but don’t overdo it. Use section dividers, subtle lines, or an (one!) accent color to guide the eye. Include icons for contact info if appropriate, but ensure they don’t distract (choose SIMPLE icons with only one color and make sure all icons are from the same family pack).  

Keep font choices professional yet modern, such as using sans-serif fonts like Calibri or Lato. In general, I recommend not using more than one typeface, and limit the times you change it. Regular, bold, italic should get you far, and try to keep font sizes to three variations: title (36pt), header (18pt), body (12pt). Keep things consistent like you would be if you were marking up a webpage or application. And please, whatever you do, don’t express yourself through clever or cartoony fonts, this is for business, not your personal art gallery.

Delivery

How are you submitting your application? In person, by email, through a digital system?  

Will the person be reading this on a mobile device or printing it out?  

If in person, don’t be afraid to print off a color copy on nice, weighted cardstock for an in-person interview, and bring copies for other people who may be in the room as well, for a peer interview.  

For digital submissions Check the format based on delivery method: Ensure your resume reads well in multiple formats—digital (PDFs), ATS-scannable text, and print. Run tests to see how it looks in each form.  Do screenreaders or convert to plain text to see (or hear) what a computer-read version of your document turns out to say. Does it make sense? If not, rework it.  

Show your Work

As mentioned multiple times in this article, your resume is a tool for opening doors, so don’t let it be a dead end for the reader. Where do you keep your portfolio or where should they go to find more information about you if this resume piqued their interest? Don’t keep them guessing, give them access! Some things you may want to include on a modern resume:  

  • Links  
    • Github
    • LinkedIn Profile  
    • Blog or Portfolio
  • Personal Projects or Achievements section
    • Speaking engagements
    • Community Volunteerism
    • Open Source Projects you contribute to
  • References or Testimonials
    • While your references should be separate from your resume, don’t be afraid to list quotes from people about your work or link to reviews

Now, it’s your turn!  

What do you think? If you look at your resume, does it follow my suggestions of making yourself the Hero. leading with action, considering appropriate context, and showing your Work?  Where did I deviate from the rules, do you think it works for me, or not?  

On the flip side, what rules do you think I am missing?

I hope I’ve inspired you to update your resume and/or CV this month and to encourage your friends and colleagues to do the same! If you need help cleaning up your resume, you can find me on any of the social channels listed on my resume, or through Rising Tide if you want to pay me to just do it for you.  

Share this post
El Copeland

As Partner and Business Consultant at Rising Tide, I help organizations align culture with efficiency, bridging the gap between strategy and the everyday systems that make it work. I’ve spent my career leading diverse, cross-functional teams and building communities where people actually want to learn and collaborate. With roots in technology, education, user experience & design, and project management, I specialize in turning complex ideas into clear, actionable plans that keep both people and projects thriving.

Outside of work, you’ll usually find me weight-training, gardening, or rewatching Doctor Who with a cat in my lap.

See some more of our most recent posts...
March 31, 2026
8 min read

By the [run]Book: Episode 18

This episode of By the Runbook breaks down HaloPSA 2.212 updates with a focus on what actually matters for MSPs. The team covers key changes to automation, ticket views, and integrations, along with practical advice on what to enable, what to watch out for, and how these updates impact real-world workflows
Read post

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

Important Mentions

Ticket details can now auto-refresh when a background automation completes | v2.212 #1003085 | 25:29

This allows the ticket screen to automatically refresh when a background automation completes.

  • Eliminates the need for manual refresh after automations run
  • Keeps available actions, workflow steps, and ticket data in sync
  • Especially useful in environments with heavy automation usage
  • ⚠️ Not enabled by default — go turn this on
Additional rule types have been added to qualification matching criteria for custom fields | v2.212 #1009694 | 19:02

Expands qualification matching to include custom field criteria.

  • Enables highly granular ticket routing and assignment logic
  • Can support advanced use cases like skill-based routing or segmentation
  • ⚠️ Powerful but rarely practical for most MSPs without significant planning
Added the option to use the incoming webhook service for QuickBooks Online webhook processing | v2.212 #1021654 | 8:39

Adds delayed and retry-based webhook processing options.

  • Helps prevent failures during high webhook volume
  • Introduces retry logic for more reliable integrations
  • ⚠️ Can introduce delays (10–15+ minutes in some cases depending on configuration)
  • ⚠️ Default behavior vs delayed processing needs to be reviewed carefully


FullFeature List


You can now restrict the ‘From’ address options on a Ticket Action to mailboxes the assigned team can access | v2.212 #1031882 | 2:50

This change limits the available “From” addresses on a ticket action to mailboxes the assigned team can actually access.

  • Prevents agents selecting mailboxes they don’t have access to
  • Reduces confusion in multi-mailbox environments
  • Helpful for teams split across departments or service lines
Added Email Address as another attribute option for the Followers field on the Self-Service Portal | v2.212 #1031728 | 3:23

Adds Email Address as another attribute option for follower behavior on the portal.

  • Improves flexibility for notifications
  • Useful for including external stakeholders
  • Expands portal configuration options
You can now edit various parts of a Mail Campaign after starting it | v2.212 #1030951 | 3:32

Allows changes to Mail Campaigns after they have started.

  • Removes need to recreate campaigns due to small mistakes
  • Makes campaigns more practical to use
  • Signals continued investment in this feature area
You can now restrict Pipeline Stages at the Opportunity Type level | v2.212 #1027853 | 4:58

Restricts pipeline stages based on opportunity type.

  • Keeps sales workflows cleaner
  • Avoids irrelevant stage options
  • Useful for more structured sales processes
Added the option to use the incoming webhook service for QuickBooks Online webhook processing | v2.212 #1021654 | 8:39

Adds webhook processing options including delayed and retry handling.

  • Helps manage high webhook volume
  • Reduces risk of dropped events
  • ⚠️ May introduce delays depending on configuration
Added in the ability to hide certain tickets from the change calendar | v2.212 #1017196 | 13:21

Adds the ability to hide tickets from the change calendar.

  • Useful for sensitive or internal tickets
  • Helps reduce noise in calendar views
  • Currently tied to the “Sensitive” flag
Service Users are Subscribed to has been added as an option to Distribution Lists and User Lists | v2.212 #1013148 | 13:55

Adds Service Users as a selectable option in distribution and user lists.

  • Expands targeting logic
  • Improves automation flexibility
  • Useful for advanced filtering scenarios
You can now send Mail Campaigns from Sales Mailboxes | v2.212 #1011772 | 14:54

Allows campaigns to be sent from sales mailboxes.

  • Improves branding and ownership
  • Separates sales vs support communications
  • ⚠️ Be cautious of Microsoft send limits
A warning will now be shown on an action and the ticket will be updated if an action email will fail to send | v2.212 #1010891 | 16:49

Adds a warning when an action email will fail.

  • Improves visibility into email failures
  • Helps prevent missed communications
  • Updates ticket automatically with failure state
Added the ability to map relationship types for parent, child, and sibling assets in SQL imports | v2.212 #1010659 | 18:17

Adds asset relationship mapping during SQL imports.

  • Preserves structure during migrations
  • Supports complex asset environments
  • Useful for onboarding/import projects
Added isRunning to Halo Asset Discovery integration | v2.212 #1010606 | 18:54

Adds an isRunning field to asset discovery.

  • Helps track discovery state
  • Useful for monitoring and automation
  • Adds visibility into background processes
Additional rule types have been added to qualification matching criteria for custom fields | v2.212 #1009694 | 19:02

Expands qualification matching with custom field rules.

  • Enables more advanced routing logic
  • Supports complex assignment scenarios
  • ⚠️ Often overkill for most MSPs
Ticket details can now auto-refresh when a background automation completes | v2.212 #1003085 | 25:29

Allows ticket view to auto-refresh after automation runs.

  • Keeps UI in sync with backend updates
  • Eliminates need for manual refresh
  • ⚠️ Not enabled by default — turn this on
Added 'Update Currency' to Quotes | v2.212 #992111 | 29:17

Adds ability to update currency values on quotes.

  • Supports multi-currency environments
  • Updates cost and price together
  • Improves quote accuracy
Added option to make a Knowledge Base's negative feedback comment mandatory | v2.212 #991702 | 30:41

Requires comments for negative KB feedback.

  • Improves feedback quality
  • Helps refine documentation
  • Useful for KB governance
New default setting for showing grandchildren in child ticket lists | v2.212 #990317 | 30:49

Adds control for showing nested tickets.

  • Improves visibility in projects
  • Useful for multi-level ticket structures
  • Configurable behavior
Improvements to AI report analysis | v2.212 #987946 | 31:27

Enhances AI reporting capabilities.

  • Can now be scheduled
  • Can be embedded in PDFs
  • ⚠️ Still not widely used in practice
Added a setting to restrict knowledge base article amendments to owners only | v2.212 #982079 | 33:06

Restricts KB edits to owners only.

  • Improves control over content
  • Prevents unintended edits
  • Supports structured documentation workflows
Added a global setting to allow users to translate actions on the portal when using Azure AI Translator | v2.212 #978595 | 33:22

Adds translation support in the portal.

  • Useful for multilingual environments
  • Improves accessibility
  • May not be necessary for all MSPs
Added the setting 'Secondary Asset MAC address field' to the Splashtop integration | v2.212 #978176 | 34:08

Adds secondary MAC address support.

  • Helps with multi-adapter devices
  • Improves asset matching
  • Integration-specific enhancement
You can now set character limits on memo and rich text custom fields | v2.212 #976975 | 34:39

Adds character limits to text fields.

  • Prevents overly large inputs
  • Improves data consistency
  • Helpful for structured data entry
Added additional fields to assist with reporting on OLAs and rules | v2.212 #976953 | 34:47

Adds more fields for OLA and rule reporting.

  • Improves internal tracking
  • Supports more detailed reporting
  • Still primarily useful for advanced setups
Added the setting 'Prevent email responses from continuing the approval flow' at approval step level | v2.212 #974172 | 39:10

Prevents approvals from email replies.

  • Avoids accidental approvals
  • Forces structured approval process
  • Improves workflow control
Added a setting to the Custom Field configuration to copy values to grandchild tickets when updated | v2.212 #970536 | 40:25

Extends field copying to deeper ticket levels.

  • Maintains consistency across ticket hierarchy
  • Useful for projects and task trees
  • Reduces manual updates
Added Primary Asset as a criteria for Runbooks | v2.212 #970066 | 40:41

Adds primary asset as a runbook condition.

  • Enables asset-based automation
  • Improves targeting of runbooks
  • Useful for device-specific workflows
Added $-AgentID as an available $ variable for Database Lookups | v2.212 #961283 | 40:48

Adds AgentID variable for lookups.

  • Expands database query capabilities
  • Useful for advanced automation
  • Improves flexibility in integrations
Added reports and dashboards to configuration change tracking | v2.212 #959264 | 40:55

Adds reporting changes to config tracking.

  • Improves audit visibility
  • Helps track admin changes
  • Pairs well with settings search feature
Filter Profiles can now be used on Child Ticket lists | v2.212 #922698 | 42:56

Adds filter profiles to child ticket views.

  • Reduces clutter (especially closed tickets)
  • Improves usability in projects
  • Strong practical improvement
Added multiple settings to the 'Other Open Tickets' views | v2.212 #882375 | 45:18

Adds more configuration options to other open tickets view.

  • Improves visibility of related tickets
  • Can be moved to its own tab
  • Enhances day-to-day ticket context

March 17, 2026
8 min read

By the [run]Book: Episode 17

Episode 17 wraps up 2.21 and begins 2.212 covering key HaloPSA updates across billing, SLAs, and ticket workflows. Highlights include dynamic ticket filters, default billing templates, and improved billing visibility—making this a must-watch for MSPs optimizing operations and reporting.
Read post

Episode 17 warps up the breakdown of version 2.21 and begins 2.212, highlighting impactful updates across billing, SLA visibility, and ticket management. The team dives into major improvements like dynamic ticket filters, default billing templates, and better billing tab access controls. This episode is especially useful for MSPs looking to tighten billing accuracy, improve reporting visibility, and streamline ticket workflows.

Watch Now: By the [run]Book: Episode 17
For easier tracking, check out haloreleases.remmy.dev to filter and search HaloPSA updates by ID, version, and keyword.

Important Mentions

Billing Tab Visibility Changes | v2.212 #1062249 | 30:16

The Billing tab is now visible to agents without requiring full billing permissions, with actions locked based on access.

  • Improves visibility without over-permissioning agents
  • Reduces need to grant risky billing permissions
  • ⚠️ Be cautious: exposing billing data still requires process control and training (as discussed in the episode)
SLA Breach Visibility for On-Hold Tickets | v2.21 #795425 | 12:33

Tickets on hold can now be included in SLA breached filters.

  • Previously, putting a ticket on hold could hide SLA breaches
  • This setting ensures accurate reporting and accountability
  • ✅ Recommended: turn this on immediately
Default Billing Template for New Customers | v2.21 #792419 | 13:01

You can now define a default billing template applied automatically when creating a new customer.

  • Removes need for custom automation to apply templates
  • Ensures consistent billing rules across all customers
  • ✅ Recommended: enable this and retire older automation-based approaches
Dynamic Ticket Filters | v2.21 #772177 | 16:52

Dynamic filters can now be used on ticket lists for more flexible querying.

  • Enables complex AND/OR filtering logic
  • Reduces reliance on multiple saved views
  • Opens the door for more advanced automation without SQL
  • 🚀 One of the most impactful usability improvements in this release

FullFeature List

Changing the Product/Item 3rd Party ID reference will now be copied to recurring invoices when configured in Item Settings | v2.21 #956174 | 5:23

This helps keep recurring invoices aligned when item third-party IDs change.

  • Useful during accounting platform migrations
  • Reduces manual cleanup on recurring invoice records
  • Helps preserve item mapping consistency across systems
Invoice Due Date option "Equal to Invoice Date" has been added to the Recurring Invoice options to match the options at Customer setup | v2.21 #933961 | 6:09

Recurring invoices now get the same due date option already available at customer setup.

  • Brings recurring invoice behavior into line with customer billing settings
  • Helpful for teams that want cleaner due date standardization
You can now hide the ‘Approve/Reject All’ buttons on the Portal My Approvals page and require approval notes to always show ticket details | v2.21 #898703 | 6:22

This adds more control to portal-based approval workflows.

  • Helps avoid overly broad one-click approval behavior
  • Encourages better review discipline
  • Improves auditability around approval notes and detail visibility
Added 2 new Site-level settings to create invoices against a different Customer | v2.21 #859082 | 6:40

This extends alternate invoicing behavior down to the site level.

  • Adds more flexibility for multi-site or multi-entity billing setups
  • Useful where billing responsibility differs by site rather than customer
Added a setting "Re-assign tickets to unassigned when the assigned agent is made inactive" to the Microsoft Entra integration to allow agent tickets to be re-assigned if they are deactivated via an import | v2.21 #833690 | 7:04

This helps prevent tickets from disappearing into inactive-agent limbo.

  • Particularly useful when Entra sync deactivates agents automatically
  • Helps surface tickets that might otherwise get lost
  • Worth reviewing carefully because reassignment can also affect downstream reporting
You can now add Primary Agent, Secondary Agent & Account Manager as criteria for ticket filter profiles and lists | v2.21 #827931 | 9:50

More ticket list criteria means more practical operational views.

  • Lets you filter based on responsibility relationships, not just ticket ownership
  • Useful for dashboards, routing views, and account oversight lists
Improvements to ManageEngine Endpoint Central Integration | v2.21 #815251 | 10:11

This update improves the ManageEngine Endpoint Central integration.

  • Better integration maturity is always welcome for teams relying on external RMM/endpoint tooling
  • Useful for shops standardizing around that stack
Added the ability to use generic Open ID Connect single sign-on | v2.21 #814980 | 10:36

Halo now supports generic OpenID Connect SSO.

  • Expands identity provider compatibility beyond more limited built-in options
  • A solid improvement for organizations with more advanced authentication requirements
Added the ability to clone Item Bundles | v2.21 #801764 | 11:31

You can now duplicate item bundles instead of rebuilding them manually.

  • Saves setup time
  • Helpful when creating variations of similar commercial offerings
Added settings in asset management and services configuration for the name shown for the assets and services areas | v2.21 #798807 | 11:36

This adds more naming flexibility to the UI.

  • Lets teams align terminology with internal language
  • Helpful for organizations that want the platform to better match how they talk about assets and services
Added a setting to the SLA configuration to allow tickets that are on hold to be included in the SLA Breached filter for ticket lists | v2.21 #795425 | 12:33

This makes SLA breach reporting more honest and more useful.

  • On-hold tickets can still be breached, and now your filters can reflect that
  • Recommended setting to enable for better service visibility
You can now set a default billing template, picked up when creating a new customer. | v2.21 #792419 | 13:01

A major improvement for standard billing configuration.

  • Great for MSPs using a common template across all new customers
  • Replaces the need for custom customer-created automation in many environments
Added support for asset-based meters on recurring invoice lines, enabling managed print functionality | v2.21 #787149 | 15:28

This adds more flexibility to meter-driven recurring billing.

  • Especially relevant for managed print and other metered service models
  • Supports scenarios where an asset carries multiple billable meter values
Added the ability to use dynamic filters on ticket lists | v2.21 #772177 | 16:52

Dynamic ticket filters add a much stronger filtering experience.

  • Supports grouped filter logic beyond basic visible-column filtering
  • Helps reduce list sprawl and improves usability for operations teams
Added the ability to clone custom fields | v2.21 #722363 | 21:17

Cloning custom fields speeds up admin work.

  • Useful when building multiple similar fields
  • Cuts down repetitive configuration effort
Improvements to Pie and Doughnut Chart data labels | v2.21 #638315 | 21:49

This update improves chart label readability.

  • Helpful for dashboard clarity
  • A small but welcome quality-of-life improvement
Improvements to the Update Encryption option found in Security/Advanced Settings | v2.21 #510731 | 22:24

This update refines the encryption update workflow.

  • Relevant for teams actively managing advanced security settings
  • Another admin-side quality improvement
A setting has been added to Call Management configuration to show the user's preferred number on the call screen | v2.21 #510517 | 22:56

This improves call handling context.

  • Puts the preferred number front and center
  • Helpful for service desks handling inbound and outbound calls
Properties have been added to Item and Item Group for "Number of decimal places to use for quantity" that will affect the default decimal behaviour | v2.21 #228735 | 23:17

This gives more control over quantity precision.

  • Useful for products or services sold in partial units
  • Helps tailor quantity behavior to the actual commercial model
When using the configuration option to allow all Project and Tasks to be chosen when creating a Project from a Sales Order line, this will now include Tickets if they are linked to a Sales Order line | v2.212 #1062502 | 25:12

This improves flexibility when linking work records from sales orders.

  • Helpful for teams using tickets instead of projects in some fulfillment scenarios
  • Better supports mixed service delivery workflows
The Billing tab of a Ticket will now show for agents without requiring the Billing Details permission. Actions and properties within the Billing tab will be locked depending on permissions | v2.212 #1062249 | 30:16

This adds better billing visibility without fully exposing billing controls.

  • Good balance between awareness and security
  • Still requires caution around how teams use the billing area
ID can now be specified in a Ticket spreadsheet (XLS/CSV) import to update existing Tickets | v2.212 #1062155 | 32:34

Spreadsheet imports can now target existing tickets by ID.

  • Makes bulk updates easier
  • Useful for admin cleanup or migration workflows
The heading for the timer on the Ticket details pane has been removed | v2.212 #1061107 | 32:50

A small UI cleanup on the ticket details pane.

  • Frees up a bit more space
  • Minor but sensible interface polish
A configuration option has been added to allow Co-managed agents to log time | v2.212 #1060620 | 33:09

This adds flexibility for co-managed support models.

  • Lets co-managed agents participate more directly in time tracking
  • Helpful for shared-service or hybrid support arrangements
An option has been added to the CSP Integration so that you can map Users to "Do not import" so that mappings will not be automatically created for them in cases when the Users are not within the scope of a specific tenant permissions. | v2.212 #1060619 | 36:23

This improves control over CSP user mapping behavior.

  • Helps avoid unwanted user mappings
  • Useful where tenant scope or permissions are intentionally limited
Added a hint has been added to the Customer Tax rate selection when using Xero to better explain when this rate is used | v2.212 #1060166 | 38:25

This adds clarification around tax rate usage in Xero-linked setups.

  • A small but useful usability improvement
  • Helps reduce confusion in finance configuration
A button has been added to the Client Billing tab to clear the current Avalara Tenant. | v2.212 #1059696 | 38:34

This makes Avalara tenant cleanup easier from the client billing tab.

  • Handy for correcting configuration mistakes
  • Saves time compared with more awkward reset workflows
Runbooks can now be triggered from Custom Buttons on the following entities: Client, Site, User, Device, Quotation, Purchase Order, Invoice | v2.212 #1059597 | 38:56

This is a strong automation improvement.

  • Lets you trigger runbooks directly from more parts of the UI
  • Opens up practical workflows for service, sales, procurement, and account management
It is now possible to delete specific rows from a custom table using the property "delete_these_rows" | v2.212 #1059297 | 40:35

Custom table row deletion gets more precise.

  • Useful for automation and structured data maintenance
  • Reduces the need for full-table replacement logic
When using the configuration option to not create invoice lines with 0 value, recurring invoices lines shown in recurring invoice lists will be hidden if they have 0 value | v2.212 #1058650 | 40:54

This cleans up recurring invoice visibility.

  • Keeps invoice lists tidier
  • Makes review screens easier to scan
Minor changes to configuration to better explain how the function to automatically add Asset to Contracts can be configured | v2.212 #1058609 | 41:04

This is a documentation/config clarity improvement.

  • Helpful for admins configuring asset-to-contract automation
  • Less ambiguity is always welcome in contract automation settings
Additional options have been added to Ticket Rule assignment for Regional Manager, Logistics Manager, Sales Representative, Account Owner and CXM Lead | v2.212 #1057719 | 41:13

Ticket rule assignment now supports more role-based options.

  • Improves routing flexibility
  • Better reflects broader operational ownership models
Added approval rule criteria "Already approved by agent" | v2.212 #1057491 | 41:21

Approval rule logic gets another useful condition.

  • Adds more nuance to approval workflows
  • Helpful for reducing redundant approval steps
Added Supplier as a criteria field for dynamic field visibility, and added Supplier as notification criteria | v2.212 #1057372 | 41:56

Supplier-related configuration gets more flexible.

  • Helps tailor field visibility based on supplier context
  • Adds supplier-aware notification scenarios
Variables have been added that can be used on Project Templates when created from a Sales Order line | v2.212 #1057339 | 42:34

Project templates now get more dynamic input from sales-order-driven creation.

  • Improves template flexibility
  • Helpful for standardized fulfillment workflows
Additional columns have been added to the Quote and Sales Order line column profiles | v2.212 #1057260 | 42:47

This expands visibility in quote and sales order line views.

  • Helpful for finance and sales review workflows
  • More columns means less need to jump into detail views
An option has been added to the setting "Allow a Tickets Customer and Site to be different from the Users Customer and Site" to allow only the Site to be changed for a given User | v2.212 #1057242 | 42:59

This makes customer/site control more precise.

  • Adds a middle ground between fully matching and fully independent customer/site behavior
  • Useful for environments with stricter user association rules
Added additional response schemas to the API swagger documentation | v2.212 #1053435 | 43:56

The API docs continue to improve.

  • Better documentation supports better integrations
  • Especially useful for teams building custom API workflows
You can now specify the amount of columns you'd like like to show when logging a ticket through the agent app | v2.212 #1053014 | 44:35

This improves ticket logging layout flexibility in the agent app.

  • Lets teams control form density
  • Helpful when designing cleaner ticket intake experiences
Auto payments processed via Stripe on the integrator now use idempotency keys | v2.212 #1052572 | 45:31

This is an important reliability improvement for payment processing.

  • Helps prevent accidental duplicate processing
  • Good back-end hardening for Stripe-integrated billing
Added the ability to be able to change a service's category when the service is created from an asset | v2.212 #1050926 | 45:52

This adds more flexibility when services are generated from assets.

  • Useful where the default category is not the right long-term fit
  • Gives admins more post-creation control
Added the setting 'Copy values to parent Tickets on new Ticket screen' at custom field and ticket type field level | v2.212 #1042761 | 45:59

This improves parent/child ticket data behavior.

  • Lets values flow upward earlier in the ticket creation process
  • Helpful for service desks using child-ticket-driven workflows
Added the ability to link a 3rd party ID against agents, teams, agent roles, user roles, and CABs | v2.212 #1041704 | 47:57

Third-party ID linking is now available across more entities.

  • Supports cleaner integrations
  • Helps external systems map records without relying on internal IDs alone
Added flastactiondate as a field within the Query Builder | v2.212 #1041176 | 50:52

Query Builder gets another field for reporting logic.

  • Gives admins more data points to build useful views and reports
  • Helpful for operational tracking
Account and Prospects can now be viewed in Top Levels | v2.212 #1034016 | 50:56

This expands visibility of account/prospect records in top-level views.

  • Useful for sales and account-management workflows
  • Continues the gradual maturity of account/prospect handling
Added access control for custom buttons | v2.212 #1033683 | 51:35

Custom buttons now get access control.

  • Lets admins expose UI actions more safely
  • Important for governance as button-triggered automation becomes more powerful
UI Improvements to the New Opportunity Screen launched from Accounts/Prospects records | v2.212 #1032933 | 51:42

This adds polish to the opportunity creation experience.

  • Makes sales workflows smoother from account/prospect records
  • A welcome UX improvement for CRM-oriented teams
API Key Authentication method added to the Halo API | v2.212 #1032829 | 51:47

This is one of the biggest integration-facing updates in the episode.

  • Makes API authentication easier in many practical scenarios
  • Especially useful for agent-based integrations and tooling
  • Important reminder from the episode: permissions are tied to the identity behind the key, so scope and access design still matter

March 3, 2026
8 min read

By the [run]Book: Episode 16

Episode 16 of By the [run]Book continues the walkthrough of HaloPSA v2.210, covering updates to billing behavior, ticket automation, AI features, and asset management improvements. Mendy and Robbie highlight several settings MSPs should review carefully—especially a billing change that can lock recalculation—and share practical insights on how these updates may impact real-world workflows.
Read post

In Episode 16 of By the [run]Book, Mendy and Robbie continue reviewing HaloPSA v2.210, covering a wide range of updates across billing, workflows, integrations, AI, and asset management. The episode highlights several settings MSPs should review immediately—especially a billing change that can lock recalculation—as well as improvements to ticket automation, AI categorization, and service desk efficiency.

Watch Now: By the [run]Book: Episode 16
For easier tracking, check out haloreleases.remmy.dev to filter and search HaloPSA updates by ID, version, and keyword.

Interesting Features

Editing billing time allocation will lock billing recalculation | v2.21 #1044274
A setting has been added to Billing configuration so that editing the billing time allocation on an action will lock the ticket from billing recalculation.

  • This setting can cause technicians to unintentionally override billing rules.
  • When enabled, Halo will lock the time entry and prevent recalculation of billing.
  • If your billing rules rely on rounding, billing plans, or multipliers, this can break those calculations.
  • Recommendation: Check your system and make sure this setting is turned off unless you intentionally want technicians to override billing behavior.

Credit notes can default to today’s date | v2.21 #1042924
A setting has been added to Credit Note configuration so that the Credit Date is set to today's date instead of the Invoice Date.

  • Helps keep financial reporting aligned with the actual credit date.
  • Prevents credits from affecting historical invoice periods.
  • Recommended to enable for most accounting workflows.

Auto-assign the next unassigned ticket when closing a ticket | v2.21 #1003964
Added a new setting that automatically assigns an Agent the next available Unassigned Ticket when they close a Ticket.

  • Great for service desks using load-balanced queues.
  • Reduces technician idle time between tickets.
  • Keeps agents moving directly to the next available task.

Parent tickets can inherit dates from child tickets | v2.21 #975755
Added a new Ticket Type setting: "Automatically set Start Date and Target Date based on Child Tickets".

  • Especially useful for project-level tickets.
  • Automatically keeps parent ticket timelines aligned with underlying tasks.
  • Reduces manual date management in complex projects.

FullFeature List

A setting has been added to allow the Ticket entities to be added to a separate group when creating invoices in the "Ready for Invoicing" area | v2.21 #1044974 | 2:35

This setting adds a new option for grouping ticket entities during invoice creation in the Ready for Invoicing area.

  • Provides an additional way to organize invoice entities
  • May help improve visibility when reviewing invoice lines before creation

A setting has been added to Billing configuration so that editing the billing time allocation on an action will lock the ticket from billing recalculation | v2.21 #1044274 | 5:24

This setting locks a ticket from billing recalculation when billing time allocation is edited on an action.

  • Prevents automated billing recalculation rules from applying
  • Technicians may unintentionally override billing rules
  • Locked entries must be manually unlocked before recalculating

The variable $_OPPVALUEADJUSTED has been added for the Opportunity Value | v2.21 #1043479 | 9:44

A new variable has been added for adjusted opportunity value.

  • Useful for workflows and automation referencing opportunity value
  • Allows adjusted opportunity calculations to be referenced more easily

Setting a workflow step outcome is now mandatory so that invalid step cannot be set | v2.21 #1043033 | 10:16

Workflow steps now require an outcome to be selected.

  • Helps prevent broken workflows
  • Ensures invalid workflow steps cannot be set

A setting has been added so that during Invoice creation the Invoice Address of the Customer's main Site will be used by default | v2.21 #1042925 | 11:09

Invoices can now default to the customer’s main site address.

  • Helps standardize billing addresses
  • Reduces manual selection during invoice creation

A setting has been added to Credit Note configuration so that the Credit Date is set to today's date instead of the Invoice Date | v2.21 #1042924 | 12:52

Credit notes can now default to today’s date instead of the original invoice date.

  • Helps maintain accurate financial periods
  • Prevents backdating credits to historical invoices

A setting has been added to Email configuration that will cause prefixes such as FW: and RE: to be stripped from the beginning of emails when creating new Tickets | v2.21 #1041025 | 13:11

Halo can now remove FW: and RE: prefixes when creating tickets from email subjects.

  • Keeps ticket subjects cleaner
  • May improve consistency in ticket titles

Added AI Generated Summary as an available column in ticket column profiles | v2.21 #1037790 | 14:26

AI generated summaries can now be displayed in ticket column profiles.

  • Helps technicians quickly understand ticket context
  • Useful for triage and queue management

Added the setting 'Enable config change tracking for Services' to advanced settings | v2.21 #1032549 | 14:57

A new advanced setting enables configuration change tracking for Services.

  • Improves auditing of configuration changes
  • Useful for environments that track service configuration history

Added global setting in Asset Management to add a read-only field that displays an asset's DID | v2.21 #1027632 | 22:59

A global setting can now display the asset DID as a read-only field.

  • Makes it easier to reference internal asset IDs
  • Helpful for integrations and troubleshooting

Added the ability to specify different client credentials per instance for custom integrations | v2.21 #1027506 | 23:15

Custom integrations can now use separate credentials per instance.

  • Useful for environments running test and production instances
  • Improves credential separation and security

"Main Site Address" can now be used as a field on Client and Site column profiles | v2.21 #1024856 | 23:37

The Main Site Address field can now be used in client and site column profiles.

  • Provides more flexibility when building list views
  • Helps surface key address information quickly

Added a new way to load the instances area to improve performance | v2.21 #1024619 | 24:06

The instances area has been updated with a new loading method to improve performance.

  • Helps reduce delays in environments managing multiple instances

A setting has been added to Contract configuration that allows Tickets to be created from Contract Schedules to be created a specified number of days before the Appointment date | v2.21 #1024527 | 24:29

Tickets generated from Contract Schedules can now be created a specified number of days before the appointment date.

  • Helps teams prepare for upcoming scheduled work
  • Useful for recurring service or maintenance visits

Added Owning Portfolio/Service/Business Application/CI as fields that are available to use in asset column profiles | v2.21 #1023421 | 25:39

Additional ownership-related fields are now available in asset column profiles.

  • Improves visibility across assets tied to services and business applications

Added the ability to customise which fields show on the asset dependency diagram | v2.21 #1023353 | 25:48

Asset dependency diagrams can now display customizable fields.

  • Makes dependency diagrams more flexible
  • Allows teams to tailor diagrams to relevant asset data

You can now use the query param 'include_website=true' on the get all endpoint of client to include the website in the response | v2.21 #1018061 | 25:57

The client API endpoint can now return website data when requested.

  • Useful for API integrations and reporting tools

Multiple Improvements have been made to the Twilio for WhatsApp Business Integration | v2.21 #1016946 | 26:11

The Twilio WhatsApp integration has received multiple improvements.

  • Enhances messaging support workflows
  • Improves integration functionality

Added a setting to disable assignment rules when syncing to Salesforce | v2.21 #1016418 | 27:58

Assignment rules can now be disabled during Salesforce sync.

  • Provides more control over record ownership during integration

Added 'Secret in URI Parameter' as an authentication type for triggering a runbook by a webhook | v2.21 #1011441 | 28:05

Runbooks triggered via webhook can now use a secret URI parameter for authentication.

  • Improves security when using webhook triggers

Added default user field for HubSpot quote import | v2.21 #1011046 | 28:44

HubSpot quote imports now include a default user field.

  • Helps assign imported quotes to a default user

Added a new setting that automatically assigns an Agent the next available Unassigned Ticket when they close a Ticket | v2.21 #1003964 | 28:47

Agents can automatically receive the next unassigned ticket when they close one.

  • Ideal for load-balanced service desks
  • Keeps technicians working through the queue continuously

The Chat Bot can now pull data from browser local storage on Input steps | v2.21 #999644 | 29:45

Chat Bot input steps can now access browser local storage.

  • Allows chatbot workflows to use browser-stored data

Added more configuration options for asset system fields | v2.21 #997653 | 30:52

Additional configuration options are now available for asset system fields.

  • Provides more flexibility when customizing asset fields

Added Dynamic Button Visibility to asset custom buttons | v2.21 #997641 | 31:11

Asset custom buttons now support dynamic visibility.

  • Allows buttons to appear only when relevant

Added SQL Lookups to Asset Fields | v2.21 #995633 | 37:06

Asset fields can now perform SQL lookups.

  • Enables dynamic population of asset field data
  • Useful for integrations and advanced automation

Allowed selection of a stock bin for non-serialised assets | v2.21 #989995 | 38:11

Stock bins can now be selected for non-serialized assets.

  • Improves stock and inventory management workflows

Added Days Before and After Now date validation options for date custom fields | v2.21 #984104 | 38:24

Date custom fields now support validation rules relative to the current date.

  • Enables rules like “must be X days before or after today”

"Workflow Stage" field is now available on the report query builder | v2.21 #980651 | 39:43

Workflow Stage can now be used in the report query builder.

  • Expands reporting options for workflow-based processes

Improvements to the New Relic integration | v2.21 #978676 | 40:26

The New Relic integration has received improvements.

  • Enhances monitoring integration capabilities

You can now configure whether the phone number field is mandatory at the Ticket Type level when End-Users raise tickets anonymously via the Portal | v2.21 #976768 | 40:33

The phone number requirement for anonymous portal tickets can now be configured per ticket type.

  • Gives more flexibility in portal form requirements

Added a new Ticket Type setting: "Automatically set Start Date and Target Date based on Child Tickets" | v2.21 #975755 | 40:41

Parent tickets can automatically derive start and target dates from their child tickets.

  • Very useful for project and multi-ticket workflows

Added new option to allow AI to suggest a category value from a configurable list of category values | v2.21 #972984 | 41:55

AI can now suggest ticket categories from a configurable list.

  • Helps standardize ticket categorization

Added the setting 'Allow Agent Site Restrictions to restrict against the Site's User's and the Site's Organisation' in users settings | v2.21 #965724 | 46:23

A new setting expands how Agent Site Restrictions apply to users and organizations.

  • Useful for environments with strict site access controls

Added an option to determine how the unique ID of appointments is calculated | v2.21 #961168 | 48:39

Halo now allows configuration of how appointment unique IDs are generated.

  • Relevant for calendar and scheduling integrations