When a proven mobile app solution is based on an expiring technology, development teams face a difficult decision: How do you modernize the technical foundation without jeopardizing ongoing operations? At DATAflor, we mastered exactly this challenge – and learned that the right migration path sometimes goes against current trends.
Project Overview

From March to September 2025, we worked together with DATAflor, a leading provider for digitalization in landscaping and horticulture, to migrate their TIME App from Xamarin.Forms to .NET MAUI. The special challenge: The migration had to be completed without any development downtime, while new features were being developed and bug fixes were being delivered in parallel.
The project team consisted of two vensas developers working closely with one DATAflor developer and the DATAflor product owner. Technologies in use: C#, MVVM pattern, SQLite for local persistence – and of course, the migration from Xamarin.Forms to .NET MAUI.
The Initial Situation
The situation was clear: Xamarin.Forms had reached the end of its support period in May 2024. At the same time, pressure was growing from new Android and iOS versions. The App Store and Play Store demanded current target SDKs, Google introduced 16KB page size requirements – all while dealing with a productive app serving a four-digit user base.
But the technical challenges were only part of the story. DATAflor operates a mature multi-project Xamarin.Forms solution where multiple apps access shared libraries. The MVVM pattern was already established, SQLite handled local data persistence, and the apps ran on various form factors – on iOS and Android, from smartphones to tablets.
Typical for this type of app is the intensive use of device features like barcode scanners, cameras, and gyrometers. These features are essential for customers' business processes – failure or quality loss was not an option.
The Strategic Decision: Keep Multi-Project & Prioritize Hardware APIs
Here came the first important decision: While many migration projects recommend switching to a single-project structure, we deliberately decided against it. The multi-project architecture would be maintained.
Why? The advantages were clear: The team could work in its familiar structure without having to perform a big-bang refactor. Parallel feature development remained possible, and each app module could be validated incrementally. The risks with merges and in the build pipeline remained manageable.
Another critical point was prioritizing device APIs. Barcode scanners and cameras are core functions of the TIME App. We decided to address these early to avoid later blockers. By using CommunityToolkit.MAUI, we were able to create a unified interface covering both Android and iOS. Customization and optimization for use in the existing TIME App were thus centrally possible.
Our migration guidelines were clearly defined: We wanted to continue using the proven MVVM pattern and only modernize where it brought real value. Existing abstractions in shared code should be maintained and improved where necessary. The migration should proceed layer by layer – from shared code through persistence to the UI. And MAUI features would only be used where they provided a clear advantage.
Technical Implementation: Layer by Layer
The migration was not a sprint, but a well-considered marathon. In the layout area, we had to carefully balance rendering differences between MAUI and Xamarin.Forms. For persistence, it was essential to correctly migrate SQLite paths and ensure data stability.
Barcode scanners presented a particular challenge. Together with the customer, we iterated through several approaches to achieve the optimal result. Camera integration required a unified interface for Android and iOS based on CommunityToolkit.MAUI – an investment that would pay off multiple times later.
Challenges such as performance issues when scrolling in lists on Android were solved by the DATAflor team with our support on their own initiative. Code reviews and pair programming sessions helped maintain high quality and spread knowledge within the team.
The result: Not just a migrated app, but a foundation for all future DATAflor apps.
Collaboration at Eye Level
A technically excellent plan is only half the battle – what's crucial is how teams work together. We relied on short feedback loops with direct communication via Microsoft Teams. Weekly alignments ensured coordination, while technical deep dives were communicated ad-hoc.
This approach was particularly important because features continued to be developed and bugs fixed in parallel with the migration. A clean branching strategy helped avoid conflicts. This allowed us to jointly master challenges such as additional requirements from the Apple App Store or Google Play Store.
What We Learned
In retrospect, the decision to keep the multi-project architecture proved to be absolutely right. It significantly reduced both risks and costs for such a migration. Another important insight: Device APIs should be prioritized early to avoid later blockers.
Communication cadence was crucial, especially during parallel feature development. Shared access to a version control system and reliable workflows are essential. Abstractions – like our scanner and camera services – not only increased reusability but also reduced maintenance costs. And small, incremental deploy and test cycles created continuous momentum in the team.
The Results Speak for Themselves
The project was completed within time and budget. The TIME App successfully went live with a four-digit user base. But the real success lies in the foundation created: We've been working with DATAflor since mid-2024. The foundation discussed here benefits not only the TIME App. The TEAM, PROJEKT, and CONNECT apps have already been fundamentally migrated, and their releases under .NET MAUI are coming soon.
The chosen strategy helped DATAflor transition to modern technology without jeopardizing ongoing operations or investing effort in restructuring the project architecture.
Conclusion: Controlled Rather Than Radical
This migration shows: Sometimes the more conservative path is the more sustainable one. The controlled, incremental migration made it possible to maintain productivity. The deliberate decision against a single-project architecture prevented unnecessary complexity and additional effort.
The result is a future-proof architecture that is extensible and on which additional apps can build. For DATAflor, this means: modern technology without production downtime – and a solid foundation for the coming years.
Want to see the results for yourself? You can find DATAflor TIME for Android and iOS here.
Planning a similar migration? Get in touch with us.