Time and Attendance (11/31): Basic usage

There are several two ways to start the user interfaces/terminals.
Production Control > Periodic > Manufacturing Execution > Job registration start the terminal in the default configuration sat in the terminal form. If it is the first time started it will be prompted for a configuration.
Home > Common > Time and attendance > Clock in/out (Punch clock). This launches the terminal in the clock in/out only mode sat in the terminal configuration.
Or atleast they should… There are some bugs you should be aware of.
The first is that there is a caching issue when starting the client. This results in the client authenticating as the AOS server the first time the job registration form is opened. There is a fix for this (KB 2970350). 
Another thing is that the clock in/out menu item does not work properly wither. Might be some coding that’s missing. I have not gone through the work of figuring this one out.

Once started the terminal shows the authentication screen.

attendance screen

User logs on with worker ID or Badge ID and password (if active).
System finds the active profile (profile calendar (User > Group > All), Profile relation for the Profile group and finaly the default profile for the user). If the clock in time is after the clock in time for the profile (if there is any), the user is presented with the absence form to explain why they have been absent.

If all is okay the user is presented with the default interface for the terminal configuration or the configuration sat for the worker on the worker employment settings.


There are several areas the user can look for jobs to work on. These are toggled to with menu buttons.
* Selected jobs
This is used for bundeling work and checking the jobs that are selected. If a barcode is scanned and the user is in bundle mode this screen is shown.
* My jobs
If the resource is connected to an employee that is logged on the user can be presented with work only for that user.
* Production
All production orders. Can be limited to only show for a production area, resource group or a single resource.
* Project
All project and project activities that are active
* Indirect activities
Shows all the indirect activities that the user can clock time on.

After a job is selected the user clicks start to make the job or jobs active.
Instead of navigating around the user can use the JobID and feed it in to the barcode area either woth a keyboard or preferably by barcode if this is activated on the terminal setup.

If the user is not in bundle mode and active on a manufacturing job the user will be prompted with the feedback dialogue (Either grid or wizard type). The user can also do feedback directly by clicking feedback in the menu.


There are three status updates to be given for the jobs on feedback.
* None – User continues to work on the item. Not optional if not bundeling.
* Stopped – The user stops working on the job, but the job is still available later.
* Finished – Job is marked as closed and not available for further work.
If he user presses finish by mistake the Supervisor can override. There is also the option for quantity validation before closing.

The user can also make changes to picking lists at this point if needed.

After feedback is given the form is closed by clicking close.

The terminal returns to the authentication screen.

Time and Attendance (Part 12/31): Calculating

Time and Attendance (Part 10/31): Terminal setup

You can define a configuration (Project, Manufacturing, Punch clock) to a terminal. Terminals are identified by machine names. So if you want different modes between two terminals, you will need two different machine names. I have had some challenges with this and loadbalencing on terminal servers and citrix… But it is possible.

When a machine launches job registration for the first time in an AX environment the system prompts the user for a configuration.


This creates the record in the terminals table with the description Auto-generated. The configuration can be changed at any time, but require a restart of the job registrations form.

AX 2012 Terminals

There are two paramters that are not checked by default when the terminal record is created.

Touch screen:
When this is activated the terminal changes layout for better touch interaction. The text get bigger and the menu buttons are moved to the bottom of the screen. There are also on screen numeric pads popping up where ever you need to do feedback.

Touchscreen and Barcode active

Desktop mode
Touchscreen and Barcode not active

Clock in screen with touch screen activated

Barcode scanner:
This activates the barcode scanner field in the top of the terminal interface. After the user logs on with their credentials, the barcode field is in sat in focus (prompt in the box/you don’t need to click it/is ready for feedback) and you can directly scan a barcode.

Terminal configuration:

You can personalize any form in AX, but the job registration form is one of the most configurable interfaces except for the retail POS terminals. You can configure the buttons and fields by using the terminal configuration (Production Control > Setup > Terminals > Configure registration forms). The configuration wizard create some default terminal settings as shown here. Feel free to make you own.


The Action pane parameter defines the configuration of the buttons and panes. You can configure these as you wish. More info on that below.

