Output orders and lines

The following post, is a bit advanced, and I guess that 90% of all implementations never encounters any issues related to this. But if you struggle with open inventory orders that “locks” your sales orders, then this post can bring some lights to it. It is valid for both AX 2009 and AX 2012.

In Dynamics AX you can split up the picking of a sales order (or any other issue-based orders) by using output orders (WMSOrder) and picking lines (WmsOrderTrans). The picking line lines can be “split” into several lines, if the quantity needs to be picked from several locations. As seen in the example below, you see one output order with 2 picking lines.

The quantity of the output order that is included in a shipment can be seen as this:

If I open the shipment related, I can see the same lines:

When you manually delete one(or all) of theese from the shipment lines

Then we see in the output order that if changes:

But the inventory transaction (inventTrans) does not change.

I often see people struggle in such scenario’s, because they feel “locked” by this marking on the inventory transaction. Often warehouse workers wants to make the “deleted” lines free and available to be places on a new picking route.

There is a way out of this, but it requires a small code change.

This will reduce the quantity on the output order, and making the inventory transaction “available” again to be reserved, and even to create a new picking route on the deleted lines.

Happy DAX’ing.


Posted in Uncategorized | 2 Comments

All X++ source code for Dynamics AX R3 available

Rumors says that in the upcoming AX 2012 R3, the entire library of X++ code will be available for Partners and Customers. The Dynamics community embraces this approach and says that this makes it possible for new solutions and ideas to be built 100% integrated with the Dynamics AX platform. Microsoft have even make it possible for others to share, using the codeplex.

A business analyst describes what’s happing as:

“All too frequently, SMBs and enterprises deploy expensive closed ERP systems, not realizing that significant cost savings and flexibility can be realized through the use of openness of Dynamics AX. And coupled with a near-instant deployment using Azure will allow many more companies to realize the benefits of ERP-systems with an open and available source code.”, says Kurt Hatlevik, a Dynamics AX nerd.

Competitors has described this approach as a “cheap” way to build a DAX-community and ecosystem. They argue that their own approach for proprietary closed systems is the only way forward to maintain a high revenue stream and customer dependence.

This is not a April’s-fool, but a Aprils-fact J

Update: Dynamics AX has always had an open X++ source code.  This post was a April’s-joke.




Posted in Uncategorized | Leave a comment

Dynamics AX: Why simplicity always wins

The Dynamics ecosystem love to complicate things. And now with the AX 2012 R3 it can really get complex, with the biggest codebase ever. The more functionality we demand to get into Dynamics AX, the better it will become, and the more we can sell, right?


Simplicity wins. Every time. (iPod, anyone?)

As a Dynamics AX “expert”, I get to hang out with other Dynamics AX “experts” (and we act all clubby and hip and cool like it’s some secret club – but it really is). In those circles I get to see and hear a gajillion awesome features that allows us so solve ANY problem. (Basically because the solutions is sets of LEGO-bricks we are selling, and you can build anything with LEGO)

Oftentimes, many of the solutions is over-complicated complex. For the ones that isn’t, the difference between a winning or losing solution invariably comes down to simplicity and elegance.

The Fix

Look folks – if we want to win in the ERP-marketplace, we must focus more on simplicity (twitter’s 140 characters anyone?). A few things to think about:

- What EXACTLY is the problem we are trying to solve? Do a lot of people have it and want it to go away?

- What’s the CURRENT way our customers treating the problem? THAT’S our competition – it’s their next-best alternative relative to your proposed solution. THAT’S what your solution has to beat (both from a capability and cost standpoint including accounting for switching costs).

- What’s the ABSOLUTE MINIMUM solution you need to put on the market to solve the problem? BUILD THAT and validate you have a solution that works.

Stop making solutions so hard, complex, and confusing. We are wasting investment dollars that instead could be used for marketing and scaling our much simpler (and cheaper to build) alternative solutions.

Create solutions that only require a few weeks of implementation time, and that is so easy to use that it can be trained in minutes.

“Simplicity is the ultimate sophistication.”
- Leonardo da Vinci

Posted in Uncategorized | 1 Comment

WMS and voice pick with Google Glasses (Sci-Fi)

With the WMS and voice pick for Google Glasses you can revolutionize your supply chain and warehouse processes. Google glasses will

  • You will have both hands free
  • Directly connected to your ERP system
  • Support real time transactions like receiving, picking, counting and shipping
  • Guide the warehouse worker in all the processes both by voice and by visual graphics
  • Voice pick, scan barcodes using the built-in camera or use Bluetooth connected barcode scanner
  • Connect directly with vendors and customers when working with issues or questions

The only problem is that such a solution does not exist. The google glasses are still in the experimental phase, and it will still be a while before it is available as a commercial consumer product. But Google Glasses has been opened for commercial actors to create such applications and possibilities.

Who have the willingness and the resources to create such a solution ?

Posted in Uncategorized | 4 Comments

Dynamics AX 2012: At your service!

Dynamics AX Service management can be used for service agreements and service subscriptions, handle service orders and customer inquiries, and to manage and analyze the delivery of services to customers. You can use service agreements to define the resources that are used in a typical service visit. You can also use service agreements to view how those resources are invoiced to the customer. A service agreement can also include a service level agreement that specifies standard response times, and offers tools to record the actual time.

What I wanted was to see how much we could simplify the registration of needed repair materials and service hours.

The Dynamics AX service orders is tightly integrated to the project module, and sometimes our customers react that they feel the registration of materials in a warehouse scenario is a bit confusing. The reason for this, is that there are two ways of registering used items on a service order.

  1. You can key in the material in the service order (As you can see in the picture above), and then post it. Then the items will be SOLD from the specified location using a project item journal. There are now way to implement proper warehouse processes in this scenario.
  2. You can create item requirements, that essential is a sales order line, and so support warehouse processes. The drawback, it that the lines posted in the item requirement isn’t visible on the service order screen.

So I decided to create a very easy to use Data Collection Studio application, that allows a more simpler en easy to use approach, and that it closed to the expected process flow.

In this service order I need some items that is not on the list, so I scan item 100, and I need 2 pcs

On the service order, the new line is added, but is marked as “posted” :

But this is “just-for-show” to create a better visibility for the service operator.

The real transaction is located on the item requirements:

The next stage is packingslip update or invoicing.

By this added functionality it means that we have a very simplified way for allowing service personnel into the warehouse, and still maintaining 100% inventory accuracy.

I end this blogpost with a picture from WMD warehouse:

Posted in DCS, Dynamics AX 2012, Uncategorized, Warehouse Management | Leave a comment

AX 2012: Future item reservation requirements

Those of us that have completed large scale Dynamics AX warehouse implementations knows the importance of having a control of item reservation. Dynamics AX 2012 supports several algorithms for reserving the right goods to a sales order(or any other issue transaction).

We can mainly classify the reservations into the following reservation types :

  1. Reserved ordered
  2. Reserved physical    

We can also them into categories:

  1. Normal” reservation
  2. FEFO and batch expiry date reservation
  3. Shipment reservation

But if you start looking deeper into the algorithms in AX 2012 R2 that actually performs the reservation, it is more or less located in the class InventUpd_Reservation.

The reservation in AX 2012 is pretty much user based, meaning that either a user/batch runs a process, and the reservation is done. There are a few exceptions where Dynamics AX 2012 will physically reserve goods when they arrive. But this relates to transactions that is already reserved ordered, or does have an inventory marking.

