PV Project Controlling: 281 Projects in One Dashboard
The Challenge: Distributed Data, No Visibility
Picture a mid-sized energy company running 281 active PV projects across Germany. New installations come online every month. Yet no one can quickly answer a basic question: "How profitable is project XY?"
The data exists everywhere — but nowhere unified:
- Project master data & costs stored in Dataverse (internal system)
- Actual bookings & revenue tracked in DATEV (accounting software)
- Feed-in volumes (kWh) scattered across different grid operator portals
- Weather data & irradiance values in external APIs
When a project manager asked something simple — "What profit did project XY generate last month?" — the answer required two hours of manual data gathering. And errors were frequent.
More critical: There were no early warnings. If a project underperformed its yield curve, the company wouldn't know for weeks. And the annual report? Three weeks of manual compilation just to aggregate the numbers.
The Goal: Real-Time Dashboards for 281 Projects
The objective was clear: One source of truth. Power BI would become the central reporting layer, connecting all data sources and giving management transparent visibility into the entire PV portfolio.
Specifically, the company needed:
- Portfolio overview: All 281 projects at a glance, with clear status (green = healthy, yellow = warning, red = critical)
- Project deep dive: For each project: revenue, costs, kWh production, document status
- Grid operator performance: Which utilities pay on time? Where are payment backlogs?
- Yield analysis: kWh/kWp comparisons across all projects, weather-normalized
- Financial summary: A P&L view for annual reporting — no manual data compilation needed
The Solution: Data Architecture and DAX Logic
We built a multi-layered Power BI solution:
Data Model
Fact Tables:
- Revenue: All income per project per month (from DATEV, aggregated by project code)
- Costs: All expenses (O&M, insurance, taxes, financing) per project
- kWh Production: Feed-in volumes from grid operator APIs, updated daily
- Documents: Contract, insurance, and technical documentation status (from Dataverse)
Dimension Tables:
- Projects: Project ID, type (rooftop/utility-scale), location, installed capacity (kWp), commissioning date
- Grid Operators: Utility data, billing cycles, contact information
- Regions: Federal state, geographic clusters, weather data mapping
- Time: Date, month, quarter, year (for quick time comparisons)
Core Measures (DAX)
The KPIs were simple yet powerful:
Revenue per kWp = DIVIDE([Total Revenue], [Installed Capacity])
Cost per kWp = DIVIDE([Total Costs], [Installed Capacity])
Yield Ratio = DIVIDE([Actual kWh], [Expected kWh])
Contribution Margin = [Total Revenue] - [Total Costs]
Days Overdue Payments = TODAY() - [Invoice Date]
The Yield Ratio was especially critical. By comparing actual feed-in against expected values (based on historical data and weather APIs), we immediately spotted underperforming assets.
Automating Data Pipelines
Manual work was strictly forbidden. So we built an automated refresh system:
- Dataverse connector: Project master data and costs at 04:00 AM
- Power BI Gateway + REST APIs: DATEV bookings at 06:00 AM
- Grid operator portal connector: kWh data at 08:00 AM (most utilities refresh overnight)
- Weather APIs: Daily, to normalize yield forecasts
Results were fresh and ready by 08:30 AM every morning. Reliable. Error-free. No manual touch.
Row-Level Security
Each project manager sees only the projects in their portfolio. This was technically and legally essential. We implemented Power BI RLS (row-level security) via a simple user-project mapping stored in Dataverse.
The Dashboards in Practice
Five dashboards were built. Here are the most impactful:
1. Portfolio Overview
An executive view of all 281 projects. Map with color-coding (profitability), total revenue, total costs, average yield per kWp. A traffic light system instantly flags problems: below 70% of expected yield = red.
2. Project Deep Dive
Project managers select a single project and see:
- Revenue (monthly, YTD)
- Costs broken down by category
- kWh yield vs. forecast
- Document status (insurance, grid operator contracts, maintenance plans)
3. Grid Operator Performance
Which utilities perform reliably? This dashboard shows:
- Average payment duration per grid operator
- Invoices outstanding over 30 days
- Relationship quality based on consistency and timing
4. Yield Analysis
A technical view: kWh/kWp across projects. Projects in the same region with similar orientation should produce similar yields. If they don't, there's a technical issue or data error to investigate.
5. Financial Summary
P&L view for annual reporting. Fully interactive: filter by region, project type, time period. Numbers are pre-configured — write commentary, done.
The Results: Before and After
| Metric | Before | After | |--------|--------|-------| | "How is project X performing?" | 2 hours | 10 seconds | | Annual report compilation | 3 weeks | 2 days | | Underperforming projects identified | Weeks later | First week (12 detected) | | Overdue grid operator payments | Unknown | €47,000 identified & recovered |
The 12 projects flagged in the first week had yields below 80% of expected. Root causes: two had inverter defects, four had data errors in utility portals, six had actual shading issues not captured in original designs.
The annual report — once an Excel nightmare — is now assembled interactively in Power BI. Management can even run scenarios live: "What if we sold project XY?"
Technical Foundation
- Power BI Premium (for refresh frequency and Gateway)
- Dataverse (project master data, user mapping for RLS)
- Power Query for data cleaning
- DAX for all measures and aggregations
- Power Automate for pipeline orchestration
- Power BI Gateway for DATEV and grid operator API queries
The system scales. At 350 projects (next quarter), no new dashboards needed. Just growing data — the architecture holds.
The Bottom Line
For an energy company managing hundreds of distributed projects, a central reporting layer isn't optional — it's essential for operational control. Power BI didn't just save time; it exposed risks that were previously invisible.
The system grows with the business. New projects are added to Dataverse, and the next morning they're visible in dashboards.
Related Use Cases:
More Use Cases

2% of Suppliers Generate 50% of Documents — How a Renewable Energy Company Transformed Its Month-End Close
281 projects, 700 documents per month, 11 utilities causing 50% of the volume. How Taler GmbH used a Dataverse app and Power BI to relieve month-end close and enable technical operations analysis for the first time.

AI Document Processing: From 15% to 100% Capture Rate
1,200 incoming invoices per month, 85% processed manually. How a mid-market trading company achieved 100% digital capture with Azure AI Document Intelligence and Power Platform — while cutting effort by 86%.

ISMS App: Pragmatic Information Security Management for Mid-Market Companies
How an automotive supplier built a custom ISMS app on Power Platform to achieve TISAX certification and create a scalable security management system without expensive legacy tools.
Ready to automate your processes?
Book a free 30-minute intro call.
Free, no commitment, no sales pitch.
