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 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

February 18, 2026
8 min read

By the [run]Book: Episode 15

Episode 15 of By the [run]Book covers Halo v2.208 and the start of v2.210, highlighting improvements to SLA response targeting, shift clock-in/clock-out tracking, bi-monthly billing schedules, and expanded team leader permissions. Mendy and Robbie break down what these changes mean for MSPs refining service delivery, billing workflows, and internal access control.
Read post

Episode 15 of By the [run]Book covers Halo v2.208 and starts into v2.210, with Mendy and Robbie walking through SLA refinements, shifts/time tracking updates, billing cadence improvements, and tighter access controls across portals and reporting. Key moments include new SLA response targeting options, a clock-in/clock-out widget for shifts, a bi-monthly schedule period, and expanded team leader controls. This is a useful episode for MSPs looking to tighten operational workflow, reporting governance, and self-service experience improvements.

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

Added an option to Service Level Agreements to enable a different First Response Target to Subsequent Responses | v2.208 #988897 | 2:04

Adds an SLA option so your first response target can differ from subsequent response targets.

  • Better reflects triage vs ongoing comms
  • Cleaner SLA reporting for service teams

Added the FAQ List Ticket field as an available option for workflow automation criteria | v2.208 #987268 | 6:13

Adds the FAQ List Ticket field as a workflow criteria option.

  • Enables knowledge-base-driven workflow logic
  • Helps route/handle KB-related ticket workflows more precisely

Added a Chat Profile setting to allow the update of the End User of Tickets linked to an Anonymous Chat if the haloChat_inboundEvent_upgradeAnonChat is successfully called | v2.208 #984332 | 7:31

Allows ticket end-user updates when an anonymous chat is successfully upgraded.

  • Improves attribution of chat-created tickets
  • Reduces manual cleanup after anonymous-to-known identity transitions

Added a "Clock in, Clock out" widget for Shifts | v2.208 #984138 | 8:00

Adds a clock in/clock out widget for Shifts.

  • Helps formalize on-duty time tracking
  • Useful for after-hours / on-call patterns

Added a 2 monthly schedule period option | v2.208 #979982 | 10:45

Adds a 2-month schedule period option.

  • Supports bi-monthly billing cadences
  • Reduces schedule workarounds

Added multiple improvements to Knowledge Base latest article links | v2.208 #979751 | 10:59

Improves Knowledge Base latest article links.

  • More consistent KB navigation as articles change/version
  • Helps avoid “stale link” confusion

Added the option 'Visible - Read Only' to Agent Asset details screen visibility | v2.208 #979737 | 11:49

Adds “Visible - Read Only” for Agent Asset details visibility.

  • Lets agents view key fields without editing
  • Supports tighter asset governance

You can now configure a ticket to load balance upon reopening if the assigned agent does not meet the mandatory qualification matching criteria | v2.208 #979563 | 12:53

Adds load-balance on reopen if assigned agent doesn’t meet qualification rules.

  • Keeps qualification matching consistent over the ticket lifecycle
  • Helps avoid “reopen back to wrong resource” situations

Added a module for an integration with Opinyin | v2.208 #978437 | 13:06

Introduces a module for an Opinyin integration.

  • Relevant if Opinyin is part of your customer feedback stack
  • Worth evaluating for review/feedback workflow alignment

You can now send test emails for individual Mail Campaign email messages | v2.208 #977085 | 13:42

Adds test email sending for individual mail campaign messages.

  • Helps validate content before sending live
  • Reduces campaign mistakes

Added multiple new Halo API Actions in runbooks | v2.208 #974932 | 13:50

Adds new Halo API actions in runbooks.

  • Expands no-code/low-code automation options
  • Reduces dependency on custom calls in some workflows

Added a new setting to split Knowledge Base view counts. When enabled, the End-User portal shows only User views | v2.208 #971344 | 14:52

Splits KB view counts so end users see only user views (when enabled).

  • Cleaner end-user analytics
  • Separates agent/internal browsing from customer consumption

Added item group restrictions and a running cost total when adding items to new tickets on the self-service portal. | v2.208 #971032 | 15:27

