Dates wrong or tasks unscheduled? Use the Debugger
If a project's tasks have no dates, or the dates no longer line up with the dependency chain — the usual aftermath of a bulk import, a template build, or a big PSA sync — you don't have to drag bars around one by one. Open the project and use the Project Debugger. It lists every deduction that pulled the project's score below 100. Most rows come with a fix you can run from the panel (Recast schedule, Assign owners, Review conflicts); Budget burn just jumps you to the budget panel, and Project past due is advice only — there is no button.
The fix for dates is Recast schedule: it re-derives start and end dates for the whole project from your dependencies, against the working calendar (weekends, tenant holidays and the assignee's time off), shows you every move it wants to make, and only writes when you confirm.
Where the Debugger lives
Go to Projects and open the project. The Project Debugger panel sits near the top of the project page, just under the project summary. Its header reads "Every Current Score deduction, with its fix" and shows the project's score out of 100 on the right.
- +It is visible to super admins, tenant admins and project managers only. Engineers and read-only partners don't see the panel at all, and partners never receive project scores.
- +If the project scores a clean 100, the panel says "Nothing to fix — full marks."
- +Each row shows the deduction (for example −16), the factor name, a plain-English detail line, and the fix.
The diagnosis ladder: read the deductions first
Start with the panel, not the Timeline. The score is built from six factors, so the row that lost the most points is almost always the real problem. These are the exact weights.
| Factor | What it counts | Points lost | Cap |
|---|---|---|---|
| Overdue tasks | Open tasks whose due date is in the past | 8 each | 40 |
| Unassigned work | Open tasks with no Current owner and no PSA assignee | 3 each | 15 |
| Unscheduled tasks | Open tasks missing a start or an end date | 2 each | 10 |
| PSA sync conflicts | Unresolved conflicts on this project | 5 each | 15 |
| Budget burn | Budget over 100% consumed (20) or 90–100% (10) | 10 or 20 | 20 |
| Project past due | Project due date passed and progress is under 100% | 15 | 15 |
The score is 100 minus the total: 80 and above reads as on track, 55–79 at risk, below 55 off track. Only factors that actually deducted points appear, worst first.
Fix the dates: Recast schedule
Overdue tasks and Unscheduled tasks both offer a Recast schedule button (the count in brackets is how many tasks would move). It runs the same scheduling engine as the Timeline's "Apply cascade", so the recomputed dates agree — but the Debugger also places open tasks that have no dates at all, which the Timeline's cascade never touches, so the two can propose different numbers of moves.
- 1Open the project and find the DebuggerProjects → open the project. The panel loads the full dependency graph and time-off calendar in the background; while it does, the button reads "Analyzing…".
- 2Click Recast scheduleA preview opens: "Recast schedule — N tasks will move". Every task is listed with its stored start and end struck through and the new dates beside them.
- 3Read the "Needs a date" list, if there is oneOpen tasks the engine cannot place — no dependencies and no dates to work from — appear in an amber block underneath. Click one to open its task drawer and set a start and due date by hand. Current will not invent a date it can't justify.
- 4Apply the movesClick "Apply N moves" to write them. The button stays disabled if nothing would actually move. Cancel changes nothing.
- 5Confirm the result in the toastA success toast confirms how many tasks were rescheduled and, on a PSA-synced project, how many dates were pushed to your PSA.
What the recast engine actually does
- +It places every task at its earliest date that satisfies its predecessors, honouring all four dependency types (FS, SS, FF, SF) and any lag or lead you set.
- +It skips weekends and your tenant holidays, and it slides a task past its assignee's hard absences — PTO, holiday and blocked days. A soft "busy" calendar entry (a 30-minute meeting) does not make the day non-working.
- +It reads the whole tenant's task graph, not just this project, so a cross-project dependency still constrains these dates.
- +It fills in dates for open tasks that are missing them but are reachable through a predecessor. A completed task that has no dates is left alone — but a completed task that does have dates is still re-derived from its dependencies and will appear in the preview if it drifted, so read the move list before you apply.
- +Tasks with no predecessors keep the dates you gave them — a recast doesn't gratuitously rewrite a schedule you set by hand.
If the recast doesn't do what you expected
| What you see | What it means | What to do |
|---|---|---|
| "Dates already follow the dependencies — open the task to reschedule it by hand." | The stored dates already match the dependency-correct schedule. The overdue tasks are genuinely late, not drifted. | Open the tasks and move them yourself, or extend the project due date. |
| A "Needs a date" list | Those open tasks have no dependencies and no usable dates, so the engine has nothing to derive from. | Click each one and set a start and due date, or give it a predecessor. |
| A task you expected to move stayed put | It has no predecessors, so it is not driven by the chain. | Add the dependency — see "Task dependencies: types, lag, and the dependency map". |
| "Saved in Current — N tasks rescheduled. X dates didn't reach your PSA yet" | The new dates are safely stored in Current; the push to your PSA failed (usually a connection or permission problem). | Use the Retry button in the toast. If it keeps failing, check Sync Health. |
| "Your PSA accepted the change but did not store the new end" | Current read the record back after the push and the PSA still shows the old date. On Autotask this usually means the date was clamped against its phase or project window — Current widens those windows automatically (project first, then phase) and re-pushes, so this toast should be rare. Every push is verified by read-back on ConnectWise too. | If it still appears, the toast names the cause: a PSA-side predecessor drives the task's schedule (adjust the dependency there) or the task is complete in the PSA (reopen it), then recast again. |
The other two fixes in the panel
Unassigned work expands into the list of open tasks with no owner. Click any task to open its drawer and pick an assignee. Above the list, Current shows up to three headroom chips — for example "Alex has 6h free this week" — computed from each person's capacity, their booked work and their time off over the next 7 days. Only people with at least 2 free hours are listed, most room first.
Budget burn scrolls you to the project's budget panel. Project past due tells you the truth: adjust the project due date, or complete the project and run its close-out. The score refreshes on the next health check. For dragging bars, back-scheduling from a deadline and the critical path, see "The Timeline view: drag to reschedule, and back-scheduling" and "PTO and availability-aware scheduling in the Timeline".
