Daily time registration
Two platforms
We have two platforms for time registration: the Google Spreadsheet and Microsoft Dynamics.
In the past we registered all our times (clocking in and out, and registering time on specific projects) in a single Google Spreadsheet. From January 1st, 2022 onwards, we no longer register times on projects in the Google Spreadsheet (finally!). However, as Dynamics does not provide an out-of-the box feature for “clocking in” and “clocking out”, we still use a hybrid solution.
In short:
- We use the Google Spreadsheet for registering working locations and clocking in/out.
- We use the Microsoft Dynamics time sheets for registering time worked on projects.
Needless to say, you should keep both platforms always perfectly in sync. It is impossible to work 5 hours on specific projects if you only clocked in for 4 hours, and thus have only worked 4 hours that day. This seems very obvious and indeed is very obvious.
Importance of good time registration
I should not stress the importance of good time registrations: it is the heart of correct invoicing and salary calculation.
However, even though it is clear to see that time registration is important, often times are registered too late or incorrectly (no exact match between the two platforms, not working at the office even though you specified otherwise, incorrect project or task, incorrect description...).
This results in wasted time of the management team, valuable time that could be used for equally valuable things. It can also result in unclear or wrong invoices, leading to unhappy customers. Finally, it can cause a delay in the payment of invoices by customers and the payment of salaries.
In short: take it seriously. Set up the necessary self-management procedures that cause you to do it in time and correctly. Create calendar events, checklists... whatever works for you. We don't want any excuses.
The Google Spreadsheet: clocking in and clocking out
A Google Spreadsheet has been created, click here.
We have 6 columns. Let us briefly go over them.
Column 1: absences and holidays (icons)
The icon specifies if and where you work. The icons are:
- 🎉 = official holiday
- 🌴️ = any other day on which you did not work, for whatever reason, including vacation & sick leave
- 🏠 = working from home
- 🏢 = working at Codifly HQ
- 👔 = working as a consultant at the customer's office
There are combinations of icons, such as 👔🏠, in which the first icon specifies where you worked before noon and the second icon specifies where you worked after noon.
One important note: 🎉 and 🌴️ necessarily always mean that you did NOT work during the entire day at all, or in other words: column Hours should contain 0:00. If this is not the case, select any of the other icons instead. For example, if you got sick during the day, but you did work a few hours, you should not select 🌴️.
Note that regarding working from home (🏠) we have two counters:
- We have a column that shows how many people are working in the office on each day.
- We have a row that shows what percentage you worked from home in the past months. The color indicates whether you are working according to the agreement you signed.
Column 2: Leave Hours
Leave Hours are hours during which you did not work for a legitimate reason to be registered in salary calculations. It is always time for which you should not compensate later. For example: official holidays, vacation, sick leave, "klein verlet", "toegestane afwezigheid"...
In the easy case of 🎉 or 🌴️, this amount should match the number of hours that you should have worked in a normal week day, according to the schedule in your labour contract. Most of the time, this means you should fill in 8:00 on holidays or any other day during which you did not work. However, if you work only 4 hours on Thursday, you obviously should enter 4:00 on a Thursday.
There are more difficult cases, where we see that there is often confusion about Leave Hours on the one hand and Break on the other hand. The general rule is: leave hours are always time that should be registered in salary calculations (and thus should be displayed on your salary slip) and always time for which you should not compensate later. A beautiful example of this is getting a COVID vaccine. This counts as "klein verlet" according to Belgian regulations. As this is a valid absence code to be registered in payroll, the time you did not work because you were getting your COVID-vaccine should be entered in the Leave Hours-column.
Column 3-6: Hours, In, Out, Break
In the column In, you specify the time at which you started working and in column Out you specify when you left. The duration of your lunch break and other additional breaks can be entered in the column Break. Break time is automatically subtracted in the calculation of your worked hours, which is shown in the column Hours.
By the way, under "additional breaks", we consider exceptional scenario's such as a visit from your plumber or getting your new car at the garage. You can just add the time of such an additional break to the time of your lunch break.
Your job
REGISTRATION OF ABSENCES AND WORKING LOCATION
At the end of the week, register your absences and working location for the following week by selecting an icon in the first column. As this is often misunderstood, I repeat: at the end of the week, register your absences and working location for the following week by selecting an icon in the first column. This does not mean "at the beginning of the week" or "daily for the current day", it simply means at the end of the week, register your absences and working location. There is no ambiguity, no room for interpretation.
If you plan your holidays, also add those to the Google Spreadsheet, immediately after approval. This makes it easy for all your colleagues to track your planned absence and avoid mistakes during invoicing and payroll.
CLOCKING IN AND OUT
At the beginning of each day, enter your start time. At the end of each day, enter your end time and the length of any breaks (lunch break and/or any additional breaks) you took. Finally, daily, make sure that your leave hours (sick leave, holiday, vacation...) are correct. Make sure this time registration is complete at the end of each day and especially at the end of each month and before any holiday period. As this is often misunderstood, although it is totally unambiguous: make sure this time registration is complete at the end of each day and especially at the end of each month and before any holiday period.
Summary
In short, a few simple rules. You don't have to be an engineer to follow them, it just requires a very basic professional attitude:
- Registration of absences and working location: weekly, at the end of the week for the week to come (and around the 26th for the remainder of the month)
- Registration of planned holidays: as soon as they are approved
- Clocking in: daily, at the beginning of the day (and especially at the end of each month and before any holiday period)
- Clocking out: daily, at the end of the day (and especially at the end of each month and before any holiday period)
Microsoft Dynamics: registering time on projects
TO DO: this section should be updated now that we have deployed the "activity type" and "activity description" extension.
A quick introduction
Dynamics works with weekly time sheets. More concretely, as we have currently set it up: each Monday, HR will create time sheets for the upcoming week.
To fill in your time sheet, you first have to log in. You should be able to log in to Business Central with your Codifly Microsoft-account. If your user account was created correctly by us, you should be able to log in without errors and you should have limited permissions only enabling you to register your working hours.
The start screen that opens requires some explanation. You have 5 tiles: "Open current time sheet", "Open Time Sheets", "Submitted Time Sheets", "Rejected Time Sheets", "Approved Time Sheets".

