Crystal to Microsoft Power BI, Crystal to RDL,RPT to RDL,crystal reports vs sql reporting services, Migrate crystal reports, Crystal to RDLC, convert rpt file, Crystal Reports to RDL, Crystal Report to SSRS, Crystal Reports to SSRS, Convert Crystal Reports to Reporting Services,Crystal Report Migration, Crystal Migrator, Crystal Migrater
  Our customers are mainly corporations and government bodies that in many cases were referred to us by Microsoft. Those customers have converted hundreds of reports each, and after years of continuous improvement you can benefit from our experience.

We do NOT hand modify your crystal reports - although we do offer consulting services to fully test your reports against your data. This means you get your converted reports back IMMEDIATELY - less than 30 seconds per report - not in a day or a week.

This is how we can offer a consistent low price for what others call advanced or full conversion, and they charge 3-10 times as much!

Our report conversion engine gives you reports that are syntactically correct and ready to run, except for a small number that are due to the lack of support for a feature in SSRS/RDL. See below for details.

You want examples? Try your OWN reports for FREE!
See our Pricing page for details.

Major Features Fully Converted
  Case sensitivity and trailing space.
SSRS/VB string/text comparison is case sensitive and trailing space is significant, Crystal is case insensitive and trailing space doesn't matter.
We convert your code to ensure that string comparisons work the same (See FAQ for more information). No other conversion vendor does this, and without it, your reports are unlikely to run correctly, and you will have to inspect and possibly correct every string comparison in your report.

We fully convert the 'Previous' and 'Next' functions.
SSRS does not have a 'Next' function, and the 'Previous' function is considered an 'aggregate' (similar to sum(...)) which means you cannot use it in an expression within another aggregate. You also cannot use it in an expression outside of the 'detail' group.

E.g.   =Sum(Iif(Previous(Fields!Department.Value) = 'N/A', 0, Fields!Sales.Value))

We have implemented these functions so that they work the same as in Crystal (outside of an Aggregate). No other conversion vendor does this and you are likely to spend days trying to find a solution for this.

The table below shows the major features of Crystal reports that are fully converted into SSRS/RDL by Crystal Conversions.
This is not an exhaustive list.

Visual Objects
Blob Field Converted to Image Field
Box Converted to SSRS Rectangle or Tablix cell borders/shading
Chart *Gauge not converted*
Crosstab Converted offline for no extra charge
Database Field
Parameter Field
Picture/Image Optional - Increases conversion
time slightly
Subreport Includes one-way passing of shared variable values.
Visual Element Properties
Conditional Colors
Conditional Visibility
Date & Number Formats Converted to international formats
Font, Size, Style Expressions
Section Coloring Expressions
Multiple Fonts/Colors in
single text field
Language Elements
VB and Crystal Syntax
Formulas Inline or in VB Code Section
Report Custom Functions
Repository Custom Functions Not accessible
Date Ranges
Global and Local Variables and Arrays
Loops Crystal and VB format
'From', 'To', 'In' Ranges
Special Fields *Some Restrictions*
Database Objects
Record Selection Can also extract SQL to separate file for use as stored procedure
Record Sorting
SQL Expression Fields
Shared Data Sources Creates RDS files
Stored Procedure
Summary Fields
Running Totals
Previous & Next Functions New May 2017
Document Map On Outer Group
Group Selection/Filtering
Group Name Expressions *Some Restrictions*
Group in Specified Order
Group in Specified Order
by Date Range
Group Sorting
Group Hierarchically Not converted directly
but See this article
Page Margins
Page Margins Expressions
(Crystal 2011 feature)
Not supported by SSRS
New Page Before *Not All Sections*
New Page Before Expression Not supported by SSRS
New Page After *Not All Sections*
New Page After Expression Not supported by SSRS
Reset Page Number *Not All Sections*
Reset Page Number Expression *Not All Sections*
Print at Bottom of Page Not supported by SSRS
Parameter Default Values
Parameter List Of Values
Subreport Linking
Can resubmit for free Can use different options to see what works best for each report, or can reconvert to use new features or improvements.
Convert many at once Upload single RPT file or zip file containing many RPT files.
Conversion Log Online and Offline Log that can be viewed using any web browser.
Project file creation Creates Visual Studio .rptproj file.
SQL Translation Converts to SQL syntax compatible with target database.
Time to Process 10-30 seconds per report.

Items not supported in SSRS
  Here are some items that are not supported in SSRS.
  • A few math and other miscellaneous functions are not available. E.g. SSRS has 'Average' but not 'Median'.
  • Drop shadows and rounded boxes are not available. Watermarks can be done, but not in the same way.
  • Using an aggregate (e.g. SUM) for a group outside the current group context, or an aggregate within another aggregate expression. Aggregates are calculated before any report rows are produced, so some expressions will not work the same as Crystal (See FAQ).
  • Modifying a 'shared variable' value in a sub report. SSRS variables are local to each .RDL file. We automatically pass the values of the main report variables to every subreport that references them, however if the subreport modifies the value, it is not possible to pass that new value back to the main report.
  • SSRS does not execute expressions in items that are hidden (See FAQ for solutions).
  • Page Header/Footer differences:
    • Using PAGENUMBER in the report body e.g. to support alternate page background color (See FAQ for more information).
    • Page Headers/Footers can only display field data from the First or Last row of a DataSet.
    • Page Headers/Footers are of fixed size, and cannot contain subreports, charts or crosstabs.
    • SSRS does not have the ability to 'print at bottom of Page'. Here is a link to discussion about how to simulate it. None of the solutions are very good!
    • SSRS does not have very flexible page break control. Being able to specify 'Page Break Before/After' on a single matrix row would be nice. However the 'Rectangle' object has these attributes, and is sometimes possible to put in an extra GROUP that simply does a page break.
