Prepare your HaloPSA before onboarding: the setup checklist
Current's Halo connection is deep — it reads clients, contacts, agents, opportunities, projects, tickets, contracts, and time, and writes back to most of them. That depth means the quality of your first sync is decided in Halo, not in Current. This is the article to read before you paste a single credential: what to create, what to check, and what to line up, so the first pull and the first push both land.
Work through it in order, and use the "You're ready when…" checklist at the bottom as your sign-off. For the connection walkthrough itself, see "Connect HaloPSA and choose what syncs". For the field-level detail on what maps where, see "HaloPSA sync: the complete field-mapping reference".
Current reaches Halo through an API application you authorise in Configuration → Integrations → Halo API, using the "Client ID and Secret (Services)" method. The full clicks are in the connect article — here's what matters for a clean sync.
- +Grant the application enough scope. Halo's own guidance is "if unsure, set to all". A narrower scope is fine, but every area Current pulls or pushes must be enabled, or that area comes back mysteriously empty.
- +Tie the application to an agent whose role can do the work. In Halo the application is gated by BOTH its own permissions and the backing agent's permissions — scope "all" on the app won't help if the agent can't read contracts or write actions.
- +Copy the Client Secret before you leave the page and store it with your other secrets. It's your credential.
Step 2 — Make your won and lost statuses unambiguous
This is the highest-value step for the sales side. Halo doesn't have a fixed "Won" value — a quote or opportunity is won when it reaches a status you've marked as won. For quotes specifically, that's a quote status whose "System Use" is set to "Accepted" (Configuration → Quotations → Quote Statuses); an accepted quote is what Current's win-quote engine picks up.
- +Make sure exactly one quote status carries System Use = "Accepted" for the "won, waiting to convert" state, so a won quote reliably lands in Halo's "Requires Processing" set — that's what Current watches.
- +On the sales/opportunity workflow, keep your won and lost stages clearly defined and distinct, so a deal's outcome is never a guess.
- +Because Halo lets you name statuses anything, Current reads Halo's own "system use" and workflow flags rather than string-matching a label — but a tidy status list is still what makes the pull trustworthy.
Step 3 — Set up your project ticket types
In Halo a project isn't a separate object — it's a ticket of a ticket type that has project and milestone features turned on. Current syncs those as projects, their child tickets as tasks, and their milestones as phase containers.
- +Enable milestones on your project ticket type (Configuration → Tickets → Ticket Types → Settings) if you want Halo milestones to map to Current phases.
- +Decide how you build project work: as child tickets under the project, or as lightweight to-do checklist items. Current handles both — child tickets become full tasks, to-do items become checklist items — but knowing which your team uses makes the first sync read the way you expect.
- +Halo project completion percentage and other rollups are computed by Halo from the child work; Current reads them but never writes them back, so they always reflect Halo's own math.
Step 4 — Check your charge rates and contracts
Time in Halo is logged as an action on a ticket, and what actually bills depends on the charge rate and contract behind it. Current logs time against the task and pushes it to Halo, where your rate engine does the money.
- +Make sure your charge rates are set up the way you bill — Halo's rate rules (minimums, increments, rounding, and out-of-hours or weekend multipliers) mean the hours billed can differ from the hours logged, and that's Halo's rate engine working, not an error.
- +If you use prepaid (Pre-Pay) contracts, know that logging billable time against one draws down the prepaid balance — so accuracy on the time push matters. Current never re-sends a time entry blindly, exactly so a retry can't double-charge or over-draw a prepay balance.
- +For recurring revenue (MRR), Halo carries the billing period on the contract. Current reads the human billing-period label to stay safe — an unfamiliar period is left blank rather than guessed at a wrong monthly figure.
Step 5 — Agent emails must match Current sign-ins
Everything personal in Current — logging time, My Day, an account executive's CRM book, and who owns which account — hangs off one link: the Halo agent ↔ Current user match. Current makes it automatically on a lowercase email comparison between the agent's email in Halo and the person's Current sign-in email. That is the only automatic match.
- +Give every human agent a real email in Halo that exactly matches their Current sign-in email (case aside).
- +Disabled agents aren't pulled, so they can't be linked.
- +Account managers ride the same link: Halo's account-manager field on a client is an agent, so an account manager only fills in Current once that agent is linked to a Current user.
- +If an email genuinely differs, a tenant admin links the person by hand in Users & roles — deliberately admin-only, because claiming an identity is a security decision.
Step 6 — The Current-side gates
- 1CRM write mode starts at OFFEvery CRM write to Halo — clients, contacts, notes, deals — is blocked until an admin opts in. Off means no CRM writes at all.
- 2Create a test client for the middle rungTest mode allows CRM writes only against clients whose live Halo name starts with "ZZ-Current Test" (clients named with the older "ZZ-Cascade Test" prefix still count). Create one now so your team can exercise the whole flow without touching a real account, and flip to live only after test writes have landed correctly.
- 3Check the two-way sync switchIt controls task-field pushes. Decide its position deliberately as part of your go-live plan rather than discovering it later.
You're ready when…
- +An API application exists in Halo using "Client ID and Secret (Services)", scoped wide enough, backed by an agent whose role can do the work — and the Client Secret is saved with your other secrets.
- +One quote status carries System Use = "Accepted" for won quotes, and your sales workflow's won and lost stages are distinct.
- +Your project ticket type has milestones enabled if you want them, and you know whether you build work as child tickets or to-do items.
- +Your charge rates match how you bill, and you know which contracts are prepaid.
- +Every person who will use Current has an active Halo agent whose email matches their Current sign-in email, exactly (case aside).
- +A "ZZ-Current Test" client (or a legacy "ZZ-Cascade Test" one) exists in Halo for the CRM write-mode test pass.
