Skip to main content

Notifications

Pre-processed Data Sets for Long Running Reports

INTRODUCTION

The vast majority of our out-of-box reports take on average <1 minute to render depending upon the size of the data set.  However, there are application reports that include business logic that iterates over transactions and inventory information which could easily exceed 10M rows in a production environment.  For these reports, the service may require several minutes to produce the data set.  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.

In some cases, the process of generating a report data set cannot exceed 10 minutes.  Sessions that exceed this service timeout may produce an error.  This article describes the extensions available in Dynamics 365 for Finance & Operations to facilitate Long Running Reports. Use the following steps to ensure users are able to produce reports based on data sets that require >10 minutes to complete.

LongRunningReportGuide.png

RESOLUTION

Use the following steps to convert an existing RDP based report to a pre-Processed solution

1.  Update the following properties on each of the tables returned by the RDP class

  • Created by - Yes
  • CreatedTransactionId - Yes
  • TableType – TempDB

2.  Synchronize above tables to the AXDB using DBSync operation in Visual Studio

3.  Change the RDP class so that it extends:  SRSReportDataProviderPreProcessTempDB 

4.  In the DP class, set table property "setConnection" with value "this.parmUserConnection()" on all the table instances which are referenced above report dataset.

Note: make sure all the instances have been set the property correctly if there are more than 1 table instances. For example, if there are 2 customerListTemp tables, set properties on both customerListTemp1.setConnection and customerListTemp2.setConnection

5.  Open the SSRS report in VS and hit refresh on the dataset. At this point, you should see the field 'createdTransactionId' added to the available field.

6.  Rebuild the project to generate the report definition

7.  Re-deploy report to report server

You're done.  This report now uses a pre-processed data set which allows data processing time to exceed 10 minutes.

Comments

*This post is locked for comments