Master planning in Manufacturing

I just got my copy of the new Scott Hamilton book! Look at how happy I am!

It is an in-depth master piece that covers all the functionality from the basics to the advanced. Organized and written in a way that everyone with basic knowledge of the subject matter and ERP can digest it. It covers all the different type of manufacturing scenarios (Discrete, Project, Process and Lean) and has a great deal of case studies that are informative and might even solve many of your known and unknown issues.

This is the go-to book for any company that is using Master planning functionality. If you’re a customer, user or partner of Dynamics AX2012 or Dynamics 365 for Operations, then you should go get this book ASAP. You’ll probably save the cost after the second chapter (As the first is the introduction)…

It will deepen the understanding of the features for people that are already up and running on the system as well as work as a reference guide. And it is a great companion and a must-read to people doing an implementation or want to simply learn the solution.

Go get your copy either physical or electronically now!

Also read some of Scotts latest posts on for more info:

Time and attendance Terminal auto start

As there are many time and attendance solutions that have specialized terminal equipment available, the Dynamics AX solutions might seem like a step back in user friendliness. A way to improve the experience for end users is to launch the terminal window directly when the terminal is turned on, so they don’t need to launch the window separately.

Dynamics 365 for Operations

For Dynamics 365 for Operations it is easy to just launch the URL with the right attributes in the browser to full screen. Use either mi=JmgRegistrationJobQueue for the job card terminal or mi=JmgRegistrationTouch for the job card device and add &limitednav=true on the end to restrict navigation access.
Go to the terminal setup (Production control > Setup > Manufacturing Execution > Configure job card Terminal or Configure job card for Devices) and add the user to log in directly. On the terminal you can turn off the “prompt for production area” to further limit the interaction.
Put the shortcut in the windows “Start up” folder. An example of the shortcut could be:

chrome.exe --start-fullscreen --app=https://[yourURL]/&cmp=[Company]&mi=JmgRegistrationTouch&limitednav=true

Dynamics AX 2012

When it comes to AX 2012 you can do this by using the .axc files in combination with an XML file to launch directly to the terminal window. I have even been able to do this in a Citrix environment.

Just use the ax32.exe startupCmd command and prompt an XML. Read Janet Blakes bloggpost to do this.

E-mail invoices with a smarter dynamic Print management setup

Setting up the Print management for sending documents by e-mail is a very manual process in most implementations I’ve seen. It takes a user quite a lot of steps to set up a the system for sending documents on e-mail and getting it wrong has grave consequences (It actually stops your sending the invoice process, while still having the invoice posted!). I’ve dove down in to some data and found a smart way to dynamically set this up so that you only have to tag a e-mail address on the customer with a role and you’re done. This will also work with other documents like packing slip or customer statement and should eliminate the setup issue.

Let me show you how to do it!

Step 1: Set up a new contact purpose for the document.

You could use the default ones, but in my experience you should differentiate pr. document type.
Go to: Organization administration > Setup > Global address book > Address and contact information purpose

Add a new type and tick both Contact information and Postal address check boxes.


Step 2: Set up the Print Management

So selecting what customers should receive require you to specifically trigger the customer either by filtering by a parameter or setting it up by hardcoding the customer level print management setup. My idea is to dive down to see if the customer has a contact e-mail that is tagged with the “Invoice” role (Step 1) and trigger based on that.

To set up general print management settings, go to:
Accounts receivable > Setup > Forms > Form setup | Print Management

Create a new print setup

Click the original node and setup the default printer settings and then add a new node on the original node.


Give the node a name (Like “E-mail”) and set up a condition for the query/filter. When the filter is true the invoice follows this setup. If not it will default back to “Original” setting.


The query needs to be extended to get the required data available. You extend the query by right clicking the node and select a 1:n or n:1 relations.


  1. n:1 > Customer
  2. n:1 > Global address book
  3. 1:n > Party location relationship
  4. 1:n > Locations
  5. 1:n > Communication details
  6. 1:n > Contact information and role relationship
  7. n:1 > Roles

That should give you a query like this.


Then add the “Roles” table, “Type” field and select the desired Criteria (Like “Invoice”). Click OK to close the criteria dialogue.

Setup the print to e-mail

Now set up the printing settings by selecting the arrow at the end of the “Destination” and select “Printer setup”.


Notice that you can add a preferred footer for the invoice.

Select “E-mail” in the left column. Then on the “To” line select the “Edit” and in the Customer purpose field select the role you created in Step 1 (Like “Invoice”).


Now add a subject and select the desired format (I prefer PDF).

Click OK on the Print destination setting and close the Print management form.

Step 3: Setting up a customer

