ConnectWise PSA Migration
Import your data from ConnectWise Manage / ConnectWise PSA into Ascent so you can switch without re-keying your customers and contacts. The migration is read-only and one-directional — nothing is ever written back to your ConnectWise tenant.
The migration imports your Companies (as clients), Contacts, technicians (as members), tickets, ticket notes, time entries, agreements (as contracts), configurations (as assets), projects, and opportunities. You can optionally also bring across each ticket's document attachments (see below). Incremental cut-over is supported via the changed-since date.
How your technicians and tickets come across
- Technicians (members) are imported as placeholder users so your tickets, notes, and time entries keep the right names attached — but those accounts cannot sign in (no password, marked inactive). If a technician already has an Ascent account in this organization with the same email, the migration links to it instead of creating a duplicate, and never changes their existing access. Inactive ConnectWise members are skipped.
- Tickets keep their company, contact, owner, subject, description, priority, and source. The board and status are matched by name to your existing Ascent ticket categories and statuses — so set those up first if you want them to line up. A ticket whose company didn't import is skipped (and listed in the run report).
- Ticket notes are brought in as internal notes on each ticket, preserving the author and date.
- Time entries are linked to their ticket, preserving hours, billable status, date, and rate. Time not logged against a service ticket, or whose technician wasn't imported, is skipped and noted in the report.
Agreements, configurations, projects, and opportunities
- Agreements become Ascent contracts on their company, keeping the name, status, start/end dates, and bill amount. An agreement whose company didn't import is skipped and noted in the report.
- Configurations become assets. The ConnectWise configuration type is matched to the closest Ascent asset type (servers, workstations, laptops, network gear, and so on; anything unrecognized comes in as Other with the original type kept on the record). Serial number, notes, model, and manufacturer are preserved. A configuration with no matching company is still imported — just without a client attached.
- Projects come across with their company, manager (matched to the imported technician), status, schedule dates, and estimated hours. A project whose company didn't import is skipped.
- Opportunities keep their company, contact, sales rep, expected/closed dates, and notes. Because ConnectWise doesn't store a single dollar value on the opportunity itself, the value comes in as 0 unless your tenant exposes one — you can fill it in afterward. An opportunity whose company didn't import is skipped.
Anything that can't be matched (an unrecognized priority, source, configuration type, or status, a board/status with no Ascent equivalent, a skipped record) is surfaced in the run report, so you can review it rather than having it silently dropped or guessed.
Ticket attachments (optional)
Tick Import ticket attachments when you create the migration to also bring across the documents attached to your tickets. Each ticket's ConnectWise documents are downloaded and re-hosted in Ascent, then attached to the matching ticket.
- It's off by default because downloading files is slower and heavier than the record import. Leave it off for a fast first pass, then re-run with it on when you're ready — re-running only adds the files that aren't already in Ascent (nothing is duplicated or re-downloaded).
- Attachments are only pulled for tickets that were imported; a file on a ticket that was skipped is skipped too.
- A file that comes back empty is skipped and noted in the run report.
Runs created with this option show an Attachments badge in the runs list.
Who can run a migration
Running a migration is available to the organization Owner and Admins by
default. Because it is controlled by a dedicated migrations permission, you can
also create a custom role that grants migration access to specific people and
withhold it from other admins. It handles raw source credentials and bulk-creates
records, so grant access deliberately.
Before you start
Create an API Member in ConnectWise (System → Members → API Members) and generate a public/private key pair for it, and have your integrator Client ID ready. Note these five values:
- Site — your ConnectWise host, e.g.
na.myconnectwise.net - Company ID — your ConnectWise company identifier (the tenant short name)
- Public Key and Private Key — the API member's key pair
- Client ID — your integrator/developer client id
Connecting and running
- Go to Admin → ConnectWise Migration.
- Enter your Site, Company ID, Public Key, Private Key, and Client ID.
- Click Test connection. Ascent runs an authenticated probe and shows a clear error if the credentials are rejected.
- Click Create migration. Your credentials are validated and stored encrypted at rest; they are never shown again or written to logs.
- Press Start. The import runs in the background and you can watch per-entity progress (loaded / skipped / failed).
- Cancel a run at any time while it's still pending or in progress to stop it. Cancelling halts the import where it is and marks the run Cancelled; records already imported stay in Ascent (a re-run picks up from there). Cancel is different from Delete — cancel stops a run but keeps it and its stored credentials, while Delete purges the run entirely.
Delta cut-over (optional)
When you create a migration you can set an optional "changed since" date. Leave it blank for a full import, or set a date to only pull records changed in ConnectWise since then. Because every record is matched on its ConnectWise id, a delta run updates the records you already imported and inserts only genuinely new ones — so it is safe to run again right before you go live.
The "changed since" filter applies to the records (companies, contacts, tickets, and so on). The optional ticket-attachment pass is not delta-filtered: when it's on, Ascent re-scans the full document listing for every imported ticket, not only the ones changed since your cut-over date, so attachments added to older tickets are still captured. It stays fast on a re-run because any file already in Ascent is skipped without being re-downloaded — but expect the attachment pass on a delta run to check more tickets than the record import touched.
What happens to your data
- Companies become Ascent clients. The ConnectWise company type (Client, Prospect, Suspect, …) is mapped to an Ascent client type; an Inactive status marks the client inactive. Companies flagged deleted in ConnectWise are skipped.
- Contacts are linked to their imported company. A contact whose company was not imported is skipped and noted in the run report. Email, phone, and mobile are pulled from the contact's communication items.
Re-running and idempotency
Re-running a migration is safe: records are matched on their ConnectWise id, so a re-run updates existing records instead of creating duplicates. An interrupted run resumes from its last checkpoint rather than starting over.
The run report
Each run shows per-entity counts (loaded / skipped / failed) and flags any values that could not be mapped automatically (for example, a custom company type) so you can review them. Skipped and failed records are recorded with the reason.
Cleaning up
Use Delete on a run to purge it. This removes the run and disposes of the stored encrypted credentials. Imported clients and contacts remain in Ascent.