Why CrossjoinSync

9th April 2026 By Mikkel Kristiansen

Data Has Always Needed to Travel

Data needed to be accessible online long before we called it “the cloud.” In the early days, information lived on individual machines scattered across offices. As organisations grew, those machines gave way to server rooms, then to managed data centres, and eventually to cloud platforms like Azure, AWS, and Google Cloud.

The infrastructure has transformed beyond recognition, but one challenge hasn’t changed at all: data still needs to move. From a transactional system to a reporting database, from an on-premises ERP to a cloud data warehouse, from one department’s system to a customer-facing portal, the core problem remains the same: getting data from where it’s created to where it’s needed.

A Problem I’ve Lived With

In my own consultancy work, I’ve needed something like CrossjoinSync more times than I can count.

It started in 2001. I built a customer-facing corporate travel management reporting system for travel agents using Classic ASP. The backend was the Cross Check Travel system, and the clients didn’t have web servers. Most businesses didn’t back then. So we hosted everything ourselves.

Even in those early days, the architectural challenge was identical to what we face today: you need to get data out of the transactional system and into a store that sits close to your information delivery layer. The booking data had to be extracted and staged somewhere our reporting application could query it efficiently. Reporting directly against the production system would have crippled performance for the agents, produced inconsistent results, or both.

Twenty-Five Years of Moving Data

Over the years, I’ve used just about every data movement tool the industry has produced: DTS, SSIS, Pandas, custom .NET applications, Qlik, Fivetran, Azure Data Factory, plus the trusty workhorses of SFTP, .CSV files, and JSON payloads. Every one of these tools has its place, and I’ve enjoyed working with most of them, shortcomings and all.

But here’s what I kept noticing: many of my clients didn’t need an enterprise-grade orchestration platform or an expensive SaaS subscription OR the project simply did not support the expense. They needed a lightweight, reliable tool that could connect to their ERP, financial system, or a custom on-premises database and deliver that data into an online database, especially in situations where SSIS isn’t available or a full pipeline is overkill.

That’s the gap CrossjoinSync was built to fill.

What Cloud Data Unlocks

Once your data lands in a cloud database like Azure SQL or Snowflake, it becomes useful in ways that on-premises data rarely can be.

Reporting and analytics are the most immediate benefit. Power BI, Tableau, and similar tools connect natively to cloud data sources without VPN tunnels, firewall exceptions, or emailing spreadsheets. Dashboards refresh automatically. Month-end reports arrive without manual extracts.

But the real opportunity is customer-facing information systems. Self-service portals where clients can view invoices, track orders, review usage metrics, check status updates, or access performance reports are increasingly expected. Yet many organisations can’t deliver them because their source data is locked in a system that was never designed for external access.

By synchronising the relevant data into a cloud database, you create a clean separation: your ERP keeps managing transactions while a cloud copy powers the portal, the dashboard, or the API your customers rely on. This pattern works across industries: logistics firms sharing shipment status, professional services companies showing project hours, manufacturers providing inventory levels, or service providers delivering usage summaries.

Cloud-hosted data also enables richer communication within your company or with your clients. When your source system doesn’t natively support customer communication, which many ERPs don’t, a synchronised cloud copy gives you the foundation to build those capabilities without touching the source system.

Why I Built CrossjoinSync

After years of solving this same problem with different tools at different scales, I wanted something purpose-built for the scenario I kept encountering: a business with valuable data in an on-premises database that needs to be available in the cloud. Not a full data warehouse project. Not a six-month implementation. Just a reliable, metadata-driven tool that extracts data from SQL Server or Oracle and loads it into Azure SQL, ready to power whatever comes next.

CrossjoinSync is a command-line tool you can set up in an afternoon and run on a schedule. It’s deliberately simple, because the problem it solves is simple. That said, the consequences of not solving it can be anything but.

At Crossjoin.Net, we’ve spent years building reporting and data warehouse solutions across a range of industries. CrossjoinSync grew directly out of that experience. If you’re looking for a lightweight way to get your on-premises data into the cloud, we’d love for you to give it a try. If you need help with the bigger picture of what to do with that data once it arrives, that’s where we come in.