The Start page parameter defines the first page you are taken to when logging on. There are six options to choose from here.

  •  None
    Returns to the logon screen. Used for punch clocks
  •  My jobs
    If the employee is connected to a resource, the terminal filters project activities and production jobs that are planned on this resource.
  •  Indirect activities
    Displays the available indirect activities
  •  Project
    Display projects and project activities
  •  Current Activities
    Shows a list of jobs the user has activly selected.
  •  Production
    Shows production jobs

Feedback input method determin the way that the user is working with when doing feedback. It is either the standard grid solution which is a table grid list of each job the user is working on or a more guided wizard dialoge with one page for each job the user is working on.

Use actual login time defines if you want to use the time the worker clocked in or the actual time where he selected the job and approved/started.

Disable close disable the windows to be closed by any default windows interaction. You need to press CTRL + Q or quit the application all together if you want to close the window.

Report qty at clock out gives the user a dialogue for feedback when clocking out. Even on the punch clocks.

Job list check checks if the job fed in to the barcode field is available on the list displayed. This way the user can not start another job then is on the filtered list.

Lock employee means that the user can authenticate once and start and report on the terminal without being presented the login screen again. They have to manually click the switch user icon. Then the terminal is brought back to the login screen.

Prompt for production area gives a dialogue at start up to select the Production area, Resource group or resource and filters the production jobs accordingly.

You can show, minimize or totaly hide Messages, Status, Clock and Preview pane.

You can select the setup for the Indirect activities, Production orders and Projects. You can configure these and choose what fields to be shown in the grid collumns and the preview pane.

Select fields:
Click “Setup of grids” in the action menu on the terminals configuration to launch the setup.


Choose the fields to be displayed and select if they are to be shown in the Columns or Preview pane.

If you want to do add new fields to the forms, you should add it as a selectable field in this list and not fool around with the form directly.

Configure the Action pane:
Click “Setup of Action Pane” in the action menu on the terminals configuration to launch the setup.


You can configure the buttons based on the displayed tree.
There are four levels: Root, Pane, Group and the actual Button.
You can rearrange the function buttons as you want.

The system will display an irritating error message if you leave a button without a function. So if you create a button to much. Put a value in and then delete it.

If you want to create a button function of your own. Use this paradigme to create the amendments. Don’t mess around with the form layout in the AOT.

Time and Attendance (Part 11/31): Basic usage

Time and Attendance (Part 9/31): Employee setup

Once your base parameters are set, you can activate your workers (employees and contractors). This is done by going to the workers and selecting “Activate on registration terminals” under the “time registration” pane.


This brings up the dialogue for entering the basic paramters for your time registration worker.


Fill out atleast the required fields and click OK.

Now let’s take a look at the user parameters on the worker card. I’ve marked the fields with green for the ones I normally set up.

Go to: Human Resources > Workers > Time registration workers | Employement > Time Registration


Password has to be turned on in the T&A parameters to prompt the user. Can also be blank for some users. Great if you have issues of users typing the wrong user ID or pick the wrong ID card. This is to bring an extra level of accuracy, but is also used from a Security perspective. I always suggest to have this active on the supervisor users.

Pay ID overrides the employee ID in the case of exporting payroll transactions.

Badge ID is used as an alternative authentication method than Employee ID. You can only choose to use the one or the other. This is done in the T&A parameters.

Badge version is just an internal note for keeping up with the card version if applicable.


Activate the user by enabling the active checkbox and an Activation date. You can also deactivate users from time registration by unchecking this box.

Calculation groupApproval group, Standard profile, Profile group and Default calculation Group are required fields and must be entered.

New bundle is to set the default mode of working to either sequencial or task aggregated work. More on bundling later.

Category is the category that is standard for reporting i Projects.

Use Timecard is an option to activate the user to utalize the built in manual time sheet solution. More on this later.

Configuration is used to prompt the user with a specific desired terminal layout overriding the terminal standard.

Supervisor options gives the user the supervisor options menu at the time of authentication on a terminal.


Pay agreement should be sat for each employee. PS: The setting for pay agreement on the profile settings override this setting.

Seniority date is used by the pay agreements delimitation to calculate seniority. This is often confused with the seniority on the employee card.

Period code is the grouping on how often the user gets paid calculated.


Flex allowed needs to be activated if the user is to use a flex profile. You can also set rules and limitations for the flexi profile pr. user by entering a Flex Group ID.

