AX2009 SecurityProfiler Tool

UPDATE: This tool has been updated to support list pages (e.g. Sales Table List Page, Customers List Page) that use queries as their datasource (22/June/2010)
UPDATE: This tool has been updated to use the language from Infolog, and the sort order on the report has been changed to descent on the ProfileId (29/Oct/2010)

The attached tool, an xpo file inside the zip file, tracks what security keys are being used when a user navigates thru the application. 
The existing AX class we hook into gets used every time a form or report is opened in AX so the tool will slow performance down – so don’t load this in a production environment

Also this doesn’t work for menu items that call classes but we don’t expect that to be a big deal. 
The tool is useful for sorting out security in a test environment.

In order to use this tool go in as an Administrator that has access to all of the forms and reports in the system:

1. Extract the xpo file from the attached zip file and Import it into AX

2. Close the AX client and re-launch it again. This step is important because we have added 2 menu items to the Administration menu and they won’t show up until AX is reloaded.

3. Under Administration go to Security Profiler.

4. Click the Start Profiling button – and leave this form open.

5. Navigate to the forms and reports you want to gather security key information about.

6. Click the Stop Profiling button in the Security Profiler window (the same window opened in step #4).
       a. A form will open showing you all of the security keys that were hit while you navigated thru the system.
       b. To print out the results listed in the report click the Print report button and click the Default button on the print options dialog that opens.
       c. To view your existing security profiles click Administration > Security Profile Results

This tool should not be loaded into a production environment.

Disclaimer: This programming example is for illustration purposes only. Microsoft disclaims all warranties and conditions with regard to use of the programming example for other purposes. Microsoft shall not, at any time, be liable for any special, direct, indirect or consequential damages, whether in an action of contract, negligence or other action arising out of or in connection with the use or performance of the programming example. Nothing herein should be construed as constituting any kind of warranty.


--author: Becky Newell
--editor: Daniel Durrer
--last edited: Daniel Durrer (29/Oct/10)

Comments (13)

  1. Jonas Bergman says:

    OMG! You cannot imagine how much time this will save us!

    We were actually talking about how much we needed a tool like this just yesterday morning, since we had lots of problems last weekend after converting one customer to Ax2009. Your tool solved our problem in just 5 minutes.

    I made a few small adjustment in our system. Changed "EN-US" to infolog.language(), and added DESCENDING sorting on the ProfileId, but altogether: Great job and many thanks from a formerly frustrated Swede!


  2. Chris says:


    Great tool!

    Does it work for portal as well?



    The tool wouldn’t work for EP since EP doesn’t execute the same classes for its “forms” that the AX client does.  The tool wouldn’t be able to detect what forms had been opened.

    Best regards


  3. Jonas says:

    Just want to make a note: after using the tool for a few days we noticed that the project we imported into our test environment had overwritten the customizations that were made to the Administration menu. So, I recommend to not import the Administration menu from the project, but rather add the two menu items manually.


  4. Naz says:

    Jonas – how would I go about adding the two menu items manually? I am new to AX and need some help if you have some time please?


    To pull menu items on to the Admin menu in the AOT go to Menu Items > Display.  Find the SecurityProfilerDialog and SecurityProfilerKeys and drag-and-drop those to the menu in the AOT under Menus > Administration. HTH.

    – Becky

  5. Jonas says:

    I got the latest version and implemented the changes in our own project.

    It would however be great if you could implement some of my changes in this "official" project. I think that these changes would make the project even better:

    Change "EN-US" to infolog.language(),

    add DESCENDING sorting on the ProfileId in the report

    Removing the Administration menu from the projet might be risky, but keeping it is risky too.

    I also adjusted the code to provide supprt for Action type menu items, but you will probably have a better solution for that than I have.

  6. James says:

    Many thanks, is the tool available for DAx4.0 as well?


    – yes there is an AX 4.0 compatible tool now available, see

    — Anup 

  7. John says:

    Is the tool available for DAX 4 aswell?


    – Yes, see


  8. Mesru says:

    Where can I download the tool from? I cannot find it in CustomerSource. I really need this tool!


    The tool is attached to the blog post as file


  9. How to uninstall says:

    Does anybody know how to uninstall this tool ?

  10. Hi, it's an XPO so just go to AOT projects, find the private project for security profiler and delete the objects. If any of the objects are touched by other modifications then you may need to resolve differences to delete them. I would expect removing it is a developer task really.


  11. SysGlobalCache issue says:

    This project modifies ClassesClassFactoryreportRunClass in a way that may prevent reports from running from the AOS batch server.  If you get the error message "Error executing code: SysGlobalCache object not initialized.", this could be the problem.

  12. Fred V says:

    My Security Report Lists duplicate objects within the same security key. Why is this? Does this mean the object is being accessed more than once? Or is this a problem with the report.

    I am new to AX and Security is my number one priority at this time.


  13. Hi Fred,

    Yes, don't worry about the duplicates, it tracks everything that happens, so the same object might come up multiple times as it's been access multiple times.


Skip to main content