Adds item group restrictions + running cost total on portal ticket item selection.

  • Better guardrails for what customers can request
  • More transparent cost expectations while building a request

Added a Ticket Reference field that can be searched and included in column profiles | v2.208 #968004 | 17:39

Adds a Ticket Reference field that’s searchable and usable in column profiles.

  • Helpful for ITSM-style reference formats
  • Improves filtering and reporting in list views

Service subscribers are now grouped | v2.208 #963508 | 18:56

Groups service subscribers.

  • Improves clarity around AND/OR logic in subscriber conditions
  • Makes complex subscriber setups easier to maintain

Added dollar variables ($) CONTRACTSLA, CONTRACTSUBTYPE & CONTRACTSTATUS | v2.208 #935851 | 19:55

Adds $ variables for CONTRACTSLA, CONTRACTSUBTYPE, CONTRACTSTATUS.

  • Improves template and workflow flexibility
  • Useful for notifications, templates, and automations

Improvements to Agent Resource Booking | v2.208 #935781 | 20:00

Adds improvements to Agent Resource Booking.

  • Enhances appointment booking workflows
  • Helpful if you’re trying to reduce reliance on external schedulers

Added options to encrypt variables and responses in Custom integration methods & Runbooks | v2.208 #882510 | 21:41

Adds encryption options for variables/responses in integrations/runbooks.

  • Better security for sensitive values used in automations
  • Especially relevant for API keys and secrets

You can now set an expiry date for software against an asset | v2.208 #880465 | 22:33

Adds software expiry date tracking on assets.

  • Supports proactive renewals
  • Enables automation around expiring software

Added a ticket type level setting that can allow you to show/hide approval actions for end-users. | v2.208 #859228 | 22:54

Adds ticket-type control for end-user approval action visibility.

  • Keeps the portal cleaner where approvals aren’t relevant
  • Useful for differentiating internal vs customer-facing ticket types

Added functionality for team leaders to modify their agents’ preferences | v2.208 #855276 | 23:07

Allows team leaders to modify agents’ preferences.

  • Supports delegation without full admin access
  • Helpful in scaled team structures

Added the ability to bulk add assets to a ticket via the asset search modal screen | v2.208 #835383 | 27:26

Adds bulk add assets via the asset search modal.

  • Speeds up multi-asset incident/service request logging
  • Reduces repetitive clicking

Added the ability to set a chat profile override at user role level | v2.208 #834258 | 28:11

Adds chat profile overrides at the user role level.

  • Standardizes chat behavior by role
  • Helps maintain consistency across teams

FAQ lists can now be included in Knowledge Base links and will auto-expand on open | v2.208 #833936 | 30:24

Allows KB links to include FAQ lists and auto-expand on open.

  • Faster navigation into the exact FAQ content you want
  • Helpful for portal/self-serve KB UX

You can now specify HTML when setting a pop up note on a ticket rule | v2.208 #825950 | 30:38

Allows HTML formatting in popup notes triggered by ticket rules.

  • Create more readable/structured internal guidance
  • Useful for critical warnings, prompts, and process reminders

Credit notes are now displayed along side invoices on the self service portal | v2.208 #806488 | 33:34

Shows credit notes alongside invoices in the portal.

  • Improves billing clarity for customers
  • Reduces confusion during reconciliation

Added a new setting to limit agents and users to one active session | v2.208 #761279 | 33:52

Adds a setting to limit users/agents to one active session.

  • Helpful for security and account-sharing prevention
  • Supports tighter access governance

Added TD Synnex Quote Line Imports | v2.208 #698431 | 34:03

Adds TD Synnex Quote Line Imports.

  • Speeds quote building for MSPs using TD Synnex
  • Reduces manual entry errors

Added the ability to set specific colours for counters widgets when using dark mode | v2.208 #681842 | 34:07

Adds dark mode counter widget color options.

  • Improves readability for dark mode users
  • Helps dashboard clarity

It is now possible to create downpayment invoices from Sales Orders for both fixed price hardware/projects and time and materials projects | v2.208 #596243 | 34:26

Adds downpayment invoice creation from sales orders (fixed price + T&M).

  • Useful for upfront deposits on projects/hardware
  • Supports cashflow management

