Import & export
Bring the plan you already have.
Nine CSV templates and one spreadsheet workbook, one sheet for each tracker. Everything that comes out goes back in, and the import engine carries a test suite whose bulk is about the ways an import can quietly destroy your afternoon.
Three landing modes
What should this file do to what is already there?
Every import asks that question before it does anything, because the three possible answers are wildly different and only one of them is safe to guess.
Update existing only
Rows whose ID already exists are updated. Rows whose ID is unknown are skipped, and you are shown a list of exactly which ones were skipped rather than being told a count.
For a file that came back from a client with edits, where you do not want their copy adding rows to yours.
Add & update
The default. Known IDs are updated, unknown IDs are added, and nothing is deleted. A merge, in the ordinary sense.
For normal work. This is what you want almost every time.
Replace everything
Your file becomes the entire list. Anything not in it is deleted. The preview turns red, names Every Single Row it is about to remove, and puts the count on the button you have to press.
For when you genuinely mean it, which is rarer than people think.
The rules that stop bad imports
Two decisions worth knowing before you upload.
A blank cell means leave this alone
It never means erase this. If you want to clear a field you clear it explicitly. This one rule is why you can hand a client a CSV of six columns, get it back with four filled in, and import it without wiping the other two.
One bad cell blocks the whole file
Not a partial load with forty rows in and a warning somewhere. The import stops, tells you the line number and what was wrong with it, and changes nothing. A half-applied import is much harder to recover from than a rejected one.
Nine templates
One per tracker, plus the workbook.
Download them empty, fill them in whatever you use, upload them back. Or export what you already have, edit it, and re-import.
| Template | What it carries |
|---|---|
| WBS & Phases | Phase, workstream, mode, priority, complexity, base hours, scope multiplier, percent complete, actual hours, role, gate flag, optional start and finish dates |
| RAID Log | Type, description, impact, probability, owner, raised date, due date, mitigation, status |
| Issues & Decisions | Date, issue or decision, description, raised by, owner, priority, due, resolution, status |
| UAT Scripts | Module, scenario, expected result, actual result, pass/fail/blocked, severity, tester, status |
| Data Migration | Object, module, approach, source count, loaded count, validation method, reconciled, owner, status |
| Resources | Name, role, hourly rate, allocation, weekly capacity |
| Go/No-Go Readiness | Dimension, criterion, score, weight, owner. Weights must total 1.00 exactly |
| RACI | Workstream, person, their role, RACI letter |
| Responsibility Handover | Area, priority, scope, applies to, trigger, transition steps, from owner, to owner, due date, status |
Getting out
Leaving is meant to be easy.
A tool that holds delivery plans for client engagements should not be able to hold them hostage. Two ways out, both one click.
Whole project as JSON
One file with everything in it, including the note threads that do not travel in per-tracker CSVs. It reads straight back in, so it doubles as your backup and your way of moving a project between machines.
Any tracker as CSV
Opens in any spreadsheet, goes to a client, gets edited by somebody who has never heard of this product, comes back and imports cleanly. That round trip is the point. On the hosted build a strict download policy can force the same bytes to arrive as .txt; the app tells you when that happens.
Import your current plan and look at it properly.
Nine templates, a preview before anything changes, and a full export whenever you want to leave.