Thursday, May 29, 2014

AX2012 : SSRS error - Request failed with HTTP status 401

Hi Friends,
Want to share this scenario:
I started getting this error message when running SSRS report in one of the environment and I was bit surprised that why suddenly I face this error although I was able to run the reports properly 5 minutes back:
 
 
As I was attached to system administer role so I was pretty sure that it was not a security permission issue inside AX. Google search resulting in several links and one of them suggested to log off from the windows and log back in.
On doing that system prompted me that my domain password has expired and must be changed. So I changed the password and then when I ran the report in AX again it executed successfully.
 So in this case, the domain password was expired which resulted in SSSR report execution error.
This might not be a sure shot solution but it worked for me.In case you have also faces similar issue then please do comment on the resolution you found for this.
 
Have a good day.
 
 
 

Thursday, April 17, 2014

AX2012 R2 CU7 - Pallet transports -[Part V - Relocation]

Hi Friends,
In this last part of my pallet transport series in continuation to my previous posts here . I will show how we can create relocation pallet transport in Microsoft Dynamics AX 2012 R2 CU7. These are created to move pallets inside a warehouse from one bulk location to another bulk/picking location. This could be for any reason like any maintenance activity to be carried inside a warehouse or to make some space in warehouse and move goods to another location.

So for illustration let's see on hand on my test item in the system, notice goods are at bulk location for pallet 00000638_114.
Now in order to create a relocation transport, we can right click on the pallet ID and go to Pallet form



 Now go to Functions --> Move Pallet



This will open the move pallet dialog where user needs to select the toLocation where this pallet needs to be moved to.


The list of locations shown in To-Location are based on the logic which can be found in the method findFreeLocations() in table TmpWMSLocation table. It Is based on the location where the pallet is currently available:




Click OK system creates a relocation transport which can be viewed from the pallet transport handling button






 We can now go to pallet transport handling form and follow the normal process of starting the pallet transport and complete it.



Once we complete it, see the on hand of the item and we can see that goods have been moved to another bulk location.



The class used in the above process is WmsPalletMove and the code to create the relocation pallet transport can be found in method createRelocationTransportOnServer().



This was the last blog post in the pallet transports blog series. I hope this will be of help the readers to to understand the basics of pallet transports in Microsoft Dynamics AX 2012 R2 CU7 and it's previous versions.With the upcoming AX2012 R3 release the community is excited to see the new functionalities in the AX WMS portfolio and probably some features are getting changed in this area too.
Till my next blog,....take care and keep sharing :).

Sunday, April 6, 2014

AX2012 R2 CU7 - Pallet transports -[Part IV - Outbound]

Hi Friends,
In continuation to my blog post series on pallet transports, this is the fourth post ,the previous posts can be found at these links (Part IPart II and Part III ).
In this post I'll be talking about the setup required to create outbound pallet transport in Microsoft Dynamics AX2012 R2 CU7.
An outbound pallet transport is created during shipment reservation and is controlled by the shipment reservation combination for the method Output transport - all bulk locations.
As the name suggest, when goods are lying in bulk locations and shipment reservation combination is running the rule - "output transport - all bulk location", outbound pallet transports are created. The rule means that if goods are lying in bulk locations then create the outbound pallet transport to move them to outbound dock. If there are no goods lying in bulk locations then system will try to reserve based on the rule with next priority and if there is no rule then reservation will fail.

So let;s walk-through this in a standard AX2012 R2 CU7 environment, I have on hand of the item no  "000139_202" in the bulk locations as shown below:




My shipment template is using shipment reservation sequence which uses a shipment reservation combination having Output transport - all bulk locations at highest priority configured in it;s line as shown below:


So now I create a sales order and then an output order which in turn create the shipment of the sales line.Notice the inventory transaction at this point


Now let's run the shipment reservation, at this point system checks the availability of goods at bulk location and as they are available system creates a output transport from bulk location to the outbound dock. Also interesting to see the inventory transactions at this point


We can look at the pallet transport from shipment inquiry >> Pallet transport option.


Now we can activate the  transport and then we can view it on the pallet transports form

Let's complete the pallet transport and then see the inventory transactions of the shipment lines. You will notice that the status is updated to "Picked"


Also interesting to note that system did not created any picking list or picking route in this case as this task has been accomplished by the pallet transport itself.
Technically the magic happens in WMSReservationEngine class which initialize the object of WmsReservation class based on the Reservation method, see below in this case the class created is WMSRreserve_Output


There is lot more to explore and find the hidden jewels of AX in these classes.The method to trigger the creation of output pallet transport is called in reserve()  as shown below:


So we saw in this post how we can configure shipment reservation combination to create outbound pallet transports.