The easiest thing to do is always click the first button, "Open current time sheet". This opens the most recent time sheet. By using the dark gray arrow in the middle of the screen, you can navigate to the previous and next time sheet. The buttons are easy to miss, so I have highlighted them here:

To explain the other tiles on the home screen (which you don't necessary need), you need to know how Dynamics time sheets work. Each time sheet consists of 0 or more time sheet entries. Each entry can have a status: open (not submitted yet), submitted (submitted for review by Codifly), approved (approved by Codifly) or rejected (rejected and needs to be resubmitted). An entry under "Open Time Sheets" is a time sheet which has AT LEAST ONE ENTRY with status open. The same is true for the tiles "Submitted Time Sheets", "Rejected Time Sheets", "Approved Time Sheets".
As a result, a time sheet does not appear in the list "Open Time Sheets" if it has no entry with status open and, yes, this includes empty time sheets containing no entries. In short, an empty time sheet is not an open time sheet. Good to know!
In the end, my final advice is: the easiest thing to do is always click the first button, "Open current time sheet" and navigate from there.
Registering times daily
Once you have opened a time sheet via one of the tiles, preferably the "Open current time sheet" tile, you can start registering your time. Daily, perform the following time registration:
- You should register your active time on project tasks. For each project task, just enter your total amount worked for each day. Obviously, the number of hours on projects should exactly match the number of hours in the column "Hours" in the Google Spreadsheet.
- For absences (like holidays), registered as "Leave Hours" in the Google Spreadsheet, enter "Afwezigheid" in field "Soort" and select the reason in the column "Afw.-redencode".
Time sheet submission
At the end of the week and at the last day of each month, you should submit your time sheet via the button “Versturen”. This starts the approval cycle in which your time sheet can be accepted or rejected. If rejected, you will be able to perform additional changes and submit again.
As these last points are somehow often misunderstood, although it is totally unambiguous: register daily and at the end of the week and at the last day of each month, you should submit your time sheet.
The last point also has an important consequence: when a time sheets overlaps two successive months (for example, the time sheet of June 27th - July 3rd), use separate lines for each month (otherwise it would be impossible to submit your time sheet at the last day of the month). In this case, use separate lines for June 27th - 31st and for July 1st - 3rd. This is especially important as we do invoicing on a monthly basis and we can only invoice entire lines. We would not be able to create an invoice for June if there is a single entry with time registrations on June 31st and July 3rd.
Summary
In short, a few simple rules. You don't have to be an engineer to follow them, it just requires a very basic professional attitude:
- Log your "Hours" on the correct project tasks and log your "Leave Hours" as absence daily.
- Submit your weekly time sheet at the end of the week, before any holiday period overlapping the weekend and at the last day of each month.
- Use separate lines for each month.
Microsoft Dynamics: very concrete scenario's
TO DO: this section should be updated now that we have deployed the "activity type" and "activity description" extension.
About 1' precision
We recommend logging time on projects in chunks of 15 minutes.
About descriptions
We already mentioned that you should describe exactly what you did in the description. Let us further clarify this point:
- When working on an external project, you should not change the description and provide us more details. The default description is sufficient.
- When working on an internal project or on any non-billable task, always provide details.
To provide details, I recommend the following format for the description: <repo>#<ticketnr> <Ticket description> / <What you exactly did>. If and only if you finished the entire ticket, the slash and the description of what you did can be emitted. As there is a max length on the description, feel free to abbreviate the ticket description if necessary: "<repo>#<ticketnr> <Ticket des...> / <What you exactly did>".
Example of a good time sheet:

Note: there are several tasks for internal work, to be found under project CODIFLY:
- Non-billable work: HR Manager, Office Manager, Sales Manager...
- Education (non-CEVORA)
- Education (CEVORA)
- R&D NEST: task for the R&D team