Skip to content
Current/ Help Center

Fix a sync conflict between Current and your PSA

6 min read · Updated Jul 22, 2026

A conflict is logged when the two systems disagree about a field and the ownership map can't settle it silently — for example, a record edited in both systems between polls, or a Current edit that your PSA flatly rejected. Each conflict records the entity, the field, and the values involved. A push failure stores your Current value (there is no PSA value — the write never landed); an auto-resolved row stores both your value and the PSA value that overrode it. Nothing is ever swallowed. Everything on this page works identically whether your PSA is ConnectWise, Autotask, or HaloPSA — the panel and its buttons are named for your provider.

Why conflicts are rare

Current doesn't guess who wins. Each field has a declared owner, and the sync respects it in both directions. On a pull, PSA-owned fields always win in Current; Current-owned fields survive every pull. Conflicts only arise in the narrow gray zone where both sides legitimately changed the same thing.

FieldOwnerWhat that means in practice
Project name, status, budgetYour PSAThe PSA's value always wins on a pull. Change it there.
Project healthCurrentCurrent's own signal — your PSA never touches it.
Task name, statusYour PSAThe PSA is the record of truth for what the task is and where it stands.
Task start and end datesCurrentScheduling is Current's job — dates are pushed out to your PSA, not pulled over.
Critical-path flag, milestonesCurrentComputed here; there's no PSA equivalent to overwrite them.

For the full picture of which side owns what, read "Our methodology: your PSA stays the source of truth" and the field-mapping reference for your provider — "Autotask sync: the complete field-mapping reference" or "ConnectWise sync: the complete field-mapping reference."

The two kinds of conflict

