Navision RDLC reporting – SetData and GetData – Why It Is REQUIRED

Ever wondered why there’s no tutorial on how to create a Sales Order report from scratch in the RDLC? The reason is because it takes a LONG TIME! Even for an experienced developer, it takes a long time. As I previously mentioned on my article, Microsoft really needs to address this in future versions.

The reason for SetData and GetData is not because of performance reason as stated in the manual 80146B. For additional information on defining SetData and GetData, please look here.

For multiple pages, the header data is dependant on whether there are lines. If you’re printing multiple form type reports like the sales order and you do not use the SetData and GetData, the header will only link to the lines displayed on the first page of the report. So this means that if your sales order is printed to the 2nd page, the header information will all disappear.

Here’s an example if you create a report without using the SetData and GetData logic:

This is the first page. As you can see, the header displays nice and pretty. I used whiteout to remove some sensitive information in Paint.

Now this is what happens when you print the 2nd page:

No, it’s not an error. You’re seeing it correct. It’s a blank page. I didn’t even have to use Paint to remove any information.

The reason why the 2nd page is blank, again, is because the link was done only on the first page on the header. If the report goes to the 2nd page, the link is essentially gone, therefore, no value is loaded and so nothing is displayed.


So when you create a report that has headers in forms (sales order, quote, etc). You need these:

Shared Offset As Integer
Shared NewPage As Object
Public Function GetGroupPageNumber(NewPage As Boolean, PageNumber As Integer) As Object
    If NewPage
        Offset = PageNumber – 1
        NewPage = False
    End If
    Return PageNumber – Offset
End Function
Public Function IsNewPage As Boolean
    NewPage = True
    Return NewPage
End Function
Shared HeaderData As Object
Public Function GetData(Num As Integer) As Object
   Return Cstr(Choose(Num, Split(Cstr(HeaderData),Chr(177))))
End Function
Public Function SetData(NewData As Object)
    If NewData <> “” Then
        HeaderData = NewData
    End If
End Function

 And you need these controls with the proper code:

We spent hours and hours trying to get our report header to print on multiple pages. Don’t make the same mistakes we did!

EDIT – Thanks to Steven for pointing this out. It turns out that this was mentioned on the 80146B manual on Chapter 3 page 35. Shows you that you shouldn’t go through the 300+ page manual quickly!

Open Suggestions to Make Navision RDLC Reporting More Efficient

Working with the new RDLC reporting for a few months now after the NAV2009 release, I thought I would like it as I work with it more. Sad to say, that hasn’t happened yet. It’s like being in a bad relationship and hoping some day that it’ll magically get better. And from the general consensus from NAV forums like and, I’m not alone.

The new RDLC reporting tool in Visual Studio makes creating new reports is a lot longer (and tougher) than if you were to create the same report in the C/side report writer. For NAV, we’re all about efficiency. This RDLC reporting tool is by no means efficient. The report writer should be simple and can be easily picked up by non-developers (i.e. end users), RDLC reporting tool is not.

When I saw the demo for the capabilities of the new reports, I must admit I was drooling. If only I had known at the time that I would have to pull all of my hair out to realize only a portion of those capabilities.

Microsoft said that NAV2009 (Navision 6.0) was going to create new opportunities for partners, I’m not sure who they’re referring to. For companies that create external reporting tools like Jet Reports or Pivotier, I have to say this RDLC reporting tool benefits them the most. They are probably laughing all the way to the bank. But for the rest of the general public, I’m not so sure what kind of opportunties they’re talking about…

So in an attempt to make this relationship better and easiers for partners and end users alike, I would like to make 2 suggestions on how Microsoft can help us improve the relationship we have with the new RDLC reporting tool. Yes, just 2 suggestions.

Suggestion #1:
If Everything Has to be in Table Format, Why Not Just Get Rid of the Layout Designer?

For this suggestion, I’m going to use report 10048 (Customer/Item Statistics). This is one of the more popular reports for customers to analyze who bought what.

Before a standard C/Side report can be converted into the RDLC format, you must first create the sections in the C/side report designer. This is what it looks like on the Section Designer:

The report printed from this is pretty straight forward:

