Overview of finite capacity production setup and job scheduling in Microsoft Dynamics 365 for Operations

Posted by

When factories work using process manufacturing, there is always several things to take into account and setup in the ERP like: resources (tools, machine, production lines, human resources), capacity, capabilities and skills of those resources, working calendars and so on.

In this post, we’ll see an overview of those setup and the impact when scheduling the jobs on production orders.

Calendar setup

First calendars. Before creating any resource, you need to setup calendars with associated working times. Calendars are common to a lot of modules (you’ll find plenty tutorials everywhere about calendar) so we’ll not insist on how to setup them.

In Production control, you can go to Setup > Calendars > Calendars and create at least one.

For this sample, there is 2. The standard one has basic working times (8 am to 5 pm with 1 hour break for lunch) 5 days per week. I’ve created another one here which has only 2 working hours from 3 pm to 5 pm from Monday to Friday.

Setup resources and resource groups

In our case, we’ll deal with resource groups. When several machines on the same site are able to run the same kind of tasks, that is to say one can replace another one, it’s a good idea to use resource groups to gather them. You can create them under Production control > Setup > Resources > Resource groups.

You can now create resources as machines (see the “Type” field), affect them the previous resource group created and also affect a calendar. The calendar setup on resources is prior to those setup on resource groups. Leave all the fields to blank, except the cost categories which are mandatory when running the process.

As you can see, our PROD-LINE group has 3 resources affected. That’s fine for now.

Let’s now have a look on the route setup (go to Product information management > Products > Released products), especially on the route operations.

When adding a new operation route, you’ll need to specify which resource requirement you want to use for running the current operation. In that case, we’ll choose “Resource group” and select the one we have created earlier.

For now, just let the “Formula” setup to standard in the “Setup” tab. That means the capacity will be setup directly on the route operation instead of the resource, through the “Times” tab.

Let’s indicate the times. There are plenty fields to setup for times if you want to, but the main are those below. The unit of time is one hour (see the “Hours/time” field). So here for running 100 pieces you will need a “Run time” of 1 hour.

Production order scheduling

Here we go for creating one production order (Go to Production control > Production orders > All production orders, and New), choose the item with the route just setup, and update your production order to estimated (if this step is mandatory according to the main setup done in Production control > Setup > Production control parameters > Status tab).

Then, go to the schedule tab, and run the “Schedule jobs” option. Find all the schedule job options here.

For starting, you can leave all the parameters to the default values.

When it’s done, look at the Gantt chart available on the “view” section of the schedule tab.

As you can notice, we have a 2 hour working time for the L-MAC3 resource (which belongs to the resource group associated on the operation route). That fits to our setup: we have an order of 200, with a capacity of 100 / hour setup on the operation route, that make 2 hours. Pay also attention to the colors on the calendar displayed: the open hours are highlighted. That means the calendar setup on the L-MAC3 is the “Standard” one.

Keep going ? We add a new production order for a quantity of 600. When scheduling the jobs, look at what is the result.

The task generated for the second production order is overlapping the task for the previous from 8 AM to 10 AM on the same resource. The reason is that the resource is setup as infinite capacity. It’s not enough to size the run time for a dedicated quantity per hour, you need to enable the “Finite capacity” on every resource if you don’t want that.

Note : Look at this post which explain why it’s mostly not the best option to use resource groups when you work with infinite capacity.

Try now to reschedule the job (and check the “Finite capacity” is enable on the job scheduling form displayed) and see the impact on the Gantt chart.

Now, as we have 3 resources available on the resource group, the system affect the second production order to another resource, the M-LINE2 in that case.

You want more ? Add a third production order (which will be run by the third and last resource available) and a fourth.

Now, the last production order is run on the L-MAC3 resource, after the first production order is done. We are really working with finite capacity: we cannot produce more than 100 units per hour on the same resource.

You should know about the graphical capacity load report available under Production control > Inquiries and reports > Resources > Graphical capacity load.

You can see how the utilization of your resource is optimal according to the working hour. Here, the resource group is full at 80% on May, the 10th.

You can adjust what you want to display on the report : here is a view per resource instead of resource group.

Adding capability

Let’s add capabilities. A capability is a skill or a task a resource is available to do. For instance, a factory worker may be able to do some painting or assembly. On the operation route you will specify which capabilities are required.

Go back to resources. We have associated the “Extract” capability to the M-LINE1 and M-LINE2 resource.

About the L-MAC3 resource, another capability is added instead. Note you can add several capability but for this demo we are dealing with only one per resource. There is also a level and priority setup : we’ll see how it works later one, in another post.

On the route operation of the product, you need to update the resource requirement for “Requirement type” with “Capability” (and choose “Extract” for this example).

Let’s go back on the production orders and create 3 production orders for a quantity of 200 each.

Update them to the scheduled status as we did previously, and open the Gantt chart.

What we note here is the L- MAC3 resource is not used for any production order: that’s because this resource has not the capability required.

We should have used resources directly instead of resource groups or capabilities. In that case, times setup on the resources are used to initialize the times on the operation route. You have to be 100% sure that the dedicated resource will be used for producing the item. If so, you doesn’t need any resource group nor capabilities.

Capacity setup on resources

A machine which is designed to do the same task whatever is the item produced on that machine or produced only one item (like automotive factory) can be setup differently, with times and capacity production setup on the resource itself.

Simply indicate the capacity in the capacity field, with an efficiency of 100%. There is a capacity/unit field which has not any impact (as far as I know) on the job schedule, instead of adding some information on the kind of capacity between data/hours, raw/hours etc.

On the M-LINE2 resource, we have setup a capacity of 100 for an efficiency percentage of 100. Note in that case the default unit will always be the hour (you cannot adjust the time unit reference).

On the production operation, we let the resource requirement with the “Extract” capacity, but in the setup tab we have changed the “Fomula” value to “Capacity”.

You can setup the times to a run time equal to zero if you want to be sure the working time will be calculated based on the capacity time setup on resources.

Now, we create a production order of 100 and update it for scheduling jobs.

Working times are calculated, and they are correct according to the setup done on the M-LINE1 resource.

That’s all for now, we’ll see options in another post coming soon.


Thanks to my friend François THIEBAUT for exploring those setup with me.