Back to Projects
Advanced System

National Forestry Reporting Pipeline

From Excel to National Analytics for FBiH

National Forestry Reporting Pipeline
2019
Built In
National
Coverage
Excel → XML → Power BI
Data Flow

The Challenge

When a government agency wants a reliable view of an entire country's forestry activity, the hardest part is rarely the dashboard. The hard part is consistent data: collected by many organizations, produced in different formats, and shaped by local processes that have evolved over decades.

The Federal Ministry of Agriculture, Water Management and Forestry of Bosnia and Herzegovina had an older system built on obsolete technology. We got access to the source code, but it was in very bad shape—unmaintained for years with no owner or maintainer. The platform administrator simply kept the server running, and that was the extent of system oversight.

Modernizing a system like that is never just a rewrite decision—it's an integration problem. We had to build a solution that could work alongside this abandoned codebase without destabilizing what was already there.

Meeting Users Where They Are

The operational reality across forestry organizations was clear: most reporting workflows lived in spreadsheets. Asking every organization to adopt a new, developer-centric data exchange format would have created friction and slowed adoption.

The official project requirement was to submit data in XML according to XSD schemas. But since XML is not a practical format for most forestry staff—and because the number of specialized developers in the sector is limited—we implemented an approach where users fill out a defined Excel template, the system validates the content and structure, and the module converts the Excel input into XML that conforms to the agreed XSD schemas.

The Micro-Frontend Strategy

Rather than "rebuild everything inside the old system," we designed the new capability as a standalone module with its own lifecycle. Conceptually, it follows a micro-frontend philosophy: the new module is developed and deployed independently, then integrated into the existing portal once validated.

This approach aligned well with the reality of the legacy system—abandoned code with no maintainer. Building independently meant we could develop without risking the fragile existing system, and the new module can evolve without requiring deep changes to the legacy portal.

The upload application was built using .NET Core, Angular, and SQL. It was temporarily deployed on Azure during development, then moved to on-premises infrastructure for the final deployment within the ministry's system.

The Data Pipeline

A structured Excel template is shared with forestry organizations, with clear mapping guidance. Users select the relevant table type and context (canton, forest management area) via dropdowns tied to the ministry's codebooks, which reduces manual coding errors.

The system confirms successful imports, blocks duplicates, and allows review/preview of uploaded data. When users send the dataset, the module converts it into XML aligned to the relevant XSD schema and submits it into the central database.

Once ingested, data becomes available for reporting in Power BI, enabling scalable analytics as more organizations and more years of data are added.

The Data Pipeline

Data preview after Excel upload - validating before submission to the central database

Designing the Data Contract

One of the most underestimated parts of these projects is agreeing on a "data contract" that supports reporting without fragile post-processing. We produced more XSD schemas than originally planned—intentionally.

The ministry wanted future reporting to avoid additional calculations and fragile transformations. That led us to define separate schemas per reporting need, so the central platform could support reports directly from standardized structures.

The final set included schemas for organizational units, stock/volume, increment, and annual harvesting execution, among others. This increased initial implementation scope, but substantially improved downstream stability and report consistency.

Real-World Domain Complexity

Forestry data is not just "numbers." It includes classification and context: administrative units, forest management areas, land-use and protection attributes, and domain realities like mined areas, water-protection zones, and illegally occupied forest land.

A key part of implementation was ensuring these attributes could be represented consistently and reported on centrally—stored and queried as first-class fields rather than hidden in free-text or improvised categories.

This is where technology choices matter less than the discipline of creating a shared vocabulary between stakeholders.

Multiple Reporting Paths

We enabled multiple reporting approaches so the ministry could choose what fits best: Excel connected via REST API for flexible ad-hoc analysis, SQL Server Reporting Services for controlled print/export-friendly reports, and Power BI for modern interactive dashboards.

In the delivered setup, Power BI was selected as the primary tool. Data can be pulled via REST endpoints, and Power BI dashboards can be embedded into web experiences if needed.

Multiple Reporting Paths

Generated report from the centralized forestry data

The Outcome

The most valuable outcome wasn't "a new UI." It was a sustainable reporting backbone. Forestry organizations can submit data in the format they already know (Excel), while the system enforces a consistent contract behind the scenes.

Data is centralized in the ministry's platform and immediately usable in Power BI, scaling as more regions and years are added. The module was built independently and integrated into the ministry system after validation, even under strict access constraints.

Source code and ownership were delivered to the ministry as part of the project handover. This project was delivered in cooperation with Wald-Projekt and relevant forestry stakeholders.

Technology Stack

.NET CoreAngularSQL ServerPower BIREST APISSRS

Have a Project That Needs Senior Expertise?

Whether it's cloud setup, security, or building a product from scratch - let's talk about what you need.