Activities describe the type of work performed during a time-record.

Activity types

Kimai supports two activity types: global and project specific.

Project specific activities

These activities are linked to one project and can only be selected when working on that specific project.

Global activities

Global activities are available for all projects. They typically represent common tasks that occur across different projects, such as:

  • Meetings
  • Phone calls
  • Administration

The choice of activities depends on your industry and workflow requirements.

Projects have a configuration flag to disallow global activity usage.

Changing the activity type

Once created, activities have limited type modification options:

  • Project specific activities can be converted to global by clearing the project dropdown
  • Global activities cannot be assigned to projects
  • Converting global to project specific is not possible
  • Re-assigning to different projects is not possible

These restrictions protect timesheet integrity and prevent incorrect rate calculations.

If you need to change an activity’s assignment nevertheless, follow these steps:

  1. Create a new activity with correct assignment
  2. Open timesheet section and filter for the old activity
  3. Select all relevant timesheet entries
  4. Use batch-update to assign the new activity
  5. Delete the old activity once no timesheets use it

Managing activities

Colors

Activities can have individual colors for better visual identification. The color hierarchy is:

  1. Activity color
  2. Project color
  3. Customer color
  4. System default color

Billable

The Billable configuration of a Activity defines whether new timesheet (in Automatic mode) will be billable.

Please read the billable documentation to understand the billable flag.

Budgets

Budgets help you to watch your progress and to stay within contract boundaries.

If the System > Settings configuration Allow overbooking of stored budgets is not active, Kimai will prevent that records will be created, which would go beyond your configured budgets.

Currently, the visibility of budgets cannot be limited independently. So if you want to show progress to your users, you cannot show only the time budget (this will be changed in the future).

The permissions budget_team_activity, budget_teamlead_activity and budget_activity are used to check if the logged-in user can see the budgets.

Budget type

Kimai knows two budget types. The default budget type is lifetime (which is used if the budget type is empty), the other available budget type is monthly.

  • Lifetime budget - uses all records of all times to calculate progress and budget usage
  • Monthly budget - uses all records of the selected month to calculate progress and budget usage

Limitations

No matter which budget type is used, it does not influence invoice amounts. There is no automatism that will add a monthly budget to your invoice (you have to create expenses or time records for that).

Monthly budgets are used for every month, no matter how many days are recorded. Kimai does not take range limits into account to calculate partial budgets (e.g. project start/end or the first record created for a customer).

Money budget

Money budgets will be used to calculate reports.

For Kimai there is no difference between money and time budgets. If there are multiple people with a different hourly rate working on the same tasks, then money and time budget will differ in their outcome.

Only billable records will be used to calculate the remaining budget.

Time budget

The time budget should be entered in the format hh:mm or decimal hh.m.

Time budgets will be used to calculate reports.

If you are using money budget and want to show progress to your users, it is a good idea to calculate the hourly rate by using money budget / average hourly rate.

Only billable records will be used to calculate the remaining budget.

Prices

You can configure prices on different levels in Kimai. It starts from the user hourly prices and goes from Customers to Projects and Activities. Please read the price documentation to find out more how rates are calculated.

On the detail page of the selected item (which you find by clicking a row in the listing table or select Show from the dropdown menu) you find the Hourly price section. By default, you see the message No prices have been configured.

Price section table

You configure new price rules by clicking the + button in the upper-right of the Prices table.

A user needs the two permissions to be able to see and edit prices:

  • one of: view_activity, view_team_activity, view_teamlead_activity
  • one of: edit_activity, edit_team_activity, edit_teamlead_activity

Edit price screen

The edit price screen has four settings:

Edit price screen
  • User - the user this price applies to - if no user is chosen it applies to everyone without explicit personal rule
  • Price - the price to be charged (per hour)
  • Internal price - the internal price (or “costs” if you will) to apply (per hour); if this is not specified, the normal price is used for calculation.
  • Fixed price - if this is ticked, each time record gets the configured Price value applied, regardless of the record duration

Catch-all price

If no user was chosen, this rule applies to every user, except those who have a explicit User specific price configured.

User specific price

Every rule the defines a user is a user specific price and those always win over Catch-all price configurations.

Pricing example

The following example contains two price rules:

A sample rates configuration

The first one is a Catch-all price that applies to everyone who is recording times for this activity. So every hour counts with 50 € towards the budget of this activity and has internal costs of 25 €. Every recorded hour has a gross margin of 25 € / hour.

The second rule applies to the user DY who (as only user) has a User specific price for this activity. Even though she has a higher internal cost of 45 € / hour, her work earns 85 € / hour, which leads to a gross margin of 40 € / hour.

Visibility

Visibility settings control activity access:

  • Hidden activities are removed from all dropdowns
  • Existing links retain the activity as pre-selected option
  • New timesheet records cannot use hidden activities

The visibility filter has three states:

  • Yes: Shows visible activities (including project and customer visibility)
  • No: Shows activities hidden by their visibility setting
  • Empty: Shows all activities regardless of visibility

Available filters:

  • customer
  • project
  • global / non-global
  • visibility

Free text search applies to:

  • name
  • comment

Additionally, you can filter for custom fields by using a search phrase like location:homeoffice. This would find all entries with the custom field location matching the term homeoffice.

The search terms will be found within the full value, so searching for office would find:

  • I love working in my office
  • Office
  • This office is beautiful
  • Our offices are very noisy

Attention: checkboxes have the values 0 (not checked) and 1 (checked).

You can mix the search term and use multiple meta-field queries:

  • location:homeoffice hello - find all entries matching the search term hello with the custom field location matching the term homeoffice
  • location:homeoffice contract:fulltime - find all entries with the custom field combination: location matching homeoffice and contract matching fulltime
  • expired:0 finds all items whose expired checkbox is off

There are also special operators, which can be used in conjunction with custom fields (since Kimai 1.19.1):

  • The   empty string (e.g. location:) will find all entries whose value in the location field is either empty or not existing
  • The ~ search term (e.g. location:~) will find all entries that are missing the custom field (created before the field was created)
  • The * search term (e.g. location:*) will find all entries that have any value in the location field (basically the opposite of ~)

Deleting an activity

Delete activities via Administration > Activities. Consider using visibility settings instead of deletion for used activities.

Use the row context menu to access the delete option. The system will either:

  • Confirm safe deletion for unused activities
  • Show activity statistics and prompt for timesheet reassignment
Top