Crystal Reports: how to inventory hundreds of .rpt files before a migration
Why reports break in a legacy migration, how to find every .rpt file, which ones are still used, and how to recover logic hidden in report formulas.
Why reports break in a legacy migration, how to find every .rpt file, which ones are still used, and how to recover logic hidden in report formulas.
Who this is for
Project sponsors and IT managers replacing a legacy application that has Crystal Reports attached.
Question this answers
How much work is our reporting going to be, and how do we find out before committing?
What you'll leave with
Reporting is what derails legacy migrations, and it derails them late. The application gets scoped, the budget gets approved, and then somebody discovers four hundred Crystal Reports that nobody counted, each with its own connection string, pointing at a database that is about to change shape.
The good news is that the inventory almost always makes the project smaller rather than larger. This guide is the method.
The core fact, and the one that surprises people: a .rpt file is
largely self-contained. It typically holds
So the reports are not really part of your application. They are a parallel system that happens to point at the same database. Change the database underneath and every report that reads a changed table stops working, all at once, with no warning at build time.
It is also why reports survive application changes that everybody expected to break them, and then break during a change nobody thought was risky.
Reports are rarely in one place. Search for *.rpt across
everywhere, not just the obvious folder:
For each one, record the filename, where it was found, the tables it references and the connection it points at. That last field is what tells you whether it will survive the migration.
Expect duplicates and near-duplicates: SalesSummary.rpt,
SalesSummary_v2.rpt, SalesSummary_FINAL.rpt and
SalesSummary_FINAL_use_this_one.rpt. Resolving which is current is
part of the inventory, and it is usually quicker to ask the person who runs it
than to compare the files.
This is where the project shrinks, and it is worth doing carefully because the saving is large.
Ways to establish real usage, in rough order of reliability:
In our experience the live set is a small fraction of the total. A system with four hundred report files often has thirty that anybody would notice disappearing. The other three hundred and seventy become an archive, which costs almost nothing compared with rebuilding them.
Crystal formulas are worth reading even for reports you are not going to rebuild. They routinely contain business rules that exist nowhere else in the organisation, because somebody needed a figure calculated a particular way and the report was the fastest place to put it.
Typical examples we find:
If a report produces a number the board sees, read its formulas before replacing it. Rebuilding the report from the visible output rather than the formula is how organisations quietly change what a figure means, and nobody notices until somebody asks why this year does not compare with last.
For the live set, rebuild in whatever reporting tool suits where the data is going and who writes reports. The tool matters far less than the reconciliation.
Reconciliation means running the old report and the new one over the same period and comparing figure by figure until they agree. Not approximately, exactly. Reporting is the part of a migration the business checks first and trusts least, and a single unexplained variance will cost you more credibility than the whole rest of the project earns.
A useful and underused option: if the database structure survives the migration largely intact, the Crystal reports can keep running against it while the application is replaced. You then deal with reporting as a separate project afterwards.
This works when you are replacing the application layer and keeping the database. It does not work when the data model itself changes, which is the case in most true legacy migrations, so check early rather than assuming.
Either way the inventory comes first. It is a few days of work, it usually reduces the reporting scope by an order of magnitude, and it turns the one part of the project most likely to produce a nasty surprise into a known quantity before anybody commits to a number.
Meet the person
This guide comes from real projects. If it raises a question about your own system, you can ask the founder directly.
HELLO PEOPLE designs, builds and looks after AI, software, app and data solutions for Australian businesses, with senior expertise on every project and a scope agreed before work starts. For an older system, that means learning what it really does first, so nothing your business relies on is lost.
Since 2007, HELLO PEOPLE has delivered more than 100 projects from Perth for small and medium businesses across Australia: custom software and apps, system integrations, data migrations, reporting and dashboards, and AI that works inside the systems a business already runs.
I lead every engagement myself. I trained in accounting before moving into IT, hold accounting and IT professional qualifications and an MBA, and bring more than 20 years of experience across sales, service delivery, inventory and compliance. I am also a PhD candidate in AI at Curtin University, researching retrieval-augmented generation (RAG), so the technology is always judged by what it does for the business.
Small and boutique. The person who scopes the work is the person who does it, and the same person is there when the old system is switched off.
No ticket queue and no account manager in between. You hear back within one business day, usually sooner.
The upgrade is the start, not the end. When you need the next system, integration or report, you call the same person, who already knows your business.
Ask the author
Ask it here and it comes straight to Kasun, who wrote this. No sales call, no obligation, and a real answer even if the answer is that you do not need us.
Kasun Wijayamanna
Founder, replies within one business day
Tell us what you are comparing, replacing, or trying to improve. We will come back with a practical recommendation and realistic scope.
Built here. Your data stays here.
Thanks for reaching out. We will get back to you within one business day.
See what else we do