Added multiple settings in Self Service Portal settings to limit options to the Web Access Level list | v2.208 #436892 | 35:29

Adds settings to limit portal options to Web Access Level list values.

  • Reduces risk of accidental “too broad” portal access
  • Makes permissioning more controllable

Added the ability to use access control for reports | v2.208 #262984 | 37:46

Adds access control for reports.

  • Lock down sensitive financial/ops reporting
  • Useful for larger MSPs with more role separation

End of 2.208 Q/A and Cats! On to 2.210 | 41:59

When using the Addigy integration a button will show on devices imported to open the device in Addigy | v2.210 #1054688 | 46:52

Adds a deep link button on imported Addigy devices.

  • Faster navigation between Halo and Addigy
  • Reduces context switching for techs

Multiple changes made to the Expenses list | v2.210 #1053141 | 47:06

Multiple changes made to the Expenses list.

  • Improves list usability and admin workflows
  • Helpful if you use Halo expenses operationally

Halo Portal and Agent application (including dashboards) iframes can now be embedded in SharePoint pages | v2.210 #1051449 | 47:32

Allows embedding Halo portal/agent UI (including dashboards) in SharePoint via iframe.

  • Useful for intranet-style “single pane” access
  • Supports internal operational dashboards

A setting has been added to Recurring Invoice configuration so that Recurring Invoices appear in the Ready for Invoice list and are auto-created (if enabled) if the next creation date falls in the current/selected month | v2.210 #1051296 | 47:58

Changes how recurring invoices appear/create based on month selection.

  • Impacts finance workflows—review before enabling
  • Useful for month-based invoice planning

A setting has been added to Contract/Agreement configuration that will ensure when adding a Billing Plan Combination using a Billing Template a record will be added for each matching Contract/Agreement | v2.210 #1050626 | 48:32

Ensures billing template application creates a billing plan record per matching contract/agreement.

  • Helps when contracts renew/change and you still need accurate billing mapping
  • Reduces edge cases in contract-driven billing

Additional import fields have been added to the NinjaOne Device import - Last Contacted and Created Date | v2.210 #1050486 | 51:33

Adds Last Contacted + Created Date fields to NinjaOne device import.

  • Enables stale-device reporting (offline 30/60/90 days)
  • Supports cleanup and license optimization workflows

A setting has been added to Ticket/Opportunity Types so that the "Send" button can be removed from the Quote screen, so that the Quote can only be sent from the Ticket/Opportunity | v2.210 #1049474 | 54:04

Removes quote “Send” button so sending happens only via ticket/opportunity.

  • Enforces process consistency
  • Reduces accidental sends from the quote screen

A setting has been added to the Asset Field properties so that Change History records are not created for the Asset Field | v2.210 #1048570 | 54:35

Disables change history tracking for selected asset fields.

  • Prevents noisy logs on frequently updated fields
  • Helps keep asset records cleaner long-term

A permission has been introduced for Users and User Roles so that Invoice access can be restricted to No Access/Site/Client | v2.210 #1048548 | 55:32

Adds invoice access restriction levels (No Access/Site/Client).

  • Tightens financial visibility controls
  • Useful for role-based access separation

If an overriding Contract/Agreement is set against a Ticket but not configured to show in the Field List then it will still show but only administrators will be able to edit/update the field | v2.210 #1046935 | 56:13

Shows the overriding contract field even if it isn’t on the field list (admin-editable only).

  • Makes hidden billing context visible for troubleshooting
  • Reduces “why isn’t billing applying?” mysteries

Database Lookup functionality can now be used when entering an action using the self-service portal | v2.210 #1046459 | 56:58

Enables database lookup while entering an action in the self-service portal.

  • Makes portal actions more dynamic and guided
  • Useful for structured self-service inputs

Updated Account Integrator released that is compatible with Sage UK v32 (2026) | v2.210 #1046181 | 57:14

Updates the Account Integrator for Sage UK v32 (2026).

  • Relevant for Sage UK accounting users
  • Helps keep finance integrations current

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.210 #1044974 | 57:32

Adds a setting to group ticket entities separately during invoice creation.

  • May improve invoice grouping/organization depending on your billing setup
  • Worth testing in “Ready for Invoicing” workflow