Tuesday, August 19, 2014

Microsoft Dynamics AX 2012 Cross-Functional Manufacturing Execution – Part 2

Microsoft Dynamics AX 2012 Cross-Functional Manufacturing Execution – Part 2
Purpose: The purpose of this document is to illustrate cross-functional Manufacturing Execution scenarios in Microsoft Dynamics AX 2012. This is a logical continuation of series about cross-functional Resource Scheduling 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. After Resource Scheduling is done the time comes for the execution of scheduled activities. At this step you can also face with a number of surprises which may lead you to change your original plan, reprioritize your activities, find alternative resources to execute on scheduled activities, etc.  
Solution: Microsoft Dynamics AX 2012 is a comprehensive ERP (Enterprise Resource Planning) solution which incorporates elements of MES (Manufacturing Execution System). Essentially MES and ERP solution(s) allow to connect your top floor to your shop floor to execute on scheduled activities. Manufacturing execution capabilities allow you to execute on Production job, Project activities and record time spent on various indirect activities.
In this walkthrough I'll go over multiple functional areas such as Production control, Project management and accounting and Service management to illustrate how to execute on various types of scheduled activities. Please note that in Part 1 I focused on Scheduling and here (in Part 2) I'm going to cover Execution aspects and reflect on Scheduling results. 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
To set up the stage it is important to mention that in Microsoft Dynamics AX 2012 before you can execute on any scheduled activities the system should create corresponding (so called) "Shop Floor Control jobs" behind the scenes. Thus for Production order jobs, Projects and Project activities, Indirect work activities, etc. the system will create "Shop Floor Control jobs" which will be the basis for execution
"Shop Floor Control jobs" diagram

<![if !vml]><![endif]>

Now, for example, if we take a closer look at Production order jobs, we'll notice that Production order jobs will be created and scheduled as the result of Production order Job Scheduling. When it comes to execution in order to present this info to shop floor workers we're going to use different types of Shop Floor Terminals, and ultimately when info needs to be sent back from Shop Floor Terminal to Microsoft Dynamics AX 2012 we'll utilize a feedback loop. Please note that when feedback is submitted the system will create appropriate journals for original documents. For example, for Production order the system will create Route card journals to record the actual consumption of labor. Similarly the system will create Hour journals for Projects.
Functional flow (Production order) diagram
<![if !vml]><![endif]>