Bulk update your employees:
Activating employees can be a tiresome task if you have a large organization that should be activated at once.
Use the Excel add-in and filter out the desired worker IDs in the hcmWorker table. Copy this to enter data into the jmgEmployee table.

If you’ve followed the blog series from the start, you should now be able to start using the solution with time registration. But I have so much more to tell you!

Time and Attendance (Part 10/31): Terminal setup

Time and Attendance (Part 8/31): Pay agreements Delimitation

Often there are differences between employees within an organization like additional bonuses should be triggered if something happens or an extra pay type should be triggered for all working hours for some users. There are so many different ways of giving payment it is some times overwhelming. I believe that this is where the AX solution shines. You can create any type of delimitation rule to solve any issue.

By using pay agreements delimitation you can create common pay agreements that can fit the entire organization, but keep a good record of what you are doing as these can grow to be pretty big. This is how I do it. If someone has an input on the matter. Please share! 🙂

The reason why I like to create one pay agreement for the entire or atleast the majority of the organization is that often there are some common denominators and these might be changed now and again. So if you have one pay agreement you only have to change this once and not replecate it to the entire organization. I would love to see the opportunity of adding multiple pay agreements to a user in the future.

I’d thought I would go through each of the parameters and give an example to what it can be used for, but you have to open your mind to the possibilities here. Often combinations of more then one delimitation can be used for the wanted effect.

There is a button on the form called Delimitations which get even more Advanced. I’ll go in to those in another post at the end of this series.


Use this to add more or less than one pr. each working hour. I had a case where they needed to add 25% more hourly pay if the user worked flex hours. I used this on the Flex+ type with 0,25 of the standard hourly pay type.

If the times only apply durring a sertant time span. I don’t use these and let the profiles controll the triggering.

This is often used if you only want to trigger the pay type from, to or between between a given interval. For instance a bonus is paid if the worker works more then 12 hours. You can easily create a stair case modeling of pay types by using this delimiter.

Date Interval:
If you have pay types triggered differently between certaint periods like summer or winter you can use this. This is not for Public holidays or Things like that. That is what the “special” day is used for.

The seniority is calculated based on the seniority date on the employees time and attendance settings. The seniority date can differ from the hire date and is not a manditory field, so make sure to fill this out before you use this feature.

Be sure to use the right seniority date field as there are two associated with a user.



Round off:
Pretty common stuff, but I have never used it. In Norway we normally don’t round off untill the payment is done.

Count unit:
These are measures that are counted within a period. Meaning it is set to zero at the start of each period. If the count unit is between the min and max values the pay type is triggered. This is mostly used to limit the amount of transactions within a period.

Switch code:
This was mentioned in the Profiles setup as well. These are codes that are triggered by the users and can be used to switch to a secondary profile type. It can also be used to select what type of pay type to be triggered. I use this often for building up a “time-off” account (as opposed to using flex time) when the user should not have overtime but is outside the normal working hours. I then put this delimiter on the overtime records to get this to trigger. Often used in conjunction with a “Count unit” and a secondary factor if for example they get 1,25 for each overtime hour worked, but only up to 5 hours pr. week.

Delimitation delimitations? Yes… All the other parameters are in fact delimitations, but this group has got it’s own header called just that. 😉

I use this A LOT! This is the manufacturing operations. If a user should get a premium for each hour he does an certaint operation, then this is triggered. Customers love this as this is normaly solved by using extra time sheets, and with this it just works by it self.

Project ID and activity:
I guess this could be used for standardized internal projects or if a customer pays extra for a special Project, but if a type of Project Activity or category should give a premium as standard across multiple projects; then the “Advanced delimitations” must be used.

This is the indirect activities of type “Jobs”. For instance some companies does not pay for union meetings.
I had a customer who would not allow contractors to have their time be posted to the systems waiting job. So they said that for all Contractors the Activity: “System job” should deduct 1:1 hour pay. This really increased the accuracy for their time registrations!

Absence code:
I use this a lot because some rules for payment of absence types often only apply to some types of workers. I use this as opposed to use the pay type settings directly on the absence code. I often use the “Advanced delimitations” for this as I can then trigger on a group level.

