Quickstart
First-customer Connect checklist
Halo + ConnectWise. For the MSP connecting so an ISV can use Bitlync. Not Azure. Not Autotask.
Production badge OFF. Contact create stays parked (list/match only). PSA company create refused. Never mint an agreement header.
Before you start
- ISV has a Bitlync key and a tenant for this MSP
- MSP can sign in to their Halo or ConnectWise as admin (or someone who can make an API app / API member)
- MSP knows they will paste keys into Bitlync Connect (hosted). The ISV never sees those keys
- Decide which PSA is first for this MSP (Halo or ConnectWise). One connection at a time
1. Open Connect
- From the ISV product (or Bitlync link), MSP opens the hosted Connect link for that vendor
- MSP accepts MSP Connect Terms before keys save
- Follow the numbered steps beside the fields (Halo: client ID, secret, auth + resource URLs; ConnectWise: company id, public/private keys, client id, base URL)
2. Keys and permissions
- Paste credentials
- Bitlync tests the connection in the flow
- If something is missing, fix the named permission in the PSA, then re-test — do not guess
- Prefer a
dry_run/ preview where the product offers it before real writes
3. Map companies (Match / company import from PSA / Skip)
PSA companies are the book. Bitlync does not create companies in the PSA.
| Choice | Meaning |
|---|---|
| Match | Link to a customer that already exists in the ISV. Exact same name may auto-fill Match |
| Company import from PSA | Create that customer in the ISV from the PSA company (greenfield). Never in the PSA |
| Skip | Not a customer (internal / test). Leave unmatched |
- Review rows that need a choice (Needs match = not chosen yet — not a fourth outcome)
- Ambiguous names: Match by hand. Never auto-import those
- Exact-name hits may auto-Match — that is Match, not import
4. Bulk company import (unmatched)
When many PSA companies should become ISV customers (~dozens to ~150):
- Let exact-name Match run first
- Preview with
dry_run: who will import, who is skipped (already Matched, Skip, ambiguous, not selected) - Explicit MSP action only: Import all unmatched and/or multi-select then import
- Never silent auto-import. Never import ambiguous rows
- Run for real: watch per-row progress and errors. A failed row stays unmatched for retry; successes stay
5. Contacts (list / match only)
- After companies are mapped, pull contacts under those companies
- Match on company + email (and vendor id when present)
- Do not create contacts in the PSA through Bitlync for first customer (parked)
6. Boards / statuses / priorities (ticket writes)
- Confirm Bitlync can list the PSA’s boards (or Halo teams), statuses, and priorities
- Use those when opening or updating tickets so writes land on a board/status the MSP recognizes
- Ticket create / update / note / close / time: preview with
dry_run, then commit
7. Smoke check before calling it live
- Companies: Match and/or company import from PSA worked for the rows you care about
- Contacts: list/match under a mapped company
- Ticket: dry_run then one real create (or update) on a lab/low-risk company
- Agreement lines only on an existing agreement if billing matters — no new agreement header
- Production badge stays OFF until Bitlync says otherwise
Never on this path
- Create a company in the PSA
- Silent auto-import of unmatched companies
- Contact create (parked)
- Mint an agreement header
- Turn on a ConnectWise / Halo production badge yourself
Coverage for Halo + ConnectWise today (members list, contacts list/match, boards/statuses/priorities, D mapping fields, Halo Ticket inbound PARTIAL): see Coverage. Sandbox curl day-one: Quickstart.