In Part 1 dedicated to Resource Scheduling we ended up with several scheduled activities for my resource. Here's how Capacity reservations looked like for Alex
Capacity reservations
We had one scheduled activity of each kind. For example, we had a production job
Resource > Reserved for > Jobs
And Planned Production order job
Resource > Reserved for > Planned jobs
At this point as Production Manager you can also review a full list of production jobs and their statuses using Job list form available at Production control > Inquiries > Job list. I filtered it to show only production jobs for my resource
Job list (Filtered for A9999 Resource)
Please note that on this screen we'll see Setup and Process jobs
Now as we reviewed what is given to us in this scenarios we can get to some required setup related to Manufacturing execution
First of all let's make sure that Shop Floor Control jobs will be automatically created by the system by setting up Job table synchronization mode = Online parameter in Time and attendance parameters
Human Resource > Setup > Time and attendance > Time and attendance parameters
Note: Job table synchronization mode = Online
Then in Production control > Setup > Manufacturing execution > Manufacturing execution parameters we'll review Project related setup
Production control > Setup > Manufacturing execution > Manufacturing execution parameters
Note: Post automatically checkbox (to automatically post Project journals if needed)
Going through the list the next thing to check is Production control > Setup > Manufacturing execution > Production parameters where you can, for example, control automatic posting of Route/Job card journals 
Production control > Setup > Manufacturing execution > Production parameters
Next we'll need to activate my worker to work on Registration terminals. We're going to cover what exact terminals we use a little later. 
Alex (Activate on registration terminals, Time registration tab)
Also we're going to need to specify Badge ID and Password so the worker will be able to login to the terminal. In my case I used "12345" as both Badge ID and Password
Now let's talk about what types of terminals you can use with out-of-the-box Microsoft Dynamics AX 2012. We have 2 main options: terminals embedded into Microsoft Dynamics AX 2012 itself and implemented as AX forms OR mobile terminals shipped as Windows 8 Apps
Shop Floor Terminals
In order to set up embedded terminals in Microsoft Dynamics AX 2012 you can use Terminals form available at Production control > Setup > Terminals > Terminals. You can use a classic laypout or touch optimized layout with bigger buttons
Terminal – Touch enabled
Please note Touch screen checkbox marked
Job registration screen – Touch enabled
Terminal – Classic
Job registration sceeen – Classic
You can also apply different configurations to registration forms if needed
Another option is to use Microsoft Dynamics AX Production Floor Windows 8 App available in Windows store for installation 
Microsoft Dynamics AX Production Floor App in Windows Store
This app can be launched in Demo mode with embedded demo data for demonstrations or connected mode for production use. This is how Demo mode looks like
Demo mode
In order to use the app in Connected mode you will need to do required setup. So how to connect?
In my example I used Microsoft Dynamics AX 2012 R3 instance deployed in Windows Azure as IaaS using LCS (Demo template). Here's how my AX VM looks like from Windows Azure portal
Microsoft Dynamics AX 2012 R3
Microsoft Dynamics AX Production Floor App operations are supported by Web Service on AX side. That's why I installed Microsoft Dynamics AX 2012 Web Services on IIS feature to host a Web Service
IIS Site
Web Service which supports Microsoft Dynamics AX 2012 Production Floor App is called JmgShopFloorService
In order to expose Web Service through HTTP/HTTPS I'll need to create enhanced Inbound port using HTTP adapter
Inbound port
And add all JmgShopFloorService operations to it
Finally I'll open VM's HTTP/HTTPS ports explicitly in order to connect to Web Service from the app. This setup is obviously not secure, but it is a quick and simple option which is good for the purpose of my POC
The connection details for the app may look like this
Connection details:
Server address
As the result I'll see a list of jobs populated in the app as shown below
Microsoft Dynamics AX 2012 Production Floor Windows 8 App
I used Badge ID "123" and logged in as Christina Portra
Please note that Microsoft Dynamics AX Production Floor App currently supports production jobs and indirect activities, and it doesn't support project and project activities.
At this point we discussed what types of terminals you can use with standard Microsoft Dynamics AX 2012. Please note that there're other partner's solutions providing more terminal options for you if required.
For the sake of simplicity in my scenario I'll use embedded Microsoft Dynamics AX 2012 terminals (Job registration form). 
All right, now we can review a number of functional scenarios and we'll start with Production control
Production control
In Part 1 I ended up with Job Scheduled Production order and appropriate job created and scheduled to do product assembly
Production order – Job Scheduled
In order to generate "Shop Floor Control job" associated with scheduled production job now I'll need to Release Production order
Production order – Release
Production order - Released
At this point corresponding "Shop Floor Control job" is generated and we can see it in the terminal
Job registration form - Production
However before I start execution I'll also Start Production order. This is required because in current setup I have to start Production order before I can report it as finished. And my plan was to automatically report as finished Production order by completing its single production job on the terminal
Start Production order - Overview
Start Production order - General
Please note that I don't want to post the Route card in advance when I start Production order and instead I plan on recording the actual labor consumption associated with Production order based on what I record from the terminal. That's why I unmarked Post route card now checkbox and don't want to automatically consume route operations time
Please note that from material consumption perspective I decided to post a picking list upfront when I just started Production order
Production order - Started
Now I can come back to the terminal (Job Registration form) and execute the job. For this purpose I'll select the job and press Start jobs button
Job Registration
Started jobs
After that I can see this job in the list of my current activities
Job Registration – Current activities
My next step will be to complete the job and report quantity feedback
Job Registration – Report feedback
In particular I'll press Completed button and specify Good quatity = 1
Completed (+Feedback)
As the result Route card journal will be created and posted against Production order recording labor consumption from the terminal
Because I completed a single job associated with Production order it gets updated to Reported as finished Status
Production order – Reported as finished
At this point we can also review Route card journal details
Route card journal
Please note that the system created 2 Route card journals. This is because in the first journal we reflect the fact Good quantity = 1 was posted and in the second journal we reflect the fact that 0.07 hours of labor was consumed. Please note that you may have numerous entries (journals) for hours if you start and stop the job multiple times before you complete it. 
Route card journal – Lines (Journal 1)
Route card journal – Lines (Journal 2)
This is all great. But What If you made a mistake when reporting quantities
For these purposes you can use Change feedback screen. First I'll select a resource
Change feedback - Select resource and action
On Change feedback screen I can select a job of my interest and press Update feedback button
Change feedback
In my case I'll simulate that the product is not in good condition and I'll mark it as Error quantity produced instead of Good quantity
Update feedback
As the result the system will create and post additional Route card journal reflecting the change
Now Change feedback screen shows Error quantity instead of Good quantity
Change feedback
And we can also review a corresponding Route card journal
Route card journal
Route card journal - Lines
Please note that this has no effect on hours spent because the worker still spent some amount of hours to produce the quantity of product(s)
This piece is clear, but What If you want another worker to complete the job
For these purposes you can use Edit jobs list screen. But before I go there I'm going to introducing a new worker to reassign the job to
Create a new worker
I'll also activate him for registration terminals
Create time registration worker
After I create a new worker I'll also create associated resource in Resource model
In Part 1 I had a specific Resource assigned in Resource Requirement for Production order operation, so in order to be able to reassign the job to a different worker I'll soften my Resource Requirement criteria for Production order operation to accept resources from Resource group
Route operation
Resource requirement on Route operation
I can also verify that my newly introduced resource is applicable for the operation on Applicable resources screen
Applicable resources
Now I want to reassign job to another worker/resource and I'll come back to Edit job list screen. First I'll select what resource I'm interested in, this is going to be original resource scheduled to execute the job
Select resource and action
Then I can select the job of my interest and press Change assigned resource button
Edit job list
Now I'll be presented with 2 options for the job according to Production operation Resource Requirement based on Resource group. Please note that both my resources belong to the same Resource group. So I'll select the second resource for the job and confirm my selection
Change assigned resource
Now you'll see that Resource for the job has been reassigned. Please also note that the new Edit job list screen was automatically open for the second resource (specified in the caption of the form)
Edit job list
It is important to mention that even after I reassigned the resouce for the job from Manufacturing execution perspective this didn't change the original results of Resource Scheduling. Remember this is because for Manufacturing execution the system creates "Shop Floor Control jobs" based on Scheduled jobs. You can see that from Resouce Scheduling perspective the first resource is still assigned to the job, but from Manufacturing execution perspective we assigned this job to the second resource

