Projects
This page is generated from the in-app guide content — edit
featureToggleGuidesand runpnpm gen:feature-toggle-docs.
Allow self-approval
When off, a person cannot approve their own project time logs or project expenses (one by one or in bulk). It can only tighten: finance-ledger expenses also follow the company-wide self-approval rule.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.self_approval_allowed | On | /projects/settings | — |
How it works
Decides whether a person may approve their own project time logs and project expenses from the Projects app.
When ON
Allowed by the Projects app: you may approve or adjust your own time log and approve your own legacy project expense. A finance-ledger expense still follows the company-wide rule Approval → Allow self-approval.
When OFF
Approving or adjusting your own time log, and approving your own project expense (one by one or in bulk), is refused (self-approval policy). Bulk approval skips your own rows and reports how many were skipped.
Screens, documents and reports affected
Project time logs (approve, bulk approve, adjust after approval), project expenses (approve).
Caveats
This switch can only tighten: it never lets a finance-ledger expense through when the company-wide rule blocks self-approval (single-person companies turn that rule on in Approvals settings). Hours logged on tasks without a project are always blocked from self-approval. Budget override decisions never allow self-approval.
Approvers can adjust approved hours
The approver may correct total, overtime and billable hours of an approved entry (with a reason and history) as long as it has not been invoiced, recharged, paid in payroll or locked. Off: corrections only by rejecting the entry back to the employee.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.time_log_post_approval_adjust | On | /projects/settings | — |
How it works
Lets the approver correct total, overtime and billable hours of an approved time log, with a reason, keeping revision history.
When ON
The Adjust action appears on approved hours. It is refused if the hour is invoiced, being billed, recharged as an internal charge, synced from Service Management, in a payroll run or in a locked period or timesheet week. An adjusted billable hour goes back to unbilled.
When OFF
The Adjust action is hidden and refused (feature disabled); corrections are done by rejecting the hour back to the employee.
Screens, documents and reports affected
Project time logs, time approval dialog.
Caveats
Adjusting your own hour also needs Allow self-approval on. Billable hours can only be changed while Billable time is on, and billable overtime only while Bill overtime at a premium is on.
Assign tasks to a team
Allow a task to be handed to a team queue, so any member can pick it up.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.team_task_assignment | Off | /projects/settings | Team management (projects.team_management) |
How it works
Lets a task be handed to a team queue so any member can pick it up.
Conditions for it to take effect
Needs Team management on.
When ON
Assignee pickers list teams; create, edit, assign, bulk edit and the AI reassign action accept a team. A member picks a task up by becoming its assignee.
When OFF
Pickers show no teams and a team sent on create or edit is silently dropped; clearing a team still works.
Screens, documents and reports affected
Task form, assignee pickers, bulk edit, team detail (unclaimed tasks).
Caveats
Tasks past backlog still need a person as assignee, so a team queue is useful mainly for backlog. Turning it off keeps the team on existing tasks (still shown on task detail). Team members see the team’s work requires this (turn that off first).
Bill overtime at a premium
Invoices from hours split billable overtime into its own line priced at the bill rate × the overtime multiplier of the day type (weekday, Sunday, holiday). Off: overtime is billed at the regular rate.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.bill_overtime_premium | Off | /projects/settings | Bill customers for time (T&M) (finance.billable_time) |
How it works
When an invoice is made from hours, billable overtime is split into its own line priced at bill rate × the multiplier of the day type.
Conditions for it to take effect
Needs Finance → Billable time (finance.billable_time) on; while it is off every hour is saved as non-billable.
When ON
Invoice from hours (project and Finance timesheets) adds overtime lines at the weekday, rest-day or holiday multiplier. An invalid multiplier (below 1) refuses the invoice.
When OFF
Overtime is billed at the regular bill rate.
Screens, documents and reports affected
Project → Generate invoice from hours, Finance timesheets invoice, time approval dialog (billable overtime field).
Caveats
Applied when the invoice is made, so changing it reprices approved hours not yet invoiced. Service Management billing has its own overtime rate and ignores this. Day type comes from attendance; without attendance a Sunday is still detected but a holiday is not.
Billable by default
New project and task time logs are marked billable unless changed. Does not apply to expenses.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.billable_by_default | Off | /projects/settings | Bill customers for time (T&M) (finance.billable_time) |
How it works
Default for the billable flag of a new time log when the person does not tick or untick it.
Conditions for it to take effect
Needs Finance → Billable time (finance.billable_time) on; while it is off every hour is saved as non-billable.
When ON
New hours that do not say billable or not are billable — on every time-log path (Projects, tasks, daily logs, Time Tracking, Finance timesheets, import). Internal projects are never billable.
When OFF
Those hours are non-billable unless ticked.
Screens, documents and reports affected
All time-log entry points.
Caveats
Applies to time only, not expenses (an expense is rebillable only via Expense rebilling). Forms that show a billable checkbox send it explicitly, so the default mainly matters for mobile and API clients. Hours synced from Service Management keep their Service Management billable flag. Existing hours do not change.
Block completing with open tasks
Prevent marking a project completed while it still has open tasks.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.block_close_with_open_tasks | Off | /projects/settings | — |
How it works
Checked on every move to Completed: editing the status, the status action and the closure approval outcome.
When ON
Completing a project that still has tasks not Done or Cancelled is refused, with the number of open tasks.
When OFF
A project can be completed with open tasks.
Screens, documents and reports affected
Project detail → status, closure approval.
Caveats
Projects already completed are untouched. If closure approval is approved but tasks were reopened meanwhile, completion fails and is only logged — the project stays open. CSV import can create a project directly as Completed.
Block time and expenses on paused projects
While a project is On hold, new time logs and expenses against it are refused (from Projects, tasks, Time Tracking, timesheets and Finance). Tasks and milestones can still be planned.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.block_work_on_hold | Off | /projects/settings | — |
How it works
While a project is On hold, refuses new time and project expenses against it.
When ON
Logging time (project, task, daily log, Time Tracking, Finance timesheets) and adding expenses (Projects, Finance expenses with a project) on an On hold project are refused (not allowed in this state). Tasks, milestones and invoices are still allowed.
When OFF
An On hold project accepts time and expenses as before.
Screens, documents and reports affected
All time-log entry points, project expenses.
Caveats
Exempt by design: hours synced from Service Management, project import and expenses created from an approved employee expense request. Read live: records created before the hold stay, and the gate lifts as soon as the project resumes.
Client projects (revenue)
Projects can be done for customers: project type (fixed price, T&M, retainer), revenue tab, margin, milestone values and invoices, linking quotes/orders/invoices. Off: internal-only mode — every project is an internal cost project and billing UI is hidden.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.client_projects | On | /projects/settings | — |
How it works
Master switch for the revenue side of Projects. One rule decides whether a project has revenue: this switch is on AND the project type is not Internal. Every revenue write path (milestone amounts, milestone invoices, invoice from hours, rebilling, linking quotes/orders/invoices, project type) checks the same rule; a database trigger keeps hours non-billable.
When ON
Project types, the Revenue tab, revenue/margin KPIs, milestone values and invoices, and the Bill customers for time switch are available. Internal projects still have no revenue side.
When OFF
New projects are created as Internal and the type field is hidden. Revenue, margin, milestone values, invoice buttons, billable hours and the billing tabs of the budget hub are hidden; revenue actions are refused (feature disabled). Costs, budgets, hours and expenses work as usual.
Screens, documents and reports affected
Project create/edit, project detail (overview KPIs, Revenue, milestones, expenses), budget hub, resources, workload, task time logs, project settings, AI agents and chat tools about billable hours or margin.
Caveats
Off by default for new companies; existing companies were set from their data (on if they already had customer projects, project invoices, milestone amounts, billable time or Service Management projects). Turning it off changes no data — existing customer projects are simply treated as internal until it is turned back on. Service Management billing is not affected.
Closing a project needs approval
Moving a project to Completed sends a closure request to the approval inbox; the project stays open until it is approved. Needs an active workflow for “Project closure”.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.closure_approval_required | Off | /projects/settings | — |
How it works
Turns moving a project to Completed into a closure request that goes to the approval inbox (workflow subject Project closure).
When ON
The project keeps its status and shows a closure banner until the request is decided; approval completes it, rejection keeps it open. With no active Project closure workflow, every close is refused (prerequisite missing). A second request while one is pending is refused.
When OFF
Completed closes the project directly.
Screens, documents and reports affected
Project detail → status, approval inbox.
Caveats
Create and activate a Project closure workflow before turning this on. Turning it off while a request is pending: the next Completed closes the project directly and withdraws the pending request from the inbox. Block completing with open tasks is checked again when the approval lands. CSV import can still create Completed projects (migration).
Expense tracking
Allow recording project expenses. Turning this off blocks new expenses against projects, from Projects and from Finance.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.expense_tracking_enabled | On | /projects/settings | — |
How it works
Capability switch for recording expenses against projects — from the Projects app and from Finance expenses tagged with a project.
When ON
Project expenses can be recorded from the project.
When OFF
Creating an expense against a project is refused (feature disabled) from Projects and from Finance (form, import, AI assistant).
Screens, documents and reports affected
Project detail → Expenses.
Caveats
Editing and approving existing expenses still work. An expense created as the consequence of an approved employee expense request is exempt (the request was already approved). The tab is not hidden.
Kickoff approval threshold
New projects (from the form, a template, a quotation or a CRM lead) with a budget at or above this amount wait for kickoff approval before work starts.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.kickoff_threshold | 50000000 | /projects/settings | — |
How it works
Budget amount (company currency) at or above which a new project waits for kickoff approval (workflow subject Project change) before work starts. Applies to the New project form, templates, projects created from a quotation and projects created when converting a CRM lead. Default 50,000,000.
When ON
A project created from the form or a template with budget ≥ threshold is saved as Pending approval: core fields are locked and time, expenses and invoices are refused until approved. Approval moves it to Planning; rejection cancels it.
When OFF
There is no off: set a very high amount to effectively disable it. With no active workflow, or an auto-approve policy, projects go straight to Planning.
Screens, documents and reports affected
Projects → New project, create from template (the template dialog warns), approval inbox.
Caveats
A budget in another currency is converted to company currency; with no exchange rate the project is held. Service Management workspaces (Service Management has its own approval threshold) and CSV import (migration) skip it, and raising the budget later never triggers kickoff. A changed value applies to new projects only.
Only project members can be assigned
Assignee, co-assignees, reviewer, risk/issue/deliverable owners and new project time entries accept only active members of that project (the project owner always counts). Turn off to allow anyone in the company Projects directory.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.assign_roster_only | On | /projects/settings | — |
How it works
Pickers and saves for people on a project’s records accept only active members of that project; the project owner always counts.
When ON
Task assignee, co-assignees and reviewer, risk/issue/response owners, deliverable owners and new time logs (project, task, daily log, Time Tracking, Finance timesheets) are refused for non-members. Pickers on web and mobile list members only.
When OFF
Anyone in the company Projects directory can be chosen.
Screens, documents and reports affected
Task form, risks, issues, deliverables, time logging, web and mobile pickers.
Caveats
On by default; existing rosters were back-filled so turning it on did not block running work. Only newly chosen people are checked — current non-member assignees are not re-checked. A member marked inactive is refused. Service Management sync and project import are not checked; editing a time entry cannot change its person.
Overtime bill multiplier — public holiday
Billed overtime on a public holiday (from the attendance calendar): bill rate × this multiplier.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.overtime_bill_multiplier_holiday | 3 | /projects/settings | Bill overtime at a premium (projects.bill_overtime_premium) |
How it works
Multiplier applied to the bill rate for billable overtime on a public holiday when Bill overtime at a premium is on. Default 3.
Conditions for it to take effect
Needs Bill overtime at a premium on (which itself needs Finance → Billable time).
When ON
Overtime lines for a public holiday are priced at bill rate × this value on the next invoice from hours.
When OFF
Not read while Bill overtime at a premium is off.
Screens, documents and reports affected
Invoice from hours (project and Finance timesheets).
Caveats
Must be 1 or more; an invalid value refuses the invoice. This is a SELLING multiplier, not the HR overtime pay rate. Changing it reprices approved hours not yet invoiced. A holiday is recognised only when attendance marks it.
Overtime bill multiplier — rest day
Billed overtime on a Sunday / rest day: bill rate × this multiplier.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.overtime_bill_multiplier_sunday | 2 | /projects/settings | Bill overtime at a premium (projects.bill_overtime_premium) |
How it works
Multiplier applied to the bill rate for billable overtime on a rest day (Sunday) when Bill overtime at a premium is on. Default 2.
Conditions for it to take effect
Needs Bill overtime at a premium on (which itself needs Finance → Billable time).
When ON
Overtime lines for a rest day (Sunday) are priced at bill rate × this value on the next invoice from hours.
When OFF
Not read while Bill overtime at a premium is off.
Screens, documents and reports affected
Invoice from hours (project and Finance timesheets).
Caveats
Must be 1 or more; an invalid value refuses the invoice. This is a SELLING multiplier, not the HR overtime pay rate. Changing it reprices approved hours not yet invoiced.
Overtime bill multiplier — weekday
Billed overtime hours on a regular working day are priced at the bill rate × this multiplier.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.overtime_bill_multiplier_regular | 1.5 | /projects/settings | Bill overtime at a premium (projects.bill_overtime_premium) |
How it works
Multiplier applied to the bill rate for billable overtime on a weekday when Bill overtime at a premium is on. Default 1.5.
Conditions for it to take effect
Needs Bill overtime at a premium on (which itself needs Finance → Billable time).
When ON
Overtime lines for a weekday are priced at bill rate × this value on the next invoice from hours.
When OFF
Not read while Bill overtime at a premium is off.
Screens, documents and reports affected
Invoice from hours (project and Finance timesheets).
Caveats
Must be 1 or more; an invalid value refuses the invoice. This is a SELLING multiplier, not the HR overtime pay rate. Changing it reprices approved hours not yet invoiced.
Project budget enforcement
What happens when an approval would push a project past its budget. Compares budget against incurred cost plus open purchase orders and requisitions; Block sends the approval to a budget-override step.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.budget_enforcement | off | /projects/settings | — |
How it works
What happens when an approval would push a project past its budget. Spend = incurred cost + open purchase orders + open purchase requisitions.
When ON
Warn: the approval goes through with a budget warning. Block: a project expense approval, a purchase requisition submit or a purchase order approval that would overrun goes to an extra budget-override approval instead of completing.
When OFF
Off (default): no check; budget reports still compute.
Screens, documents and reports affected
Project expense approval, purchase requisitions, purchase order approval, project budget status.
Caveats
Time-log approvals are never stopped, only logged. Projects whose budget is in a different currency from the company, or have no budget, are skipped; a read error lets the approval through. Bulk approval of project expenses skips rows held for budget override.
Project labour cost from internal rates
Cost each project hour at Accounting’s internal labour rate (Internal charges) for the employee’s position and level, so project cost matches internal charges. When on, the Cost column of the hourly rate cards and the separate cost/bill toggle no longer affect cost — the project card only sets the bill rate. An internal rate in another currency is converted at the work date’s exchange rate; with no rate, or no internal rate found, the hour is flagged for repricing.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.labor_cost_from_internal_rate | On | /projects/settings | — |
How it works
Costs each project hour at Accounting’s internal labour rate for the person’s position and level on the work date. Applies to every time-log path, including hours synced from Service Management.
When ON
Cost = internal rate (converted at the work date’s exchange rate if in another currency). No employee record, no internal rate or no exchange rate ⇒ cost 0 and the hour is flagged for repricing. The project rate card only sets the bill rate.
When OFF
Cost comes from the rate card (Separate cost rate from bill rate) or equals the bill rate.
Screens, documents and reports affected
Project cost, labour margin, profitability, Hourly rate cards, Reprice labour cost.
Caveats
On by default for new companies; companies that already had time logs were pinned off by migration so their figures did not change. Changing it does not reprice existing hours, and editing an hour only reprices it when its date, rate or billable flag changes. Reprice labour cost is a manual action that only runs while this is on, converts foreign-currency internal rates like new hours do, and skips hours already recharged.
Rebill project expenses to the customer
Approved expenses marked billable can be included on the customer’s invoice when you choose to include them. Off, expenses stay in the project cost column only.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.expense_rebilling | Off | /projects/settings | Bill customers for time (T&M) (finance.billable_time) |
How it works
Lets approved project expenses (and materials) marked billable be added to the customer’s invoice.
Conditions for it to take effect
Needs Finance → Billable time (finance.billable_time) on; while it is off every hour is saved as non-billable.
When ON
Expenses and materials can be marked billable, and Generate invoice offers Include expenses / Include materials; only approved or paid, not voided, not yet rebilled items are added — never automatically. Service Management billing can stage them too.
When OFF
Marking items billable, the rebillable queue and including expenses or materials in an invoice are refused (feature disabled); expenses stay in project cost only.
Screens, documents and reports affected
Project expenses, project materials, Generate invoice dialog, Service Management billing.
Caveats
Turning it off keeps the billable flag on existing expenses (inert) and leaves already rebilled expenses on their invoices.
Require a bill rate for billable hours
A billable hour on a Time & material or Retainer project must match a card in the hourly rate cards (or carry a manual rate). Off: an hour with no card takes the system default rate and is flagged as not configured. Fixed-price and internal projects, and hours synced from Service Management, are never blocked.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.require_bill_rate_card | Off | /projects/settings | Bill customers for time (T&M) (finance.billable_time) |
How it works
Requires a billable hour on a Time & material or Retainer project to match a card in the hourly rate cards, or carry a manual rate.
Conditions for it to take effect
Needs Finance → Billable time (finance.billable_time) on; while it is off every hour is saved as non-billable.
When ON
Saving such an hour with no matching card is refused (bill rate not configured) on every time-log path.
When OFF
An hour with no card takes the system default rate and is marked as default-rated.
Screens, documents and reports affected
All time-log entry points, Hourly rate cards.
Caveats
Fixed-price and internal projects, non-billable hours and hours synced from Service Management are never blocked. Only checked when the hour is saved: hours stored earlier at the default rate keep that rate and are invoiced at it.
Require a budget
Block creating a project without a budget amount greater than 0.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.budget_required_on_create | Off | /projects/settings | — |
How it works
Checked when a project is created (form, template, campaign, Service Management workspace, AI chat).
When ON
Creating a project with no budget or a budget of 0 is refused.
When OFF
Budget is optional.
Screens, documents and reports affected
Projects → New project, create from template, campaign → project, Service Management workspace, quotation → project, CRM lead conversion, AI chat.
Caveats
Only at creation. Applies to the same paths as the owner rule (a quotation or lead with value 0 cannot create a project); only CSV import is exempt. The budget entered here is also what the kickoff approval threshold compares against.
Require an approved budget
After creation, the project budget comes only from the approved cost estimate (baseline): editing the budget by hand is refused, and a project cannot start (Active) until its estimate is approved.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.budget_approval_required | Off | /projects/settings | — |
How it works
Makes the approved cost estimate (baseline) the only source of a project’s budget after creation.
When ON
Changing the budget by editing the project is refused, and moving a project to Active is refused until it has an approved budget version.
When OFF
Budget can be edited freely until a baseline is approved.
Screens, documents and reports affected
Project detail → edit, status change to Active, budget versions.
Caveats
Not checked at creation: a budget typed on the New project form, from a template, quotation, lead conversion, Service Management or import is kept, and import can create Active projects. Once a baseline is approved, hand edits are blocked even with this off. Projects already Active stay Active. The budget field is not locked in the form; the save is refused.
Require an owner on new projects
Block creating a project unless an owner is assigned.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.owner_required_on_create | Off | /projects/settings | — |
How it works
Checked when a project is created: from the New project form, from a template, from a marketing campaign, from a Service Management workspace or from the AI chat.
When ON
Creating a project without an owner is refused with an error message.
When OFF
No check: a project created without an owner gets the creator as owner.
Screens, documents and reports affected
Projects → New project, create from template, campaign → project, Service Management workspace, quotation → project, CRM lead conversion, AI chat.
Caveats
Only checked at creation — the owner can later be cleared by editing. Applies to projects from the form, templates, campaigns, Service Management workspaces (checked before the Service Management project is saved), quotations, CRM lead conversion and the AI chat; only CSV import (migration) is exempt.
Require start & due dates
Block creating a project without both a start date and a due date.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.dates_required_on_create | Off | /projects/settings | — |
How it works
Checked when a project is created (form, template, campaign, Service Management workspace, AI chat).
When ON
Creating a project without both a start date and a due date is refused.
When OFF
Dates are optional.
Screens, documents and reports affected
Projects → New project, create from template, campaign → project, Service Management workspace, quotation → project, CRM lead conversion, AI chat.
Caveats
Only at creation; dates can be cleared later by editing. Applies to the same paths as the owner rule — the CRM lead conversion dialog asks for project dates; a Service Management project without dates is refused before it is saved. Only CSV import is exempt.
Risk register
Allow adding risks to the project risk register. Turning this off blocks new risks; existing risks stay visible and editable.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.risk_register_enabled | On | /projects/settings | — |
How it works
Gates adding new risks to a project’s risk register.
When ON
Risks can be added from the project and by the AI action create_project_risk.
When OFF
Adding a new risk is refused (feature disabled) and the Add risk buttons are hidden.
Screens, documents and reports affected
Project detail → Risks.
Caveats
Only creation is blocked: existing risks stay visible and can still be edited, moved through their states, turned into issues and given responses or reviews, so open risks can be closed out.
Separate cost rate from bill rate
Only used when cost does NOT come from internal rates: lets the Cost column of the hourly rate cards differ from the bill rate, so labour margin can be measured. When off, cost equals the bill rate.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.separate_cost_bill_rate | Off | /projects/settings | — |
How it works
Used only when cost does not come from internal rates: lets the Cost column of an hourly rate card differ from its bill rate.
When ON
A new or repriced hour takes its cost from the rate card’s cost rate, so labour margin can be measured.
When OFF
Cost is set equal to the bill rate (labour margin 0).
Screens, documents and reports affected
Projects settings → Hourly rate cards, project cost and profitability.
Caveats
Inert while Project labour cost from internal rates is on. Existing hours are not repriced when you change it; editing an hour reprices it only when its date, rate or billable flag changes. With no rate card at all, cost and bill both use the system default rate.
Share progress with customers
Project managers can invite customer contacts by email to a read-only progress portal (link + PIN that rotates every 1, 7 or 30 days). Customers see milestones, deliverables, tasks, dependencies, the Gantt chart and comments — never items marked Internal, money, hours or assignees — and can comment on tasks.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.client_share | Off | /projects/settings | — |
How it works
Lets project managers invite customer contacts by email to a read-only progress portal (link + PIN rotating every 1, 7 or 30 days).
When ON
The Share with customer panel appears on the project. Customers see milestones, deliverables, tasks, dependencies, the Gantt chart and comments — never items marked Internal, money, hours or assignees — and can comment on tasks.
When OFF
The share panel is hidden; invite, update and resend are refused (feature disabled) and customer links return not found.
Screens, documents and reports affected
Project detail → Share with customer, the customer portal, PIN rotation job.
Caveats
Opens project data to people outside the company. Turning it off does not revoke shares: listing and revoking still work, and turning it back on revives active links (expired PINs rotate on the next run).
Team management
Turn on reusable project teams: named groups of people you can attach to a project in one step.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.team_management | Off | /projects/settings | — |
How it works
Turns on reusable project teams: named groups of people you can attach to a project in one step.
When ON
The Teams page and menu appear; teams can be created and linked to projects, and linking adds the team’s members to the project’s member list. Team options appear on members and capacity pages and on mobile.
When OFF
Teams UI is hidden and team create/edit/link is refused (feature disabled).
Screens, documents and reports affected
Projects → Teams, Members, project members, Resources → Capacity, mobile.
Caveats
On for new companies. Turning it off keeps teams and links in the database, and members already added stay on projects. Assign tasks to a team requires this (turn that off first).
Team members see the team’s work
Being on a team grants visibility of that team’s projects and its queued tasks. This widens access — it never hides anything.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.team_data_scope | Off | /projects/settings | Assign tasks to a team (projects.team_task_assignment) |
How it works
Widens own/team data scope: being on a team grants visibility of projects the team is linked to and of tasks queued to the team.
Conditions for it to take effect
Needs Assign tasks to a team on (and so Team management).
When ON
Project and task lists, details and roll-ups (portfolio, P&L, overviews, review, My tasks) include the team’s projects and queued tasks for its members — one rule read per record, so list and detail always agree.
When OFF
Visibility follows ownership, membership and assignment only.
Screens, documents and reports affected
Projects list and detail, Tasks list, project P&L, overviews, task review.
Caveats
It only widens access, never hides. It takes effect only while Team management and Assign tasks to a team are also on. On for new companies. Global search and the AI assistant’s context do not apply the widening, so a project visible in the list may not be found there.
Time logging
Allow logging time against projects. Turning this off blocks new project hours from every entry point (Projects, tasks, Time Tracking, timesheets); Service Management sync and import are exempt.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
projects.time_logging_enabled | On | /projects/settings | — |
How it works
Capability switch for logging time against projects, checked on every path that creates a project hour.
When ON
Time can be logged on projects from Projects, task time logs, task daily logs, Time Tracking (entries, My day, timers, mobile) and Finance timesheets.
When OFF
Creating an hour against a project on any of those paths is refused (feature disabled).
Screens, documents and reports affected
Project time logs, task time logs and daily logs, Time Tracking, Finance timesheets.
Caveats
Hours synced from Service Management and project import are exempt by design. Editing an existing hour is still allowed. Hours on tasks with no project follow Tasks → time tracking instead.