On Call Activity:
These are indirect activities of the type On Call. I use these for the Forman or Team leader permiums to be triggered if someone not normally in this position has to fill in during absence. The On Call is active for all working hours within the profile. I also use this when a person triggers his own permiums like emergency call outs, but then often with a fixed quantity.

I use this to trigger shift premiums for night or evening shifts. I often use “Advanced delimitations” if more then one profile triggers the same pay type.

Skill (with leveling):
Skills are set on the individual employee. I use this for Premiums related to a skill some times.

I use this for individual separation and multiple grouping of employees. You can also use skill for this purpose. The difference is that skill is leveled, and certifications can expire. I separate the worker types and special Premiums for this. So a user can for instance be a part of the manufacturer, hard laborer and forman, while another might not have the forman or hard laborer active. Both on the same pay agreement, but different terms.

Special day:
In the profile calander you can determin special days. This does not need to trigger the “special pay agreement day type”, but could be a special Tuesday for some reason… Thus giving a special premium for that particular day.

Invert sign:
This gives a negativ amount of the pay type triggered.

Cancel payment:
If this checkbox is active the system post the cost, but does not create a pay transaction. So this is just for a costing perspective. As I don’t use the costing in time and attendance this doesn’t apply to my setup.

Hour rate / Piece work:
You can select both or one or the other.

Profile type:
I use this activly as I differenciate between 100% or 50% overtime payment in my profiles. You can also create your own type of profile types. I have had an example where the users working Friday after lunch got 1,25. In that case I used a special profile type of the type work and added a paytype with 0,25 extra for each of the hours worked on this profile type.

Time and Attendance (Part 09/31): Employee setup

Time and Attendance (Part 7/31): Pay agreements

Pay agreements are the settings for what pay types should be generated based on the registrations, profile and calculation parameters.

Pay types:
First you have to create the Pay Types that are to be exported. If the ID in AX differs from ID in the external payroll system you can enter External Pay Type to translate the paytype to the correct type. You can also have to pay types in AX become have the same External pay type.

Pay agreements:
The pay agreements are a header/line type of configuration. I try to keep as few pay agreements as possible. Preferably only one. I rather use delimitations to restrict for each employee grouping within the same pay agreement. The reason for this is that if you need to apply a new rule for everyone you just need to do it once.

You need to put in a valid period in the header to be able to use the pay agreement.


Pay agreement lines:
Keep in mind that the registered time and the profile limit the range of the payment type. So entering records should be taking in to account and cover all the different profiles. In the example below the pay type 1201 is generated for all standard time being triggered.


There is a section for filtering each wage type. The relation between these and transactions from the profile calculation is set in the calculation parameters. Keep in mind that as a part of the standard configuration; overtime also triggers standard time. If you don’t want to do this, you can change this in the calculation paramters (Human Resources > Setup > Time and attendance > Calculation parameters).

The pay agreement lines has a day by day setup as well as a “Special day” for types like Public holidays and so on.

Pay agreement lines delimitations:


As you can see there is a wide range of delimitations you can do and I’ll run through what I normally do in my next blogpost.

Time and Attendance (Part 08/31): Pay agreements Delimitation

Time and Attendance (Part 6/31): Indirect activities

Human Resources > Setup > Time and attendance > Indirect activity categories
Indirect Activities is used for all other job types that does not involve absence, manufacturing execution or project.

There are four types of indirect activities:

  • Job
  • Break
  • Switch code
  • On Call

You can only have one type of activity within each category.

Job Activities:
There are some job activities created by the configuration wizard. These are the system specific jobs that are connected to a system function other then the type “Jobs”.

The system jobs are:

  • Jobs
  • Clock in
  • Clock out
  • Start assistance
  • Stop assistance
  • Change pilot
  • Submit registrations
  • Clear
  • System waiting
  • Stop break
  • Info
  • Switch bundle mode

If you are missing any of the system tasks, you might want to create these in the indirect activities Group called “System” later on.

For miscelaneous jobs you might want to prefer using a internal costing project to get a better functionality and more diverse costing opportunities.

Break activities:
You can either create default breaks in the profiles, but you can also set it up, so the users them selves can select when they take a break and how long it should be.

You can create different types of break activities that will holt the cost allocation to the operation beeing executed on.


You can choose if the break is a paid break and to set a timer for the activity. If the user does not punch a cancel break activity within a given time frame (with tolerance settings) the break will turn in to an unpaid break activity.