The way Dynamics AX 2012 is reserving, works in most cases OK, but there are a bit more functionality we would love to have. And here is my “wish list”:

  1. Reservation hierarchy. This means that when you create the sales order/transaction you may reserve on site/warehouse level. The customers order is physically reserved, but the system has not yet decided from where it actually should be picked from. When the picking route is created, then the reservation is sharpened down to more a detailed reservation specifying like location. At the TECH2014 it was shown that this will be there in future releases for a one-level reservation hierarchy. What I would love to see, is more levels, like 2 or even 3 levels. Meaning that you may start with site level. Then maybe after master planning or some other process, the reservation is sharpened down to warehouse. When the picking route is created then it could further be sharpened down to location or batch. In short, we want more reservation levels, because this gives us control and flexibility.


  2. Reservation period. The concept of reservation period means that you can control WHEN the reservation should happen. If you create a sales order with delivery date 6 months ahead, you don’t want to “lock the stock”, and waiting for the delivery date. If the items, let’s say only have 14 days lead time, why not have an engine that performs the reservation at the right time. And even more importantly, if a customer moves his requested delivery date, then the reservation engine should be able to “lift” the reservation back to “reserved ordered” or even back to “ordered”.



  3. Order Reservation sequence. We often know the concept of “first ordered – first served”. Some customers signals their demand and orders early to secure that they get the goods on their requested date. Then you have “bad” customers that needs the goods today, and just orders right when he needs it! The way Dynamics AX works, is that it does not give any customers any priority other than the delivery date. Meaning that you very easily could end up in a situation where the “good” customer could end up in a situation where the “bad” customer actually managed to physically reserve the limited goods. We need mechanism that would allow the “good customer” to be prioritized when limited goods should be reserved. A “ATP-sequence ID” should solve this issue, and making sure that customers that orders early and gives good visibility of their demand is more secure in getting their items on time.


  4. Reservation Location sequence

    In a warehouse we can have inbound, buffer, picking and outbound locations. But we can also have fast and slow locations. Items can also exists in multiple locations to prevent hotspot areas, or certain area is for different sales channels (like one for retail stores, one for eCommerce etc) It would be lovely to have a better control from what location should be prioritized depending on some criteria. Also when building up the picking route I could decide from witch location would be best to take the goods out from. I know from TECH2014 that the concept of location directives will be introduced in future releases, and we are looking forward to learn more about this.

Looking forward to see what the future brings. I have a feeling that 50% of my wishes will come true in AX 2012 R3.

Posted in Uncategorized | 2 Comments

AX 2012 Consignor solution available on CodePlex

The tool can be downloaded at http://ax2012consignor.codeplex.com/

There are some additional information that needs to be addressed. So here is my “What does the FAQ’s say” ?



What is the Consignor solution?

The Consignor integration tool made available for Dynamics AX is a multipurpose tool for creating, exporting and importing CSV-files, XML-files or Excel spreadsheets.

Is it a generic solution?

The tool should be regarded as a generic tool, but as the name suggest, it does have a ready to use integration to Consignor. CONSIGNOR is a system designed for easy and efficient printing of labels, to address and send goods which are to be handled and delivered by a range of carriers, for example Posten Norge, Bring, Schenker, Tollpost, DSV, DHL, Nor Lines, Ramberg, and many more who use EDI data. CONSIGNOR may also be used to print labels for carriers who are not set up to handle EDI data. For an updated list of EDI supported carriers, please see Consignors website http://www.edi-soft.com/.

Who can use the tool?

The tool has been specifically created to enable end-users and business consultants to perform data export and import, without knowing how do develop in Dynamics AX and X++. Creating an export/import definition can be done in a few minutes.

Can this replace my other integration solutions?

No. This tool has a specific purpose to easily extract data from Dynamics AX. It is not built to replace or compete with any other integration solution.

How much does it cost?

Nothing it’s free at CodePlex. But if you can add more functionality to it, it is expected that you share with the community.

Is it fast?

No. It’s is not very fast. When exporting to Excel it is capable of a 15-20 lines per second. Exporting to XML or CSV is a bit faster.

Can it import data?

Yes it can import data from. But this is a alfa release, meaning that more testing is required. The logics for evaluating the import must in many cases be developed in separate classes to perform as needed.

How can I get help?

On CodePlex there are some documentation. But you can also add questions and report issues.

Is it difficult to install?

No. For now, the solution is exported as a XPO with a Zero footprint in AX. Later we will add it as a model. The current build is done with AX 2012 R2 CU7. Please remember to check the “issue list” before you install.

Can I have a demo?

Yes. Nice people can have a demo. Just ask meJ


Happy DAX’ing J

Posted in Uncategorized | 7 Comments

Happy New Year: London Zoo animals line up for stock take.

January is the traditional month for counting the inventory, and I hear from many of my customers and business partners that this is taking place right now.

Here is a link to a more untraditional inventory counting at London Zoo.

(Picture from BBC)


Posted in Uncategorized | Leave a comment

Import/Export: Reinventing the wheel

I was suppose to create a small tool for simplifying integrations to freight forwarders, but I ended up with an easy to use and zero footprint import/export solution. I wanted to create a solution that was easy to use for end-customers and business consultants, enabling them to very easily create CSV, XML and Excel files.

The Consignor integration tool made available for Dynamics AX is a multipurpose tool for creating, exporting and importing CSV-files, XML-files or Excel spreadsheets. The tool has been specifically created to enable end-users and business consultants to perform data export and import, without knowing how do develop in Dynamics AX and X++. The feedback I have received colleagues is very good, and it works as a basis for the upcoming consignor integration.

  1. How to use the consignor integration

    For an end user it is very easy to use the tool. There are two approaches to start the export.

  2. Export file using short-cut

    In Dynamics AX it is possible to short-cuts. For the Consignor, this short-cut is CTRL-Z. Then the following menu will be visible, if there exists a defined consignor format.

    Here the user can select a predefined format. If a Excel format is selected, then Excel will be opened and filled in. Also if XML or CSV is selected, a file containing the defined format will be opened.

    Export file using Menu

    It is also possible to create menu buttons to start the export, and this require a small “drag-and-drop” of a menu item to the form you want to have the consignor integration activated on.

    How to setup an integration

    The consignor integration setup is located under system administrationàperiodic, and consists of two menu items.

    Consignor menu

    In the consignor message types, the definition of the integration is setup.

    The consignor messages is all logged messages, when this are enabled for an integration.

    Consignor message types

    The consignor message types, it the form that is used to defines integrations. The form contains several settings, and in this chapter all fields are described.

    Message file details

    Field Description
    Message type Unique identifier of the integration. This is the name that the user will select, when selecting an integration type.
    Name Name of the integration type
    Note A small note can be added. Use this to log changes made to the integration.
    Approved Select if the integration is approved. Only approved integrations can be selected by the user. Also, when approved, the integration cannot be changed
    Include column names When exporting to a CSV file, the first line can contain the fieldnames. For Excel and XML this parameter have no effect.
    Log message To log all messages, enable this parameter.
    Open file After a file has been exported, the consignor integration can open the file. CSV files will normally be opened in Excel, and XML will be opened in internet explorer. But it’s the windows file association that decides when program to use when opening the file.
    Import/Export Define if the definition is an export, or an import. In the initial release, import is only supported using CSV files. But this will be changed in future releases.
    File type Select the file type of the export/import. The following format are available: Comma Separated File(CSV), XML and Excel.
    File path File path where the export files will be exported, and where files will be imported from.
    Archive file path When importing a file, from the “file path”, the file can be moved to the “Archive file path”. The reason for this, is because when importing files, the import batch-job can read a folder, and fetch all files that is dropped into this folder.

    Message datasource setup

    Field Description
    Source Class It is possible to select a predefined class, where all the fields have been setup. This simplifies creating integrations. The source class also provides support for more complex integrations that require coding to perform. When a source class is selected, the Main table is also automatically given. The field is not mandatory. For a detailed, list of available source classes se the appendix 1 for source classes.
    Main Table identifier All integration need to have a main table identifier. This is used to help the selection of what integrations that can be used, based on the data when the integration is started. If the user is on the customer form, then only integrations that have the customer table defined in the Main Table Identifier can be selected.
    Query setup The consignor integration supports quite complex data structures, where information is fetched from different tables, and display methods. The query will use available relations to present what can be associated with the main table. Right click on the data source to select what tables you want to add. Both n:1 and 1:n relations is supported, but in a 1:n relation, only the first record in the applied relation will be used in the integration
    Button:Criteria The criteria button is used to simplify the consignor message type selection. If the user have several integrations for different customers, then it is possible to define a selection query, so that the correct integration is presented to the user.
    Button:Reset Resets the query, leaving only the main table left.

    Message field setup

    Buttons Description
    Add a new field to the consignor integration definition
    Remove the selected fields from the integration
    This button will create all the fields for the integration, based on the source class.
    This button will create all the fields, based on the query that is associated with the integration.
    Renumber will renumber the fields, so that no fields have the same number. The field field will get the value 1, and so on.
    Multi select fields, and activate/deactivate the fields.
    Field Description
    Field ID This is the name of the field. When manually creating a integration, it will be the column name, or the XML tag identifier. If a source class is selected, normally the fieldname is automatically provided.
    Type The field type can be a database field, Class method, display method or a free text. Selecting Field means that the value is fetched from the associated table and field.
    Class method, means that the value is fetched/calculated in the associated source class. Display method, means that the value is fetched from a table display method.

    Free Text means that the values is defined in the default value field.

    Table Tables means the table where the value is selected from. Since the data source can be a query, there can be several tables to select data from.
    Field This is the field from the selected table. If the type is a display method, then the name of the display method can be selected here. For Class methods, it is not necessary to select a field. But when importing data, the data will always be placed in the field defined.
    Default value When exporting or importing data, and the source is missing a value, then the default text will be used.
    Description Just a textual description of the field. By default the text here is fetched from the help field in the extended data type.
    Active Only active fields will be imported/exported. Fields that is not active will be filtered away on approved messages.
    Field number The field number defines the sequence that the fields will be defined in a file. In a CSV file, field number 1 will be first, followed by 2. The field number can be defined manually, or automatically by using the “renumber” button. The field number can also be moved up/down by using the “up/Down” buttons.
    Unique index field This field indicates will this field should be regarded as a unique index field. When importing data, sometimes we want records to be updated instead of being inserted. To find the associated record to update, the Consignor integration will use all “unique index fields” to find the record to be updated.
    Mandatory Fields can be defined as mandatory. This means, that when importing, this field needs to be filled in.

    Export format setup

    The export format is used to defined if the “export dialog” should be presented to the user.

    Field Description
    Worker Name of the worker
    Show dialog Indicates if the “export dialog” should be presented to the user.

    Other menu items

    In the top of the form, there are some more buttons.

    Button Description
    Create a new integration
    Delete an integration
    Shows logged messages
    Manually export data, using a query window
    Import messages by selecting a file, or by selecting a path to fetch all the files from. The import can also be set in batch, and can periodically be executed to import the files.
    To improve performance, the consignor integration does a lot of caching of export/import definition. When changing on an existing integration, the cache should be reset, by clicking on this button.

    Consignor messages

    All consignor import/exports can be logged, so that the exported/imported values is documented. There is a small performance penalty on logging messages.

    Field Description
    Message A unique message ID
    Message type Type of the message
    Processing date Date the message was imported/exported
    Worker Name of the worker that performed the import/export
    Import/Export Import/export type
    Filename Name of the file that has been exported/imported.

    Field values

    In the field values, all the field values are presented.

    Field Description
    Field ID Name of the field. This is used on column name, or in a XML tag.
    Field number The field number that is used
    Field value Value of the field
    Description Description of the field
    Multi line Field value In the bottom there is also a field that shows a multiline version of the value. Fields like addresses is often multiline, and will be correctly represented here.

    I hope to release the tool to CodePlex in the beginning of 2014.

    Happy DAXing J

Posted in Uncategorized | Tagged , | Leave a comment

SQL script for rebuild/reindex indexes for Dynamics AX 2012

I often use my blog as a personal archive, and this post is for me to quickly find a script I use at customers that have not set up a proper SQL maintenance plan for indexes and statistics. This script … Continue reading

Gallery | 2 Comments