The Conflicts panel on the sync health page has two tabs, and they mean genuinely different things.

  • Open — an edit you made in Current that never reached your PSA. The PSA rejected the write (a validation rule, a permission, a field it wouldn't accept), so the row shows only your Current value: "Current has X — this never reached your PSA." There is no PSA value to compare it against, because the write never landed. These are the ones to act on, and they're counted in the Outbox as undelivered work.
  • Auto-resolved — a record of where the two sides disagreed and the sync settled it without a person. When two-way sync is on, the sync only lets the PSA win a field it genuinely changed, and only if it changed it at least as recently as your Current edit of that same field (the PSA wins a tie). Nothing is lost: the value you had is stored on the row, next to the value the PSA set, so you can put it back. The reverse is recorded here too: when your Current edit was kept — because unrelated PSA activity touched the task but didn't actually change that field more recently than you did — the PSA's differing value is preserved as an audit-only row rather than applied, so an edit you made in Current no longer quietly reverts days later, and you can still see exactly what the PSA held. This tab also covers task dates the PSA changed that an earlier sync recorded but never applied: if a start or end date you set in Autotask kept showing the old value in Current, the PSA's date is now applied automatically on the next sync — as long as nobody edited that date inside Current — and the correction shows here with Restore my value.

Resolve an open conflict

  1. 1
    Open Integrations → your PSA's card → Sync details, then scroll to Conflicts
    You need to be a Tenant Admin — Sync details only shows on the card for admins. Each row shows the record (linked, so you can open it), the field, the value that failed to reach your PSA, and when the conflict was logged. Newest first. When there are open conflicts, the card also shows an "N open conflicts — review" link to the same page.
  2. 2
    Retry push — the usual answer
    This re-sends the record's current Current values through the same path the original edit used. If the rejection was transient, or you've since fixed whatever your PSA objected to, this delivers the edit and the conflict clears itself. Current stays the source of truth for the field.
  3. 3
    Accept the PSA's value — when your PSA is right
    The button is named for your provider — Accept Autotask or Accept ConnectWise. It re-pulls the record's whole project from your PSA so the PSA's values actually land in Current, then closes the conflict. Your Current value for that field is replaced.
  4. 4
    Dismiss — when neither applies
    Closes the conflict and changes nothing, anywhere. Use it when the record is obsolete or the disagreement no longer matters. It's honest about doing nothing.
  5. 5
    When one field conflicts across many records
    That's an ownership question, not a data question — decide which side owns the field and stop editing the other. There's no bulk resolve: each row still has to be cleared individually with Retry push, the Accept button, or Dismiss.
Note
Not every field has a retry path
Retry push re-sends only the fields it has a retry path for — on tasks the description, notes, estimated hours, and the start and due dates; on tickets the description and due date. Other fields (status, task type, department, priority) are changed from the task itself, not from this panel — so here the options are the Accept button or Dismiss. See "What Current writes back to Autotask (and when)" or "What Current writes back to ConnectWise (and when)."
Tip
"Fixed Work" tasks and due dates
In Autotask, a "Fixed Work" task has its due date calculated from its estimated hours, so it won't hold a due date you set in Current — Autotask accepts the push but keeps its own computed date. When you Retry push a due date to one of these, Current now automatically switches the task to "Fixed Duration" in Autotask first (which makes the dates authoritative — reversible, and how Current already schedules), then sets your date, so it sticks. You don't have to do anything; the task type just changes to Fixed Duration.
Tip
Weekend due dates move to the next business day
Autotask schedules work on business days, so a due date that lands on a Saturday or Sunday is stored as the next working day — it accepts the push, then quietly keeps Monday. This used to surface as a permanent red date-push conflict. Current now recognizes the business-day move, adopts Autotask's stored date as its own (so both systems agree), clears the conflict automatically, and tells you exactly what happened — for example "stored Mon, Nov 2 instead of Sat, Oct 31." If you need the work finished before the weekend, set the due date to the Friday.
Heads up
Accepting the PSA's value re-pulls the whole project
It doesn't cherry-pick one field — it re-runs the project's pull so the PSA's values win across that project's records. That's what makes it actually move data instead of just stamping the row, but it means any other un-pushed Current edit on the same project's PSA-owned fields is refreshed at the same time. If you only wanted one field back, use Restore my value on the auto-resolved tab instead.

Restore a value your PSA overwrote

The Auto-resolved tab lists the last 14 days of fields where the PSA's newer change beat a Current edit (up to 100, newest first). For task fields with a write path — description, estimated hours, status, task type, department, and priority — a Restore my value button puts your value back in Current and pushes it to your PSA in the same action.

Tip
Restore writes both sides on purpose
Restoring writes both sides on purpose: your value goes back into Current AND is pushed to your PSA. If it only wrote locally, the next pull would re-apply the PSA change you were undoing.

Symptom → cause

What you seeMost likely causeWhat to do
"This never reached your PSA" on a task's datesAutotask calculates a "Fixed Work" task's due date from its estimated hours and won't accept a manual one; or the dates fall outside a phase or project windowRetry push. Current now auto-switches a Fixed Work task to "Fixed Duration" (so your date sticks) and widens a too-small phase/project window for you. If a date still can't be stored, Retry push names the real reason instead of a generic failure.
The same field conflicts on dozens of recordsBoth systems are being edited for the same purposeDecide which side owns the field and stop editing the other, then clear the rows one at a time.
No Retry push button on the rowThe field has no retry path from this panelUse the Accept button or Dismiss (or change the field on the task itself).
Retry push says the fields are now empty in CurrentThe record changed after the conflict was logged; there's nothing left to sendAccept the PSA's value or Dismiss.
An edit you made "disappeared"A newer PSA change won — check the Auto-resolved tabRestore my value, which re-applies it in Current and pushes it back.
A conflict on a record you deleted in your PSAThe PSA counterpart is goneDismiss, then check "Removed in your PSA" on the sync health page.
Retry push says the task's project isn't linked to your PSAThe project is Current-native and has no counterpart to push toDismiss. See "Project modes: PSA-synced or Current-native."
Note
Conflicts self-heal when the push lands
You rarely have to close a push failure by hand. The next successful push of the same record — from Retry push, or just from rescheduling the task again in the Timeline — resolves the old conflict automatically, and the project's sync badge goes back to green. The Accept button is surgical: it reads just that one record fresh from your PSA and applies exactly the conflicted field — and if the record turns out to be deleted in the PSA, the conflict closes itself and the row is flagged under "Removed in your PSA." If a badge is stuck red with no open conflicts, run Reconcile from the sync health page.

Related reading: "Reading the sync health dashboard (and fixing a stale sync)" for the rest of the page, and "PSA rate limits and dead-letter jobs" for failures caused by throttling rather than your data.

Was this helpful?