Switch code activities:
Switch codes are used to toggle different types of pay agreements and profile types in the profile.

I use these to mostly toggle overtime and toggle flex vs. overtime for flexi time users.

If you have a special type of pay account build up as well you can use this parameter to toggle this on or off.

A switch code can also cancel or exclude another switch code, so for the overtime scenario you will also want a cancel overtime activity that negate the overtime switch codes.


On Call:
The on Call activity is a special activity that is called once for each shift (the time between clock in and clock out).

If the user triggers this at any time durring a shift, the entire work time will be “marked” with this On Call activity.

So you can use this as a to trigger where the user gets a special added pay type to each working hour.

I use this for triggering self-managed bonuses. For example if a worker needs to go to jobb in the middle of the night because a machine has stopped or something.

Time and Attendance (Part 07/31): Pay agreements

Time and Attendance (Part 5/31): Absence setup

Absence registration can be done by the time registration users them selves. If the clock-in or clock-out does not match the expected user profile, the user is prompted with an absence dialogue and can register either the reason why they are late or the reason why they are early.

To configure this go to Human Resources > Setup > Time and attendance > Groups > Absence Groups.

AX2012 Absence Groups

Create the groups with payroll in mind. For instance paid, unpaid, vacation and so on. This can make the payroll setup easier later.

After creating groups you need to create the codes

AX2012 Absence Code

Make it available for the time registration user:
The setup for absence codes are the reasons for why the employee is not present. Not all the codes are natural to have in the terminal Interface. To make them available. Tick the “Registration” checkbox under Time and attendance fasttab.

Add colors to the terminal dialogue buttons by selecting the text and background color. You can make it even prettier by adding an iconId to the Icon Box. You can find an overview of the standard icons for AX by going to the Developer Interface (CTRL + D) and go to Tools and Embedded Resources.


Find the iconID by browsing the list and add it to the field in the Absence code form.

Continued or not:
The parameter “Continue absence” determens if the absence code should be active untill next clock-in by the user (Checkbox:true) or only untill the next expected clock in stated in the profile (Checkbox:false).

Post paytypes:
If you want to make the absence post a paytype to payroll you can add a paytype to the record as well. You can do it here if it is the rule for all employees. If they differ for some employees you can do this in the pay agreement setup later.
You can toggle if the absence is a standard day or only hour by hour. This will also affect the pay transfer. If set to day this will only transfer 1 for each day.

Try clocking outside the expected times and see the nice interface pop up.

Time and Attendance (Part 06/31): Indirect activities

Time and Attendance (Part 4/31): Profile setup

You create profiles to determin the users actual working times (Human Resources > Setup > Time and attendance > Time profiles > Profiles). You can do this in so many different ways that it is could be a dauntfull task to attack. I’ve got my own way of doing it and I’ll show you my way and some other methods of creating this. There is a lot to say here, but jump to: “Create a standard profile” and do that to quickly get started or read all to become a wiz.

Note: Name these based on function or department (Production, Administration, 50%, Day Shift, Night Shift, Flex daytime…) and not on users(eg. Jhonny, Frank, 105, FRS…).

Profile types:
You can configure the profile types at Human Resources > Setup > Time and attendance > Time profiles > Profile types. Durring the wizard execution we got some standard profile types, but to get the full functionality you will need atleast:

  • Break
  • Clock in
  • Clock out
  • Overtime
  • Paid Break
  • Standard Time
  • Flex +
  • Flex –

Create a standard profile
A standard profile has expected clock-in and clock-out records and could looks like this:

Standard Profile

Before 07:00 the user gets Ovetime. After 07:00 they have standard time untill a paid break for 15 minutes at 09:00 and a break at 12:00 for 30 minutes. The clock out is at 15:30 and time after this is overtime. The profile has tolerances for 5 minutes before and after clock-in/out making the rounding within the clock-in/out times.

After creating one day, you can copy this to the rest of the days in the week by using the copy function.

Note: Always check the “Profile time day:” to see the total work hours for that day

Microsoft has some great information and examples on this on MSDN: Click here

Profiles that need overtime approval
As I don’t want the system to automatically give the users overtime if they register before or after clock-in/out because this has a great economic impact. I use switch codes and secondary profile type to introduce a approval step for this action. The user can clock in early, but they have to enter a switch code to get the overtime. The switch codes are set up with the approval parameter active.