Processing Options
RDL Output Version  2016, 2010, 2008, 2005
Report Definition Language (RDL) is simply XML inside a .RDL file that is used by SSRS as a Report Template. RDL 2005 is prior to the release of SQL Server 2008 R2. RDL 2016, 2010 and 2008 are very similar, and no extra information is extracted if you choose 2016 over 2008.
Visual Studio and Report Builder 3 also automatically upgrade older versions of RDL to the version that they produce.

Data-Source / Database Type

 SQL Server/Sybase, Oracle/DB2, MySQL, MS Access, XML, Generic
The SQL syntax gets adjusted depending on the intended database engine the report is to run from. Any SQL expressions, functions etc. are converted to the syntax appropriate to that database.

The 'Generic' option will output the expressions similar to how Crystal displays them.

If SQL Server 2016 + is specified, we assume the database compatibility level is 130 or greater and therefore the SQL string_split function is available. The string_split function is used when the Crystal Record Selection Formula is: FIELD like|startswith ARRAY[].

Extract SQL into Stored Procedure

 No/Yes (Default:No)
The SQL statements can be extracted into text files with 'create procedure' syntax appropriate for the Database Type. The stored procedure(s) must be added to the Database for the report to run.
This option has no effect when the report is already executing a stored procedure or a 'command statement' from Crystal.

Include Unused DB Fields in SQL Query

 No/Yes (Default:No)
Usually you will want to include only those fields that are used in the Crystal Report. However if you know that extensive changes are to be made then you can include all fields from all tables referenced. Note that selecting data that will not be used could have a major detrimental effect on memory usage and processing time on your report server.
This option has no effect when the report is already executing a stored procedure or a 'command statement' from Crystal.

Extract Suppressed Sections

 No/Yes (Default:Yes)
Many Crystal reports have sections that are always suppressed, but they may contain formulas and expressions that need to be executed at run-time. The default is to include these sections.
Be aware that SSRS does not execute expressions in items that are hidden. This includes when an item is hidden because the section it is contained in is also hidden.

Extract Images

 No/Yes (Default:No)
The conversion process will extract embedded images from the Crystal report as PNG files, reference them in the project file, and include them in the returned ZIP file.
Most images are simply the company logo and it makes little sense to continually extract the same image many times. Upload one logo to your report server and change the reference in the RDL to point to that image.
This option may occasionally fail to find all images if the report is very complex. Just export the missing ones directly from your Crystal report.

Create only Single Column Tablix

 No/Yes (Default:No)
Crystal is a 'banded' report that only allows individual placement of elements, and its design editor leaves a lot to be desired! Consequently most Crystal reports are poorly aligned both horizontally and vertically, and many elements overlap (not allowed in SSRS).

The Tablix (Table/Matrix) control is one of the most powerful features of SSRS, along with an excellent visual design editor. We analyze the size and positioning of the visual elements to place them into real Tablix cells (like an Excel Spreadsheet). We even intelligently truncate elements, or overlay elements on the same line (within a containing rectangle object) in order to produce a multi-column Tablix.

Any box shading and lines that cross Crystal section boundaries are preserved as cell background and border attributes. Entire groups of objects widths and heights can then be adjusted by changing the Tablix column width or row height. Cells can also be merged/split to increase/decrease the width of an element.

Our 15+ years of experience of using SSRS/RDL means we believe the multi-column Tablix is what you should use, and we are the only conversion vendor that gives you all the options below.

We will use the Crystal Report Example below to demonstrate the different column options:

In the default conversion shown below, the elements are positioned (almost) exactly as they were in the Crystal report. The horizontal and vertical lines are cell border attributes which means that when a cell width or height changes, then all the lines adjust automatically.

If prefer positioning the way Crystal does it, then we give you the option to produce the report body as a Single Column Tablix. But note that you are unlikely to get good Excel output if you do this.

The example below shows a Single Column Tablix where each row contains a rectangle containing all the elements originally in that Crystal Section. The disadvantage being that vertical lines between Sections are now unrelated unique elements and may not align perfectly with the vertical line in the Tablix row above or below.

Optimize for Excel

 No/Yes (Default:No)
Selecting this option will set the 'Minimize Tablix Columns/Rows' and 'Move Page Header/Footer into Tablix' checkboxes, however these can also be set independently.

If a report is somewhat well aligned into rows and columns and has few overlapping elements, the 'Minimize Tablix Columns/Rows' option will merge column cells so the output creates better Excel spreadsheet output with fewer columns and no blank rows.

The 'Move Page Header/Footer into Tablix' will move the Crystal Report/Page Header and Footer information into the Tablix Header/Footer without creating extra columns. Note that if it is not done this way, then Excel puts the Report/Page Header on the first Sheet, the body of the report will be on the second Sheet of the Excel Workbook, and the Footer will be missing.

The result of the above report 'exported to Excel' looks like the following: