How To: Long Running Reports

Microsoft Dynamics AX 2012 R2



One segment of reports worthy of its own classification are those operational reports that incur heavy processing time due to the number of objects involved in generating the report data set.  The vast majority of our out-of-box reports take on average <1 minute to render to screen depending upon the size of the data set.  However, there are many core reports that include business logic that iterates over transactions and inventory information which could easily exceed 10M table records in a production database.  As a result, these reports can take hours to complete the data set generation for the report.  A safe rule of thumb is to treat any report that takes >5 minutes in a non-production environment as a Long Running Report thus deserving special consideration when planning out the solution.  A few examples of long running reports include the Trial Balance Report, Customer Aging Report, and the Inventory Dimensions Statement Report.

What's important to understand as Report Developers is the fact that the SSRS Server utilizes service calls to communicate with the AOS when constructing the report data set.  As a result, the process of generating any report data set is subject to these service timeout limits.  By default, service timeouts are fixed at 10 minutes.  Further, any data set generation process exceeding this service timeout minute will fail to complete.  This article describes the extensions introduced as part of the Microsoft Dynamics AX 2012 R2 Release to facilitate the Long Running Reports to ensure that they are able to complete even if they exceed the 10 minute service timeout limits.

How do I migrate to Pre-process RDP?

  1. Modify RDP base class:  SRSReportDataProviderBase -> SRSReportDataProviderPreProcessTempDB 
  2. Update table type:  InMemory -> TempDB 
  3. Perform a full compile of IL 
  4. Restart the AOS 
  5. Introduce Controller class to run the report 
  6. Update Output Menu Item:  Report -> Controller class


Here's a quick YouTube video demonstrating the process of creating a pre-process RDP class for a Long Running Report: