<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="www.w3.org/2005/Atom" xmlns:sy="purl.org/rss/1.0/modules/syndication/" xmlns:dc="purl.org/dc/elements/1.1/" xmlns:content="purl.org/rss/1.0/modules/content/" xmlns:wfw="wellformedweb.org/CommentAPI/" xmlns:slash="purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>David Probst -D365 Finance and Operations/Dynamics AX</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/dpaxfeatures/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/feed.xml</link>
    <description>I will use this blog to go deep into various Microsoft Dynamics 365 Finance and operations (AX) features which I am currently or have worked on</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:08:58 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Setup and test of the Dynamics 365 Finance and Operations, Enterprise Edition Warehouse Management Document routing functionality</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/setup-and-test-of-the-dynamics-365-finance-and-operations-enterprise-edition-warehouse-management-document-routing-functionality</link>
      <pubDate>Fri, 17 Nov 2017 13:21:08 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=1335</guid>
      <description><![CDATA[Document routing has been a sore point with me for a while. I could certainly talk to it, but I...]]></description>
      <content:encoded><![CDATA[Document routing has been a sore point with me for a while. I could certainly talk to it, but I hadn’t set it up. Here is a guide for getting Document routing in the (WHS) Warehouse management module up and running on 365 FOEE – I am assuming the core setup is the same in AX 2012 R3 but I haven’t tested it yet.

So initially we wish to have a ZPL printer on the local machine, and to save a little lets do that by setting up a freeware ZPL emulator. One such can be found here:

<a href="https://chrome.google.com/webstore/detail/zpl-printer/phoidlklenidapnijkabnfdgmadlcmjo">https://chrome.google.com/webstore/detail/zpl-printer/phoidlklenidapnijkabnfdgmadlcmjo</a>

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/118.png"><img width="982" height="623" class="alignnone size-full wp-image-1345" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/118.png" /></a>

It can be a little tricky to get it up and running so here is a quick guide courtesy of akb at experts-exchange:

<em>You need to run the app and leave it open on your screen.</em><em>
Then go into Devices &amp; Printers in Control Panel. Add a printer. Select Add a Local Printer.
Create a new port - Standard TCP/IP.
Use IP 127.0.0.1
Let Windows detect the port and it will eventually return an error.
Select Device Type -&gt; Custom.
Press settings and make sure you have IP Address 127.0.0.1, Protocol RAW and port 9100.
Click OK and Next.
Wait for it to fail to detect driver model.
Select Generic and Generic/Text Only.
Next a few times then Name your printer.</em>

Open Notepad and copy the following lines to Notepad:

^XA
^CF0,36,42
^FO30,40 ^A0,44,50 ^FDTEST^FS
^FO30,100 ^FDBag Number:^FS
^XZ

Now print the Notepad to the new printer you created and you should see a label appear in the ZPL Printer App.

If you have gotten this far then this should appear in your ZPL printer:

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/021.png"><img width="535" height="290" class="alignnone size-full wp-image-1346" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/021.png" /></a>

Secondly we need to add the printer to D365FOEE, there are several guides to this, the end result should be that it is added and ACTIVE!:

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/032.png"><img width="895" height="261" class="alignnone size-full wp-image-1356" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/032.png" /></a>

Now to the normal document routing setup. The layout first create one taking a bit of samle zpl text from somewhere or use the above example. Here I have a layout that I have grapped from <a href="labelary.com/viewer.html">labelary.com/viewer.html</a>

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/041.png"><img width="1319" height="551" class="alignnone size-full wp-image-1365" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/041.png" /></a>

And secondly a document Routing setup. I use a Document against my sales order works and in this case when the Mobile device user is David:

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/05.png"><img width="1140" height="486" class="alignnone size-full wp-image-1375" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/05.png" /></a>

My Sales order work template contains a print step:

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/06.png"><img width="942" height="568" class="alignnone size-full wp-image-1385" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/06.png" /></a>

Now to a sales order and a sales work. Completely standard. Here I am selling one of my favourite items A0001 from warehouse 24:

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/07.png"><img width="1187" height="583" class="alignnone size-full wp-image-1387" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/07.png" /></a>

Off to the warehouse with a release to warehouse and a work has been created with a Print step after the pick line(s):

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/08.png"><img width="1195" height="486" class="alignnone size-full wp-image-1395" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/08.png" /></a>

To pick it using your favourite mobile device (or the windows app):

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/09.png"><img width="831" height="791" class="alignnone size-full wp-image-1396" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/09.png" /></a>

And hooray, on your ZPL printer you should now get the formatted label:

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/103.png"><img width="534" height="725" class="alignnone size-full wp-image-1405" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/103.png" /></a>

This was an example of static text, It would be a little more beneficial with data actually coming from D365FOEE. To do that Microsoft have included a (fixed unfortunately - but see the comments below for extending these fields) number of warehouse related field to add to your document routing layout.

Below is a test template I have created that includes all the codes available:

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/119.png"><img width="1238" height="479" class="alignnone size-full wp-image-1415" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/119.png" /></a>

And here is the ZPL text:

^XA

^CF0,36,42

^FO30,100 ^FDAccount name:$AccountName$^FS

^FO30,140 ^FDAccount number:$AccountNum$^FS

^FO30,180 ^FDBatch number:$InventBatchId$^FS

^FO30,220 ^FDBill of lading ID:$BillOfLadingId$^FS

^FO30,260 ^FDCarrier:$CarrierCode$^FS

^FO30,300 ^FDColor:$InventColorId$^FS

^FO30,340 ^FDConfiguration:$ConfigId$^FS

^FO30,380 ^FDContainer ID:$ContainerId$^FS

^FO30,420 ^FDCustomer requisition:$CustPurchaseOrder$^FS

^FO30,460 ^FDFrom city:$AddressCityFrom$^FS

^FO30,500 ^FDFrom location:$WMSLocationIdFrom$^FS

^FO30,540 ^FDFrom name:$FromName$^FS

^FO30,580 ^FDFrom state:$AddressStateIdFrom$^FS

^FO30,620 ^FDFrom Street:$AddressStreetFrom$^FS

^FO30,660 ^FDFrom ZIP/postal code:$AddressZipCodeIdFrom$^FS

^FO30,700 ^FDFrom zone ID:$ZoneIdFrom$^FS

^FO30,740 ^FDGS1 company prefix:$UCCCompanyPrefix$^FS

^FO30,780 ^FDGTD number:$InventGtdId_RU$^FS

^FO30,820 ^FDInventory profile:$InventProfileId_RU$^FS

^FO30,860 ^FDInventory quantity:$InventQty$^FS

^FO30,900 ^FDInventory unit:$InventUnitId$^FS

^FO30,940 ^FDItem number:$ItemId$^FS

^FO30,980 ^FDLabel format:$LabelFormat$^FS

^FO30,1020 ^FDLabel ID:$LabelId$^FS

^FO30,1060 ^FDLabel report name:$LabelReportName$^FS

^FO30,1100 ^FDLicense plate:$LicensePlateId$^FS

^FO30,1140 ^FDLine number:$LineNum$^FS

^FO30,1180 ^FDOrder number:$OrderNum$^FS

^FO30,1220 ^FDOrdered quantity:$OrderedQty$^FS

^FO30,1260 ^FDOwner:$InventOwnerId_RU$^FS

^FO30,1300 ^FDPacking quantity:$PackingQty$^FS

^FO30,1340 ^FDPrinted date:$PrintedDate$^FS

^FO30,1380 ^FDPro number:$ProNum$^FS

^FO30,1420 ^FDProduct name:$ItemName$^FS

^FO30,1460 ^FDQuantity:$Qty$^FS

^FO30,1500 ^FDRemaining quantity:$RemainingQty$^FS

^FO30,1540 ^FDSerial number:$InventSerialId$^FS

^FO30,1580 ^FDShipment ID:$ShipmentId$^FS

^FO30,1620 ^FDSite:$InventSiteId$^FS

^FO30,1660 ^FDSize:$InventSizeId$^FS

^FO30,1700 ^FDStyle:$InventStyleId$^FS

^FO30,1740 ^FDTo city:$AddressCityTo$^FS

^FO30,1780 ^FDTo location:$WMSLocationIdTo$^FS

^FO30,1820 ^FDTo name:$ToName$^FS

^FO30,1860 ^FDTo state:$AddressStateIdTo$^FS

^FO30,1900 ^FDTo Street:$AddressStreetTo$^FS

^FO30,1940 ^FDTo ZIP/postal code:$AddressZipCodeIdTo$^FS

^FO30,1980 ^FDTo zone ID:$ZoneIdTo$^FS

^FO30,2020 ^FDUnit:$UnitID$^FS

^FO30,2060 ^FDUser ID:$UserId$^FS

^FO30,2100 ^FDWarehouse:$InventLocationId$^FS

^FO30,2140 ^FDWeight:$Weight$^FS

^FO30,2180 ^FDWork center location:$WorkCenterLocationId$^FS

^FO30,2220 ^FDWork ID:$WorkId$^FS

^FO30,2260 ^FDWork order type:$WorkTransType$^FS

^FO30,2300 ^FDWork template:$WorkTemplateCode$^FS

^XZ

&nbsp;

Which will give you a great label to experiment with coming out with a long list of the different field for your setup:

<a href="https://msdnshared.blob.core.windows.net/media/2017/11/123.png"><img width="1105" height="860" class="alignnone size-full wp-image-1425" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/123.png" /></a>

Lastly we are “just” left with making a design for actual consumption – that will have to be left for homework.

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Managing your Microsoft Dynamics AX 2012 business with role center Cues</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/managing-your-microsoft-dynamics-ax-2012-business-with-role-center-cues</link>
      <pubDate>Mon, 13 Nov 2017 15:03:41 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=1185</guid>
      <description><![CDATA[I have been involved with a company for a while that have used the Role center cues to manage both...]]></description>
      <content:encoded><![CDATA[<span style="color: #000000"><span style="font-family: Calibri">I have been involved with a company for a while that have used the Role center cues to manage both the state of the business and manage the different situations that had to be supervised such as entities being </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">stuck</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri"> in a work process. </span></span>

<span style="color: #000000"><span style="font-family: Calibri">In general, I am very much in love with Cues for a fast and efficient business insight tool, requiring no to very little development for gaining a very large variety of business data. That said cues also have some limitations which in my opinion stems from the fact that Cues received one iteration of code and </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">version 2</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri"> has never come around. In the end of this blog I will describe the code enhancements we have done to the cue administration.</span></span>

<span style="color: #000000"><span style="font-family: Calibri">First a quick story on the name. Cues were made for the AX 2009 and I remember that the name </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">Cues</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span></span><span style="font-family: Calibri"><span style="color: #000000"> were discussed quite a bit at Microsoft at the time. The word Cues comes </span><a href="www.dictionary.com/browse/cue"><span>from</span></a></span><span style="color: #000000"><span style="font-family: Calibri"> </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">A hint, intimation, guiding suggestion</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri">, I remember that </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">Cue card</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri"> was used to indicate what it was. If you use picture search engine you may however likely get this kind of result. </span></span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/114.png"><img width="1180" height="408" class="alignnone size-full wp-image-1195" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/114.png" /></a></span></span>

<span style="color: #000000"><span style="font-family: Calibri">Personally, I would appreciate a bit more effort on what to name this concept back then. For non-English users the name will be different. In (my) Danish it is called </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">k</span><span style="margin: 0px;font-family: 'Times New Roman',serif">ø</span><span style="font-family: Calibri">er</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri"> which is not a great word either, directly translated it means </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">Queue</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri"> however </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">K</span><span style="margin: 0px;font-family: 'Times New Roman',serif">ø</span><span style="font-family: Calibri">er</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri"> (also) has a double meaning in Danish:</span></span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/26.png"><img width="666" height="205" class="alignnone size-full wp-image-1196" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/26.png" /></a></span></span>

<span style="font-family: Calibri"><span style="color: #000000">You can read more about the Cues from TechNet both </span><a href="https://technet.microsoft.com/en-us/library/dd362033.aspx"><span>here</span></a><span style="color: #000000"> and </span><a href="https://technet.microsoft.com/en-us/library/hh227402.aspx"><span>here</span></a></span><span style="color: #000000;font-family: Calibri">. </span>
<h2><span style="color: #2e74b5;font-family: Calibri Light;font-size: large">Basic cue creation</span></h2>
<span style="color: #000000;font-family: Calibri">You can create a cue on most forms in AX (also non-list page forms). As long as you can access the advanced filter (Ctrl-F3) save the query you have made as a cue. Here I have for example made a query on open sales order lines that have a unit price of zero</span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/35.png"><img width="1219" height="602" class="alignnone size-full wp-image-1206" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/35.png" /></a></span></span>

<span style="color: #000000;font-family: Calibri">On doing this you are presented with a dialogue that gives you the option to name the new cue and designate who can view this cue and finally if you wish to have an alert on the cue when the number of records in each cue is above or below a certain threshold. </span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/44.png"><img width="441" height="522" class="alignnone size-full wp-image-1215" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/44.png" /></a></span></span>

<span style="color: #000000"><span style="font-family: Calibri">Here I have named my new cue </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">Sales order lines with unit price 0</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri">. I have set the </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">Show alert when count is</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri"> to a personal favorite of mine whenever I make a cue with an outcome that is undesired such as this. With this setting I will get a warning message telling me to react to this cue whenever more than zero sales order lines with a unit of price of zero is found.</span></span>

<span style="color: #000000;font-family: Calibri">On pressing OK the cue is saved and... ok often.. the cue is automatically added to my role center, note the warning that I have more than zero in that cue.</span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/54.png"><img width="892" height="447" class="alignnone size-full wp-image-1225" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/54.png" /></a></span></span>

<span style="color: #000000"><span style="font-family: Calibri">I skipped the </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">Show sum of field</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri">. When I check this, I get a drop down of a subset of values on the table in question. Here I get 7 options:</span></span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/62.png"><img width="437" height="295" class="alignnone size-full wp-image-1235" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/62.png" /></a></span></span>

<span style="color: #000000"><span style="font-family: Calibri">Without knowing it exactly it does seem that the reason for these values and not others are that each of these fields on in this case the sales order line table is that these fields extends the Amount EDT. Using this option is most certainly at the user</span><span style="margin: 0px;font-family: 'Times New Roman',serif">’</span><span style="font-family: Calibri">s own peril because we are directly using values from the table whatever comes out has probably never been intended for user consumption. In the above example I would probably use the LineAmount field although I would be concerned about multicurrency. The result is the following:</span></span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/72.png"><img width="182" height="157" class="alignnone size-full wp-image-1245" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/72.png" /></a></span></span>
<h2><span style="color: #2e74b5;font-family: Calibri Light;font-size: large">Role center personalization</span></h2>
<span style="color: #000000;font-family: Calibri">The role center contains a range of good options. For the sake of this blog I have personalized my role center to have a few more Cue groups. Having more than one cue group is good for using the available space within the role center more efficiently and when you start having many cues within each cue group you will find that it takes longer and longer to load the data within the individual cue group, having more cue groups will make data become available faster:</span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/82.png"><img width="1404" height="823" class="alignnone size-full wp-image-1246" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/82.png" /></a><img width="547" height="321" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg" border="0" /></span></span>

<span style="color: #000000;font-family: Calibri">Role center personalization is the topic of quite a few sites so briefly press the personalization and select Microsoft Dynamics AX and choose the Cues in the Web Parts and then where to add the cue part, in my example to the right column:</span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/92.png"><img width="1116" height="779" class="alignnone size-full wp-image-1255" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/92.png" /></a><img width="587" height="410" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg" border="0" /></span></span>

<span style="color: #000000;font-family: Calibri">Secondly it is very important to add a Cue Group Name to get different sets of Cues in each Cue group:</span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/115.png"><img width="1020" height="697" class="alignnone size-full wp-image-1265" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/115.png" /></a><img width="515" height="352" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg" border="0" /></span></span>

<span style="color: #000000"><span style="font-family: Calibri">The Cue group names comes from the existing Cue Groups created in the AOT &gt;Parts&gt;Cue Groups. I Personally normally pick one that only have a few existing Cues in them to quicker empty it. I had an experience once that adding a cue group made the entire role center freeze. I resolved it by resetting the user</span><span style="margin: 0px;font-family: 'Times New Roman',serif">’</span><span style="font-family: Calibri">s personalization and using a different cue group name. That is a rather unfortunate thing to do if a great many cues have been added to the Cue groups so be careful and perhaps make screenshots of added cues if you are working on an existing role center.</span></span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/122.png"><img width="618" height="497" class="alignnone size-full wp-image-1275" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/122.png" /></a><img width="386" height="310" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg" border="0" /></span></span>

<span style="color: #000000;font-family: Calibri">Advanced Cues </span>

<span style="color: #000000;font-family: Calibri">Now to truly get something meaningful out of Dynamics AX you will need to understand how to build more advanced queries.</span>

<span style="font-family: Calibri"><span style="color: #000000">Make sure you understand the basics of querying: <span> </span></span><a href="https://technet.microsoft.com/en-us/library/aa569937.aspx"><span>https://technet.microsoft.com/en-us/library/aa569937.aspx</span></a></span><span style="color: #000000;font-family: Calibri"> </span>

<span style="font-family: Calibri"><span style="color: #000000">And to add additional tables to the existing query: </span><a href="https://technet.microsoft.com/en-us/library/aa551356.aspx"><span>https://technet.microsoft.com/en-us/library/aa551356.aspx</span></a></span><span style="color: #000000;font-family: Calibri"> </span>

<span style="font-family: Calibri"><span style="color: #000000">I tried to make a blog on the SysQueryRangeUtil methods to use, which you can find here: </span><a href="pingala.eu/en/blogs/dynamic-query-ranges"><span>pingala.eu/en/blogs/dynamic-query-ranges</span></a></span><span style="color: #000000;font-family: Calibri"> </span>

<span style="color: #000000;font-family: Calibri">Building the query can be a pain and will often require the user to enter the AOT to find the relationships and not least what the joining tables are named. For example, if I wanted to make a query on sales order lines that are late and that are reserved physically I would be extending the previously used query with the inventory transaction originator and inventory transaction to get to the Issue status field. </span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/132.png"><img width="1084" height="606" class="alignnone size-full wp-image-1285" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/132.png" /></a><img width="490" height="274" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg" border="0" /></span></span>

<span style="color: #000000;font-family: Calibri">In this example I would probably also have to work with some SQL statements within the query like you can read about here:</span>

<span style="font-family: Calibri"><a href="https://timsaxblog.wordpress.com/2015/07/23/how-to-use-advanced-filter-queries-in-ax-2012/"><span>https://timsaxblog.wordpress.com/2015/07/23/how-to-use-advanced-filter-queries-in-ax-2012/</span></a></span><span style="color: #000000;font-family: Calibri"> </span>

<span style="color: #000000;font-family: Calibri"> </span><span style="color: #2e74b5;font-family: Calibri Light;font-size: large">Managing Cues</span>

<span style="color: #000000;font-family: Calibri">Under Organization administration&gt;Setup&gt;Role center&gt;Enterprise portal you will find the Edit cues form which shows the Cues that have been created within the organization.</span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/141.png"><img width="944" height="499" class="alignnone size-full wp-image-1286" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/141.png" /></a><img width="539" height="285" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg" border="0" /></span></span>

<span style="color: #000000"><span style="font-family: Calibri">It does not provide a great deal of options. I have the option to change the name and the two Cue options plus the visibility. For some reason there have been added a restrict on the ability to delete cues if they are present on a user</span><span style="margin: 0px;font-family: 'Times New Roman',serif">’</span><span style="font-family: Calibri">s role center:</span></span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/151.png"><img width="941" height="384" class="alignnone size-full wp-image-1295" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/151.png" /></a><img width="643" height="262" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image025.jpg" border="0" /></span></span>

<span style="color: #000000;font-family: Calibri">It is possible to get rid of these without having the users to manually removing the cues, but it requires access to the AOT to find the table SysCueGroupMembership and perhaps also SysCuePersonalization. The other option is to have a developer to change the delete action types. </span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/161.png"><img width="1222" height="598" class="alignnone size-full wp-image-1296" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/161.png" /></a><img width="643" height="315" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image027.jpg" border="0" /></span></span>
<h2><span style="color: #2e74b5;font-family: Calibri Light;font-size: large">Improving upon the Cues framework </span></h2>
<span style="color: #000000;font-family: Calibri">For a customer we created an enhancement to the Cue framework. The customers focus was to manage the (very many) cues they had in place. That includes two things: Being able to change the query that underlies the Cue instead of having to recreate the Cue and the ability to manage the Cues a user has on their role center.</span>

<span style="color: #000000;font-family: Calibri">The ability to change a query was added to the Edit cues form:</span>

<span style="color: #000000;font-family: Calibri"> <a href="https://msdnshared.blob.core.windows.net/media/2017/11/171.png"><img width="1006" height="596" class="alignnone size-full wp-image-1305" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/171.png" /></a></span>

<span><span style="color: #000000;font-family: Times New Roman"><img width="445" height="263" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image029.jpg" border="0" /></span></span>

<span style="color: #000000"><span style="font-family: Calibri">Second option is to see the memberships of the individual Cue by pressing the button </span><span style="margin: 0px;font-family: 'Times New Roman',serif">“</span><span style="font-family: Calibri">Manage cue membership</span><span style="margin: 0px;font-family: 'Times New Roman',serif">”</span><span style="font-family: Calibri">:</span></span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/181.png"><img width="905" height="360" class="alignnone size-full wp-image-1306" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/181.png" /></a><img width="492" height="196" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image031.jpg" border="0" /></span></span>

<span style="color: #000000;font-family: Calibri">From here the options are to delete an existing cue membership, meaning to remove a cue from a user. </span>

<span style="color: #000000;font-family: Calibri">The second option is to add the cue to a selected user:</span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/191.png"><img width="750" height="486" class="alignnone size-full wp-image-1315" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/191.png" /></a><img width="464" height="301" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image033.jpg" border="0" /></span></span>

<span style="color: #000000;font-family: Calibri">Cue membership can also be viewed from the user:</span>

<span><span style="color: #000000;font-family: Times New Roman"><a href="https://msdnshared.blob.core.windows.net/media/2017/11/201.png"><img width="1123" height="481" class="alignnone size-full wp-image-1325" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/201.png" /></a><img width="530" height="227" src="/Users/DAVIDP~1/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg" border="0" /></span></span>

<span style="color: #000000;font-family: Calibri">Let me know if you wish to try out this change.</span>

<span style="color: #000000;font-family: Calibri"> </span>]]></content:encoded>
    </item>
    <item>
      <title>Service management activities</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/service-management-activities</link>
      <pubDate>Mon, 02 Jan 2017 14:01:53 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=1035</guid>
      <description><![CDATA[Microsoft released the Service management module with AX 4.0 back in 2006 at the time I was Program...]]></description>
      <content:encoded><![CDATA[Microsoft released the Service management module with AX 4.0 back in 2006 at the time I was Program manager for the area which meant responsible for the design of the module (“good” old waterfall model :-) with hundreds of pages of specifications).

A few years later when I was on another area of AX, Microsoft released the Service management AX certification which I managed to complete with an extremely limited preparation but I was still annoyed that I managed to have quite a few errors within the area of activities. So here is the rough walk through of activity management within AX service management.

First things first – It is always good to know who you also when you work with AX acivities. You define that (In AX) in System administration&gt;Common&gt;Users&gt;Users&gt;[Button]:Relations, So here I figure out that I am Tom Litton:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/Sm1.png"><img width="1038" height="591" class="alignnone size-full wp-image-876" alt="sm1" src="https://msdnshared.blob.core.windows.net/media/2017/01/Sm1.png" /></a>

Go ahead and validate that by going to Home&gt;Common&gt;Activities&gt;My activities which also does a good job of showing a dynamic query based on the current worker:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm2.png"><img width="1262" height="797" class="alignnone size-full wp-image-1045" alt="sm2" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm2.png" /></a>

The Activities in AX originally comes from the old CRM module now known as Sales and Marketing, there are four difernt types of activities: Actions, Appointments, Events and Tasks where the Appointments and Tasks can be synchronized to Outlook. This Outlook synchronization is also the reason for the quite large number of fields on the Activities form, fields that are for the most part not integrated into AX business logic:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm3.png"><img width="813" height="809" class="alignnone size-full wp-image-1055" alt="sm3" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm3.png" /></a>

For Service management there are a handful of fields that are relevant including Category, Type, Phase, Responsible and pay attention to the little fields called Dispatched.

Service management uses a little known field on the worker called the Dispatch team, which is located in the Actionpane under Setup:

Note that I am in USMF, it is only possible to assign a worker to a dispatch team in the legal entity he/she is employeed in. I have assigned myself (Tim) and Terrence to the respective dispatch teams called East and West.

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm4.png"><img width="1178" height="447" class="alignnone size-full wp-image-1065" alt="sm4" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm4.png" /></a>

Now it is important to understand that there are two types of activities generated based on a service order. The intention is that one is for the Dispatcher or owner of the service to for example follow up on the service call and the other is for the technicians as represented on the service order lines.

You define default values and some control in the Service management &gt;Setup&gt;Service management parameters. On the general tab you define what Activity type is defaulted into new Service agreements which is then sub-sequentially defaulted into new service orders based on the Service order LINES:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm5.png"><img width="786" height="506" class="alignnone size-full wp-image-1075" alt="sm5" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm5.png" /></a>

On the Activities tab you define whether or not you wish to have a follow up activity, the initial question is whether it should be created straight away perhaps with a more or less advanced user prompt:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm6.png"><img width="811" height="481" class="alignnone size-full wp-image-1085" alt="sm6" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm6.png" /></a>

The last field on the Activities tab is the Activity generation stage which relates into the Service management stage engine. The Service stages follows a tree like structure that you can navigate up and down in. It’s most easily viewable if you enable the Tree view checkbox. In my example I move from Planning to In process and from In process I can move to Cancel and Close. For activities I define that I will create LINE activities when I reach the In process stage:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm7.png"><img width="957" height="527" class="alignnone size-full wp-image-1095" alt="sm7" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm7.png" /></a>

On the stages in the grid it is also possible to define that the phase field on the activities are updated based on a change in the Service order stage:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm8.png"><img width="860" height="263" class="alignnone size-full wp-image-1105" alt="sm8" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm8.png" /></a>

Finally the Service management module has a dispatch board that utilizes the Activities This is setup on the Dispatching tab and includes the date interval that is managed and a color code based on the priority. I have setup a few default values here:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm9.png"><img width="690" height="393" class="alignnone size-full wp-image-1115" alt="sm9" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm9.png" /></a>

Now let’s see a few activities. The follow up activity is created whenever an update happens on the Service responsible field (someone please file a bug that they do not get generated on service order creation):

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm10.png"><img width="1124" height="554" class="alignnone size-full wp-image-1125" alt="sm10" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm10.png" /></a>

Saying yes to this (Based on a parameter value of prompt).

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm11.png"><img width="1508" height="772" class="alignnone size-full wp-image-1135" alt="sm11" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm11.png" /></a>

The second part is that I move my Service order into the In process Stage with a Service order line of type Hour:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm12.png"><img width="911" height="505" class="alignnone size-full wp-image-1145" alt="sm12" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm12.png" /></a>

Note here that the activity is somewhat different and initialized with different values including a duration:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm13.png"><img width="1099" height="708" class="alignnone size-full wp-image-1155" alt="sm13" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm13.png" /></a>

Note on the Service order detail how it has been associated to related entities:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm14.png"><img width="829" height="607" class="alignnone size-full wp-image-1165" alt="sm14" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm14.png" /></a>

And now finally – we are ready for the Dispatch board which visually displays these activities and allow for moving them around in terms of time and team/responsible. Remember that there is a filter on dates. Below I have right clicked on an activity which brings up the jump options:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/sm15.png"><img width="1369" height="713" class="alignnone size-full wp-image-1175" alt="sm15" src="https://msdnshared.blob.core.windows.net/media/2017/01/sm15.png" /></a>

There are a number of options in the dispatch board including the previously mentioned move options and the tabs represents different filters on activities and the related service orders.

Good luck working with Service management Activities]]></content:encoded>
    </item>
    <item>
      <title>Procurement workflow in Dynamics AX 2012 – Love and hardship in an implementation</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/procurement-workflow-in-dynamics-ax-2012-love-and-hardship-in-an-implementation</link>
      <pubDate>Mon, 02 Jan 2017 13:51:22 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=885</guid>
      <description><![CDATA[A while back I was implementing AX 2012 (R2 I believe – but I will illustrate the learnings in R3)...]]></description>
      <content:encoded><![CDATA[A while back I was implementing AX 2012 (R2 I believe – but I will illustrate the learnings in R3) in a Project heavy organization.

I must admit that we underestimated the requirements in terms of the quite advanced requirements the customer had on the process of approving purchase orders. So the first take away I had is to ensure the level of the requirements and challenge complex requirements based on both the cost of setup, test and maintenance.

The workflow requirements were based on purchase orders made towards different projects. The projects were subdivided into different business areas (with area managers) and had different project managers which together with normal hierarchical approval and different signing limits led to little hardship.

On creating a new Purchase order workflow (Under Procurement and sourcing&gt;Setup&gt;Procurement) and sourcing workflows there are quite a few available procurement area workflows. For just the purchase order itself there are both a “header” and a “line” workflow, I have before experimented with line approval but the number of individual approvals where just too overwhelming for the customer so I will focus on the “Header” workflow.

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW1.png"><img width="1050" height="570" class="alignnone size-full wp-image-895" alt="pw1" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW1.png" /></a>

The Purchase order workflow is one that fortunately have a lot of the (toolbox) available workflow elements enabled:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW2.png"><img width="409" height="565" class="alignnone size-full wp-image-905" alt="pw2" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW2.png" /></a>

An initial question you should ask yourself on creating an advanced workflow is whether or not to use the Subworkflow option. This allows for having a main workflow that calls (perhaps) multiple subworkflows. Initially it is more difficult to setup (more forms/entities in play) however going forward it may save the organization time and make for a faster rollout of changes. Remember that on changing a workflow all preexisting workflow instances will continue to be on the older workflow while only new instances will be on the new version.

So a simple use of subworkflows is the below where a conditional decision (True/False) sends the workflow down to one or the other subworkflow:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW3.png"><img width="1086" height="692" class="alignnone size-full wp-image-915" alt="pw3" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW3.png" /></a>

Because the subworkflows do not have the “condition” option of the approval step the conditional decision is likely going to be the way forward for most, typically actually quite a few conditional decisions, just remember to clearly name the decisions for maintenance going forward, “Conditional decision 17” is a poor choice:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW4.png"><img width="623" height="682" class="alignnone size-full wp-image-925" alt="pw4" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW4.png" /></a>

An important element to working with workflow is to understand the query that a given workflow is based on – and not least to understand that this is a (developer) editable query. The Purchase order workflow for example out of the box allows for querying on four inter-related tables: The PurchTable (The purchase order header), the PurchLine, the Reason references and the Source document lines (related to the lines)

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW5.png"><img width="787" height="951" class="alignnone size-full wp-image-935" alt="pw5" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW5.png" /></a>

The query is named in the getQueryName method of the workflow document, so for the Purchase order workflow we are looking for a query called PurchTableDocument:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW6.png"><img width="1518" height="785" class="alignnone size-full wp-image-945" alt="pw6" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW6.png" /></a>

Here we ought to recognize the same table structure as was seen in the workflow:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW7.png"><img width="429" height="470" class="alignnone size-full wp-image-955" alt="pw7" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW7.png" /></a>

Because the requirement from the customer were also on querying on data from the Project table this table then needs to be included in the query:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW8.png"><img width="372" height="271" class="alignnone size-full wp-image-965" alt="pw8" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW8.png" /></a>

The details of the above is skipped here (joins, relationships, CIL etc.)

The outcome is an additional data source that can be queried on within the context of the Purchase order (header) workflow:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW9.png"><img width="837" height="519" class="alignnone size-full wp-image-975" alt="pw9" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW9.png" /></a>

This allows for saying that for example all the projects with this [project group for example] should be handled by the respective area managers of those projects.

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW10.png"><img width="1059" height="439" class="alignnone size-full wp-image-985" alt="pw10" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW10.png" /></a>

Note: this is one option, a second option is to use the Expenditure participants framework setup under Procurement and sourcing&gt;Setup&gt;Policies&gt;Purchase order expenditure reviewers:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW11.png"><img width="899" height="575" class="alignnone size-full wp-image-995" alt="pw11" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW11.png" /></a>

Combined with a named manager on for example the cost center financial dimension. Read more about this option in the Public sector procurement and accounts payable training material:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW12.png"><img width="1207" height="661" class="alignnone size-full wp-image-1005" alt="pw12" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW12.png" /></a>

Second part is getting approval from your manager this is straight forward with the built in Managerial hierarchy option, read more about managerial hierarchy <a href="https://daxing2012.wordpress.com/2013/04/17/using-the-managerial-hierarchy-option-in-workflows/">here</a>.

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW13.png"><img width="884" height="461" class="alignnone size-full wp-image-1015" alt="pw13" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW13.png" /></a>

Remember to handle leadership and employees who for one reason or another do not currently have a named manager, empty position, faulty hierarchy setup or perhaps because we are talking about the CEO. Workflows submission unfortunately fail for a number of reason, the listed reasons are some of the most frequent plus that a manager do not have security rights to the entity that is being approved remember the: Home&gt;Inquiries&gt;Workflow&gt;Workflow history for your everyday problem solving.:

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/PW14.png"><img width="1260" height="809" class="alignnone size-full wp-image-1025" alt="pw14" src="https://msdnshared.blob.core.windows.net/media/2017/01/PW14.png" /></a>

A last requirement, which we were unable to deliver on, was that some managers received quite a few “double” approvals – this was the case when a manager for example is both an area manager, a project manager and a hierarchy manager. Unfortunately workflows in AX does not allow for querying on data within the running workflow entity.]]></content:encoded>
    </item>
    <item>
      <title>Load demand replenishment - How and thoughts</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/load-demand-replenishment-how-and-thoughts</link>
      <pubDate>Tue, 27 Sep 2016 08:40:42 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=805</guid>
      <description><![CDATA[The last replenishment type is the load demand type.

Like the other two types this is setup under...]]></description>
      <content:encoded><![CDATA[<span>The last replenishment type is the load demand type.</span>

<span>Like the other two types this is setup under WHS&gt;Setup&gt;Replenishment&gt;Replenishment template:</span>

<a href="https://msdnshared.blob.core.windows.net/media/2016/09/ReplTemplate.png"><img width="1236" height="689" class="alignnone size-full wp-image-815" alt="ReplTemplate" src="https://msdnshared.blob.core.windows.net/media/2016/09/ReplTemplate.png" /></a>

<span>Contoso doesn't have a load replenishment template, so go ahead and create one. Notice that Min and max is gone, the load demand is very simple in terms of setup. Contoso only have one Replenishment work template which is tied to warehouse 61, so here I have created a new replenishment work template. Be careful with directive code, for me it did not work. Under select products I haven't entered anything (all products are fine) and under "Select locations to replenish" I have defined zone = "Floor".</span>

<span><a href="https://msdnshared.blob.core.windows.net/media/2016/09/PickingLocationType.png"><img width="1762" height="703" class="alignnone size-full wp-image-825" alt="PickingLocationType" src="https://msdnshared.blob.core.windows.net/media/2016/09/PickingLocationType.png" /></a></span>

<span>Replenishment location directive have to be setup to do replenishment in Warehouse 24. I choose to pick from zone "Bulk". In my mind it does not make sense to have a put location directive, since that should be defined on the replenishment template however I could not get it to work so please go ahead and create a put location directive. Note that it is not possible to have a put strategy.</span>

<span><a href="https://msdnshared.blob.core.windows.net/media/2016/09/Locdirective.png"><img width="1779" height="651" class="alignnone size-full wp-image-835" alt="Locdirective" src="https://msdnshared.blob.core.windows.net/media/2016/09/Locdirective.png" /></a></span>

<span>At this point we are ready to process the Load demand replenishment template. However we need some data to execute the load demand replenishment template.</span>

<span>I have created a sales order of 100 A0001</span>

<a href="https://msdnshared.blob.core.windows.net/media/2016/09/SO.png"><img width="1364" height="517" class="alignnone size-full wp-image-845" alt="SO" src="https://msdnshared.blob.core.windows.net/media/2016/09/SO.png" /></a>

<span>And I have modified the quantities available and where those quantities are available, respectively 25 on a floor location (Pick zone) and 500 on a bulk location. Note that I have not used the first floor location (FL-001).</span>

<span><a href="https://msdnshared.blob.core.windows.net/media/2016/09/On-hand.png"><img width="1505" height="446" class="alignnone size-full wp-image-855" alt="On-hand" src="https://msdnshared.blob.core.windows.net/media/2016/09/On-hand.png" /></a></span>

<span>On the sales order I go to the Load planning workbench and release the entire sales order to a new load. I could have done this in a few different ways, for example automatically on sales order creation.</span>

<span><a href="https://msdnshared.blob.core.windows.net/media/2016/09/LoadWorkbench.png"><img width="1733" height="798" class="alignnone size-full wp-image-865" alt="LoadWorkbench" src="https://msdnshared.blob.core.windows.net/media/2016/09/LoadWorkbench.png" /></a></span>

<span>So now I have an open Load of 100 A0001.</span>

<span>I run the "Load Demand replenishment" job under Replenishment with a filter on Open in the Load status</span>

<img width="500" height="439" alt="Load Demand Re Job" src="pingala.dk/media/16423/loaddemandrejob_500x439.jpg" />

<span>One work header is created:</span>

<img width="367" height="261" alt="Onework Header" src="pingala.dk/media/16428/oneworkheader.png" />

<span>And now a replenishment job is created to move a quantity of 75 from Bulk to Pick:</span>

<span><a href="https://msdnshared.blob.core.windows.net/media/2016/09/WorkRepl.png"><img width="1444" height="638" class="alignnone size-full wp-image-875" alt="WorkRepl" src="https://msdnshared.blob.core.windows.net/media/2016/09/WorkRepl.png" /></a></span>

<span>Note that the system suggests to put the items on location FL-001 which is odd considering that the FL-008 had 25 pcs. I have earlier figured out that if I (code) overruled the Strategy on the put location directive to "Consolidate" the system will place it together with what I already have in my pick area. I have tried to report it as an error to Microsoft but it ended up in the DCR bucket (please go to Connect and vote it up).</span>

<span>Some general thoughts in terms of Load demand. First and foremost, it is very cool to be able to replenish the pick area based on a set of data that are not yet released to the warehouse. In other words, this allows for replenishing the pick area based on a future "demand" from the pick area. However Load demand operates on Loads, which is good and make sense for companies that use Loads and the "Transportation management" element that entails. I have mainly been working with companies that did not have a manual process of individual parcels but required the automation of the "Automatic release of sales orders" and wave processing and not the load planning workbench and manual release of individual loads.</span>]]></content:encoded>
    </item>
    <item>
      <title>Practical experiences on implementing the (WHS) warehouse module – Packing</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/practical-experiences-on-implementing-the-whs-warehouse-module-packing</link>
      <pubDate>Tue, 30 Aug 2016 07:25:41 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=765</guid>
      <description><![CDATA[In continuation on our experiences with implementing WHS Warehouse management I will go into the...]]></description>
      <content:encoded><![CDATA[In continuation on our experiences with implementing WHS Warehouse management I will go into the creation of works and packing the items into containers.

Once we have a shipment with the correct sales order lines in it, this shipment will hit the wave template and get processed into work. An option when creating works is using the “Work breaks” on the work template. The work breaks <span>is</span> a consolidation/break mechanism based on a set of temporary work transactions, personally I read them as the predecessors to what will be the Work pick lines. Note that the creation and splitting/grouping of work lines are done within the scope of one Wave processing of the shipment within one wave, meaning that to consolidate two sales orders/sales order lines they have to be a part of shipments within one wave.

Using the Work breaks is done first by adding a range on the sorting tab on the Edit query:

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image00110.png"><img width="1147" height="477" class="alignnone size-full wp-image-775" alt="image001" src="https://msdnshared.blob.core.windows.net/media/2016/08/image00110.png" /></a>

And secondly by choosing yes to “Group by this field” in the Work breaks form called from the Work template form.

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0035.png"><img width="542" height="239" class="alignnone size-full wp-image-785" alt="image003" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0035.png" /></a>

In the above I have done a grievous error in <span style="text-decoration: underline">not</span> having the sort code field on the sorting tab, my warehouse workers are going to be rather tired from walking randomly all over the warehouse without a guided picking route. Just remember not to have group on the sort field or you will have a work per sort code..

The above setup (plus sort code) worked for us because we used the pack functionality to add the items into containers and the Pack/Manual containers functionality handles multiple shipments in one <span>work..</span> in a manner that did not give a satisfying user experience.

<strong>The Packing functionality.</strong>

The packing functionality requires that an area of the warehouse has been setup as the pack area – a specified location profile in the parameters. Secondly a Packing profile and a container closing profile must be created for each warehouse. To ease the daily <span>opening</span> it is possible to reference a user login with the packing profile and container closing profile although my experience was shared logins for a diverse group of permanent and temporary employees and it had no effect that the employee typed his/her own name when opening the form, data was still stored with the user credentials from Windows.

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0042.png"><img width="1428" height="889" class="alignnone size-full wp-image-795" alt="image004" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0042.png" /></a>

The notes comes from the attached notes to the work which can be inherited down from the sales order with the correct parameter setting under accounts receivable and warehouse management.

The most typical personalization was adding the shipment address to the form (Here added in the upper right hand corner), this was also done because with an added EDI integration to third party transport vendors it was left to the packing user to make a validation of the automatically suggested mode of delivery (carrier and service).

In the above I have identified the license plate (1234) that the picker used. We experimented with different scenarios in regards to for example use the early tote reuse (a fixed label on picking trays/carts/pallets) and ended up that correctly identifying a pick without printing out works papers required a roll of “license plates” that we later consumed as container IDs during the packing process.

Note that when scanning a target license plate that represents a work spanning more than one shipment the following will happen:

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0061.png"><img width="888" height="435" class="alignnone size-full wp-image-716" alt="image006" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0061.png" /></a>

The Shipment ID is enabled for editing and the user can pick which shipment is currently being packed. The above is an example where I have defined the work template breaks as the account number or in other words if the same customer has created two sales orders and each sales order has been released at different times (actually the above is three sales orders on the same customer – two of them were released at the same and ended up in one shipment). The two shipments have then “met” each other in the wave and has been processed together creating one work.

From a packing perspective the above has to be handled carefully. For one thing containers are related to shipments, so the above scenario has to result in two containers. Secondly if the items that has been picked are mixed together a likely scenario is that the user scans an item that is not in the currently active shipment giving the user an error or the risk of an over-delivery. For us the end result was actively avoiding the double shipment scenario.

In terms of modification we went with additional actions in regards to changing mode of delivery and some additional insight into the state of the current work. The EDI to the carriers were however by far the most challenging. Direct UPS integration requires a solid amount of care, attention to detail and data validation.]]></content:encoded>
    </item>
    <item>
      <title>Using dynamic query values (SysQueryRangeUtil) in Dynamics AX</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/using-dynamic-query-values-sysqueryrangeutil-in-dynamics-ax</link>
      <pubDate>Fri, 26 Aug 2016 09:05:29 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=676</guid>
      <description><![CDATA[Whenever I setup Cues for customers in AX 2012 I use dynamic filtering to create actionable cues...]]></description>
      <content:encoded><![CDATA[Whenever I setup Cues for customers in AX 2012 I use dynamic filtering to create actionable cues representing relevant data. I do tend to forget the precise name of the methods and number of parenthesis etc. so here is the full list of end-user available methods based on the <span>SysQueryRangeUtil</span> class:

&nbsp;

Most used:
<table width="1294">
<tbody>
<tr>
<td width="104">Name</td>
<td width="236">Used how</td>
<td width="302">Example</td>
</tr>
<tr>
<td width="104"><span>dayRange</span></td>
<td width="236">(<span><span>dayRange</span></span><span>(</span>-1,2)) gives a query result of all records from yesterday until the day after tomorrow.

Note that it is unfortunately not possible to use decimals, only full <span><span>days</span></span> work.</td>
<td width="302"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0019.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image0019.png" alt="image001" width="542" height="309" class="alignnone size-full wp-image-685" /></a></td>
</tr>
<tr>
<td width="104">day</td>
<td width="236">(<span>day(</span>-1)) gives all records of yesterday, (day(1)) gives records of tomorrow.

Remember that options such as &lt;(<span>day(</span>-1)) works for identifying for example any date before yesterday</td>
<td width="302"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0034.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image0034.png" alt="image003" width="627" height="325" class="alignnone size-full wp-image-695" /></a></td>
</tr>
<tr>
<td width="143"><span>monthRange</span></td>
<td width="117">(<span><span>monthRange</span></span><span>(</span>-1,0)) last month and this month</td>
<td width="383"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0053.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image0053.png" alt="image005" width="597" height="301" class="alignnone size-full wp-image-705" /></a></td>
</tr>
<tr>
<td width="143"><span>yearRange</span></td>
<td width="117">(<span><span>yearRange</span></span><span>(</span>-1,0)) last year and this year</td>
<td width="383"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0073.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image0073.png" alt="image007" width="579" height="304" class="alignnone size-full wp-image-686" /></a></td>
</tr>
<tr>
<td width="143"><span>lessThanDate</span>

<span>lessThanUtcDate</span>

<span>lessThanUtcNow</span></td>
<td width="117">(<span><span>lessThanDate</span></span><span>(</span>-1)) (calculated from the AX session date)

(<span><span>lessThanUtcDate</span></span><span>(</span>-1)

The date represented on the AOS

(<span><span>lessthanUtcNow</span></span><span>(</span>))

Calculates from “Now”</td>
<td width="383"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0093.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image0093.png" alt="image009" width="611" height="312" class="alignnone size-full wp-image-696" /></a></td>
</tr>
<tr>
<td width="143"><span>greaterThanDate</span>

<span>GreaterThanUtcDate</span>

<span>greaterThanUtcNow</span></td>
<td width="117"><span><span>greaterThanDate</span></span><span>(</span>5)) (calculated from the AX session date)

(<span><span>greaterThanUtcDate</span></span><span>(</span>-1)

The date represented on the AOS)

(<span><span>greaterthanUtcNow</span></span><span>(</span>))

Calculates from “Now”</td>
<td width="383"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0113.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image0113.png" alt="image011" width="642" height="311" class="alignnone size-full wp-image-715" /></a></td>
</tr>
<tr>
<td width="143"><span>currentUserId</span></td>
<td width="117">(<span><span>currentuserid</span></span><span>(</span>))

Take the user id and filter on for example “created by”

Good for making a generic query relevant for the individual users, forexample a Cue along the lines of "Sales orders I have created"</td>
<td width="383"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0132.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image0132.png" alt="image013" width="584" height="300" class="alignnone size-full wp-image-706" /></a></td>
</tr>
<tr>
<td width="143"><span>currentWorker</span></td>
<td width="117">(<span><span>currentWorker</span></span><span>(</span>))

&nbsp;

A somewhat advanced option but nice for filtering on records where you have assigned for example a sales responsible.

Note that the value returned is a record ID

For example for a cue along the lines of "Sales orders I am responsible for"</td>
<td width="383"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0151.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image0151.png" alt="image015" width="616" height="318" class="alignnone size-full wp-image-725" /></a></td>
</tr>
<tr>
<td width="143"><span>currentParty</span></td>
<td width="117">(<span><span>currentparty</span></span><span>(</span>))

&nbsp;

Similar to the <span>currentWorker</span> but could potentially be used if the user was something other than a Worker.

Note the returned value is a record id.</td>
<td width="383"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image017.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image017.png" alt="image017" width="634" height="304" class="alignnone size-full wp-image-735" /></a></td>
</tr>
<tr>
<td width="143"><span>currentCompany</span></td>
<td width="117">(<span><span>currentcompany</span></span><span>(</span>))

For filtering on “system” tables such as the worker table</td>
<td width="383"><a href="https://msdnshared.blob.core.windows.net/media/2016/08/image019.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image019.png" alt="image019" width="766" height="451" class="alignnone size-full wp-image-745" /></a></td>
</tr>
</tbody>
</table>
&nbsp;

Remember also the ability to compare two fields on the same table using the AOT names within a set of parenthesis. The system names can be found on the personalization screen. Just recently I have used it forexample in the below example to compare reequested ship date and confirmed ship date on a sales order (back) lines.

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image021.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/08/image021.png" alt="image021" width="911" height="617" class="alignnone size-full wp-image-755" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Practical experiences on implementing the (WHS) warehouse module – Min/Max Replenishment</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/practical-experiences-on-implementing-the-whs-warehouse-module-minmax-replenishment</link>
      <pubDate>Tue, 23 Aug 2016 12:15:05 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=535</guid>
      <description><![CDATA[Practical experiences on implementing the (WHS) warehouse module – Min/Max Replenishment

The...]]></description>
      <content:encoded><![CDATA[Practical experiences on implementing the (WHS) warehouse module – Min/Max Replenishment

The Minimum/maximum replenishment template works somewhat differently than the previously discussed Wave replenishment. We used these two templates/strategies in combination because the Wave template can handle spikes in outgoing sales work and the Minimum-maximum keeps levels at a certain required level.
<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0018.png"><img width="1615" height="485" class="alignnone size-full wp-image-655" alt="image001" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0018.png" /></a>
The Min-max replenishment does not use put location directives but has for each line a defined set of locations to replenish (“Select locations to replenish”). Also note the field to the far right in the lines that specifies whether the product query is for normal products or for variant items.
The Directive code can be confusing because it is not tied to through the Work template as normal but goes directly to the Location directives. Actually you cannot define a directive code on Replenishment work templates so potentially you will use a work template without a directive code and location directives with.
Note the replenishment unit, if your items are diverse in terms of units, then this should be reflected by adding multiple replenishment lines.
Finally, there is the question of which locations should be replenished. The “Select locations to replenish” will likely merely point toward the picking area. The two check boxes regarding fixed locations defines whether to replenish an empty fixed location and whether to only replenish the fixed location and thus ignore other locations containing the specified item. The fixed locations are defined under Warehouse management&gt;Setup&gt;Warehouse&gt;Fixed locations. More to come regarding fixed locations.
One the Min-max replenishment template has been setup correct the user can initiate the template under Warehouse management&gt;Replenishment&gt;Replenishments which is a very simple periodic job that can be put into batch:
<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0033.png"><img width="499" height="269" class="alignnone size-full wp-image-615" alt="image003" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0033.png" /></a>
I have defined my Min-max template to run on the three items A0001, A0002 and the newly created A0003. My replenishment template evaluates the Floor (FL) locations and the Web shop (CP) and takes from the BULK area. The template has a min at 50 and a maximum of 100 pcs.
Finally, A0001 and A0002 have fixed locations at CP-001 and CP-002 respectively.
<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0052.png"><img width="966" height="212" class="alignnone size-full wp-image-616" alt="image005" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0052.png" /></a>
I have the following in stock on A0001:
<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0072.png"><img width="1160" height="253" class="alignnone size-full wp-image-625" alt="image007" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0072.png" /></a>
Notice while I have 100 on the FL-001 they are all physically reserved.
I have the following in stock on A0002:
<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0092.png"><img width="1248" height="261" class="alignnone size-full wp-image-635" alt="image009" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0092.png" /></a>
Notice two locations have less than 50 in quantity, but there is nothing on the defined fixed location (CP-002)
And lastly I have the A0003, nothing in the pick areas only on Bulk:
<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0112.png"><img width="1088" height="175" class="alignnone size-full wp-image-645" alt="image011" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0112.png" /></a>
When I run the min-max replenishment template on these data I get 4 replenishment works:
1 replenishment work for A0001 of a quantity of 90 on Location CP-001
0 replenishment work for A0001 on location FL-001, the replenishment evaluates that there is enough on this location. If the content of the location had been 20 and all reserved I would have seen a replenishment of 80 on this location.
1 replenishment work for A0002 of a quantity of 100 on Location CP-002 (the empty fixed location)
1 replenishment work for A0002 of a quantity of 90 on Location CP-005
1 replenishment work for A0002 of a quantity of 65 on Location FL-005
0 replenishment work for A0003 because A0003 have neither a fixed location nor an existing quantity in the area defined by the replenishment template.

We have had some customer dissatisfaction with the above result. The customer expected that the picking area would be evaluated as one and the quantities would reach the desired level in total in the area. Also the missing replenishment for A0003 is troublesome, we solved this by giving all items a fixed location.]]></content:encoded>
    </item>
    <item>
      <title>Practical experiences on implementing the (WHS) warehouse module – Wave Replenishment</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/practical-experiences-on-implementing-the-whs-warehouse-module-wave-replenishment</link>
      <pubDate>Tue, 23 Aug 2016 12:01:32 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=455</guid>
      <description><![CDATA[In continuation on our experiences with implementing WHS Warehouse management I will go into the...]]></description>
      <content:encoded><![CDATA[In continuation on our experiences with implementing WHS Warehouse management I will go into the findings we had in regards to Warehouse management replenishment.

Replenishment starts with the user defining what replenishment strategy to pursue. There are three options: Wave demand, Load demand and Min/max. All to setup under WHS&gt;Setup&gt;Replenishment&gt;Replenishment templates:
<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0016.png"><img width="1200" height="475" class="alignnone size-full wp-image-465" alt="image001" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0016.png" /></a>

Notice I have done some (normal) setup in regards to (Replenishment) Work template and (Replenishment) location directives which I have not shown here. Just keep in mind that Wave replenishment requires both a pick and a put location directive. An unfortunate finding in terms of the "Put" option is that you do not have the option to consolidate where you put the items. I tried to allow for that by adding replenishment as an allowed type to have strategy on - and it appeared to work but please test before going live.

The wave demand works by being triggered during the processing of waves. It requires that the wave template contains the Replenish method and that the Wave code step has a match in the replenishment template (Here it is using “1” as the link):

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0032.png"><img width="1090" height="567" class="alignnone size-full wp-image-476" alt="image003" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0032.png" /></a>

Notice also the “Automate replenishment work release” – in essence do you want the replenishment work to be created straightaway or do you wish to control when/what is released in terms of replenishment works.

It is quite straight forward, on processing a wave with a shipment that exceeds what is in the picking area (defined in the location directive) it will create a replenishment work in the case that I have the following stock levels in warehouse 24 a sales order that are released into the warehouse will generate a replenishment work:

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0051.png"><img width="1378" height="377" class="alignnone size-full wp-image-485" alt="image005" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0051.png" /></a>

Here I have processed wave USMF-0000013 and it have created a replenishment wave for me and because the automate replenishment release was set to Yes, then the Replenishment wave is released straight away.

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0071.png"><img width="1330" height="389" class="alignnone size-full wp-image-495" alt="image007" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0071.png" /></a>

Notice the yellow bar informing the user that the work cannot be unfrozen. My wave template tried to release the work straight away and was blocked by the unfinished replenishment work.

The replenishment work moves the required quantity from in this case bulk to the floor locations based on the location directives:

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0091.png"><img width="1265" height="478" class="alignnone size-full wp-image-505" alt="image009" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0091.png" /></a>

When I look at the blocked sales work I notice that the button “Replenishment work” has opened up:

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0111.png"><img width="1631" height="487" class="alignnone size-full wp-image-515" alt="image011" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0111.png" /></a>

Through this I can see the replenishment work the sales work is tied to. The link between these two works are stored in the WHSReplenWorkLink table:

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image0131.png"><img width="930" height="286" class="alignnone size-full wp-image-516" alt="image013" src="https://msdnshared.blob.core.windows.net/media/2016/08/image0131.png" /></a>

Apart from the ability to jump between the two works having this record also controls the automatic release of the sales work, plus for us there was an unfortunate element that the user could not override the put location of the replenishment work when such a link existed:

<a href="https://msdnshared.blob.core.windows.net/media/2016/08/image015.png"><img width="496" height="345" class="alignnone size-full wp-image-525" alt="image015" src="https://msdnshared.blob.core.windows.net/media/2016/08/image015.png" /></a>

But once the replenishment work is completed the sales work is immediately released.

In the next part I will talk to the min/max replenishment]]></content:encoded>
    </item>
    <item>
      <title>Setting up Calculation parameters for Time &amp; Attendance</title>
      <link>https://docs.microsoft.com/archive/blogs/dpaxfeatures/setting-up-calculation-parameters-for-time-attendance</link>
      <pubDate>Fri, 29 Jul 2016 11:41:28 GMT</pubDate>
      <dc:creator><![CDATA[David M Probst]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/dpaxfeatures/?p=115</guid>
      <description><![CDATA[A long time ago I was responsible for what is commonly known as the Shop Floor module which we...]]></description>
      <content:encoded><![CDATA[A long time ago I was responsible for what is commonly known as the Shop Floor module which we however at the time renamed to the Time&amp;Attendance, Time&amp;Attendance Payroll and Manufacturing execution modules. Recently I was thrown into these modules again specifically in the area of Time&amp;Attendance payroll on a customer implementation.

When setting up Time&amp;Attendance and Time&amp;Attendance payroll a key component is the Calculation parameters and these are in my mind quite poorly <a href="https://technet.microsoft.com/en-us/library/aa496784.aspx">documented</a>.

In AX “7” the calculation parameters are located under Time and attendance&gt;Setup&gt;Calculation parameters in AX2012 they are located under HRM&gt;Setup&gt;Time and Attendance.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image0014.png"><img width="1084" height="584" class="alignnone size-full wp-image-305" alt="image001" src="https://msdnshared.blob.core.windows.net/media/2016/07/image0014.png" /></a>

The Calculation parameters consists of four elements which are read from left to right. The initial one is the Registration specification.

The standard documentation reads the following: with an additional column from me

&nbsp;
<table width="1097" border="1">
<tbody>
<tr>
<td width="93"><strong>Registration type</strong></td>
<td width="222"><strong>Description</strong></td>
<td width="526"><strong>Comment</strong></td>
</tr>
<tr>
<td width="93">Working time</td>
<td width="222">The employee is at work.</td>
<td width="526"></td>
</tr>
<tr>
<td width="93">Legal absence</td>
<td width="222">The employee is not at work, but the selected absence group does not deduct from their overtime or reduce their flex balance.

For example, the absence could be due to illness or to taking an external training course.</td>
<td width="526">So Absence group (T&amp;A&gt;Setup&gt;Groups&gt;Absence groups) Has no in both Reduce flex and Deduct overtime:

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image0031.png"><img width="449" height="113" class="alignnone size-full wp-image-315" alt="image003" src="https://msdnshared.blob.core.windows.net/media/2016/07/image0031.png" /></a></td>
</tr>
<tr>
<td width="93">Illegal absence</td>
<td width="222">The employee is not at work, but the selected absence group deducts from their overtime. However, the flexible hour’s balance is not reduced.

For example, this can be used if an employee is late for work but plans to make up the hours (if this is allowed).</td>
<td width="526">So absence group has Yes in Deduct overtime and No in Reduce flex:

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image0052.png"><img width="461" height="166" class="alignnone size-full wp-image-325" alt="image005" src="https://msdnshared.blob.core.windows.net/media/2016/07/image0052.png" /></a></td>
</tr>
<tr>
<td width="93">Flex-reducing absence</td>
<td width="222">The employee is not at work. The selected absence group does not deduct from their overtime, but reduces their flex balance.

For example, this can be used if an employee takes a whole day off to reduce their flexible hour’s balance.</td>
<td width="326">So absence group has no in Deduct overtime and Yes in Reduce flex:

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image0073.png"><img width="460" height="112" class="alignnone size-full wp-image-355" alt="image007" src="https://msdnshared.blob.core.windows.net/media/2016/07/image0073.png" /></a></td>
</tr>
<tr>
<td width="93">Flex-reducing illegal absence</td>
<td width="222">The employee is not at work. The absence group deducts from the employee's overtime and reduces the flex balance.

For example, this can be used if an employee is allowed to work flexible hours but clocks in after the Flex-period tolerance is over without having a valid excuse for the absence.</td>
<td width="526">So absence group has Yes in Deduct overtime and Yes in Reduce flex:

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image0091.png"><img width="460" height="179" class="alignnone size-full wp-image-365" alt="image009" src="https://msdnshared.blob.core.windows.net/media/2016/07/image0091.png" /></a></td>
</tr>
<tr>
<td width="93">Work-free flex zone</td>
<td width="222">The employee is not at work in a flexible hours reducing time zone. The employee gets paid and the flex balance is reduced.</td>
<td width="526">So this one does not have anything to do with the absence group, the employee has not clocked in but the profile states “Flex-“:

If the employee clocked in at 8:40. The period between 8 and 8:40 would be work free flex zone.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image011.png"><img width="409" height="231" class="alignnone size-full wp-image-385" alt="image011" src="https://msdnshared.blob.core.windows.net/media/2016/07/image011.png" /></a></td>
</tr>
</tbody>
</table>
&nbsp;

In order to validate the above I suggest to personalize the form to include the log book field “Reg specification” into the approve or calculate forms and then try out different options

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image012.png"><img width="845" height="682" class="alignnone size-full wp-image-386" alt="image012" src="https://msdnshared.blob.core.windows.net/media/2016/07/image012.png" /></a>

:

The second column in the Calculation parameters are the Profile Specification types:

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image0141.png"><img width="233" height="271" class="alignnone size-full wp-image-395" alt="image014" src="https://msdnshared.blob.core.windows.net/media/2016/07/image0141.png" /></a>

These matches how the Time profile has been setup. Remember to make sure the profile type has been setup correctly.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image015.png"><img width="466" height="324" class="alignnone size-full wp-image-405" alt="image015" src="https://msdnshared.blob.core.windows.net/media/2016/07/image015.png" /></a>

(I couldn’t capture more rows – but after 4 PM we reach Flex+ again).

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image016.png"><img width="1095" height="564" class="alignnone size-full wp-image-406" alt="image016" src="https://msdnshared.blob.core.windows.net/media/2016/07/image016.png" /></a>

So to recapture what has been defined above. Is the worker within a set of clock/in out? Yes, then we are in Working time. Is the worker outside clock in/out then an absence code must in place and we have the four options and lastly we are outside clock in/out but the profile specifies Flex- then we are in the work free flex zone.

The time profile has six options based on the valid profile defined “time types”.

Now we get to the “Calculation” group on the Calculation parameters. These are associated to what is calculated the Approve/calculate forms (or in the batch job). The outcome is presented on the Times tab in these forms.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image018.png"><img width="1854" height="696" class="alignnone size-full wp-image-416" alt="image018" src="https://msdnshared.blob.core.windows.net/media/2016/07/image018.png" /></a>

I have marked the fields on the Times tab that corresponds to the (checkboxes/Sliders) in the Calculation group on the Calculation parameters, here in an example with a number of fun deviations.

Lastly we get to the “Paid” group on the Calculation parameters. The Paid group corresponds to what will be made available in the calculation of Pay items. However, pay items gets generated as a result the pay agreement lines, so if there is not a Pay agreement line to capture the “Output time” of the “Day’s total” calculation no pay item will be generated.

So the Paid group corresponds to the different types of pay agreement lines:

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image020.png"><img width="1170" height="335" class="alignnone size-full wp-image-425" alt="image020" src="https://msdnshared.blob.core.windows.net/media/2016/07/image020.png" /></a>

The default calculation parameters for example has a yes in that a premium can be paid out for a standard hour:

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image022.png"><img width="242" height="408" class="alignnone size-full wp-image-435" alt="image022" src="https://msdnshared.blob.core.windows.net/media/2016/07/image022.png" /></a>

Which means that one or more of these could potentially be paid out if the time profile read “Standard time” (hard for the shown profile, but the scenario is here that the worker would have a “Late shift time profile” and therefore get these premiums):

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/image023.png"><img width="929" height="304" class="alignnone size-full wp-image-445" alt="image023" src="https://msdnshared.blob.core.windows.net/media/2016/07/image023.png" /></a>

I hope the above assisted in understanding the Time and Attendance Calculation parameters.
<h4></h4>]]></content:encoded>
    </item>
  </channel>
</rss>