Skip to main content

Phase 2 of Intelligent Cloud Modernisation: Data modernisation for GenAI

In Phase 1, we reshape applications so they can scale, change, and integrate intelligence. But even with a perfect cloud-native architecture, GenAI will still fail if the data foundation is weak. This is why Phase 2 is always about data modernisation. In simple words: GenAI is only as good as the data you feed it, and most organisations today still feed it ‘yesterday’.
Many companies have data, but it is fragmented. Some sits in SQL databases, some in file shares, some in SharePoint, some in CRM, and much knowledge is hidden in PDFs, tickets, and Teams messages. When you build GenAI on top of this chaos, the result is inconsistent answers and low trust. And then people say, ‘GenAI doesn’t work for us’. Usually, it is not a model problem. It is a data problem.
Below is how I see Phase 2, in a practical, structured way.

Move from batch to near real-time data flows

Traditional data platforms mostly use batch ETL. A pipeline runs overnight, updates the warehouse, and reports are accurate the next day. GenAI changes this. People want answers right away, based on the most current information.
Data modernisation introduces streaming and event-driven pipelines where they matter. Not everything must be real-time, but the platform must support it when AI depends on it.
Azure example: Use Azure Event Hubs to collect application and business events in real time, storing them in Azure Data Lake Storage (ADLS Gen2) as a single storage base. From there, you can organize data with lakehouse patterns using Microsoft Fabric or Azure Synapse.

Build a lakehouse foundation and treat data as a product

GenAI needs context, and context comes from well-structured data products. This is where lakehouse architectures (combining features of data lakes and warehouses) become powerful: one foundation for both analytics and AI readiness. The key is not only storage, but also the discipline of ‘data products’: ownership, quality, semantics, and lifecycle.
Azure example: Use Microsoft Fabric OneLake to centralize storage, along with Fabric lakehouse and pipelines to create ‘gold datasets’ ready for analytics and GenAI. This approach reduces fragmentation and makes data reusable for different teams.

Make unstructured data usable for GenAI

GenAI is great because it can work with text and documents, not just tables. But enterprise unstructured data is often messy: duplicated files, outdated documents, no metadata, and unclear access rights. If you build Retrieval-Augmented Generation (RAG; using external data sources to improve AI answers) on top of this, you get unreliable outputs.
Modernising for GenAI means properly preparing unstructured data: chunking, enrichment, embedding, indexing, and access control.
Azure example: using Azure AI Search with vector indexes, generating embeddings with Azure OpenAI, and building an RAG pattern that retrieves enterprise context before answering. This shifts GenAI from ‘confident but wrong’ to ‘grounded and traceable’.

Add metadata, lineage, and governance from day one

Once GenAI uses enterprise knowledge, governance is essential. If you don’t know the source, owner, or sensitivity of data, you risk security and compliance issues. Without governance, GenAI answers are not trustworthy.
That’s why Phase 2 brings in governance tools from the start, not at the end.
Azure example: using Microsoft Purview (tool for cataloguing and governing data) for cataloguing, classification, lineage tracking, and access policies. It helps enforce data boundaries and ensures GenAI does not expose information it shouldn’t.

Measure quality and AI readiness continuously

A common mistake is assuming data modernisation is complete once the lakehouse is built. For GenAI, continuous validation of data is necessary to ensure freshness, completeness, uniqueness, access rules, and relevance. If quality decreases, model outputs decline as well.
This step involves setting up quality checks, monitoring pipelines, and creating feedback loops based on how GenAI is used.
Azure example: Use Fabric or Synapse monitoring, along with operational logs and user feedback, to improve data products over time.

Final thought

Phase 2 builds a trusted, unified, governed data foundation with real-time signals and enterprise knowledge retrieval. Without it, GenAI remains a demo; with it, GenAI becomes a scalable product capability.

Comments

Popular posts from this blog

How to audit an Azure Cosmos DB

In this post, we will talk about how we can audit an Azure Cosmos DB database. Before jumping into the problem let us define the business requirement: As an Administrator I want to be able to audit all changes that were done to specific collection inside my Azure Cosmos DB. The requirement is simple, but can be a little tricky to implement fully. First of all when you are using Azure Cosmos DB or any other storage solution there are 99% odds that you’ll have more than one system that writes data to it. This means that you have or not have control on the systems that are doing any create/update/delete operations. Solution 1: Diagnostic Logs Cosmos DB allows us activate diagnostics logs and stream the output a storage account for achieving to other systems like Event Hub or Log Analytics. This would allow us to have information related to who, when, what, response code and how the access operation to our Cosmos DB was done. Beside this there is a field that specifies what was th...

Can User Technical Profile Influence AI Architecture Decisions?

In the last few days, I ran a small experiment on Devin/Windsurf/Cascade, BMAD, and LLM-based architecture decisions. The initial concern was simple: if an AI coding assistant knows something about the user, for example, that the user is a Java developer or a .NET developer, can this information influence the architecture and technology stack that the AI will propose? This question is important because many companies are starting to use AI tools not only for coding but also for product discovery, architecture, documentation, and technical decision-making. If the AI is influenced by the developer's personal profile, the result may not be fully neutral. It may look like a business or architecture decision, but in reality, it may be partially shaped by the context of the person using the tool. The test was done using BMAD with Devin/Windsurf/Cascade. The scenario was a unified field service operations platform. The task was to let BMAD refine the product, define the architecture and s...

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine: threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration: TeamCity .NET 4.51 EF 6.0.2 VS2013 It see...