CT-Ops
ToDo Projects
How to coordinate host-based project work in CT-Ops without shared spreadsheets.
ToDo Projects is a CT-Ops tooling page for planned operational work that touches multiple servers. Use it instead of a shared spreadsheet when a change, remediation, vulnerability fix, or audit action needs per-host assignment and a single live source of truth.
Open it from Tools -> ToDo Projects. Users can also pin it from the Tools catalogue so it appears directly in their sidebar.
Project model
A ToDo project contains project-level ownership and task-level host work.
| Object | What it stores |
|---|---|
| Project | Title, description, owner, status, planned and actual start/finish dates, percentage complete, task totals, creator, and update timestamps. |
| Task | Title, description, host reference, assigned engineer, status, planned start, actual start, planned end, and actual end. |
| Comment | Task discussion from CT-Ops users. Comments stay with the task and are visible in the task detail modal. |
The project owner defaults to the user creating the project. The creator can assign ownership to another active CT-Ops user during creation or later from the project editor.
Creating a project
Select New project to open the project creation dialog.
| Field or control | Default | Validation | What it does |
|---|---|---|---|
| Project title | Empty | Required; maximum 180 characters | Names the work package. |
| Description | Empty | Maximum 6,000 characters | Explains the reason for the work, scope, links, risk notes, or rollout plan. |
| Owner | Current user | Must be an active user in the current instance | Receives notifications when other users update tasks or leave comments. |
| First task title | Empty | Required; maximum 180 characters | Creates the first host-level task. More tasks can be added after the project is created. |
| First task description | Empty | Maximum 4,000 characters | Describes what must be done for that server or host entry. |
| Host name or IP | Empty | Required; maximum 255 characters | Single host entry field. Typing a monitored host name, display label, or known IP links the task to that enrolled host. If there is no match, CT-Ops still stores the typed hostname or IP as the task target. |
| Engineer | Unassigned | Optional active user in the current instance | Assigns the task to a user. |
| Planned start | Empty | Optional date and time | Planned start timestamp for the task. |
| Planned end | Empty | Optional date and time | Planned end timestamp for the task. |
| Create project | Active when required fields are valid | Server validates project, users, hosts, and task limits | Creates the project and opens it for review. |
A project must contain at least one task and can contain up to 250 tasks.
Project list
The ToDo Projects page lists the most recently updated projects.
| Control or column | Meaning |
|---|---|
| Search | Filters projects by project title, description, owner, task title, host label, and assigned engineer. |
| Project | Project title. Select it to open the project window. |
| Owner | Current project owner. |
| Status | Rolled-up project status calculated from the task statuses. |
| Complete | Percentage complete across actionable tasks. Cancelled tasks are excluded from the percentage denominator. |
| Tasks | Completed task count over total task count. |
| Updated | Last update timestamp formatted with the instance dashboard date setting. |
| Last task update | Relative age and exact timestamp for the most recent task update in the project. |
When there are no projects, CT-Ops shows an empty state prompting users to create the first project.
Project window
Selecting a project opens the project window. The window shows project summary metrics, the project description, and the task table. Select a task row to open that task’s detail modal with comments and comment entry.
| Area | What it shows |
|---|---|
| Header | Project title, owner, percentage complete, Request updates, and Edit project button. |
| Summary cards | Rolled-up status, total task count, completed task count, and last updated timestamp. |
| Task status dial | Count of tasks in each status using the same colours as the task status badges. The centre of the dial shows the completed-task percentage. |
| Description | Project description when one exists. |
| Add task | Opens the task creation dialog for the project. |
| Task progress bar | Completed-task percentage across actionable tasks, shown above the task table. |
| Task table | Every task in the project across all hosts, including comment count and last-update age for each task. |
Task rows are selectable. Selecting a row opens the task detail modal. The action pencil in the task table still opens the edit-task form directly.
The project window, edit-project dialog, and edit-task dialog do not close when the user clicks outside the modal. Use the close button or a visible cancel button to leave those dialogs.
Editing project details
Select Edit project from the project window.
| Field | Validation | What it does |
|---|---|---|
| Title | Required; maximum 180 characters | Renames the project. |
| Description | Maximum 6,000 characters | Updates the project scope or operational notes. |
| Owner | Must be an active user in the current instance | Transfers ownership and future task/comment notifications. |
| Status | Required status value | Sets the project status. Task changes can still roll the status forward from task state. |
| Planned start | Optional date/time | Stores the project-level planned start timestamp. |
| Actual start | Optional date/time | Stores the project-level actual start timestamp. |
| Planned finish | Optional date/time | Stores the project-level planned finish timestamp. |
| Actual finish | Optional date/time | Stores the project-level actual finish timestamp. |
Adding and editing tasks
The Add task dialog and task edit dialog use the same fields.
| Field | Validation | What it does |
|---|---|---|
| Task title | Required; maximum 180 characters | Names the host-specific task. |
| Description | Maximum 4,000 characters | Describes the action for that server. |
| Host name or IP | Required; maximum 255 characters | Single host entry field. It suggests monitored host labels, hostnames, and IP addresses. Exact matches link the task to the monitored host; unmatched values are saved as typed. |
| Engineer | Optional current-instance user | Assigns responsibility for the task. |
| Status | Required status value | Tracks task lifecycle. |
| Planned start | Optional date/time | Planned start timestamp. |
| Actual start | Optional date/time | Actual start timestamp. |
| Planned end | Optional date/time | Planned end timestamp. |
| Actual end | Optional date/time | Actual completion timestamp. |
Status and progress
Task statuses are:
| Status | Use it when |
|---|---|
| Not Started | The task exists but no schedule or active work has begun. |
| Planned | The task is scheduled or ready for a known window. |
| In Progress | Work is underway. |
| Blocked | Work cannot proceed without another action, decision, dependency, or access change. |
| Completed | The task is finished. |
| Cancelled | The task is no longer required. |
Project status is rolled up from task statuses. Completed projects require all actionable tasks to be completed; cancelled tasks do not count against the completion percentage. A single blocked task makes the project status Blocked until it is moved on.
Comments and owner notifications
Any signed-in user with instance access can leave comments on project tasks. Select a task row in the project window to open the task detail modal, review the task’s comments, and add a new comment. The same modal includes Edit task for changing the task without returning to the table action button. When a task is updated or a comment is added by someone other than the project owner, CT-Ops creates an in-app notification for the owner and sends an email through the configured SMTP relay when email delivery is enabled.
Email delivery uses the same SMTP relay configured under Notification Delivery Settings. If SMTP is not configured, the task or comment still saves and the notification attempt degrades safely.
Requesting task updates
Project owners can select Request updates from the project window. CT-Ops finds active users assigned to incomplete, non-cancelled tasks in that project and sends each user one email through the configured SMTP relay.
The email includes a direct link to /todos?project=<project-id>. Opening the
link loads the ToDo Projects page and opens the matching project window so the
assignee can review the task list, update their task, or add a comment.
Users without assigned incomplete tasks are not emailed. The request action is available only to the project owner and is logged in the audit trail.
Host Activity integration
Tasks linked to a monitored host appear under Hosts -> host -> Activity -> ToDo. The host view shows only tasks linked to that specific host, but selecting the project name or open button launches the full project window with every task across all hosts.
The host link can be created automatically from the single host entry field. If the typed hostname, display label, or IP address matches a monitored host in the current instance, CT-Ops stores the monitored host reference. If it does not match, the task remains available from the ToDo Projects page with the typed host label and can be edited later.