# SyteLine Crystal Reports to SSRS Migration Checklist

> Source: https://netray.co/tools/syteline-crystal-to-ssrs-report-migration-checklist
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

Inventory, data source, rebuild, integration, validation and retirement checks for moving custom Crystal Reports to SSRS on SyteLine 9 and CSI 10.

## Category

syteline

## Erp

Infor SyteLine

## Audience

- SyteLine report developer
- ERP administrator
- Upgrade project lead

## Tool

**Kind:** checklist

**Groups:**

#### Inventory

**Items:**

**Text:** List every .rpt file in use, with its path, owner and the business process it supports

**Critical:** true

Mark which reports were launched from a SyteLine report form or background task and which ran standalone from the Crystal designer or viewer

Use Background Task History to count runs per report over the last 12 months and drop reports nobody ran

Record parameters, subreports, formulas and output (print, PDF, email, export) for each report kept

Check whether a standard SyteLine report in the target release already covers the need before rebuilding

#### Data source

**Items:**

**Text:** Find Crystal commands and table links that read _mst tables directly and therefore ignore site filtering

**Critical:** true

**Text:** Replace direct table reads with a stored procedure or view that filters by site_ref (or uses the site views) so each site sees only its data

**Critical:** true

Map each Crystal parameter to a field on the report option form the user will fill in

Check custom columns used by old reports still exist after the upgrade (user defined fields and extended tables)

Give the report data source a read-only login with access to only the objects the report needs

#### Rebuild in RDL

**Items:**

One SSRS dataset (or subreport) per Crystal subreport, with the join logic moved into SQL where possible

**Text:** Crystal formulas translated to SQL expressions or SSRS expressions and tested against known values

**Critical:** true

Groupings, running totals and page breaks rebuilt to match the old layout

Page size, margins and printer paper size set for the plant printers that will print it

Barcode and special fonts installed on the server that renders the report

RDL saved in source control with a version and change note

#### SyteLine integration

**Items:**

**Text:** Report form and background task definition created for each report so it runs through TaskMan like standard reports

**Critical:** true

Output format set on the Report Options form and Document Types entries added for any format a TaskPostPerform handler sends

Access granted through SyteLine groups on the new report form, not per user

Custom report files kept apart from Infor-shipped report files so updates do not overwrite them

#### Validate

**Items:**

**Text:** Side-by-side totals for three closed periods match between the old Crystal output and the new report

**Critical:** true

Report run time measured under TaskMan with a month-end data volume

Printed output checked on each plant printer and label printer it will use

Users who own the report sign off on layout and numbers

#### Retire

**Items:**

Crystal runtime and designer removed from servers and clients once no report depends on them

Old .rpt files archived read-only with the inventory sheet

Desktop shortcuts, scheduled jobs and email links to the old reports removed

**Scoring Note:** Critical items are where converted reports usually give wrong numbers: direct _mst table reads that skip site filtering, translated formulas, and totals never compared against the old output. Do not retire Crystal until every critical item is ticked for every kept report.

## Content

**Intro:** Older SyteLine sites often carry custom Crystal Reports written against the database years ago, while SyteLine 9 and CSI 10 use SSRS RDL report definitions run through TaskMan. This checklist takes each custom report from inventory to retirement without losing numbers on the way.

**Sections:**

#### How to use it

**Body:** Start with the Inventory group as a spreadsheet exercise and export it to Excel: one row per .rpt file, with run counts and owner. Most sites find a large share of reports are unused or duplicated by a standard report in the new release, and those never need converting. Then work through the remaining groups per report, not per group across all reports, so each converted report is validated and signed off before the next. Keep the exported checklist with the report in source control.

#### The data source is where conversions go wrong

**Body:** Crystal reports written for SyteLine often linked tables directly, including the _mst base tables. In a multi-site database those tables hold every site's rows, keyed by site_ref, while the views SyteLine forms use filter to the current site. A converted report that copies the old table links can silently show another site's data. Move the logic into a stored procedure or view that applies the site filter, keep parameters in the procedure signature, and let the RDL only lay out the result.

**Bullets:**

- Prefer stored procedures for anything with business logic
- Filter by site_ref or use the site views
- Map every parameter to a report option form field
- Read-only login for the data source

#### Worked example

**Body:** A plant runs a Crystal open order backlog report with two subreports: open lines and shipped quantity. In RDL this becomes one stored procedure returning lines with shipped quantity already joined, one dataset, and a group by customer. The Crystal formula that calculated days late becomes a DATEDIFF in SQL. The new report gets a report form with customer range and due date parameters, a background task definition, PDF output on Report Options, and a validation sheet comparing totals for three closed months.

#### How to check the result in the system

**Body:** Run the new report from its form so it goes through the background queue, then open Background Task History to confirm completion. Compare totals to the archived Crystal output for the same parameters. Run it as a user in a different site to confirm site filtering works. Time it at month end. Only then remove the Crystal version from desktops and schedules.

**Cta:** If many of these reports are really questions people ask every week, we can let them ask SyteLine in plain English on your own servers instead of maintaining another report.

**Faq:**

#### Can SyteLine 9 or CSI 10 run Crystal Reports?

**Answer:** Standard reporting in SyteLine 9 and CSI 10 is built on SSRS RDL definitions run through TaskMan. A Crystal runtime can still read the database from outside SyteLine, but such reports bypass report forms, background tasks and SyteLine security groups, so most upgrade projects convert the ones still used and retire the rest.

#### How do I build custom reports in SyteLine?

**Answer:** Write the data logic as a stored procedure or view that respects site filtering, design the RDL in Report Builder or Visual Studio report designer, create a report form for parameters and a background task definition so TaskMan runs it, then set the output format on Report Options and grant access through groups.

#### Why do converted reports show the wrong site's data?

**Answer:** The old report probably read _mst tables directly. Those tables hold rows for every site in the database, identified by site_ref. Unless the new stored procedure or view filters by site, the report returns all sites. Fix it in SQL, not in the RDL, so every consumer of the data gets the same filter.

#### Should every Crystal report be converted?

**Answer:** No. Count runs in Background Task History and ask owners which reports they still use. Check whether a standard report in your release or a saved form filter already answers the need. Converting only reports with real use and no standard equivalent usually cuts the job sharply and reduces long-term maintenance.

## Search terms

syteline crystal reports, syteline custom reports, syteline reporting, infor mongoose report, crystal to ssrs conversion, syteline rdl report, syteline report upgrade

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