This is the final step and the only one you need to repeat when you now want to add a new customer to be emailed the invoices.

Create a new email address or use an existing one on a customer.


Now select the “More options” menu and select “Advanced”.

einvoice_email2Select the “Invoice” role (or another if you created a different one in step 1) on the “Purpose” drop down. You can even have multiple roles selected if you want, so if you do a multiple setup with different documents you can add multiple roles/documents to one e-mail address.


Setup is done!

So now all you have to do is to remember to tick the “Use print management destination” check box when posting an invoice and all customers with this role on an email will get an email instead of going to print.


Oh… You’re welcome!



Error: “Could not find the first and last job information for the next operation.”


This error message with label ID: @SYS134518 can be found in the WrkCtrScheduler.loadRoute method. It basically means that it could not run the planning due to an issue with the route map.

I received this error due to a missing route group on a route. This was due to bad data that was imported and would not have happened if routes where created in the application directly.

The tricky thing was that this might pop up when trying to plan an item with a large BOM structure. Somewhere in this structure lies a route that is not configured properly. But which one is it?! That would be nice to have in the error message right? So let’s fix it!

Put this code:

if(_order.tableId == tableNum("ReqTrans"))
    info(strFmt("Item Number: %1 in RouteID: %2 on Operation: %3", ReqTrans::findrecId(_order.recId).ItemId, reqTrans::findRecId(_order.recId).ItemRouteId, routeMap.oprNum));
    info("Error not related to a reqTrans");

above the line:

throw error("@SYS134518");

This will then read the item, route and previous operation to the issue and you can easily mitigate it.



Revise your AX strategy now

The new AX version (AX 7) is getting close to release and most of the cards are on the table. There are some changes, so if you are on AX 2012 or earlier versions there are some things you should take in to account right now to not go down or continue down a path of now return. So here are some coarse changes I suggest you take in to account.

Role centers and Business intelligence

Enterprise Portal
The role center is deprecated.
The Role center is deprecated and Work spaces are introduced as a replacement. Work spaces are high level forms tailored to a specific task like Production floor management, Budget planning, Customer invoicing and so forth.
If you’ve done work on your role centers, you should pivot your focus to Power BI. You should still be able to use your SSRS reports in the new Work centers, but they are vastly inferiour to the powerfull Power BI.
I’m not saying you should stop working on BI, but just take a look at the solution that will give you greater ROI later on.

Enterprise Portal or other web portal solutions


Most of Enterprise portal is deprecated in AX7. The good thing is that Microsoft is throwing it in the trash, but I do not know of any alternative to Customer Portal or Vendor Portal yet. I will be surprised if something isn’t brewing in the R&D team to replace this as well. We’re on a web platform already, so it shouldn’t be too far fetched to imagine a solution. When it comes it will be awesome and in tune with the default development of the rest of AX.
Employee self services has an alternative that is much better in the Employee self service Work space.
If you’re thinking of implementing the AX Enterprise Portal or further enhancing it, I would suggest you wait until the replacement solution known before you do more work. Of cause if it gives you great benefit in a short term then go ahead, but just don’t expect to get future value for your investments in that area.
If you have plans or have already created a separate web portal solution for customer or vendor interaction. I would also suggest waiting before taking on a greater project before the solution in AX is revealed.


This is a pretty much an echo by everyone associated with Microsoft is saying, but here goes. Planning on scaling up your servers any time soon? Even if you’re doing minor hardware upgrade, you should strongly consider Azure. Through Life cycle services you can prevision servers that can reduce your infrastructure installation by weeks.

Need an on-premise solution? Take a look at Azure Stack. If that is over-kill, then you can use a hybrid cloud solution with your old equipment.

Bottom line is that if you start moving to the cloud today, you will be better prepared when upgrading to AX7.

System environment setup for AX 2012

The setup for Microsoft Dynamics AX 4.0 and AX 2009 as well Axapta 3.0 (I haven’t worked with older versions) was pretty straight forward when it came to the configuration and number of environments. You had a Live environment, a Test environment and in most cases also a Development environment. You could easily make a copy of a company in any of the environments to get a place to try out transactions and that worked well. (You might have to add an separate test environment for AX 2009 if you where using the Enterprise Portal development.)


With the introduction of AX 2012 there was a lot of changes and most of us where caught of guard. There was good reasons for the changes, but the consequences of did take some experience to actually get right.

Issue #1: Company copy function was gone

Because of the global data and organization hierarchy features you couldn’t just copy a company. The feature to copy a company (legal entity) was deprecated. You would have to have a totally different environment to do that, so in the beginning we did training and process testing in the Test environment.