Original Scheduling results (Job details > Job)
Thus the second resource will have the job assigned to him on Job Registration form which is logical
Job registration – My jobs
This concludes Production control scenario. Now let's switch to Project scenario
Project management and accounting
In Project scenario I'll use the project I used in Part 1
First I'll make sure that Project is in In process stage
In Process stage is allowed for the time and material project I use
Set up project stages for various project types
At the time when Project changes its stage to In Process this project as well as its activities will become available on the terminal which means that appropriate "Shop Floor Control jobs" will be created.
We can verify that project and its activities are now listed in the terminal
Job Registration - Project
In order to start working on project activity I'll select it and press Start jobs
Job Registration – Job list
The system will prompt me to confirm Project Category
Select cost category
And put me on the job (project activity)
Started jobs
In order to stop working on project activity I'll simply start Indirect activity which will automatically stop my previous job (project activity)
Start indirect job to finish Project activity
Started jobs
I can verify that only Indirect activity shows up as My current activity on Job Registration screen
Job Registration – Current activities
If we now take a look at the project we'll notice that hour consumption has been recorded against the project as Hour journal
Hour journal
Hour journal - Lines
Great, but What if I want another worker to do the work
I can do the same excersice of introducing a new worker as I did in Production control scenario
Ultimately I'll have a resource associated with a new worker as shown below
Now I can simply log in as a new worker and I'll be able to start working on project activity right away
Job Registration
Job Registration – Start jobs
We finished with Project scenario now.
At the end of this walkthrough I also want to spend some time discussing Service management scenario and how it is different from Production control and Project management and accouting Manufacturing execution scenarios
Service management
In Part 1 I highlighted how to do Service order activities manual Dispatch using Dispatch board. Now looking at Service management scenario from Manufacturing execution perspective we can say that Service order activities are not displayed (and not available) on terminals to act upon, however you can still manually record labor consumption associated with Service order by posting Service order.
Service order is associated with Project, that's why when you post Service order lines (say of type Hour) the corresponding Project journals (of type Hour for Hour-based Service order lines) will be created and posted which will bring corresponding labor consuption from Service order to Project.
Please note that Service management module also allows you to record and track time spent on Service order in order to ensure appropriate SLA (Service Level Agreement) level for the customer. For time recording I'd need a Service Level Agreement associated with Service order which is not the case with Service order I used in Part 1
Service order
So for this Service order I'll simply proceed with Service order lines posting to update a corresponding Project. For these purposes I'll first sign off Service order line in preparation for posting
Service order - Lines
Because I signed off a single Service order line the entire Service order is signed off too now. At this point I can post Service order line by pressing Post service order line button
Service order – Lines (Posting)
On the prompt I'll select which transaction types I want to include (I'll definitely need Hour transactions) and potentially date ranges and other criteria
Post service orders
When I successfully post Service order lines I'll see the following infolog
At this point if we look at the corresponding Project we'll see appropriate Hour journal created and posted recording labor consumption
Hour journal
Hour journal – Lines
Good, but let's come back to the SLA discussion now and What if I want to track time in accordance with SLA
For these purposes you will need to set up SLAs themselves first
Service level agreements
Then you can associate SLA to Service agreement
Service agreement
And when you create a new Service order based on Service agreement SLA settings will be propagated to the level of Service order automatically
Service order
Please note that buttons in Service level agreement group on Service order tab became available. Time recording has already been started when I created Service order, you can see it if you go to Time recording screen 
Time recording (Started)
You may decide to stop time recording and start it again if necessary. In my case I'm going to Stop time recording now
Stop SLA time recording
As the result Service level agreement Status changes to Stopped on Service order
Service order – Service level agreement 
The fact that we've stopped time recording is also reflected on Time recording screen now
Time recording (Stopped)
As you can see in Service management scenario you can manually record labor consumption against the Project and use SLA time recording, but it is not a supported Manufacturing execution scenario
Summary: This document illustrated Microsoft Dynamics AX 2012 cross-functional Manufacturing execution scenarios. In this walkthrough I explained how to execute on Production order jobs, Projects and Project activities using MES capabilities on Microsoft Dynamics AX 2012. At the end I also highlighted the differences between standard Manufacturing execution scenarios and SLA time recording available for Service orders. 
Tags: Microsoft Dynamics AX 2012, Manufacturing Execution, MES, Terminals, Production control, Production order, Project management and accounting, Project, Service management, Operations Scheduling, Job Scheduling, Resources, Resource groups, Microsoft Dynamics AX Production Floor Windows 8 App.
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. Alex, this is a great post. So very thorough, as yours always are. I recently installed AX2012 R3 CU10 (updating from AX2012 R3) and I find that the shop floor behaves differently. Do you know how the process was changed in recent updates? For us, jobs are changing to completed even when stopped is selected, which doesn't seem quite right.

    Any information you have is appreciated!

  2. Alex, is it possible to use machine resource in primary operation in the production route in SFC module? My case: there are two operations in the route - primary (machine resource assigned) and secondary (human resource assigned). In Job execution form I make that human is an assistant of machine resource. Than I report for primary operation (with machine resource). As a result system allocate time between two operations. For example, we have 10 minutes - system allocate 5 minutes to machine resource and 5 minutes to human.
    My question - is it possible to setup system that 10 minutes will be both for machine and human resource in this case?
    Or SFC works only with human resources?