Thanks for reading the blog, keep sharing.

Thursday, March 13, 2014

AX2012 : Removal of suspension of recId allocation for table VendInvoiceInfoTable has failed.

Hi Friends,
Recently working on one environment on AX2012 FP CU4 I got the below error on posting purchase order invoice and the following steps helped to fix the error:
  1. Generate Full CIL
  2. Stop AOS
  3. Delete *.auc files
  4. Start AOS
Before running full CIL, I also tried with generating incremental IL, but that did not helped.























This might not be a sure shot solution but it worked for me.

Keep sharing!!!

Saturday, March 1, 2014

AX2012 R2 CU7 - Pallet transports -[Part III - Refill]

Hi Friends,
My previous two posts on pallet transports were about Setup and Inbound pallet transports, in this post let's have a look on refill pallet transports.
Refill's are required in warehouse to refill goods at picking locations. Normally the picking locations are refilled from buffer location.

Let's see setup required in system to generate automatic refill pallet transport:
1. Shipment reservation combination: Shipment reservation combination are defined on shipment template. This sequence is used to reserve goods for the shipment. Refill can be turned on only for item picking location sequence as shown below



2. Automatic creation and activation of refill transports can be defined in store areas.



Refills can also be created manually for a picking location from inventory locations form and then functions > Create refill as shown below, this option is only available for picking locations.



So let us walk through the first automatic scenario to create refill pallet transport using shipment reservation sequence.
First let's look at the setup and the current system situation. The current warehouse item setup for the item I will be using is as shown below


Note the item picking location is 01-01-01-1



The default issue location is 01-01-02-1 which is a bulk location



Now let us see the on hand of the item

Notice that all the goods are placed in the bulk location of my warehouse, see below all the locations where goods are currently stored are bulk locations


To keep it simple, I have defined the shipment reservation sequence to look only for item picking locations and have turned on the refill parameter as shown below:
So now we are all set to run the show, let's create a new sales order for this item

Notice the default location in SO line is coming from the warehouse items, let's take a look at inventory transaction at this point

Let's manually reserve the goods against the stock lying in bulk location, I am doing this to also show the reservation changes when we reserve the shipment

Let's move ahead and create an output order, this will create the shipment for the sales line, see below when the shipment is created it maintained the reservation done on sales line but the shipment status is still registered and it is not reserved


Now let's run the shipment reservation , the magic happens at this time, system will try to reserve the goods at the item picking location but as we know there is no on hand at item picking location and we have turned on the Refill parameter, so system will still reserve the goods at the item picking location and will also create a refill pallet transport from the bulk location to the item picking location, see below when we run the shipment reservation


Notice that the shipment status is registered but the reserved check box is turned on.
The reservation has changed to the item picking location and the status is Reserved ordered

At this point if you open the pallet transport screen you will see that system has created a refill pallet transport from the bulk location to picking location


Before proceeding further with the pallet transport,  let's activate the shipment and look at the picking list

Look at the picking route, it shows that goods needs to be picked from the item picking location

At this point if user tried to complete picking list he will get error because the refill is not yet  complete and the goods are still at the bulk location. So let's go to the refill pallet transport and complete it.


Look at the inventory transactions of the pallet transport


 Now let's look at the on hand of the item after completing the refill pallet transport, this shows that the goods have now been moved to the picking location:


Notice that on hand is now available at the picking location, so we are good now the picking location has been refilled form the buffer location and now we can complete the picking list created for the shipment


The shipment status changed to Picked

The inventory transaction is updated to picked from the item picking location

On the sales line the line quantity is shown as picked

The output order is shown as picked


So we walked through the scenario where system automatically created a refill pallet transport using shipment reservation sequence setup.

The other automatic scenario is the automatic creation of refill pallet transports from the store area setup.

When we pick item from a picking location (manually, from picking list or from any other pallet transport) then system automatically creates a refill pallet transport to the picking location if the remaining on hand qty falls below the setup defined in item warehouse location and if the store area of that location is having the automatic activation turned on and there is no other refill pallet transport already en-route to that picking location.

User can also create refills manually, directly from the location form, but this button is enabled only for the locations of type picking. The system uses same algorithm to check and create a refill pallet transport when it creates automatically or manually. Interested readers who want to read the code can check out the \Classes\WMSPickingLocationRefillCheck\checkAndRefill() function to understand more on the logic behind it.

So to summarize, refill pallet transports are created in the following situations:

  • Automatic -> Shipment reservations
  • Automatic -> Completing the picking route 
  • Automatic -> Completing pallet transport
  • Manually -> Refill function from locations form for picking locations.
Have a nice day and stay tuned...

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.