Infor SyteLine

Migrating Crystal Reports to SSRS in SyteLine

Many SyteLine environments carry hundreds of Crystal Reports (.rpt files) built over years of customization. As Infor phases out Crystal Reports support in favor of SSRS for CloudSuite Industrial, organizations face a migration project that touches every department relying on printed reports. The migration is not a simple file conversion—Crystal's formula language, subreport linking, and data connection models differ fundamentally from SSRS, requiring careful re-engineering of each report.

Migration Assessment and Inventory

Before converting a single report, inventory all Crystal Reports in the SyteLine environment, categorize them by complexity and business criticality, and identify dependencies on Crystal-specific features. Reports using Crystal's proprietary formula language, cross-tab objects, or OLAP grid connections require the most rework. Simple tabular reports with parameter-driven SQL can often be converted semi-automatically.

  • Export the SyteLine report catalog from SLReports table to create a complete inventory of registered Crystal Reports
  • Classify each report by complexity: simple (tabular, SQL-based), moderate (grouping, formulas), complex (subreports, cross-tabs)
  • Identify Crystal formula language expressions that need manual translation to SSRS expression syntax
  • Document subreport linking parameters and data source connections for each report in the migration backlog
  • Prioritize migration by business criticality: daily operations reports first, monthly/quarterly reports second

Conversion Process and Formula Translation

The conversion process starts with recreating the Crystal report's data source as an SSRS shared data source or embedded dataset pointing to the same SyteLine SQL views and tables. Crystal formulas using WhilePrintingRecords, IsNull, ToText, and DateDiff must be translated to SSRS expression equivalents using IIF, IsNothing, Format, and DateDiff VB expressions. Group headers, page breaks, and running totals map to SSRS grouping and aggregate functions.

  • Recreate Crystal data sources as SSRS datasets querying the same SyteLine views (vw_co_detail, vw_job_detail)
  • Translate Crystal's WhilePrintingRecords formulas to SSRS expression scope functions (RunningValue, RowNumber)
  • Convert Crystal ToText() and CStr() to SSRS Format() expressions with matching format strings for dates and numbers
  • Map Crystal group headers and footers to SSRS row groups with header/footer visibility toggles
  • Replace Crystal subreports with SSRS subreports or drillthrough reports linked by matching parameters

Validation, Testing, and Cutover

Every migrated report must be validated against the original Crystal Report output to ensure data accuracy, formatting consistency, and parameter behavior. Side-by-side comparison testing with production data catches formula translation errors, grouping differences, and pagination issues. Plan a phased cutover that runs Crystal and SSRS reports in parallel before decommissioning the Crystal runtime.

  • Run each SSRS report with the same parameters and date ranges as the Crystal original for side-by-side comparison
  • Validate totals, subtotals, and calculated fields match between Crystal and SSRS output to the penny
  • Test multi-page reports for correct page breaks, headers, footers, and print layout consistency
  • Deploy SSRS reports to SyteLine's report catalog alongside Crystal reports during the parallel run period
  • Decommission Crystal runtime after successful parallel run and user acceptance testing across all departments

Migrating hundreds of Crystal Reports to SSRS? Netray's AI agents accelerate conversion and validation—contact us for a migration assessment.