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.
 
Scenario
 
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
 
Worker
 
 
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
 
Service
 
 
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
 
Operations
 
 
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
 
Ports
 
 
The connection details for the app may look like this
 
Connection details:
 
Server address
http://ax2012r3-demo.cloudapp.net/MicrosoftDynamicsAXAif60/SFC/xppservice.svc
User
Admin
Password
Password
 
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
 
 
Jobs
 
 
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
 
Infolog
 
 
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
 
Infolog
 
 
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
 
Infolog
 
 
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
 
Resource
 
 
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
 
Project
 
 
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
 
Resource
 
 
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
 
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