Converting Dynamics NAV Classic Reports To RDLC – Part 1

Updated: Aug 22, 2018

An Inevitable Conversion

As Microsoft has already announced, Dynamics NAV 2013 will run only RDLC reports and will discontinue the use of NAV classic reports. This means all customers upgrading to NAV 2013 will have to convert their classic reports to the RDLC format.

Some will undoubtedly dislike this forced conversion, but we believe it’s an opportunity for NAV customers to greatly enhance their reporting capabilities, not only for NAV 2013, but also for NAV 2009, where RDLC reports are optional.

What is RDLC?

RDLC stands for “Report Definition Language Client-side”, an XML markup language used by Microsoft’s Visual Studio to define and store report definitions.

RDLC reports are rendered by a .Net control called Report Viewer, which can be embedded in .Net applications.

The Report Viewer does not play a part in retrieving data; it merely formats and presents the data supplied by its host application. This all happens locally, i.e. on the client, which explains the “Client-side” portion of RDLC’s full name.

Dynamics NAV acts as the host application for the RDLC Report Viewer. It is therefore up to NAV to retrieve the data and supply it to the Report Viewer along with the RDLC report definition.

How does NAV retrieve the reporting data? First, let’s take a look at the existing situation in NAV 2009 R2.

RDLC in NAV 2009 R2

When you run a report from NAV’s classic client, it will be a classic report – no exceptions – which means NAV will process the classic data items and the classic layout in concert to render the report in the classic report viewer.

When you run a report from the RoleTailored Client (RTC), the first thing NAV must do is determine if the report has an RDLC layout. If it does not, NAV will invoke classic client functionality to run the classic version of the report.

If the report does have an RDLC layout, NAV will still use the classic data items, but, in this case, it will retrieve all the data first, flatten it into one dataset, then hand both the flattened dataset and the RDLC layout off to the RDLC Report Viewer for rendering. Note, none of the classic report code beyond the data items will be processed (i.e. none of the code in the report section triggers will fire):

Note, also, that only data item fields placed in one of the sections of the classic report will make its way into the dataset for the RDLC report.

RDLC in NAV 2013

In NAV 2013, there won’t be any classic reports, so NAV will presumably retrieve and process the data using some other mechanism (word is the old classic report object will become strictly a dataset designer, but we’re waiting until we get my hands on the final version of NAV 2013 to verify). And, as mentioned, the only way to render reports will be via the RDLC Report Viewer.

The RDLC in NAV 2013 will upgraded to the 2008 version, which will add even more reporting functionality to its already impressive toolset.

However, Microsoft has announced that customers cannot upgrade directly to NAV 2013. They must go through NAV 2009. So the remaining parts of this article will focus entirely on converting reports to the RDLC in 2009 R2.


Just to avoid any confusion, we’ll finish today’s article by clarifying the differences between RDLC and RDL.

RDL is the report definition language used by Sequel Server Reporting Services (SSRS), Microsoft’s powerful server-based reporting engine. RDL files are created by SQL Server’s Business Intelligence Studio, which is a specialized implementation of Visual Studio geared toward BI projects.

RDL and RDLC are close cousins. For example, they share the same XML schema. But, as mentioned, RDLC files contain none of the information required to retrieve data. This gives them the flexibility required for use in general applications, where data may sometimes come from a program or other non-standard data source.

Next Post

Now that we’ve gotten the background information out of the way, part 2 of this article will look at the basic process of converting classic reports to RDLC.