Timesheet Administration

Timesheet Reconciliation Corrections Upload

Timesheet Reconciliation Corrections Upload functionality allows authorised users to import time booked to other time-booking systems. No approval process is required as resources are not submitting timesheets in Fluid.

It will allow to post and amend correction actuals in closed months or locked timesheet weeks without creating reversals.


Who Can Use This Feature

You need both of the following roles to access Timesheet Reconciliation:

  • Financial Administrator

  • Timesheet Administrator

In addition, your Fluid environment must have following feature flags enabled

  • Timesheet Corrections and

  • Timesheet Reconciliation Correction.


Downloading the Template

Using 'Timesheet Reconciliation Download', download a pre-formatted Excel file with the correct column headers and any existing correction entries already populated. Using the download as your starting point avoids header mismatches that would cause the upload to fail.


Supported upload file types

You can upload your corrections in either of the following formats:

  • Excel (.xlsx)

  • CSV (.csv)

Both formats are validated the same way and produce the same results, so you can pick whichever is more convenient for how your data is prepared.


How to upload

Option 1: From the Fluid application (Excel only)

Use this option if you prefer a guided, in-app experience and your file is in Excel format:

  1. Go to Financial Administration.

  2. Go to section 'Resource Upload and Reporting'.

  3. Select Timesheet Reconciliation Corrections.

  4. Upload your .xlsx file.

Option 2: Via API (Excel or CSV)

Use this option if you want to upload programmatically or as part of an automated process, your file may be in either .xlsx or .csv format:

POST /api/v3/bulkdata/import/TimesheetReconcileCorrection
  • Submit an .xlsx file, or

  • Submit a .csv file

Both are accepted by the same endpoint and processed the same way.


Which option should I use?

Your situation

Recommended option

You're working in the Fluid UI and have an Excel file

Financial Administration > Resource Upload and Reporting > Timesheet Reconciliation Corrections

You're automating uploads or your data is already in CSV form

API upload (POST /api/v3/bulkdata/import/TimesheetReconcileCorrection)


Column Reference

The upload file must contain the following columns:

Column

Required?

Description

Record Id

Optional

Leave blank (or enter 0) to create a new entry. Enter the Record Id from a previously downloaded correction row to update that existing entry.

Date

Mandatory

The timesheet correction date. Must fall after the Capitalization Lock Date.

Resource

Optional

Display name of the resource. Used for reference only — the system identifies the person by Resource Ref or External Ref.

Resource Ref

Mandatory*

The unique reference code for the resource (person). Provide this or External Ref — at least one is required.

External Ref

Mandatory*

An alternative resource identifier (e.g. employee number or HR code). Provide this or Resource Ref.

Project

Mandatory*

The name of a Miscellaneous Task (e.g. "Internal Meeting"). Use this column only when logging time against a non-project activity. Leave blank when using Project Ref.

Project Ref

Mandatory*

The External Reference code of the project. Provide this, Alternate Project Ref, or Project (for misc tasks).

Alternate Project Ref

Mandatory*

An Alternate Reference Code of the project. Provide this, Project Ref, or Project.

Financial Ref

Conditional

The financial reference for the resource's allocation on the project. Must be left blank when using a Flex Task (column: 'Task').

Task

Conditional

The exact title of a Flex Board task assigned to the resource for this project. Cannot be combined with Financial Ref.

Sub Activity

Optional

The sub-activity category for this time entry (e.g. "Design", "Build"). Must be a valid sub-activity for the project's type. Cannot be used when logging against a Miscellaneous Task.

Hours

Mandatory

The number of hours to record. Must be a positive number for new entries. Zero is accepted only when updating an existing record.

Local Value

Optional

The local monetary value of the time entry. Leave blank if not applicable.

Local Currency Code

Conditional

Required if Local Value is provided. Must be a valid currency code (e.g. USD, GBP).

Notes

Optional

Free-text notes about the entry.

* See the Project and Resource rules below for the exact combinations that are accepted.


Creating vs Updating Entries

Creating a new entry (Record Id = 0 or blank)

Leave the Record Id column blank. The system creates a new correction timesheet entry for the resource and date combination.

  • Hours must be greater than zero.

  • Multiple new rows for the same resource, project, date, and financial reference are treated as one grouped entry on the same timesheet.

Updating an existing entry (Record Id > 0)

Enter the Record Id from the downloaded file. The system looks up that specific correction record and checks that the other fields on the row (Date, Resource, Project, Sub Activity, Task, Financial Ref) match what is stored in the database. If any of those fields do not match, the row is skipped and an error is logged.

  • Zero hours are accepted on an update (to set the entry to zero).


Mandatory Field Rules

The system applies the following "at least one" rules before any deeper checks are run. A row is rejected immediately if these are not met.

Rule

What causes rejection

Date must be provided

The Date column is blank or contains an unreadable value.

Hours must be provided

The Hours column is blank or contains a non-numeric value.

Resource must be identifiable

Both Resource Ref and External Ref are blank.

Project must be identifiable

Project Ref, Alternate Project Ref, and Project are all blank.


Validation Rules Applied During Processing

Once the file is read, every row is validated as per following rules. A row stops being checked as soon as it fails — the first failure is the one that is reported.

1. Record Id

  • Must be blank, 0, or a positive whole number.

  • A negative number causes the row to be skipped.

2. Date

  • Must be a valid date.

  • Must fall after the Capitalization Lock Date configured in your Fluid environment. Entries on or before the lock date are not allowed and will be skipped.

3. Resource

  • The system searches for a resource whose Resource Ref or External Ref matches your entry (case-insensitive, leading/trailing spaces ignored).

  • No match found → row is skipped.

  • More than one match found (ambiguous reference) → row is skipped.

  • Match found, but no active resource plan → the resource must have a resource plan with a capacity greater than zero that covers the entry date. If no such plan exists, the row is skipped.

4. Project

There are two routes depending on what you enter:

Route A – Using a Project Ref or Alternate Project Ref (standard project entry)

  • The system searches for a project whose Project Ref or Alternate Project Ref matches your entry (case-insensitive).

  • If you supply both, both must match the same project.

  • No match found → row is skipped.

  • More than one match found → row is skipped.

  • Match found → the project's status and type are also checked:

    • If the project's status is on the excluded-from-corrections list (configured in Timesheet Setup), the row is skipped.

    • If the project's type is not a valid project type, or is on the excluded-from-corrections types list, the row is skipped.

Route B – Using the Project column (Miscellaneous Task)

  • Leave Project Ref and Alternate Project Ref blank, and enter the name of a Miscellaneous Task in the Project column.

  • The name must exactly match (case-insensitive) a Miscellaneous Task configured in Timesheet Configuration.

  • Sub Activity cannot be used with a Miscellaneous Task.

  • If Sub Activity is filled in but Project Ref is blank, the row is skipped (Sub Activity requires a project reference).

5. Sub Activity

  • Sub Activity is only validated for standard project entries (not Miscellaneous Tasks).

  • The value must be a valid sub-activity for the project's type, as configured in your Fluid setup.

  • If no sub-activities are defined for the project type, the value is checked against the global activity types defined in system metadata.

  • An unrecognised value causes the row to be skipped.

6. Flex Task Assignment

For standard project entries, the system doesn't check for any allocation rule. However, if a row contains a flex-task title in the Task column, it must match exactly (case-insensitive) to Flex Board task assigned to the resource for that project.

  • The Flex feature 'Flex Boards' or 'Flex Schedule' must be enabled.

  • The Financial Ref column must be left blank when using a Flex Task. Providing both a Task and a Financial Ref on the same row is not valid and will cause the row to be skipped.

  • If multiple flex tasks exist with the same title for the same project, the row is skipped.

If neither a valid allocation nor a valid flex task is found, the row is skipped.

7. Hours

  • Must be a number

  • For new entries (Record Id = 0): must be greater than zero. Zero hours on a new record are not permitted.

  • For updates (Record Id > 0): zero is accepted.


8. Local Value and Currency Code

  • Local Value is optional. If left blank, the system uses the standard rate-card calculation.

  • If Local Value is provided and a Local Currency Code is also provided, the currency code is validated against the list of currencies configured in Fluid. An unrecognised code causes the row to be skipped.

  • If Local Value is blank, the currency code is ignored and does not cause a failure on its own.


Duplicate Row Handling

If the same time entry appears more than once in the same upload file — identified by the combination of Record Id, Date, Resource, Project, Financial Ref, Task, and Sub Activity — the system keeps only the last occurrence. Earlier duplicate rows are skipped and logged as duplicates. This means if you intentionally want to correct a value, put the correct row lower in the file.


When Does Row Reading Stop?

The system reads the file from row 2 downwards (row 1 is the header). Reading stops automatically when it finds a row where both the Date column and the Resource Ref column are blank. Make sure there are no accidental blank rows in the middle of your data, as everything below the first blank pair will be ignored.


Was this article helpful?