User guide
Projects
Looking for what it does rather than how to use it? Read the Projects overview .
What it is
Projects runs multi-week work that does not fit in a ticket: migrations, rollouts, onboarding. Each project carries its own tasks, milestones, team, risks, documents, Statement of Work, billing schedule and status reports, and moves through a defined lifecycle from initiation to closure.
An MSP runs projects for its clients; an organization runs its own. Both use the same screens, scoped to the account you are signed into.
Concepts
| Concept | What it is |
|---|---|
| Project | The container. Owns a status, a phase, a health flag, a billing type and a budget. |
| Task | A unit of work with an assignee, due date, estimate and status. Can have subtasks and blockers. |
| Milestone | A delivery checkpoint with a target date. Completing one is an explicit action. |
| Member | A person on the project, with a role of Owner, Manager, Member or Viewer. |
| Allocation | A share of a person’s week committed to the project over a date window, with optional cost/bill rates. |
| Risk | Something that could derail the project, scored likelihood × impact. |
| Document | A file attached to the project, internal by default, optionally shared with the customer. |
| Statement of Work | The scope the customer signs. One per project, versioned. |
| Billing milestone | An amount to invoice, optionally tied to a delivery milestone. |
| Status report | A periodic summary. Internal until sent to the customer. |
| Template | A reusable project skeleton — defaults plus the tasks, milestones and risks a new project starts with. |
Status vs. phase
Two independent fields, and the difference matters.
- Status is the coarse state:
PLANNING,IN_PROGRESS,ON_HOLD,COMPLETED,CANCELLED,CLOSED. Your plan’s active-project cap counts anything that is notCOMPLETED,CANCELLEDorCLOSED. - Phase is where the project sits in its lifecycle:
INITIATION→QUOTING→SOW_DRAFTING→AWAITING_ACCEPTANCE→KICKOFF→PLANNING→EXECUTION→MONITORING→CLOSING→CLOSED, plusCANCELLED.
Phase advances on its own at two points: creating a project from a quote lands it in SOW_DRAFTING, and sending a SOW moves it to AWAITING_ACCEPTANCE. When the customer accepts, it moves to KICKOFF.
Health
GREEN, YELLOW, RED or GREY, with an optional note. Set it by hand on the Settings tab, or let the nightly automation set it on a project whose automation level is SUGGEST or AUTO. Kicking off a project resets health to GREEN.
Roles and permissions
| Action | MSP Admin / Technician | Org Admin | Power User | Customer |
|---|---|---|---|---|
| View projects in scope | ✓ | ✓ | ✓ | ✓ |
| Create / edit / delete a project | ✓ | ✓ | — | — |
| Kick off, close | ✓ | ✓ | — | — |
| Tasks, milestones, members, risks, documents | ✓ | ✓ | — | — |
| Billing milestones, approve, invoice | ✓ | ✓ | — | — |
| Author and send a Statement of Work | ✓ | ✓ | — | — |
| Accept or decline a Statement of Work | — | see below | — | ✓ |
| Write, edit and send status reports | ✓ | ✓ | — | — |
| Manage project templates | ✓ | ✓ | — | — |
Every write route is floored at organization administrator, so Power Users and Customers get a read-only view. Controls they cannot use are not rendered rather than failing on click.
Who signs the SOW
Only the owning organization can accept or decline — the organization the project belongs to. An MSP prepares and sends a SOW on a client’s behalf but cannot sign for them; the API returns Only the owning organization can accept or decline this SOW.
The signing form renders in the customer portal (/user). An Org Admin of the owning organization signs by switching portals: use the portal switcher at the bottom of the sidebar and pick Customer, then open the project and go to the SOW tab. Anyone whose maximum portal level is Organization or above can switch down to Customer.
Walkthroughs
Run a project end to end
- Create it.
Projects → New project. Name and client organization are required. Pick a billing type, and optionally a template — a template brings its tasks, milestones and risks with it, not just its defaults. - Draft the SOW. Open the project,
SOW → New SOW. Fill in scope, objectives, deliverables, assumptions, constraints and terms, or press Generate with AI to draft the body and edit from there. - Send it.
Send to Customermoves the SOW to Sent, the project to Awaiting Acceptance, and renders a downloadable PDF. - The customer signs. In the customer portal they open the project’s SOW tab, type their name and signature, and accept. The project moves to Kickoff and the PDF is re-rendered with the signature block embedded.
- Kick off. Press Kick off in the project header. Status becomes In Progress, phase becomes Execution, health resets to green, and today becomes the start date if none was set.
- Run the work. Add tasks on the Tasks tab, milestones on Milestones, people on Team. Log time against the project as usual.
- Report. On Reports, either write a report or press Generate from metrics to build one from the project’s current task, milestone and time figures. Review it, then Send to email the customer and notify members.
- Bill. See below.
- Close. Press Close project and add a closing summary. The summary is posted to the activity feed as a status change.
Bill a project
Two paths, depending on billing type.
Milestone / fixed-price. On the Billing tab, create billing milestones with an amount, an optional percentage and an optional link to a delivery milestone. Each one moves PENDING → REACHED → APPROVED → INVOICED → PAID. Press Approve, then Raise invoice. The invoice is created against the client organization’s account, in that account’s currency, with tax from the organization’s country and province.
Time & materials / hybrid. Press Invoice unbilled time, enter the hourly rate, and every time entry on the project that has not yet been invoiced goes onto one invoice. Projects on any other billing type do not offer this — the API answers Time invoicing is only available for T&M or Hybrid billing projects.
A billing milestone can no longer be edited or deleted once it is INVOICED or PAID.
Turn an accepted quote into a project
On an accepted quote, press Create project. The quote’s title, description, organization and total (as the budget) are copied over and the project starts in SOW Drafting. A quote can produce exactly one project — the button becomes View project afterwards.
Build and use a template
Settings → Project Templates → New template. Set the defaults, then list the tasks, milestones and risks one per line. A milestone line can carry a day offset from the project start: Design sign-off @14.
To capture an existing project instead, open it and use Settings → Save as template.
Templates can be cloned, deactivated and deleted. Global templates are authored by Solidlio and are read-only for you; you can clone one and edit the copy.
Plan capacity
On the Team tab, Allocations commit a percentage of someone’s week over a date window. Before saving, the form shows how allocated that person already is. The backend refuses any write that would take an overlapping window past 100%: Allocation would exceed 100% (currently N% allocated in this period).
Press Workload next to a member to see everything they are committed to across projects.
Configuration
| Setting | Where | What it does | If unset |
|---|---|---|---|
| Billing type | Create form, Settings | Chooses the billing path. NOT_BILLABLE hides invoicing. | NOT_BILLABLE |
| Automation level | Create form, Settings | MANUAL, SUGGEST or AUTO — see below. | MANUAL |
| MSP visibility | Settings (client-owned) | HIDDEN, SUMMARY_ONLY or FULL_ACCESS — how much a servicing MSP sees. | FULL_ACCESS |
| Health status / note | Settings | Manual health flag shown in the header and on reports. | GREY |
| Customer visible | Per document | Exposes a document in the customer portal. | Off — internal only |
| Project manager | Create form | Writes a MANAGER membership in the same transaction as the project. | No manager |
Automation levels
- Manual — nothing runs on its own. The AI tab’s buttons still work on demand.
- Suggest — a nightly job evaluates the project and parks its findings on the AI tab as approve/dismiss cards.
- Auto — the same job executes actions above 0.8 confidence and parks the rest. Billing actions always require a human, whatever the confidence.
Plan tiers
Project management is a gated feature. Reads are never gated — after a downgrade existing projects stay visible; only creating new ones is refused.
| Plan group | Tier | Projects | Active project cap |
|---|---|---|---|
| MSP / IT Partner | Free | — | 0 |
| Starter | ● | 5 | |
| Growth | ● | 15 | |
| Scale | ● | Unlimited | |
| Enterprise | ● | Unlimited | |
| End customer | Free | — | 0 |
| Essentials | — | 0 | |
| Professional | ● | 10 | |
| Business | ● | Unlimited | |
| Enterprise | ● | Unlimited |
“Active” means any project not in COMPLETED, CANCELLED or CLOSED.
An MSP-managed client that carries no plan of its own inherits its managing MSP’s entitlement. An independent organization always uses its own.
Troubleshooting
| Message | Cause |
|---|---|
Project management isn't included in your current plan. | The account’s tier has projectManagement: false. Reads still work. |
Your plan allows a maximum of N active project(s). Upgrade to run more. | At the tier’s maxActiveProjects cap. Close or complete a project, or upgrade. |
Cannot kickoff project in <phase> phase | Kickoff only accepts KICKOFF or PLANNING. A project reaches KICKOFF when its SOW is accepted. |
Project is already <phase> | Closing something already CLOSED or CANCELLED. |
Quote must be in ACCEPTED status to create a project | Get the quote accepted first. |
A project has already been created from this quote | sourceQuoteId is unique. Open the existing project. |
Template is not active | The template is deactivated. Reactivate it or pick another. |
Only the owning organization can accept or decline this SOW | An MSP tried to sign for a client. The client signs. |
SOW must be in SENT status to accept | The SOW is still a draft, or has already been answered. |
Cannot revise an ACCEPTED SOW; its signed acceptance must be preserved. | Raise a change request instead of rewriting a signed document. |
Only draft SOWs can be deleted | Anything sent is a record. Revise it instead. |
Billing milestone must be in REACHED or PENDING status to approve | It is already approved, invoiced or paid. |
Billing milestone must be APPROVED before invoicing | Approve it first. |
Cannot delete a billing milestone that has been invoiced | An invoice exists. Credit the invoice instead. |
Time invoicing is only available for T&M or Hybrid billing projects | Change the billing type, or use billing milestones. |
No unbilled time entries found | Everything logged is already on an invoice. |
Allocation would exceed 100% (currently N% allocated in this period) | Reduce the percentage or shorten the window. |
Person is already a member of this project | They are already on the team. |
Cannot remove the last owner from a project | Promote someone else to Owner first. |
Task cannot depend on itself / Would create circular dependency | The blocker graph must stay acyclic. |
Tasks must be in the same project | Dependencies are project-local. |
Cannot update a report that has been sent to customer | Sent reports are frozen. Write a new one. |
Document data is empty or not valid base64 | The upload was truncated. Retry. |
Limits and known behaviour
- One SOW per project.
projectIdis unique on the SOW record. Revising bumps the version on the same row rather than creating a second one; earlier versions are not retained as separate records. - A signed SOW cannot be revised or edited. Scope changes to accepted work belong in a change request.
- Milestone dates are dates, not schedules. A milestone has a target date and a completion date; it has no duration and no dependency on other milestones.
- Documents are capped at 16 MB per file, uploaded as base64 in a JSON body.
- Deleting a project deletes its sub-resources — tasks, milestones, risks, documents, comments, status reports and the SOW. Invoices already raised are not affected.
- AI output is advisory. Generated plans, SOW bodies and risk assessments are shown for review; nothing is written to the project until you accept it.
- Automation never invoices on its own. Billing actions are excluded from auto-execution regardless of confidence.
- The customer portal is read-only apart from accepting or declining a Statement of Work. Posting to the activity feed is floored at Org Admin like every other write, so customers read the feed but do not add to it.