This is a standard setup for the profile that I use.


Note: The final record goes past 24:00 on to Tuesday because a user can then work past 24:00 and still get paid. The calculation is for the profile date and it only looks at the day it is activated. It does not look at the next day after 24:00.

Create a profile without clock-in/out constraints
The simplest profile type is the one without clock in or out times. This solution is pretty quick to set up and covers anyone who clocks in at any time of the day. It is mostly used for “Contractors” (external workers/hired help) and part time workers that is paid hour by hour. It will not prompt the user for absence codes.

Note: This type require users to register in and out from breaks.


Notice that the lines are chronological, and since the first line lasts untill 24:00 the second line last untill 23:00, but on the day after. This way anyone can clock in durring the entre day from 00:00 to 23:59 and work untill 23:00 the next day without any issues. It is important to check the “Profile time day:” to controll this.

Same type with approval for overtime:


Flex time profiles:
We will cover is in Flexi time section later.

Prepair for work planner:
While creating profiles. Select a color for the profile. Try grouping them logically, so you can look at the color and kind of an impression on the type of profile.

My standards are:

  • Green for day shifts
  • Amber/orange for evening shifts
  • Red for night shift
  • Grey for generic profiles
  • Yellow for reduced times
  • White for free or NA
  • Blue for flex profiles

Time and Attendance (Part 3/31): The Basic consepts


When I planned this series I thought it would be a light and high level, but this specific post is a bit deeper. As with all modules in AX it is important to know what is going on under the bonnet to fully understand the processes and opportunities. So let me try to sum it all up for you. You might want to go back to this as a reference post for all the other posts later on.


Data input:
Time and attendance uses jobs to that it registeres in raw registrations at the time of input from the user. It creates multiple jobs for each production operation depending on the settings, a job for each project and project activity, a job for each indirect activity and absence code and absence group.

Calculating work times:
When the person doing the calculation/approval opens the profile day for control of the hours the system creates the time journal header and time journal transactions based on the raw registrations. The journal can be changed. It can also be reverted back to it’s original transactions by importing the raw registration transactions again. The system require absence to be identified at calculation.

Calculating parameters and Pay agreements:
The pay agreements are used to set the base for what pay types that will be generated.
After the work times are calculated and approved it runs through the calculation paramters where the profile types corrosponding with the raw registrations generate pay agreement types based on the calculation parameter settings and pay agreements.


After calculating and approving the user will transfer the journals. This results in the lines being removed from the view of the user and pay types being locked in. These can later be exported to an external payroll system and the pay type transactions will be flagged as exported.

At the time of transfer the production orders and projects will get hours amended in the time journals posted as descrepencies in new route cards/Job Cards and Hour journals.

And that’s the basic process for time registration in AX.

Time and Attendance (Part 04/31): Profile setup

Time and attendance (Part 2/31): General parameters

My standard setup is the following:


I leave the “auto insert flex/absence” option blank because this normally sat to the person calculating the hours.

Password and Badge Id I some times use. This is set up on the employee settings (Human Resources > Common > Workers > Time registration workers | Employment > Time Registration).


If password is active you have to enter a password at login, but you can keep it empty and only enter a password for supervisors for instance.

If the employee number sequence is not good for the login purpose, I use the badge ID for authentication.

The reason to use centihours for “time presentation” is because this is the same as in manufacturing routes. If not the 60-minute hours would be a better Choice.

The workers go back to the same work as the day before and working with the same teams (if used), so the “permanent teams” and “restart at clock-in” is active.

Job table sync is online, released orders are dropped to the shop floor instantly.

The registration error mode is sat to prohibit because discrepencies has to be controlled. If a user has a record posted at a time after the time stamp time the system will prohibit the user action.

Get time from server, so the system doesn’t use the local computer time.

Barcode settings has to have a barcode type that has enought caracters.

Max work minutes are set and automatic clock out is set to limit the time registered if the user forget to clock out.

If no input is done the terminal resets.

Inventory adjustment journals should have a special journal name, so you know what is posted from the shop floor.

Also set the Payroll file name and path.


Time and Attendance (Part 03/31): The Basic concepts