Skip to main content
EPC & Construction

Lakehouse for EPC Document and Contract Data: Structuring Project Files in OneLake

Ask a commercial manager on a live EPC project what the current entitlement position is, and you get a number with a caveat: "as far as we know". Exposure originates in documents and becomes reportable weeks later — by which point some notice windows have closed. What a lakehouse changes.

Amit Kumar Singh - Technology Consulting Partner at MyData Insights

Technology Consulting Partner · MyData Insights

14+ years in industrial data · Former Accenture & EY · India, GCC, SEA

17 August 2026 · 13 min read

The bottom line

On a live EPC project, exposure originates in documents — a design change instruction, an RFI, a variation order — and only becomes an ERP entry, and therefore reportable, weeks later, by which time some notice windows have closed. Structuring unstructured project files means landing drawings, transmittals, RFIs and variation orders in a Fabric lakehouse in OneLake and deriving two governed tables: document metadata, and the commercial facts extracted from each document. Storing a million PDFs buys almost nothing; the governed table that says "VO-0412, package CP-03, instructed 04-Jun-2026, AED 1.42m, notice not yet issued" is the deliverable. The metadata spine — not the extracted values — is the part teams under-build.

The entitlement position, with a caveat attached

Ask a commercial manager on a live EPC (Engineering, Procurement & Construction) project what the current entitlement position is, and you get a number with a caveat — usually "as far as we know". The answer is spread across a transmittal register in Aconex, an RFI log in Procore, claim letters in email, and a cost report in the ERP that lags all of them.

The ERP knows what has been committed and paid. It does not know that a design change instruction was issued on site nineteen days ago, that the notice clock is 28 days, and that nobody has raised the notice yet.

This is why EPC cost reports are structurally late rather than occasionally late. Exposure originates in documents, becomes an ERP entry weeks later when a human types it, and only then becomes reportable — by which point the entitlement window on some of it has closed.

What "structuring unstructured project files" actually means

Structuring unstructured EPC project files means landing documents — drawings, transmittals, RFIs, variation orders, NCRs — into the Files section of a Microsoft Fabric lakehouse in OneLake, then deriving two governed tables: one describing every document's metadata, one holding the commercial facts extracted from it.

Storing a million PDFs in OneLake buys almost nothing. Producing a governed table that says this is Variation Order VO-0412, contract package CP-03, discipline Mechanical, revision C, instructed 04-Jun-2026, valued AED 1.42m, notice not yet issued — that is the deliverable. Files and Tables live side by side in the lakehouse; the Tables section holds Delta tables, auto-registered and queryable.

What lands in OneLake, and how it gets there

An EPC estate has three categories of source, each with a different landing mechanism. Documents in Microsoft 365 — correspondence, method statements, site photo packs and claim submissions usually in SharePoint — are referenced through OneLake shortcuts at folder level, without copying. The EDMS — Aconex and Procore both publish REST APIs, so transmittals, registers, RFIs and correspondence are pulled on a schedule into Bronze via Azure Data Factory pipelines. And structured systems — Fabric mirroring covers SQL Server, Oracle and SAP, replicating ERP cost and commitments into OneLake as Delta with change capture.

Extraction: getting fields out of transmittals and variation orders

Once files are addressable there are three realistic extraction routes, and the choice is not a matter of taste. Azure AI Document Intelligence suits stable templates — it has a prebuilt contract model extracting parties, jurisdictions, contract ID and title (English-language contracts only), plus invoice and layout models and custom neural models trainable from five examples.

Azure Content Understanding fits the messy end — subcontractor claim letters, extension-of-time submissions, correspondence where the same fact sits somewhere different in every document. It works zero-shot without labelled training data, supports inferred fields, and returns confidence scores and page-level grounding. And Fabric AI functions keep the work inside the lakehouse — ai.extract, ai.classify and ai.summarize run over pandas or PySpark DataFrames, with multimodal versions accepting file paths directly (PDF, JPG, PNG, WebP and text; Office files need conversion first).

Metadata is the real deliverable

Extracted commercial fields get the attention. The metadata spine is what makes the estate usable, and it is the part teams under-build.

AttributeWhy it matters commercially
Contract packageClaim, cost and entitlement questions are asked per package, not per project
WBS / cost codeThe only reliable join key to ERP commitments and actuals
Document typeSeparates a transmittal from an instruction from a notice — legally different objects
Revision and statusRev C IFC is a different document from Rev C IFA; conflating them causes rework
Issued / received / response-due datesThe raw material of the entitlement clock
Originating party and disciplineWho bears the risk, and which engineering lead owns the response
Source system and file pathProvenance, so any derived figure can be traced back

Model this as a conformed dim_document alongside a fact_document_event at one-row-per-event grain — issued, transmitted, responded, superseded. That event table supports the metric commercial teams actually want: elapsed days between an instructing event and a notice being raised, against the contractual notice period.

Search, retrieval and giving an agent something to stand on

Extraction handles the fields you knew to ask for; retrieval handles the question nobody anticipated. The Azure AI Search OneLake indexer is generally available and indexes content and metadata from the lakehouse Files location — PDF, Office formats, HTML, JSON, Markdown, email and plain text — including through ADLS Gen2, OneLake, S3 and GCS shortcuts, with incremental change detection.

That index becomes grounding for a Fabric Data Agent. An agent combines up to five data sources, with Azure AI Search supported in preview for unstructured retrieval alongside SQL sources, semantic models and Eventhouse — so one agent holds the cost model, the document metadata tables and the full-text index, and can answer "which variation orders on CP-03 have no notice raised" against all three.

Linking document facts back to cost and schedule

This is where the build earns its budget, and it is mostly a keying problem. The join runs document → WBS/cost code → ERP commitment and actual → P6 activity, and it breaks where a document carries no cost code, where the ERP uses a different code structure than the drawing register, and where nobody owns the mapping between them.

Build the reconciliation as a Gold table with three columns that never get merged: value as extracted, value as assessed by the commercial team, and value as committed in the ERP. Variance between the first and the third, aged, is the exposure report — the thing the commercial manager cannot produce today without a week of chasing.

Governance, confidentiality and retention

EPC document estates carry privileged claim strategy, subcontractor pricing under confidentiality and client information governed by the contract, so access design is not an afterthought. OneLake security is generally available with folder-level permissions in the Files section, inheriting recursively, plus table, row and column-level security on the Tables side, enforced across Spark notebooks, the SQL analytics endpoint in user-identity mode and Direct Lake semantic models.

One combination to plan around: the OneLake indexer does not support Fabric items carrying sensitivity labels, though individually labelled documents are supported. If the governance design labels the lakehouse item itself, the search index and the agent built on it stop working — so label documents, not the item.

Where this breaks, and what it does not fix

A lakehouse does not fix a broken transmittal register — if transmittals go out by email outside the EDMS, or get registered days after issue, you now have a fast, well-governed view of an unreliable register. Revision-control chaos survives ingestion: Rev C, Rev C1, Rev C-Rev1 and "Rev C FINAL FINAL" all land, and someone has to define the survivorship rule. Scanned drawings extract badly, and the limits are documented — Document Intelligence needs roughly 8-point text at 150 DPI and page dimensions up to 17×17 inches.

Two commercial truths matter more than any feature. A derived figure is not a contractual position — an extracted variation value with a 0.86 confidence score is a management indicator, not a submitted claim, and will not survive adjudication on its own. And time bars are commercial, not technical — the platform can tell you day 19 of 28 has passed; a person still has to raise the notice. Capacity cost is real too: AI functions bill against Fabric capacity, and a full-estate extraction pass over several hundred thousand documents is not a background task.

What to do first

Do not start with a platform migration. Answer four questions this month:

  • On the last two projects, what was the median elapsed time between an instructing event on site and the corresponding ERP commitment entry?
  • What percentage of transmittals were registered in the EDMS within 48 hours of issue?
  • Can every document in your register be mapped to a contract package and a WBS code today — and who owns that mapping?
  • Which single commercial decision would change if the entitlement position were visible weekly instead of monthly?

If the fourth answer is "none", this is an expensive archive. If it is "we would raise notices inside the contractual window instead of arguing at final account", the case writes itself. A sensible first slice is one contract package on one live project: SharePoint and EDMS documents landed, metadata modelled, one document type extracted end to end — variation orders are usually the highest-value choice — and one aged exposure report joining extracted values to ERP commitments.

The tell for whether this is worth building is the median gap, on your last two projects, between an instruction on site and the matching ERP entry. If that gap is longer than your notice period, exposure is closing windows you cannot see. Book a diagnostic with Amit — no slides, no pitch deck, no obligation to proceed. First value in six weeks: one package, one document type, one aged exposure report joined to ERP commitments.

Free Assessment

Where does your operation sit on the data maturity curve?

8 questions. 3 minutes. You get a scored breakdown across data infrastructure, analytics readiness, and automation potential — with a specific next step for your industry.

EPCData PlatformMicrosoft FabricDocument AIOneLake

Your Data · Our Technology · Our Automation

Get practical insights every fortnight

Amit writes about Microsoft Fabric, Power BI, AI in operations, and digital transformation for manufacturing and supply chain leaders. Practitioner perspective - no fluff, no vendor spin.

No spam. Unsubscribe any time. Also on Substack.

FAQ

Common questions

Can you store PDFs and drawings in a Microsoft Fabric lakehouse?

Yes. The Files section of a Fabric lakehouse in OneLake accepts any file format, including PDF, TIFF and native Office files, alongside the Delta tables in the Tables section.

How do you get documents from SharePoint or Aconex into OneLake?

SharePoint and OneDrive content can be referenced through OneLake shortcuts at folder level, without copying. Aconex and Procore both publish REST APIs, so registers and correspondence are pulled on a schedule into Bronze through Data Factory pipelines.

Which Microsoft tool extracts fields from variation orders and contracts?

Azure AI Document Intelligence suits stable templates, with a prebuilt contract model and custom neural models trainable from five examples. Azure Content Understanding suits high-variation documents such as claim letters, works zero-shot, and returns confidence scores and page-level grounding.

Can an AI agent answer questions across project documents and ERP cost data?

Yes. A Fabric Data Agent can combine up to five data sources, including lakehouses and warehouses for cost data and an Azure AI Search index for unstructured documents, which is in preview as a data-agent source.

How long does an EPC document lakehouse take to build?

A first working slice — one contract package, documents landed, metadata modelled, one document type extracted and joined to ERP commitments — is realistic in six weeks. A multi-project rollout with several EDMS platforms, revision handling and governed WBS mapping typically runs 4–6 months.

Does this replace our EDMS?

No. Aconex, Procore and SharePoint remain the systems of record for issuing, transmitting and controlling documents. The lakehouse reads from them to make the commercial and entitlement position visible earlier.

Is this the challenge you're facing?

Book a 30-minute call. We'll look at your specific operation and tell you what's achievable - plainly and without slides.