Import Hours: Preparing Your Import File
Learn how to structure your hours import file and understand each field before uploading to PSOhub
Published: 1 June 2026
Audience
- Admin
Objective
This article describes every field in the PSOhub hours import template. Use it to prepare your Excel file correctly before uploading, and to understand how each field is validated on import.
Prerequisites
You must have admin access in PSOhub.
Download the Template
Before you can prepare your import file, you need the official PSOhub template. The template contains the correct column structure that PSOhub expects on import — using any other file format or column order will cause the import to fail.
👉 Download the PSOhub hours import template
⚠️ Important: Always use the template downloaded from PSOhub. Do not rename, remove, or reorder any columns. If you need a fresh copy, download the template again rather than modifying an existing file.
Prepare Your File
The hours import template uses one row per time entry. Each row represents a single time entry for a single user on a single date.
The template supports three entry types, set in the Type column:
- Project — a billable or non-billable time entry linked to a project and contract line.
- Absence — a recorded absence for a user, not linked to a project.
- Holiday — a public holiday entry for a user, not linked to a project.
Keep the following rules in mind as you fill in your file:
Project entries require a project name, project number, contract line, role, and user email. All of these must match existing records in PSOhub exactly.
Absence and Holiday entries do not require a project, contract line, or role. Leave those columns blank for these entry types.
Public holidays — set the PublicHoliday column to true for Holiday entries and false for all other entry types.
💡 Tip: The template includes example rows for all three entry types. Review them before filling in your own data to understand how each type should be structured.
Understanding the Import Fields
The table below describes every column in the PSOhub hours import template, including the expected format, accepted values, and any validation rules that apply on import.
| Field | Description | Type / Value | Notes |
|---|---|---|---|
| RecordCount | A row number for your reference. | Integer (1, 2, 3…) | Required. Not imported into PSOhub. Used for your reference only. Each row must have a unique number. |
| Type | The type of time entry. | Project, Absence, or Holiday | Required. Must be entered exactly as shown. |
| Project | The name of the project this time entry is linked to. | Text | Required for Project entries. Must match an existing project name in PSOhub exactly. Leave blank for Absence and Holiday entries. |
| ProjectNumber | The project number of the project this time entry is linked to. | Text — e.g. PRJ-2023-90 | Required for Project entries. Must match an existing project number in PSOhub exactly. Leave blank for Absence and Holiday entries. |
| ContractLine | The name of the contract line this time entry is linked to. | Text | Required for Project entries. Must match an existing contract line name in PSOhub exactly. Leave blank for Absence and Holiday entries. |
| Date | The date of the time entry. | Date | Required. Use a consistent date format throughout your file. |
| NumberOfHours | The number of hours logged for this entry. | Decimal number — e.g. 7.5 | Required. Enter the value as a number. Do not include units. |
| Role | The role of the user logging the time. | Text | Required for Project entries. Must match a role already assigned to the user in PSOhub. Leave blank for Absence and Holiday entries. |
| Description | A description or note for this time entry. | Free text | Optional. |
| User | The email address of the user this time entry belongs to. | Valid email format | Required. Must match the email address of an existing PSOhub user. |
| Task | The name of the task this time entry is linked to. | Text | Optional. Must match an existing task name in PSOhub if provided. |
| TaskList | The name of the task list this time entry is linked to. | Text | Optional. Must match an existing task list name in PSOhub if provided. |
| PublicHoliday | Indicates whether this entry is a public holiday. | true or false (lowercase) | Required on every row. Set to true for Holiday entries. Set to false for all other entry types. |
FAQs and Troubleshooting
What is the difference between Absence and Holiday entry types?
An Absence entry records a non-project time entry for a user, such as sick leave or vacation. A Holiday entry records a public holiday. The PublicHoliday column should be set to true for Holiday entries and false for all others.
My time entry was imported but is not linked to the correct contract line. Why?
The contract line name in your file must match an existing contract line in PSOhub exactly, including capitalization and spacing. Check for differences and re-import the affected rows.
The import failed after I uploaded my file. What should I check?
Confirm that the column headers in your file match the original template exactly. Adding, removing, or renaming columns will cause the import to fail. Re-download the template and copy your data into a fresh copy if needed.
Can I import hours for a user who is not yet in PSOhub?
No. The user must already exist in PSOhub and have the relevant role assigned before you can import hours for them.