This article provides an explanation of important fields in Microsoft Dynamics AX 2012 that impact the result of production order scheduling in a significant way. The business requirements that these features address are well known, and AX 2012 has some very interesting options that are not widely known but that do address some of the requirements precisely.
1. Resource efficiency percentage
The efficiency percentage is a field that is found in all MRP/ ERP systems. It has an obvious purpose to take into account the real world. For example, if I work 8 hours a day according to my contract, the scheduling system cannot assume that I am indeed going to be available 8 hours to do work. The natural down time has to be taken into account. An efficiency of 85% is considered realistic for human workers. For machines one would leave it at 100%. When machines are down for maintenance or repair reasons, we do not use the efficiency percentage but actually adjust the calendar to zero hours for the duration of the maintenance.
The system uses this efficiency percentage to reduce the day length.
EXAMPLE: If your calendar indicates 8 hours per working day, and your efficiency is 80%, the system will assume you only have 6.4 hours per day to do work. See screens below.In the standard definition, this is a field that has values below 100. But there is no problem entering values > 100 and this turned out to be very useful.
NOTE: In Resource Groups in AX 2012, the efficiency percentage can no longer be changed and in AX 2012 R3 the efficiency percentage field no longer exists on the Resource Group.
Use Efficiency > 100%
Many manufacturing companies have a dilemma in the set up of resources as follows: Let’s say we have a department where 5 employees work full time. I do not want to manage them each as a separate resource. I want my scheduling to be on the level of the team. How to represent their capacity?
If we don’t know about the trick with the efficiency greater than 100%, we would have to create them each as a resource, link them to a resource group which is the team and we would get available capacity of 200 hours a week as we wanted. If we use operation scheduling only, the system would schedule on the resource group level and it would work fine. If we want to use job scheduling, we are in trouble. The system will want to pick one of the five resources and if running “infinite” capacity, it will always be the first one (with the lowest id). This clearly will not work.
We would do this instead: define the team of 5 as one resource with efficiency 500%. This will give us 200 hours per week for scheduling and the system assumes we can do 5 jobs in parallel without really scheduling any of that detail.
2. How to define shifts?
Dynamics AX does not use the concept a “shift” in scheduling functionality, which makes this a topic of frequent discussion. The main question is: how granular do we want to be when managing capacity? If we want the system to know exactly who works when, we’ll have to set up calendars that define the work hours of each shift exactly and link them to the resource. But if we are not managing our capacity “to the person” this does not make much sense. If we have a 2 shift operation, AX only needs to know the total of work hours of the 2 shifts together. This is defined in the calendar and this will define capacity accurately enough for scheduling.
NOTE: In Manufacturing execution, the shift is typically defined in the profile. It is critical here as payment is different for different shifts. This shift field has nothing to do with scheduling.
3. How to use secondary operations
This feature is designed to address the ‘man/machine’ problem where we have operators and machines working as resources in the same routing step. One of the two has to be primary for scheduling and typically this would be the machine.Note: in early AX 2012 kernel versions it is not possible to use the same operation code for primary and secondary routing operation as shown in the screen above. Above screen was created in 6.2.1000.4051. In that case a different operation code has to be used and the times of the secondary operation will not display (but are used)
The operator is added to the routing with the same operation number but with priority ‘secondary 1′. What is the functionality of a secondary operation? Such an operation does not allow any updates to the times. The times of the primary operation are used. We can use separate rates and of course a separate resource group or resource or resource requirement. For scheduling, the secondary operation is 100% parallel.
There are up to five secondary operations possible but I have never seen them used. Secondary 2 could be used for Tooling (when tools are defined as resources).But what if we have an operator that is handling multiple machines, so he/she is only “part time” working on the machine resource?
4. Use the Load field to handle one operator handling multiple machines.
Often one operator handles more machines. How to set this up correctly?
- For scheduling and for costing we want to reflect that our operator is ‘part time’ for this machine.
- This is done by using the little known field on the Resource Requirement tab ‘Load’
With a percentage greater than 100, we can indicate that our operator is part time attending to this machine.
This will reduce the hours of the secondary operation so it will also reduce the cost.
Of course the system will not be able to send a warning when our total percentage for a human resource is higher then 100%.
NOTE: This field value will only take effect after a Re-estimate of the production order. In the update tab of the routing operation you will see the total hours go down, and in the Price calculation you will see the impact of this on the estimated labor cost.
5. Use the number of resources to indicate that an operation can be split up and run on multiple machines simultaneously.
There is another interesting feature on the resource requirements tab! It is the field “number of resources”. If I have scheduled my routing operation on a resource GROUP, but I want to indicate that this routing operation is typically run on more than 1 machine at a time, I can put a number in that field. Let’s say I put a “2” in there. The system will then send me the following message immediately:I will say “yes” and my process time will be actually cut in half. My total time has not changed, so my labor cost is also unchanged. But for scheduling, this makes a difference. The system will now schedule and reserve capacity for only 12 hours in the calendar.
- Operation scheduling. I simply see my lead time being cut in half. The routing operation remains scheduled on the Resource Group.
NOTE: A peculiar detail is the following: the system will give a scheduling error (you know that error that always helps us so much “not enough capacity can be found”) when we don’t really have two resources defined in our group! We have to actually define those resources. Even though operation scheduling does not use these resources in any way, they have to be there.
- Job scheduling. In this case these two resources are actually getting a job, each gets half of the work. Two jobs are created for two different resources. This is excellent and I have had customers ask for this feature many times in the last 10 years. I did not know about this feature for a long time. It works flawlessly.