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.
 
Scenario
 
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): https://mbs.microsoft.com/partnersource/northamerica/sales-marketing/demo-tools/virtual-machines/AX2012DemoToolsMaterials
 
I'll start with creation of Worker who will be involved in various activities related to projects, production, planning and service in the organization.
 
Worker
 
 
Worker
 
 
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
 
Resource
 
 
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
 
Jobs
 
 
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
 
Jobs
 
 
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
 
Project
 
 
Then I'll switch to Worker screen to do some additional Project related setup
 
Worker
 
 
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
 
WBS
 
 
Then you can select the task and try to Assign worker to the task
 
Infolog
 
 
Potentially you may get this message if there's nobody available for the task
 
Infolog
 
 
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
 
WBS
 
 
This can also be seen on Project level
 
Project
 
 
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   
 
WBS
 
 
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
 
Route
 
 
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
 
Jobs
 
 
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
 
Jobs
 
 
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
 
Infolog
 
 
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
 
Resource
 
 
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
 
Dispatching
 
 
Here's the Production job displayed on Dispatching screen
 
Jobs
 
 
Jobs
 
 
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
 
 
Firming
 
 
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
 
Dispatching
 
 
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
 
Worker
 
 
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
 
Parameters
 
 
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
 
Activity
 
 
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)
 
Activity
 
 
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