By tracking exceptions on its desktop software, Champion Software identified and fixed bugs before customers were affected, reducing support requests by 90%.

Mike McLoughlin

Mike McLoughlin

Owner, Champion Software

Custom software solution provider for automotive garages

Champion Software develops custom software solutions for a variety of industries in the Southwest region of the United Kingdom. Its biggest and most widely distributed product is Garage Pro, software for automotive garages to manage car repairs and maintenance. As a software house primarily serving local businesses, Champion Software practices some unorthodox testing methods in which participating customers act as “perpetual beta” sites. A new build is released to these customers almost on a daily basis. To ensure the quality of service, Champion Software responds to support calls very quickly and makes great efforts to fix reported errors as quickly as possible, often within 24 hours.

Champion Software with and without Ozcode

Customers provide very little information (if any) when reporting errors

Error reports that Champion Software received were usually very vague. A customer would call up and say something like, “[The feature] in the main screen doesn’t work well. I can’t remember what I did or the error message because I clicked OK, and it’s gone.” Champion Software’s primary source of production data was Sentry.io, an error monitoring tool that provided exceptions along with corresponding stack traces and local variables but no information about the error execution path. Adding the minimal “data” gleaned from the conversation with the customer, Champion Software would then try to fix the bug and provide a new build as quickly as possible. However, fixing bugs could often be a long and frustrating process due to a lack of data and the inability to reproduce reported errors.

Fixing bugs could often be a long and frustrating process due to a lack of data and the inability to reproduce reported errors.

Autonomous exception capture replaces vague error reports

Champion Software distributes its products as desktop applications. After using Ozcode Visual Studio Extension for a few years, the company decided to try Ozcode Live Debugger. After going through Ozcode’s documentation, Champion Software was up and running with the live debugger within 30 minutes on an internal test application, watching exceptions fill the Ozcode dashboard. Following a short trial period, Champion Software started including Ozcode’s silent desktop installation together with its own installer. Since Champion Software updated its customers with new versions very frequently, it got value from Ozcode Live Debugger right away. Exceptions from customer sites appeared immediately upon installation.

With exceptions automatically appearing in the dashboard, Champion Software could debug errors directly within Ozcode’s debugging screen without needing the description from the customer. In fact, Champion Software was now able to detect and fix errors even before the customer noticed them, resulting in a dramatic drop in support calls.

As soon as Champion Software included the Ozcode agent as a silent installation with its own deployments, not only could it detect errors (as with Sentry.io), but it could also root-cause and fix those errors before customers noticed them, dramatically reducing the number of support calls.

Revealing the unknown

By constantly reviewing the exception dashboard, Champion Software could detect bugs that had previously gone unnoticed both by the company’s developers and customers. Nevertheless, these were bugs that could potentially cause issues at customer sites. In one case, a bug was causing supplier invoices to be missed.

Garage Pro has a feature in which it creates invoice records by extracting text from PDF invoices emailed by suppliers. A bug was causing the corresponding module to crash but was usually overlooked by the customer due to an auto-restart mechanism. However, the result was that these invoices did not get imported into the system and were missed.

Shortly after the customer installed an update that included the Ozcode agent, Champion Software noticed an InvalidOperationException. Upon clicking on the exception, Ozcode’s code panel immediately highlighted the problem to be an empty _prices array.

An easy fix was to change the code to first verify that _prices was not empty:

					<xmp>private void ExtractNetTotal() 
	decimal gross = _prices.Max(); 
	if (gross !=0m) 
		_prices.removeAll((decimal p) => p ++ gross); 
	decimal d = _prices.Count == 0 ? 0M: _prices.Max();
	SupplierInvoiceImport.NetTotal = ((d == 0m) ? "ERROR!" : d.ToString("F")); 

Had this gone undetected, Champion Software’s customer would have continued to miss supplier invoices that did not specify prices correctly.

Fixing the insolvable

In another case, a customer was reporting an error every time they tried to save an invoice. While Sentry did display an error, Champion Software could not pin the problem down without access to the customer’s production environment.

Given the approximate time the problem last occurred, Champion Software identified the corresponding exception in the Ozcode Exception Dashboard. Since Ozcode only displays the log entries relevant to an error you are investigating, a quick look at Ozcode’s log panel showed Champion Software that the problem wasn’t really occurring every time the customer tried to save an invoice as reported. Rather, it was only for a specific invoice in which the date was mistyped as “201” instead of “2021”. With “201” being out of the allowed range of the SQL Server’s DateTime field, the system threw an exception every time the customer tried to save that invoice.

Upon clicking the exception, Ozcode’s code panel highlighted the line of code where the error was occurring. Simply adding date validation was an easy fix.

I’d spent hours investigating this error, but without data, there was no solution in sight. Once Ozcode was installed, I saw the invalid date entry and the exact line of code that threw the exception. Hours of debugging for what turned out to be a simple input error that Ozcode revealed immediately.

Mike McLoughlin, Owner, Champion Software

Going beyond expectations

Champion Software provides its customers with updates by placing them on an FTP server through a Managed Service Provider. The software regularly checks for software updates by polling the FTP server at fixed time intervals. When a customer alerted Champion Software that they could not access the update on 50 of its machines, Champion immediately checked Ozcode’s Exception Dashboard. A quick look surfaced hundreds of identical exceptions for this customer where it would usually show no more than a few. All the exceptions clearly showed that the updating software was not able to access the FTP server. A quick investigation with the provider revealed that the FTP server was down. Champion Software provided the customer with the update by direct transfer and quickly implemented a fix to its update software to handle errors connecting to the FTP server more robustly. Identifying this kind of error was beyond what Champion Software had hoped to achieve with Ozcode.

Replacing support calls and bug fixes with new features and greater value

Champion Software was looking for a solution to help debug production errors on its desktop car repair and maintenance application that was distributed to local garages. The company was using error monitoring tools for debugging, but those did not provide enough data. Consequently, the error resolution process was slow and painful, limiting the number of bugs that Champion Software could fix. Eventually, Champion Software found itself having to quickly respond to 40 – 50 support calls per month on extremely limited resources.

Upon installing Ozcode, Champion Software could identify bugs even before customers noticed them and step through the execution flow of errors without relying on flaky customer descriptions. Champion Software was also able to identify previously unknown bugs, fix previously insolvable bugs, and manage an external issue with the FTP provider Champion Software used to update its software. By reducing the number of support calls by 90%, Champion Software now has much more time to develop features providing more value to its customers.

Ozcode has improved my products and massively reduced support calls from customers, which makes me more productive.

Mike McLoughlin, Owner, Champion Software

Live Debugger

Bridge the gap between finding errors in production and pinpointing their root cause in code

Thanks for downloading the OzCode trial!

You’re well on your way to making C# even sharper.

If your download doesn’t start automatically , please use this direct link.

If you’d like to install OzCode but don’t have
administrative privileges on your machine, please contact us.

Get Started for FREE!

Ozcode Logo

This website uses cookies to ensure you get the best experience on our website.