Configuration Concept: Time Tracking - Timesheets
- Grace Hamm

- Jul 31
- 4 min read
This is Part 1 of a series of configurations to implement a practical end-to-end solution for timesheet tracking. The goal is to create an adaptable, user-friendly system that can function similar to any external timesheet tracking application.
Currently, Maximo offers the Labor Reporting application as a way of tracking hours spent by labor on a work order. While it is handy when used in conjunction with the Work Order Tracking application, there are many out-of-the-box rules which may be limiting when only looking at creating basic time-tracking entries that aren't tied to work orders.
Here, we have identified five essential capabilities for an easy-to-use Timesheets application:
Add project/tasks to timesheets
Log the hours worked each day against each project/task
Users should be able to create, submit, unsubmit, and cancel their own timesheets
Supervisors and project/task reviewers should be able to approve or reject timesheets that are relevant for their review
Users can add comments to timesheets that they have access to
Let’s dive into the initial set-up:
For the object set-up, two new persistent objects are created – one to define the timesheet itself, and the second to contain the timesheet lines – similar to how purchase orders and purchase order lines are organized.

Using the TIMESHEET object as a main object, a new application is created. As you can see in the picture below, there is a separate field for each day of the week, and a separate line for each project/task that time is being added to.

As you can see in the screenshot of the demo above, there are quite a few features that you could incorporate. We will go over a few of them in more detail below:
A status tracking mechanism is managed within a custom Comments field on the main timesheet object. This allows users and reviewers to add in any comments during the timesheet creation and approval process, as well as to keep track of the status changes for the timesheet. This is a custom configuration that we dove into in our last blog post – https://www.nxterainc.com/post/configuration-concept-custom-history-tracking.

For users to add project/tasks to the timesheet, we added a button to open a pop-up dialog list of all the project/tasks that are available to them. This could be further configured to customize what project/tasks are shown to each individual user. Once the user selects one or more projects or tasks, they are added and saved to the timesheet through an automation script.

For timesheet approvals, we want to consider a timesheet scenario requiring multiple approvals. In the demo configuration, we have an automation script ensuring that the direct supervisors of the user and all relevant project/task reviewers are added to the approvals table on the timesheet.

Lastly, we should also consider how approvers would want to be notified when timesheets are ready for review and approval. Timely approvals are essential for any business, so notification methods need to be effective and adaptable to the company’s workflow. There are two primary approaches – using a start center portlet, or automated email notifications. Both could be great ways to optimize timesheet approvals depending on the needs of the system.

While each component plays an essential role, let’s take a deeper dive into the technical configuration behind adding the project and tasks to a timesheet.
If you take a look at the screenshots below, you can see that the tasks on the timesheet are grouped under the project they are a part of. For example, tasks General and Vacation are available when the project 1001 – Internal is chosen, and tasks Demo Task 1 and Demo Task 2 are available when project 1032 – Demo Project is chosen.


This is achieved by using a combination of an automation script as well as relationships.
The automation script is launched from the Add Project Task dialog – when the tasks to add to the timesheet are selected and the OK button is pressed, the action automation script is triggered. Upon being triggered, the script will run through the selection of tasks and look through the timesheet lines on the timesheet to check if the selected task’s parent project is already on the timesheet. If it is not, the script will automatically add the parent project as a timesheet line to nest the task under. It will also look at the lead on the project and add the lead as an approver on the timesheet (with a check to ensure an approver is not added to the project twice). If the parent project is already on the timesheet, the script will proceed to the next step, which is to create a timesheet line for the task, which at this point it will move on to the next selected task. After all the selected tasks are added, the script then saves the record:
One other detail you can see in the previous screenshots is that the hours are totaled in two places – once on the project level, and once on the timesheet level. This way, the user is more easily able to see how many hours were spent on each project that week, as well as each day in total.
This is done through an attribute launch point on each day of the week – every time a value is entered, the mboSet.sum(“ATTRIBUTE”) function is called to sum up the hours on that line once on the project’s mboset, and secondly on the timesheet’s mboset:
This wraps up our post for implementing a straight forward and practical Timesheets application solution in Maximo. In the next part of this series, we’ll cover the second step of the timesheet approvals process – Time Cards. If you are interested in discussing or need support with implementing this Configuration Concept for your Maximo instance, feel free to reach out to us at info@nxterainc.com.


