The dealer management system MOTIONDATA DMS supports a wide range of operational processes in the vehicle trade and repair industry (including ordering system, CRM, parts trade, time recording, service appointments, communication with importers, and more). The DMS is characterized by its numerous market-specific interfaces and support for a wide range of vehicle brands.
Some application history background:
- The original application was developed in Clipper W85/S87
- Mid-90's: Upgraded to Clipper 5.1.
- 1998: Switched from DBFNTX to DBFCDX.
- Early 1999: Migrated to CAVO 2.0, began using of ReportPro 2.x.
- 2003-2004: Migrated from DBFCDX to MS SQL Server using VO2Ado.
- 2009: Started testing conversion to Vulcan.NET.
- 2013: Migrated to Vulcan.NET.
- 2017: Began testing migration to X# with a "dual solution" (Vulcan.NET and X#).
- November 2020: Complete migration to X# (currently using X# 2.9, with version 2.10 in testing).
Some application background:
- The application core solution consists of 130 projects (a mix of X# and C#, with X# being the majority), all built on .NET Framework 4.5. It also includes some C# NuGet packages and a unit test project (primarily written in C#, with some with X#).
- In addition, there are 132 solutions holding smaller "helper applications" (referred to as "PlugIns", although they are not PlugIns in the traditional sense). These consist of EXE and DLLs written in C#, called from the "X# shell application".
- We use TSVN as a source version control system within Visual Studio. After completing some code CheckIns, the applications are built and deployed using Jenkins as the build server agent.
- The shell application is written in X#, with approximately two-thirds of the forms in the core solution now based on WinForms. The remaining forms (mostly smaller ones) are still VO-based and are converted to WinForms on demand.
- Some of our used components:
- Xs2Ado (Used for legacy VO-style, though newer applications use .NET SqlConnection.)
- bBrowser.NET 3.5.
- ReportPro 2.x .NET
- ObjectListView
- PdfPrinting.Net (A powerful PDF component for previewing, printing (including printer tray selection), overlaying, editing and merging PDF's.)
- EazFuscator
- Not directly in the solution, but essential as well: .NET Memory Profiler
- Total lines of codes within core application and PlugIns: Absolutely no clue - and who freaking cares? 😉
- The main window , referred to as the "shell" , is a WinForms based X# application with over 600 dynamically created menu items. DLLs are loaded dynamically on demand, and methods are called via reflection.
- The menu side panel is a VO window hosted in a panel on the .NET WinForm shell. This window not only holds the menu structure but also acts as the owner window for all VO-based child windows to ensure providing correct ownership and message handling.
- The entire application is multilingual, currently supporting several German business language modules as well as English and French. There are also partial translations Polish, Czech, Hungarian, Romanian and Croatian.
- A so-called "Style Manager" allows customization of colors, fonts, and other UI elements at the user, workstation, or company level.
- WinForm-based forms work seamlessly with VO-based forms.
- Some typical forms with our common features: title section using an HTML control, navigation area, information area, button area etc.
Something about our usage of ReportPro:
- We have been using ReportPro 2.x since 1999.
- In December 2009, we purchased ReportPro.NET to begin our Vulcan.NET tests.
- A few years later, we hired Robert van der Hulst to significantly improve the performance of printouts, print previews, total page counts, and PDF exports - one of the best investments we've ever made!
- All of our Reports still use DBFs as the data source, and last year we succeeded in populating the same Reports with .NET DataTables without modifying the RPT files, resulting in even better performance.
- Yes, ReportPro may be old, but:
- After Roberts enhancements, it is fast, reliable and stable. (We are literally producing millions of invoices, lists, etc. per year).
- There are thousands of ReportPro based reports created by our developers, project team, helpdesk staff, and customers, and that number ocntinues to grow.
- Some years ago, we started using Crystal Reports as well; although CR might have advantages concerning graphics and formatting, ReportPro meanwhile has proven superior in terms of stability and integration. It also has no compatibility issues like CR occasionally does 😉
- We can provide so-called "task files" in our ReportPro designer, which hold an XML structure of variables, images, and elements. If our clients need those new elements on their customized long-existing ReportPro Reports, they can simply select the concerning items in the RP designer, perform something like "import XML task file" and all the variables, fields, or elements are automatically created and positioned on the reports. This is *very* useful for both our project and our helpdesk team, as well as our power customers. Meanwhile those files can be created, exported, and imported by the ReportPro user himself.
- We made some enhancements in ReportPro so that we can create dynamic QR code images. ReportPro evaluates string expressions, passes them as a parameter to a delegate method in the core application t crhateates a .NET bitmap in memory, and returns a string representation of it. ReportPro can then directly print those images.