Thursday, July 17, 2014

Microsoft Dynamics AX 2012 Cross-Functional Resource Scheduling – Part 1

Microsoft Dynamics AX 2012 Cross-Functional Resource Scheduling – Part 1
Purpose: The purpose of this document is to illustrate how Resource Scheduling engine works in Microsoft Dynamics AX 2012 in cross-functional scenarios.
Challenge: Often times during large deployments of Microsoft Dynamics AX 2012 it is required to roll out multiple functional areas where Resource Scheduling is needed. Enterprises want to consistently and uniformly maintain the info about resources, their capacities and schedule their activities in relation to various tasks. For example, an employee may be involved on the project doing project-related work and at the same time the same employee may be involved on the shop floor working on production jobs, in addition it may be some future activities planned for this employee which we want to properly account for.   
Solution: Microsoft Dynamics AX 2012 provides robust, highly configurable and extensible Resource Scheduling engine which satisfies needs of multiple functional areas such as Production control, Project management and accounting and Master Planning. Resource and Capacity model in Microsoft Dynamics AX 2012 spans across multiple functional areas and provides a single point of info about resources capacity and availability at any time.
In this walkthrough I'll go over multiple functional areas such as Production control, Project management and accounting, Master Planning and Service management to illustrate how to schedule resources for various activities. I'll also touch upon graphical scheduling aspects using Gantt charts and production jobs rescheduling aspects using Production dispatch. Please note that in Part 1 I focus on Scheduling and in Part 2 I'm going to cover Execution (including Manufacturing Execution).
Below I provide an end-to-end scenario which you can replicate using standard Microsoft Dynamics AX 2012 Demo VM available on Partner Source here (requires Login):
I'll start with creation of Worker who will be involved in various activities related to projects, production, planning and service in the organization.
As a part of preparation work I'll now create a Production unit for production-related activities
Production unit
Next I'll create a Resource group, assign newly created Production unit to it and mark Finite capacity checkbox because I want my resources capacities to be limited
Resource group
Then I'll create a Resource of type = Human Resource and assign my worker to it. Finally I can also assign this Resource to Resource group which I created earlier
Please note that I associated my Resource with a Resource group and also specified a Calendar which defines Resource's capacity. Now by invoking "Capacity load" function I can review capacities of my resource daily
Capacity load
According to the Calendar my Resource has 8 hours of capacity daily. I can also see it visually/graphically by invoking "Graphical capacity load" function
Capacity load, graphically
By clicking Setup button I can get access to different parameters of this form
Capacity profile
Note: Checkboxes in Load section is a good indication of what is a subject for capacity planning in Microsoft Dynamics AX 2012
In addition to it I can also review existing Capacity reservations for my Resource by invoking "Capacity reservations" function. There're no capacity reservations yet because I didn't do any scheduling against this resource yet
Capacity reservations
Okay now let's review the first functional scenario related to Production control
Scenario 1: Production control
I will start by creating a new Production order
Production order
Production order
For the sake of simplicity I'll simplify Production BOM to look like below (only 1 component)
Production BOM
I'll also simplify Production route to look like below (only 1 operation)
Production route
Note: Runtime gets overridden when you change Cost group settings, so please reenter Runtime if needed
Production route - Times 
Now I want this operation to be scheduled exactly against my resource. For this purpose I'll define a Resource requirement of type Resource
Production route – Resource requirement
Note: Please note that you can only define one Resource requirement of certain type per Operation because otherwise those resource requirements would contradict
On Scheduling tab you can review the details of Scheduling for this operation, no details here because we didn't schedule anything yet
Production route - Scheduling
After we defined Resource requirement for operation we can also double check it on Applicable resources form, okay, the system will only consider my Resource for this operation
Applicable resources
Now we are ready to start Production order Scheduling
First we'll do Operation scheduling which will give us Start and End dates for the operation
Operations scheduling
We also want to make sure that we do Operations scheduling with Finite capacity constraint
Operations scheduling
At this point our Production order is Scheduled (Operations scheduled) which gives us a rough picture of what will happen
Production order
On Production route Scheduling tab we'll see Start and End dates for the operation. Times 12:00am is a default times and it means blank for us
Production route - Scheduling
When doing Operations scheduling the system will not break operations into jobs that's why Jobs screen is empty now
Because we scheduled our Production order we can now review that 1 hour of capacity has been taken away from my resource on Capacity reservations form
Capacity reservations
You can also see that this 1 hour of capacity is taken away from the specific date. This can be seen in a broader picture on Capacity load screen
Capacity load
After we did a rough scheduling we now want to do a precise scheduling and find out about exact dates and times of when this operation can be completed. For this purpose we'll do Job Scheduling now
Job scheduling
Similarly we want to make sure Finite capacity constraint is in place
Job scheduling
Now out production order is Scheduled (Job Scheduled) again
Production order
At this point we know that our operation will start at 10:00am and will end at 11:00am on a specific date
Production route – Scheduling
We can also see Jobs generated based on Operation Times. We only specified RunTime that's why the system created only one job as shown below
Capacity reservation has been updated too, now it shows exact times
Capacity reservations
No change on Capacity load screen because the total operation time hasn't change since. But you can see explicitly what time was reserved against Jobs and what time was reserved against Operations which gives you a meaningful insight
Capacity load
If we come back to Graphical capacity load screen and select a particular date you will be able to see that total capacity is displayed in Blue and used capacity is displayed in Yellow. You can also visually assess of how much time is still available for the resource on that date
Graphical capacity load
After we Scheduled Production order we can now invoke a Gantt chart to see our scheduled production related activities on the timeline
Here's the Resource centric view of Gantt chart
Resource view
You can also switch to Order centric view of Gantt chart
Order view
On the Gantt chart you can get more info about scheduled activities by using right click, do drag-n-drop rescheduling and more. After you do manipulations on a Gantt chart you will need to click "Validate" button which would validate your changes against the scheduling data, finally to save your changes you would click "Save" button
This is a quick run through Production scheduling and now I propose to switch to Project scheduling because my Resource is also supposed to do some project related work
Scenario 2: Project management and accounting
We'll start from preparing the Project for Project scheduling
First off I'll specify Scheduling calendar on Project team and scheduling tab which is required before you begin scheduling
Then I'll switch to Worker screen to do some additional Project related setup
I'll continue with Assigning workers to the Project which may be required from Validation perspective. You can assign Workers to a Project or vice versa assign Projects to Workers. Below is an example of Assign workers to Project screen which you invoke from Project screen 
Assign workers
Assign workers
Then I'll open Project setup screen to specify Resource Scheduling Calendar for a Worker
Project setup
Now we are ready to define Project WBS – planned activities for the project. Here I created "Assembly" task and assigned 1 hour effort to it
Then you can select the task and try to Assign worker to the task
Potentially you may get this message if there's nobody available for the task
In case there're options for Worker assignment, and in our case I explicitly specified that only my Worker can work on this project, the system will present you with Worker assignment screen
Worker assignment
It is also useful to mark "Display remaining capacity" checkbox which in my case will display 8 hours of capacity for Monday for my Worker. After that you may decide to Soft book or Hard book Workers time for this task. I'll proceed with Hard booking by clicking at Hard book button and specifying number of hours I want to book (1 hour)
Hard book > Specify hours
When you finish the system will update remaining capacity for Worker for that date and you will see only 7 hours remaining
Worker assignment
Now when we come back to WBS screen we'll see Hard booking in place for "Assembly" task
This can also be seen on Project level
In the example above I used WBS screen to introduce a task for the Project, however you can also use Microsoft Project integration feature to work with WBS. This is how Microsoft Project client looks like when I open Project WBS there
Microsoft Project
When you are done with manipulations in Microsoft Project client you can publish your changes back to AX. If you want to keep working on WBS screen inside of AX after you established a link between Project in AX and Microsoft Project client, you will need to use Unlink from Microsoft Project function to do so   
Coming back to my scenario, after I hard-booked my Worker for 1 hour for "Assembly" task no additional capacity reservations occur at this point. This is because WBS tasks are not a subject for Resource scheduling, they just represent expected project activities
In order to reflect bookings I've done in Resources capacity reservations I'll now transfer WBS estimates to Hour forecast. From that point Project Hour forecast will become a subject for Resource Scheduling
Transfer WBS estimates to forecast
Here's my Project hour forecast which I can now Schedule as appropriate
Hour forecasts
But before I go ahead with scheduling I'll also specify Resource requirement constraint to make sure my Resource is assigned to this activity
Hour forecast – Resource requirement
At this point on Scheduling tab there's no Resource assigned to this activity
Hour forecast - Scheduling
After I defined a Resource requirement constraint I can also review a list of applicable resources
Applicable resources
And finally I can do actual Scheduling, I'll start with Operations Scheduling with Finite capacity
By the result of Operations Scheduling my Resource gets assigned to the Hour forecast record
Hour forecast - Scheduling
On Capacity load screen I can now see that only 6 hours remained, this is because the same Resource was also involved on Production job on the same date
Capacity load 
On Capacity reservations screen I can explicitly see that there're 2 reservations of different types (Reference), one for Project and anothet one for Production
Capacity reservations
Next I'll Schedule Project Hour forecast using Job Scheduling
Resource scheduling – Job scheduling
This time similarly to Production Scheduling the system will provide exact Dates and Time for this activity to happen
Hour forecast - Scheduling
On Capacity load screen now we see 2 hours reserved as Job reserved
Capacity load
Capacity reservations screen also reflects the fact that both jobs are Job scheduled even though they have different types
Capacity reservations
Graphical capacity load screen now shows that more capacity has been reserved for my Resource, it is 2 hours in Yellow now
Graphical capacity load
If you try to lauch Gantt chart for that date you may see the following message
Gantt chart - Project
This is because the system is not capable of displaying Project + Production activities on the Gantt chart at the same time. That's why we'll review only Project part on Gantt chart
Gantt chart – Order view
Gantt chart – Resource view
Note: And again remember that you can create your own very personalized Gantt charts using Gantt charts form
To complete the picture let's consider a Master Planning scenario now
Scenario 3: Master Planning
Before I proceed I'll now simplify Product BOM
Product BOM
I'll do simplification to Product route too
Product route
On Product route I'll make sure I have RunTime = 1 hour and ProcessQty = 1
Product route
As I did before I'll add Resource requirement constraint in order to utilize only my Resource
Product route – Resource requirement
Now we can proceed with creation of Planned Production order
Planned production order
Planned production oder
Here's how Derived requirements form look like (ala Production BOM in Production order scenario)
Derived requirements
And this is how Route for Planned production order looks like
Resource requirement has been properly propagated to Planned production order
Route – Resource requirement
We can review applicable resources as usually to make sure the system only considers my Resource
Applicable resources
Please note that after you create Planned production order it gets automatically scheduled, but I will reschedule it anyways to illustrate different Scheduling methods. I'll start with rough Operations Scheduling with Finite capacity
Operations scheduling
Operation Scheduling will provide Start and End dates for scheduled activities
Planned production order
The results of scheduling can be reviewed on Route – Scheduling tab
Route – Scheduling
No Jobs created because we used Operations Scheduling
On Capacity load screen we can now see one more hour consumed for my Resource on the same date. Please note that this capacity reservation was done in relation to "DynPlan" Dynamic Master Plan. This means that you may have parallel capacity reservations for Planned production order in relation to different Master Plans. That's why it makes sense to specify what Master Plan is in consideration when you look at Resource capacity reservations, so you can account for "conditional" capacity reservations. Capacity reservations for real Production orders are "unconditional".
Capacity load  
Now if I select "DynPlan" Dynamic Master Plan on Capacity reservations screen I'll see both "unconditional" and "conditional" (belonging to selected plan) capacity reservations. Please note that we've got one more capacity reservation with Reference = Planned order
Capacity reservations
Next I'll complete this excersice with Job scheduling with Finite Capacity
Job scheduling
Now as we are done with Job Scheduling for Planned production order we can see exact times assigned to activities
Planned production order
Route - Scheduling
This time one job will be generated for the operation in route
On Capacity load screen we'll see 3 hours as Job Reserved now
Capacity load
List of capacity reservations will now look like this
Capacity reservations
Graphically the siutation will look like this. Now we booked 3 hours for my Resource all related to different types of activities
Graphical capacity load
Once again if you try to lauch Gantt chart for this date you may see the following message
The reason is the same as last time, the system is not capable of showing different types of activities on Gantt chart at the same time. And now we have 3 different types of activities associated with Production order, Project and Planned production order. But I'll proceed with Gantt chart for only Planned production order
Gantt chart – Resource view
Gantt chart – Order view
By now we discussed Production order, Project and Planned production order Scheduling, but there's one more aspect regarding Production scheduling I want to add. Imagine you scheduled a number of production jobs and a rush Production order comes in which you have to deliver. In this situation you may need to reprioritize and reshuffle existing production jobs for specific resource and still keep your entire Scheduling results consistent. For this purpose you can leverage Production Dispatch function which is illustrated below         
Scenario 4: Production Dispatch
You can invoke Production Dispatch form from Resource screen
This is exactly what I just did. But in fact I just see only one job belonging to Production order, so there's nothing to reshuffle
Here's the Production job displayed on Dispatching screen
In order to reshuffle jobs and reschedule them nicely I'll need to have at least 2 jobs in consideration. That's why I will come back to my Planned production order and firm it, after Planned production order turns into a real Production order this will introduce the second production job I need
Thus I will firm Planned Production order
Planned production order - Firm
Now we turned Planned production order into a real Production order. Please note that it comes in as already Scheduled (Job Scheduled). This is where we left it initially
Production order 
If I now look at capacity reservations I'll see 2 of them with Reference = Production, this is exactly what I need
Capacity reservations
And then I can try doing Dispatch again. This time I will see 2 jobs on Dispatching screen which I can select and reshuffle appropriately
After I selected those jobs I can move them Up and Down in the Sequence to prioritize some production jobs appropriately. After I defined a desired sequence of jobs I can then define Scheduling direction for the first job and schedule all the rest of them in relation to that first job. This way I can keep my entire Scheduling results consistent and move some jobs Up in the hierarchy as necessary
Dispatching – Sequence
Dispatching - Change the sequence (Up)
Now we are ready to reshuffle jobs on Job Scheduling screen
Job scheduling
I'm still interested to do Job Scheduling with Finite Capacity
Job Scheduling (1st job)
Job Scheduling (2nd job)
As the resault my production jobs will be properly rescheduled
Result – Dispatching
Please note that Production Dispatching function is meant for Production jobs (Job Scheduling)
Now I'll come back to the feature which allows you to create your own Gantt charts to display only info that you exactly need
Gantt chart
We will start with creation of Gantt chart definition in Organization administration module
Gantt charts
I'll only be interested to work with Resources which I introduced as a part of this walkthrough. That's why on Resources tab I will specify my Resource
Gantt charts - Resources
I could also have done it by specifying my Resource group on Resource groups tab because my Resource belongs to my Resource group. You can also mix Resources and Resource groups to consider only resources you want to consider for Gantt chart
Gantt chart – Resource groups
When I launch Gant chart I'll need to specify Start date in consideration. Please note that Days horizon is taken from the definition of Gantt chart
Define dates for Gantt chart
The result will look like the following
For example, Production only
Gantt chart – Resource view
Gantt chart – Order view
Gantt charts in Microsoft Dynamics AX 2012 are highly configurable. Please review available settings below
Gantt chart setup - General
Gantt chart setup - Production
Gantt chart setup – Planned production
Gantt chart setup – Project
You can configure Gantt charts in Microsoft Dynamics AX 2012 appropriately to get the most out of them
This concludes the main scenario about Resource Scheduling in Microsoft Dynamics AX 2012, but I'd still like to discuss one more thing. Microsoft Dynamics AX 2012 provides Service management module which allows you to create, control a life cycle of Service orders and more. Each Service order may have number of activities associated with it which you may need to dispatch to service technicians. The next section will illustrate how to do manual Service Dispatch in Microsoft Dynamics AX 2012. Please note that when you dispatching Service related activities it has no impact on Resource capacity reservations because Resource Scheduling engine is not utilized in this case.     
Scenario 5: Service management Dispatch
I'll start this section from some required setup. First I will define a Dispatch team
Dispatch team
Then assign my Worker to this Dispatch team
Dispatch team
I'll also need to define Activity type for my future Dispatch activity. I'll create one here
Activity types
In order to make sure that Dispatch activity gets properly generated I'll need to set up Service management parameters. In particular I'll set up Create activity for Service order to Yes, Service order activity type = Repair job and Activity generation stage = In Process
Note: Please don't forget to set up Activity generation stage otherwise your Service Dispatch activity will not be generated
Now we can create Service order and specify Preferred technician and make sure that Default line activity type is specified
Service order
Then I will advance to the next Service stage which is In Process which should generate Service Dispatch activity for me
Service order – Service stage (Next)
Note: Please note that Next stage In Process which is set up as Activity generation stage in Service management parameters
At this point we can create Service order line and see that Service Dispatch activity gets generated
Service order
This can also seen on Service order header in Activities list
Service order - Activities
This activity is now a subject for Service Dispatch
In order to do Service Dispatch I'll open Dispatch Board for a specific date
Dispatch board
The system will now display Dispatch activities on Dispatch board
Dispatch board
I'll switch to Advanced view to see all Dispatched and Undispatched activities in lower pane. Now I can also select a particular Undispatched activities and manually dispatch it to the Worker by right clicking and pressing Dispatch button
Dispatch board
After I dispatch activity it will show up in the list of Dispatched activities so I can proceed to the next Undispatched one if any
Dispatch board
After Activity is dispatched this is also reflected on Activity screen (Dispatched = Yes)
Please note that Resource Scheduling engine is not utilized in the scenario with Service Dispatch and you do it manually on Dispatch board. That's why capacity reservations will not change after I dispatched Service activity to my Worker
Capacity reservations
Note: No impact on capacity reservations when doing Service Dispatch because Resource Scheduling engine is not utilized in this scenario
Summary: This document illustrated how Resource Scheduling engine works in Microsoft Dynamics AX 2012 in cross-functional scenario. In this walkthrough we covered Production order, Project, Planned production order scheduling, also discussed Production dispatch and personalized Gantt charts. And we finished with going deeper into Service Dispatch and explanation of how Service Dispatch is different from Resource Scheduling. 
Tags: Microsoft Dynamics AX 2012, Production control, Production order, Project management and accounting, Project, Master Planning, Planned order, Production dispatch, Gantt chart, Service management, Operations Scheduling, Job Scheduling, Resources, Resource groups, Capacities, Operations, Jobs.
Note: This document is intended for information purposes only, presented as it is with no warranties from the author. This document may be updated with more content to better outline the issues and describe the solutions.
Author: Alex Anikiev, PhD, MCP

1 comment:

  1. Great post! Thanks for sharing such knowledge with us. If you are looking for more about
    microsoft dynamucs ax
    , checkout here.