Saturday, February 22, 2014

AX 2012 R2 CU7 - Pallet Transports -[Part II - Input]

Hi Friends,
This is the second post in continuation to my previous post here on pallet transport in Microsoft Dynamics AX. In the previous post we saw the setup required for using pallets in Microsoft Dynamics AX. In this post I will show how we can create input pallet transports to receive items in warehouse.
Inbound pallet transports are created during receiving of goods so that pallets can be put away inside the warehouse location from an Inbound location (dock/gate).

I created a new item in system and assigned storage dimension having pallets enabled

Define the warehouse item setup, note the default receipt location as this will be used later in the discussion:


And then define the pallet setup on the item, so we have defined that we store 10 qty of item on 1 pallet:

Now we are all set to create the purchase order for this item, so I created a purchase order for 50 qty as shown below:



Notice that the default location in the purchase order line "In_01" is coming from the warehouse setup defined for the item.
Next we go to item arrival overview form from Inventory and warehouse management > Periodic >> Arrival overview and select the purchase order which we need to start receiving, click on the start arrival checkbox and then start arrival button.



This will create an item arrival journal in the system
Go to item arrival overview from the menu button "Journal" > Show arrivals from line

This will open the item arrival journal, you will notice that system has automatically created 5 lines as we are storing 10 qty on 1 pallet and we have started the arrival for 50 qty so we need 5 pallets to receive the goods:


Now we need to generate new pallet ID and assign it to each line, to do this go to functions --> pallets as shown below:

 

This will generate a pallet Id only for the selected line, you needs to repeat this for each line. Once you do this, you will see that each arrival journal line has a unique pallet ID.



Now go to general tab of each line and make sure the check box to create pallet transport is enabled and enable the locations where system needs to check for the put away location as shown below:


Once this is done, post the journal. During posting system will create 5 separate inbound pallet transports, one for each pallet and each transport has a unique Transport ID.
To view the pallet transports go to Inventory and warehouse management > common > pallet transports



I would like to add a pinch of technical flavour here, pallet transports are stored in WMSTransport table which has a unique index on Transport ID.


Pallet transport lines are stored in WMSOrderTrans table and this table is related with WmsTransport table, the RouteID in WMSOrderTrans is the TransportID in the WMSTransportTable



 During the posting of the arrival journal system check the condition to create a pallet transport in the class WMSJournalCheckPostReceiption\postTrans method.


If you look at the Inventory transactions at this point the goods are shown at the destination location in status arrived, this is to allow issues to reserve order the goods, see the highlighted green explanation above:



Note the pickup locations for all the pallet transports are same as they arrived at inbound dock 01 and destination location is different which is based on put away logic used by system to determine the destination location during the posting process.

To start the pallet transport select it and click on start transport , this will open a pop up a dialog  where we can enter the forklift and the driver to whom this is assigned:


Once the transport is started the "Complete transport" button gets enabled and the transport can be complete by clicking it, we can select multiple started pallet transports and complete them.


Now I complete all the pallet transports. Now if we look at On hand of the item, notice that items are now physically available in the warehouse:


Let's look at the inventory transactions at this point, notice that goods have been registered



Now we can move ahead with the purchase order postings and post the receipt list, product receipt and Invoice of the purchase order. When we post product receipt, inventory transactions will have status as Received and once we post invoice, done the goods shown as purchased in the inventory transactions:


So we saw in this post how we can create inbound pallet transports to receiving the goods in a warehouse in Microsoft Dynamics AX2012 R2.

Stay tuned...more to come.

Saturday, February 15, 2014

AX2012 R2 CU7 - Pallet Transports [Part I - Setup]

Hi Friends,
I am starting a  blog post series on Pallet Transports in AX and will be covering it in around five posts.
In this first post I'll try to explain basics of pallet transports and setup required in AX, followed by blogs on how to setup the system for creating inbound, refill, outbound and relocation pallet transports.
I will be using AX2012 R2 CU7 during the process. The information is based on my understanding and in case you want to correct me please push your comments, they are welcome.
PS: Warehousing scenarios can vary from simple to very complex, and I will be using very simple scenarios as the main goal is to make sure we understand the way pallet transports work in AX and not how to handle the real time complex scenarios.
So let's start with some basic terms:
Pallet: A device to store, transport materials smoothly inside a warehouse. It can be of different sizes, specifications according to international shipping standards. To get a basic understanding see below an image of a simple pallet, pictures speak louder than words:


Pallet transport : It is moving a pallet from one warehouse location to another warehouse location.
Mostly pallets are transported by using forklift machines. A typical forklift machine carrying a pallet looks as shown below:
Pallet transports in AX are classified based on the location type between which they are moved:
1. Input pallet transports: Moving pallet from an Inbound dock to a buffer/picking location.
2. Refill pallet transports: Moving pallet from a buffer location to picking location.
3. Outbound pallet transport: Moving pallet from a buffer location to an outbound dock
4. Relocation pallet transport: Moving pallet from one location to another location for example from one bulk location to another bulk location.

I try to depict the various types of pallet transports in below diagram:



Now let me share some setup required in AX to use Pallets and pallet transports:

The first setup is to enable configuration key of pallets in warehouse management II, if pallets are not enabled here then you will not be able to see any pallet functionality in the system. To do this you can go to System Administration >>Setup>> License>> License configuration


Next you need to configure the item which you want to store on a pallet. As the meaning of pallet is clear now, we agree that it should be a storage dimension as it defines they way we store an item. So the storage dimension group used on the item should have "Pallets" enabled on it as shown below:


Then you need to  setup pallet types and pallet groups from Inventory and warehouse management >> Setup>>Inventory equipment [Remember if the configuration key of pallets is turned off then you will not be able to see these menu items]







Now you need to define how much qty of your item can be stored on 1 pallet and what pallet type is used to store it, you can define these fields on released product>> Manage Inventory fast tab>>Handling group as shown below




Make sure warehouse is configured with locations and item warehouse setup is defined on the item.
Once this is defined you are all set to use your item on pallets and we are all set to start exploring the pallet transports in my next blog post.

Monday, December 9, 2013

Opening form from infolog "show" button with a specific record

Hi Friends,
Another small line of code, good to keep handy.
We can use info log to open a form with a specific record. You can use this while developing any custom process which create new orders in system, it does not adds any business value but definitely increases the quality and user experience.
See below the sample of how we can do this:


This can help users to open the newly created order quickly without jumping between modules and forms.
This also happens in standard AX at some places. A good example is when we create purchase orders from item requirements for a project.
 

Saturday, November 30, 2013

Picking setup in Microsoft Dynamics AX

Hi Friends,
In this post I want to highlight how Microsoft Dynamics AX determines the picking method for an order line by taking the example of sales line. This setup is important for companies having major focus on supply chain.

When posting picking list of a sales order, you can view the type of picking determined by the system for a sales line on the lines details tab on the post picking list form as shown below:


If the check box is not checked then system processes the line as an order picking.
User can change the value by checking/unchecking the check box before posting which is a great example of flexibility provided by Microsoft Dynamics AX.

So now let us see how system determines the picking method for a line. The setup can be done on three places, the sequence in which system checks is as following:

1. First place where system checks the picking method is the "Use consolidated picking method" field on the warehouse item setup defined for the item:


 
If the value defined here is "Yes" then system considers the line for consolidated picking. If the value is "No" then system considers the line for order picking. If the value defined is "According to warehouse setup" then system continues to check the second level of setup.

2. If the setup on warehouse items is "According to warehouse setup" then system checks the picking method defined on warehouse used in sales line:


If the value defined here is "Yes" then system considers the line for consolidated picking. If the value is "No" then system considers the line for order picking.If the value defined is "According to model group" then system continues to check the third level of setup.

3. If the picking method defined on warehouse of "According to model group" then system checks the value of field "Consolidated picking method" on the model group defined on item:




The code to read the above setup can be found at useWMSOrder() method written on salesLine table. See below the sequence of methods called to determine the picking method.
The code really simple to read and a good example where reading code is easier then jumping on different forms to understand the setup :)



An example of this method call is on initFromSalesLine method when creating the salesParmLine as shown below:




Thanks for reading the blog. Keep sharing and take care.

Monday, November 25, 2013

AX2012 : CIL generation error : The given key was not present in the dictionary.

Recently I faced this error when generating incremental IL
"CIL generation: The given key was not present in the dictionary."

The quick way to fix this is to check the CIL log file, generally located at "C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\bin\XppIL\Dynamics.Ax.Application.dll.log"

Here you will find the AOT object for which the CIL generator found the error. Compile that object, fix the error and then regenerate the IL.

Before generating IL it is good practise to make sure that there are no compilation errors in the code.
 

Friday, November 22, 2013

AX2012:Restore or (Ctrl + F5) command on forms using X++ code

Hi Friends,
This is a simple tip but good to keep the information handy.
When the records displayed on the form are updated by some other process we get an error "The values displayed in the form are not current, so an update or deletion cannot be made. To view the current values, on the Command menu, click Restore or press CTRL+F5".

In one of my recent projects, there was a situation when I wanted execute ctrl+ F5 command from code. I looked into the task macro but this command was not defined there so the challenge was to find the task id for this command so that I can pass it in element.task() method.

In order to get this task ID, I override the task method on the form and enabled debugger, opened the form and pressed ctrl + F5. The method was called and I got the task ID as 2839.

So in order to execute ctrl+F5 just call element.task(2839) and the record values will be restored.

You can also find task ID of other commands using this approach.

Thanks for reading the blog.
Keep sharing.

Tuesday, November 5, 2013

AX2012 R2 CU7 released - Summary of few technical enhancements

Microsoft  announced the release of Cumulative Update (CU) 7 for Microsoft Dynamics AX2012 R2 on 1st Nov 2013.The update can be downloaded from here

While we are waiting for complete details to be out on partnersouce, we can still find out many good details on technet. The what's new link for modules, features and country specific regions on technet is here.

Below are some major technical enhancements I came across on digging technet:

  • AxBuild.exe utility program to accomplish a full X++ compile to p-code on AOS. This is much faster then the client compile. This utility start several temporary instances of the AOS and tells each AOS which piece of X++ compile to accomplish. It then consolidates results from each AOS and reports them to log files.  According to Microsoft tests this is 13 times faster than the normal client compile. Isn't this cool. It is good to see new tool to save time for partners/customers in the most time consuming technical maintenance activity. More details can be found on technet article here 
  • Backup and Recovery : With the release of CU7, Microsoft Dynamics AX2012 R2 now includes a Volume Shadow Copy Service (VSS) writer which integrates with windows VSS framework. This will be an interesting area to explore. More technical details can be found here.
  • Data export/import framework is now shipped as a part of standard Microsoft Dynamics AX instead as an add-on. A whole new set of entities are added to the portfolio. 
  • Office add ins improved performance and new feature which can be found here
  • Reporting : Cool new features to enhance working experience like new methods to set advance printer properties, power shell command to integrate multiple report server instances, new classes to improve performance on report server. More details can be found here

There is a whole new set of things to explore in Microsoft Dynamics AX, keep exploring and keep sharing.