Software licensing is not a subject I often like to write about. However for Crystal Reports there are a number of reasons to tackle this in an article. The most striking is the new licensing features in the recently released XI version.
In conversations that I’ve had with different developers, both in email and in person, when we talk about reporting with Crystal, many times those conversations turn to Crystal's licensing model. Since the early early days ASP.NET, I have sensed confusion among web developers on how the licensing works when deploying a Crystal web application.
The confusion extends from Internet sites to corporate Intranets. While Crystal and now Business Objects have improved their products in many ways, I’ve felt that the licensing issue has always been a liability for them in the .NET marketplace. In this article, I’ll try to put a layman’s spin on my understanding of the Business Objects licensing schemes for the different versions of Crystal. This is not the official view from Business Objects, but the view of someone who’s worked with the Crystal products for a while. If you decide to purchase a Crystal product from Business Objects, please be sure to double-check my opinion on the product's licensing.
With the release of Crystal XI, there’s some relief for intranets on how that licensing works. This change in licensing demonstrates to me that the folks at Business Objects do listen to customer feedback.
Crystal 8.5, .NET and 9 Licensing for Web Sites
I believe that originally with Crystal .NET, which is a scaled down version of Crystal 8.5, the concurrent limit out of the box was for 3 users of an application utilizing one processor. What that meant, as far as I could tell, was that if a user was accessing the reporting engine that was where the concurrency occurred. If a fourth user hit the server, they could get an ugly error message to the effect that the server was not available, try back later. You could get around this by using the Report Application Server or creating your own code to display a more user friendly error message. Also, if you have Crystal 9 Developer edition, then the engine will automatically retry the connection for you without the ugly error message.
Notice that the one processor limitation is there. I’m not sure how that impacts web farms, but the impact is obvious for multi-processor servers. You’ve got to upgrade or buy more CAL’s for that box.
Once the user has the report displayed, particularly if you are outputting to a PDF file, then the report would not be counted against your concurrent total. However, when the report is retrieving information is when the concurrent users counts. Let’s use the following code, from the Automagically Display Crystal Parameters Part III, to demonstrate where I believe the concurrency occurs.
Public Sub ExportData(ByRef oRpt As Object)
Dim fs As IO.FileStream
Dim FileSize As Long
Dim oDest As New CrystalDecisions.Shared.DiskFileDestinationOptions
Dim ExportFileName As String = Server.MapPath("/") &
ConfigurationSettings.AppSettings("ExportDir") & Session.SessionID & ".pdf"
'Dim oExport As New CrystalDecisions.CrystalReports.Engine.
oRpt.ExportOptions.ExportDestinationType = CrystalDecisions.
oRpt.ExportOptions.ExportFormatType = CrystalDecisions.[Shared].
oDest.DiskFileName = ExportFileName
oRpt.ExportOptions.DestinationOptions = oDest
'Build Target Filename
'Send the file to the user that made the request
Response.Buffer = True
' Response.AddHeader("Content-Disposition", "attachment;
' filename=" & Session.SessionID & ".pdf;")
fs = New IO.FileStream(ExportFileName, IO.FileMode.Open)
FileSize = fs.Length
Dim bBuffer(CInt(FileSize)) As Byte
fs.Read(bBuffer, 0, CInt(FileSize))
Catch e As Exception
My understanding is that when the code gets to oRpt.Export(), that is where the Crystal engine is utilized.
Now this is where I get a little fuzzy. I believe that if we have four copies of Crystal 9 and we deploy Crystal Reports to four different single-processor servers, we would have the 3 user limit on each server. I don’t believe there would be more CAL’s to be purchased.
Today, if you are going to purchase a Crystal product from Business Objects, your choices are Crystal 10 and Crystal XI. So let’s move on to those licensing schemes.
Crystal Reports 10
Crystal 10 was released a little over a year ago. Besides adding a great new report viewer for web developers, the licensing was also a little different. Of course this all depends on the version you have, but let’s say you have Crystal Professional. From what I could tell, the Web licensing gives you something called Crystal Enterprise Express. This allows five named licensed users for the report designer. This is for specific individuals, not shared licenses.
If you use Crystal 10 Developer edition, each developer will need his or her own copy of the software. Then, if your server is single processor, you can deploy your application with reports. At this link, I did not see a limit on the concurrent users, but I’m thinking it is five named users. I’m still a little fuzzy on this, but it doesn’t really matter for most folks, because I have to imagine that your servers are multi-processor. If that is the case with Crystal 10, then you need the Web Farm/Web Garden License. However, with the release of Crystal XI, that license becomes a moot point.
Keep in mind that for deployment with thick-client applications, there is not a licensing restriction; it’s just for reports that are used in web-based applications.
Crystal Reports XI
Crystal XI was released recently and it seems that the licensing department at Business Objects has heard what customers are saying. Depending on the version of Crystal XI that you purchase, you can now have an unlimited license for web applications that are deployed internally. In this case, if you purchase Crystal XI Developer edition, you now should not have worries about internal users getting bumped off reports. The actual wording in the license is as follows:
Crystal Reports Developer Edition provides the rights for unlimited internal corporate deployment of the Crystal Reports .NET, Java, and COM (RDC) report engine components
Keep in mind that this licensing is different for Crystal Reports Server XI. It looks like there are still some limitations on the number of users in Crystal Reports Server which uses the CAL for user licenses. Also, there is still a limitation if you are deploying these reports for external audiences.
Business Objects, and before that Crystal Decisions, have listened to their .NET customer base for a lot of different things in the past. Easier logging in using their object model and an improved viewer for Crystal 10 are a couple of improvements I have noticed over the past few years.
In the licensing area, Crystal XI is getting close to where I’d like to see it. The internal deployment licensing model can help anyone who is trying to sell their shops on using Crystal as the standard. I’d like to see the licensing be a little less complex, but then I’d like that for almost every software purchase I make.
Hopefully this helps to understand what options would help you in using Crystal in your ASP.NET application. Happy coding!