It’s not perfect, but a novice Navision developer or the ned user can easily go in and modify the formating easily and add and remove fields very easily.

Now let’s look at the RDLC layout for this same report:

The output is almost exactly the same. If you save this report to Excel, the formatting would still be messed up. So all the features stayed the same and all of the problems came along with it. Other than the ability to save it as PDF, there’s no benefits that can be seen.

This report is not what the customer signed up for and it’s not what we’ve all see in the demos. I spent a few hours creating the proper layout so the report can take advantage of the features described in COURSE: 80146B – Report Design in Microsoft Dynamics NAV 2009. Here’s what I came up with:

This is the RDLC layout that I had to create in order to generate a report like that:

In order to take full advantage of the capabilities that you saw in the NAV reporting demo, you have to put everything into Table(s). For every standard NAV report, none of the formats created allows you to easily convert it into the format that is needed. Even if you used the Create Layout Suggestion feature in the report designer, it wouldn’t format it properly into what is needed.

The problem is that the reporting tool is still trying to replicate how standard C/side report works. Standard C/side report does not work well in the RDLC environment. It’s what we’ve been told. We get it. But why is the tools built within NAV saying the opposite?

If everything nice and cool in the RDLC requires Table(s) to work, why not just eliminate the RDLC layout designer completely? For list type reports (which is what we’re dealing with), we only use the layout designer to put fields we want to be displayed. We’re not making anything pretty like Sales Order, Sales Invoice, etc. If the user needs list type report to look pretty, or add some wierd format, it’s easy enough to export this report to Excel and manipulate the formatting there.

If that’s the case, why not just allow a table-like report designer and have this designer automatically create the report layouts for us? This designer should allow us to easily group records, create formulas, bold, underline, etc. Allow us to utilize the capability of charting, document mapping, etc with option like interface.

Basically, as I mentioned previously, eliminate the layout designer completely and have the computer AUTOMATE the layout process for us. Create the appropriate tables for us to allow us to take advantage of the new reporting features.

Having this will allow the end users to easily create their own reports within NAV with greater efficiency and would promote the non-IT end users to be more involved with NAV. And we know for a fact that the more involved the user becomes with how the data flows, the better they will trust in the system and the happier the users will be.

The last thing we want NAV to become is a software that only people with high technical ability knows what’s going on.

Suggestion #2:

For form type reports, blow it up!

For form type reports, such as sales order, sales invoice, purchase order, etc. We don’t need nice features like document map, expand/collapse, etc. So why are we fussing with the RDLC layout report writer?

Even when the sales order is properly formatted in the RDLC, the preview of the report will not match what’s actually printed. If you print a sales order right now, the preview will not match what is being pritned on paper.

Microsoft seems to have taken away the WYSIWYG (What You See Is What You Get) functionality in print preview. Any report writer will tell you that having a WYSIWYG preview is very important when we create a delicate form type report with nice graphics, lines, boxes, etc. How can we make quick changes to align everything perfectly if we cannot quickly view them? We have to either print them on paper or print them to PDF.

The suggestion here is simple, again, eliminate the RDLC layout designer and create a new report designer for forms that allows NON-TECHNICAL to create nice and professional forms.

I will repeat this over and over again. The best customers we have are the customers that actively tries to learn the system. Most of these users are non-technical.

I understand the desire to move to a more general report writing tool like Visual Studio, I understand the need to move into a language that are more generally accepted. However, I can easily teach someone how to create and modify reports in C/side environment to a non-IT person. I cannot say the same with RDLC reporting tool and Visual Studio.

As I mentioned in the previous article, NAV is a business software, NOT an IT software. As such, everything in NAV must be designed so a business person can easily utilize its full potential. The ease of use should not stop at the front end, it should extend to the back end as well. Including development.

Dynamics NAV Server granule – Where did it go?

I got quite a pleasent surprise today while I was placing an order with Microsoft for a new Dynamics NAV (Navision) customer. While I was clicking through the granules, I was looking for the dreaded granule 9100 – Dynamics NAV Server to add to the price list  and this is the screen that I spent 15 minutes on:

Notice anything different? That’s right, granule 9100 is no longer there!! I originally thought it was a mistake and clicked back and forth, deleted and re-created the order just to get the granule to pop up. Sensing something good was going on here, I went ahead and processed the order just to see what the license would look like. If it was missing due to a mistake, I can always just write a sales support to the ordering desk and have them add it for me.

For those of you who don’t know, granule 9100 is a granule that you much purchase to have the privilege to use the Role Tailor Client or RTC. Here’s a blog article that mentions it:

After the order was processed, I did a quick search on Partnersource and couldn’t find any mentino of granule 9100 being removed. So I went directly to the Price Sheet Explanation document and this is what I found:

Happiness! The granule is, as of December 15th 2010, included in the Foundation pack. Now we don’t have to charge the customer extra just to have RTC capability!

One question remains though is what about the customers that purchased the granule? How does their enhancement play out? Do they get a credit? I’d be a little upset, not because of the amount of the granule, but because I’m being punished to be an early adopter.

Dynamics NAV (Navision) in the Cloud

With the introduction of the App-V technology for Dynamics NAV 2009 R2 (Navision 6.0), it really introduces the concept of putting Navision into the Cloud. In case you haven’t heard of App-V, you can download the white paper here describing it in detail:

What is the Cloud?
Simply put, Cloud is software applications that people can use over the internet. There are a lot of IT documents out there will give you some complex definition or a diagram of what a cloud is. Don’t get caught up in tech speak! It’s a battle you’ll never win.

The advantage of the cloud is that you don’t need to invest in expensive hardware to use powerful software. In theory, it may also reduce your need for full time IT staff since there are less hardware to maintain (However, from my experience, this is usually not the case).

The cloud is great for softwares that you can use “as is”. Software such as e-mail and CRM, yes, there are some places where you need to personalize, but it’s usually not too intensive. Even with CRM, you usually need an ERP software to keep track of information that your CRM solution cannot.

Why the Cloud model Doesn’t Work in for your ERP?
Technically, it could. The cloud software model essentially has to be everything to everybody (I will repeat this phrase quite often). The cloud software is not able to be customized because it has to be everything to everybody. Every functionality the cloud software has written has to address the needs of the mass public that are using it, not just you.

In addition, even if the cloud ERP vendor says that you are able to customize their product, you’re request is subject to be routed in many other millions of queries about modifications for their company. And likely to be handed to a developer that doesn’t know what the intent was and may not create the function you need. Why? Because the cloud software model essentially has to be everything to everybody.

Another draw back is the ability to retrieve data. When you sign your cloud software agreeement, most likely, you’ve consented in that the cloud software company owns your data. So when it comes to a time where your company outgrew the cloud model, you may have a hard time trying to get your data out. Even if you can get your data out, it may just be the data from some master tables, and not the transactional data.

As I wrote in my previous entries, every business is unique, or I should say, HAS to be unique in order to have a competitive advantage. If your business is the same as everybody else, you shouldn’t be reading this blog, you should be seriously look into your company and identify what your competitive advantages are and leveraging that competitive advantage. So if your business is unique, why are you trusting the heart of your business that has to be everything to everybody?

How does App-V (Application Virtualization) Change the Game?
App-V allows your software, in our case Dynamics NAV or Navision solution, to be published over the internet. The App-V is an framework that allows you to create a private cloud that is controlled by your company. If you like the idea of not having expensive hardware inhouse, it also allows hosting companies to host NAV for you and publishing YOUR version of Dynamics NAV (Navision) software for you.

The advantage of this private cloud model is that the software is still under your control, this means you’re able to any customizations that is unique to your business. This model takes the best part of the cloud model and leaving out the everything to everybody part.

If your business is pretty simple and you don’t mind keep track of any information that’s not available externally, and you don’t mind waiting a long time for a support/modification request, and you’re comfortable having your financial data stored somewhere, then the straight cloud model may be right for you.

The cloud technology is always changing. What my concerns are now may not be relevant 5 or 10 years down the line. But as it stands right now, I’m having a hard time justifying any company to go straight into the cloud ERP model. The ability of App-V is a good starting point to eventually move into the complete cloud.