How to Identify Outdated Client Versions in Dynamics AX
I was recently performing a Dynamics Health Check for one of our clients. They have six AOS servers and had recently undergone a kernel upgrade. While reviewing the Event logs on each of the AOS servers, I noticed a lot of clients were connecting and logging an event in the Windows Application Log. The event logged was:
Object Server 01: Internal version mismatch. Microsoft Dynamics AX client from SuperClient (126.96.36.199.0) tried to attach with 6.2.1000.4051 revision of kernel.
This can potentially cause unexpected issues when you have mismatched kernel versions. As a best practice, strive to have all of your Microsoft Dynamics AX components on the same build. Doing so helps maintain stability of the system and prevents client/server calls that are not interpreted correctly between major version build differences. It is a preventative step you can take to help keep gremlins out of the machines. Anytime a client tries to connect to an AOS with a different version the AOS will log the message above.
A question you might be asking yourself is, how do you find all the outdated clients so you can patch them to prevent this message from being logged? There are a couple of approaches you could take. I’ll outline three and show two of these options, leaving it up to you to decide what will work best for you.
Options for Identifying Outdated Client Versions in Dynamics AX
Option I: Create a custom XPO to log mismatched clients to a log file.
This requires more time and effort than I was willing to put into it, so I decided against this approach. But it is a possible approach you could take.
Option II: Find outdated clients from within AX
One option that I found discussed was using the User log form and adding 2 custom fields to it to get a list of the users with lower client build versions than the current kernel.
To do this:
1. Launch Dynamics AX
2. Open System administration
3. Under Inquiries click User Log
4. Right click and select Personalize
5. Click Add fields
6. Expand User log
7. Select Build Number and click add
8. Select Computer Name and click add
9. Close the Select Fields form
10. Close the Personalization form
11. Close the User log form
12. Reopen the User Log form and you will see the 2 new fields added
This list can be further refined by a specific build version target. In my case I wanted all clients not equal to 1000.4051. To filter do the following:
13. Click CTRL+G to bring up the form filter
14. In the Build number column enter !1000.4051 (this is the kernel version that AOS had on it).
And there you have a report of all users and computers that are not equal the target version of the AOS set. However, I didn’t find this particularly useful as the Time event column is for each login, and multiple user ID’s per computer. Yes, you could export this list to Excel and clean it up, but I had over 3,000 entries and I didn’t want to muck around with that. Instead I opted for option 2 below.
Option III: Find outdated clients from SQL
Instead of using the form and exporting to Excel, I instead decided to capture the query the client was sending and refine it to my needs as I knew I would be needing it many times. I won’t bore you with all the details, but I capture the query using SQL profiler trace. I then modified the query to provide me with only the computer names and build versions based on the last log-on time. My reason was that I didn’t care about individual users, rather individual machines. And to keep the list short, I only wanted the last time the client logged on, all previous times didn’t matter. Ultimately this is what I ended up with, feel free to tweak to your own liking.
Hopefully this will help you get the list of clients that need updating a lot quicker than other methods!
Under the terms of this license, you are authorized to share and redistribute the content across various mediums, subject to adherence to the specified conditions: you must provide proper attribution to Stoneridge as the original creator in a manner that does not imply their endorsement of your use, the material is to be utilized solely for non-commercial purposes, and alterations, modifications, or derivative works based on the original material are strictly prohibited.
Responsibility rests with the licensee to ensure that their use of the material does not violate any other rights.