Oh “Duplicate”…. How you are missed!


The challenges this brought was that you might have features for testing in this environment and the results might affect your training or process testing.

The result was that a new environment had to be introduced: A dedicated training environment that was identical to your Live environment.

Issue #2: CIL compiling and code management

This isn’t my area of expertise, but it is clear that the concept of CIL execution, that was new to AX 2012, have changed the way we work with the AX code.

Don’t be in denial, if you want to CIL compile. No errors allowed!


The AX 2012 code has to be TOTALY free for errors if you want to make a full CIL compilation, and you have to be certain that your code is the CIL runs before you move code to your Live environment.
You don’t want to move code to the Live environment and do a CIL compile without knowing if it works. As you might have multiple changes going on at the same time you would need a separate place to do the CIL compile.

The result was that a new environment had to be introduced: A dedicated environment where code could be compiled and tested before moved to the Live environment.

The new environment layout

Model = Entire model store


No development, no untested code, no compiling (Unless… you meet an error that requires it). Receives code through copying the model store from the Staging environment at planned intervals.
If your business is very lokalized, like a manufacturing company with one site location, I would recommend an on-prem solution, but Azure is also a good alternative.

Code is copied in parallell with Live. Receives data through DMF or by routinely copying the Live transaction database. Super users and end users use this environment if needed.
Put it in Azure.

Code is imported when approved from Test and is compiled, CIL compiled and retested. Data is routinely (at request/if needed) copied form the Live transaction database. You can have multiple updates to the staging environment before a copy to Live is done.
Put it in Azure.

New code imported from development and features are tested and tried out by the super users and admins. Transactional data is copied from Live when needed.
Put it in Azure.

You can either have a common development environment or multiple environments based of the same codebase. Data is rarely, but if absolutely needed copied from the Live transactional database.
Put it in Azure.

Would love some input on this if you’ve got some, so please comment with input if you’ve got any. Thanks!

Time and Attendance (Part 28/31): Supervisor options

The idea behind the supervisor option is that the shop floor supervisor shouldn’t have to retreat to their office to do the most frequent tasks. This includes reprioritize work, control worker attendance, report absence and change feedback as well as report on manufacturing execution tasks themselves.

When authenticating on the time and attendance registration form, the supervisor will be prompted with a supervisor dialogue where they can quickly jump to the desired task.


The supervisor can change between different resource, groups and production units to do Job registrations.

Change Feedback

The “Change feedback” option gives an overview for feedback from the selected resources.


You can select multiple records and click the “Update Feedback” button. This launches the feedback wizard form which I normally don’t use because you can not access the picking list. This is a simple way to perform feedback.


After the supervisor has updated the feedback and clicks “Finish” the journals and jobb is updated.

This is a great feature as it allows the supervisor to reactivate jobs that has been reported as completed, but should have been reported as stopped. Earlier this gave a lot of headache because you would have to go into the AOT to fix it or create a job that could do this for you.


The supervisor can quickly access the Attendance form (which you also can do from the terminal directly) from the supervisor options to report absence or check the worker attendance.

After selecting a calculation group,


the supervisor will see the attendance overview.


Here the supervisor can print the attendance form, clock out a selection of workers or register attendance directly.

Clicking on register attendance for a worker the supervisor is presented with a absence registration form with a start/end date and time based on the planned work profile and can input an absence code.


This is done without even leaving the shop floor. When the forman is going to calculate the absence registered will be used and he/she won’t be bothered with roaming the workforce to find out who knows why anyone wasn’t clocked in that day.

Edit job list

“Editing job list” is used to reprioritize the sorting of the jobs on the terminal for the resource.


Selecting a job the supervisor can move it up, down or to a specific sequence number. It is also possible to move the work to another resource as long as it is within the route operations requirements.

Making the job High priority will force the resource to work on this job next. It will be the only job that the resource can start working on and will be notified if he/she tries to start another job.

There are also a lot of other information like capacity overviews, materials and general information about the production order and/or job.


To activate this feature for the terminal user. Go to Human Resources > Common > Workers > Workers | Employment > Time Registration > Supervisor Option and check the box.


Have fun!



“Number sequence ” does not exist”

You might see this message when posting in manufacturing execution, but where do we start looking?

Well often it is due to some issue with number sequences on the journals, but I don’t know why this happens.

What I normally do is try to figure out what type of journal it is trying to post and renew or change the journals voucher series (Number sequence).

Go to Production Control > Setup > Production Journal Names and you’ll find the number sequence referred to there.


Good luck and if you’re looking for more on Time and Attendance or Manufacturing Execution. Check out my Time and Attendance guide.