Skip to main content

Dynamics AX 7 - Searching using BaseX

In a previous post I wrote about the benefit of being file based model store. It allows for quick searching. On top of this the files being xml it allows for using complex searching using XPath and XQuery to find properties. There is a tool out there called basex which is a light weight xml database engine. Allowing for very powerful query and searching.

Download it from the site http://basex.org

Create a new Database and select the Packages folder. Make sure to tick skip corrupt files as there is 1 file it is not well formatted xml.

2016-03-18_1244

Take a few minutes

2016-03-18_1035_001

Screenshot below gets all the developer documentation on the tables.

2016-03-18_1512

Another example count the methods and the their name.

2016-03-18_1508

Big thanks to Peter Villadsen’s session at the recent tech conference.

Mining the Metadata and Authoring X++ Best Practice Rules in Microsoft Dynamics AX

I copied his queries from the video to get started (above two screenshots) but I already started experimenting with different things we can get out of the files.

Comments

Palle Agermark said…
Just what I needed for something this monday. Thanks.
Unknown said…
I'd like to add my thanks too, as I have found this technique to be very useful on a number of occasions. For example, if you want to get the KB numbers of the hotfixes applied to an AX 7 code base, you can use the following query in BaseX:

declare namespace d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays";
for $k in //KBNumbers/d2p1:string/text()
group by $k
order by $k ascending
return {$k}
Unknown said…
I see that the XML tags I had around {$k} have ben stripped out of my comment above. If you just want a list of KB numbers, remove the braces, or if you want the number wrapped in an XML tag, just enclose the expression in braces with the appropriate opening and closing tags.
Munib Ahmed said…
Gold. Nice one Martin.
Thanks for that.

Popular posts from this blog

AX - How to use Map and MapEnumerator

Similar to Set class, Map class allows you to associate one value (the key) with another value. Both the key and value can be any valid X++ type, including objects. The types of the key and the value are specified in the declaration of the map. The way in which maps are implemented means that access to the values is very fast.
Below is a sample code that sets and retrieves values from a map.
static void checkItemNameAliasDuplicate(Args _args) { inventTable inventTable; Map map; MapEnumerator mapEnumerator; NameAlias nameAlias; int counter = 0; ; map = new Map(Types::String, Types::Integer); //store into map while select inventTable { nameAlias = inventTable.NameAlias; if (!map.exists(nameAlias)) { map.insert(nameAlias, 1); } else { map.insert(nameAlias, map.lookup(nameAlias) + 1); } } //retrieve from…

Azure DevOps Release Pipeline–Walkthrough

It is a great start to 2019. Joris from Microsoft has welcomed the year with the release of the Azure DevOps Release Pipeline task on the marketplace. Official blog:https://community.dynamics.com/365/financeandoperations/b/newdynamicsax/archive/2019/01/18/first-azure-devops-task-released Addition blog:https://daxmusings.codecrib.com/2019/01/azure-devops-release-pipeline.html I thought I would do a walkthrough for those that haven’t had a chance to play with it yet.
New release pipeline In Azure DevOps, click on the New release pipeline.
You will get an option to select from a template. Just select “Empty Job”. In the first stage, make sure the Agent job is using “Hosted VS 2017”.

In the Agent job click on the + icon to add a task. Select the LCS Asset Upload task. If you don’t see, then you have not installed it. Just select the “Dynamics 365 Unified Operations Tools” link at the bottom. Otherwise, install from here https://marketplace.visualstudio.com/items?itemName=Dyn365FinOps.dynamics36…

Detailed guide on creating Business Events with Azure Service Bus

I have been working with the new Business Events feature released in FinOps and you should read the docs site first.
This blog post focuses primarily on setting up Azure Service Bus endpoint. Setting up the Azure services can be tricky if you are not familiar with Azure Key Vault and application registrations.
I have sequenced the post so that you don't have to jump around. There are four key elements to this: Create the app registrationCreate the service busCreate the key vault secretConfigure FinOps Create an App Registration In the Azure Portal, navigate to the Azure Active Directory menu. Click on App registrations (there is the old one and the preview menu - they are the same but the UI is a bit different). I will show the original App registrations way.


Create a new Web app/API registration and give it a name. It doesn’t really matter in our case what the sign-on url is.




Take note of the Application ID as you will need it later for setting up the Business Event.

Under the Ke…