EcoCraft – IT’S THE FINAL BLOG POST 🌍🤘

Introduction 

The climate emergency is no longer a distant threat on the horizon – it is a present reality reshaping lives, economies, and ecosystems around the world. Scientists have issued repeated warnings that the planet is at “code red,” with key indicators such as greenhouse gas concentrations, global temperatures, and ice mass loss reaching critical levels, underscoring the need for transformative action now rather than later. Meanwhile, recent global health analyses show that climate-related impacts – like extreme heat, air pollution, wildfires, and food insecurity – are already contributing to millions of deaths annually, with heat-related fatalities alone up significantly compared to past decades. 

Despite this urgency, there remains a glaring disconnect between what young people experience and what many educational systems equip them to understand or act upon. Surveys reveal that a large majority of youth feel they receive inadequate climate education – 70% question the quality of what they’re taught, and a startling number cannot fully explain even basic concepts of climate change. In fact, more than eight out of ten young people say they know little to nothing about how their governments are tackling the climate emergency. At the same time, youth around the globe report deep concern about the future: many feel anxious, powerless, and emotionally affected by climate change, highlighting both a gap in knowledge and a need for meaningful engagement. 

These realities are not abstract – they have concrete consequences. Climate-exacerbated disasters disrupt schooling for tens of millions of students every year, threatening education, wellbeing, and future opportunities. The cost of inaction is not just environmental but societal: without equipping young people with knowledge, agency, and tools for climate solutions, we risk perpetuating cycles of unpreparedness, disengagement, and systemic vulnerability that will burden generations to come. 

This is where EcoCraft steps in. We’re building a platform designed to bridge the gap between current climate realities and the education systems meant to prepare young people for them – empowering a generation with the understanding, skills, and motivation needed to be informed participants in climate action and resilient contributors to a sustainable future, wrapped around a fun and engaging experience within Minecraft

EcoCraft – The Movie

Before we dive into the detail, why not check out our Hollywood-quality movie explaining our solution?

Link to our video overview of EcoCraft

And if you want more (of course!) then we have an awesome Bratwurst & Biscuits theme song! Enjoy.

Project Overview: What We Built 

We built EcoCraft, an educational ecosystem embedded inside a Minecraft server designed to help NGOs, teachers, and children explore ecological impact through interactive play. Minecraft is used as hands-on learning platform where children encounter sustainability challenges and need to fulfil mission to solve those challenges. This allows the children to get direct feedback and have improved reinforced learning. Minecraft works brilliantly for this audience because it blends exploration, creativity, and systems thinking in a space that kids already understand and enjoy. Behind the scenes, we connected this Minecraft world to modern cloud services and automation flows (e.g., Dataverse, Azure Functions, agent-driven world changes) so that NGO workers can influence scenarios in real time, track progress, and automate educational workflows without manual overhead. 

The Big Idea Behind EcoCraft 

The idea is to make complex topics like sustainability, systems thinking, and responsible decision-making understandable through play. Instead of explaining these concepts in abstract terms, EcoCraft lets kids experience them directly in a world they can shape. Every action such as building, consuming resources, changing the environment has visible consequences, encouraging curiosity and reflection rather than right or wrong answers. By combining Minecraft’s creative freedom with intelligent systems in the background, EcoCraft turns learning into experimentation and shows how thoughtful choices can lead to healthier, more balanced worlds. 

High-Level Architecture 

Our solution brings the best in breed capabilities from Microsoft’s low-code app development solution, Power Platform, alongside the existing set of customer engagement applications in the form of Dynamics 365, with the limitless scale and enterprise-grade capabilities within the Microsoft Azure platform. We further complement this by bringing together existing capabilities from Independent Software Vendors, such as mscrmaddonsLinkMobility and OneFlow. This results in a solution that can be tailored for internal use, can facilitate our required extensibility requirements and combines the best of low-code and pro-code capability into a fully working, end-to-end solution. 

Category: Redstone Realm 

EcoCraft should win the Redstone Realm category because it is not just an educational game concept, but a real business solution built on Microsoft 365, Power PlatformMicrosoft Azure and Dynamics 365 technologies plus Minecraft! It combines scalable architecture, AI-driven innovation, strong governance, and a smooth player experience into a platform that can be operated globally by NGOs, schools, and educators. 
 
From a business perspective, EcoCraft enables scalable and repeatable learning experiences wherever Minecraft is available. EcoCraft can manage content, scenarios, and world changes through structured workflows instead of custom game development or manual intervention. This allow us the same solution to be reused across schools, regions, and programs without increasing operational complexity. As climate change and waste pollution continue to accelerate globally, with rising temperatures and increasing waste volumes posing long-term risks, we offer a way to create awareness and drive behavioural change at scale by turning global challenges into interactive learning experiences. 

The global relevance of this scalability is critical. Climate change and waste pollution are challenges that affect everyone on our planet. Scientific evidence confirms a persistent rise in global temperatures, while global waste volumes continue to grow at an alarming rate. We translate these abstract, large-scale problems into interactive, hands-on learning scenarios. By doing so, it enables education at scale and empowers children worldwide to understand environmental responsibility early, where behavioral change has the greatest long-term effect. 

AI/Copilot plays a central role in this architecture. Copilot agents are used to generate and evolve new scenarios using natural language, dramatically reducing the effort required to design and adapt educational content. The complexity of AI, data processing, and orchestration runs outside the game world, while the results are delivered seamlessly to players. This is the AI-infused pickaxe helping us mine insights and impact more efficiently. 

Accessibility is our foundational design principle. Minecraft is already familiar to the target audience, which significantly lowers the entry barrier for children and teachers alike. No additional tools, accounts, or technical onboarding steps are required. Players can immediately engage with the content in an environment they already understand. On the operational side, the supporting platform built on Microsoft Power Platform and Dynamics 365 follows established accessibility standards designed by Microsoft. Built-in accessibility features such as keyboard navigation and screen reader support ensure that our NGO-Users with different abilities can confidently operate with the system with as few barriers as possible. 

Privacy and trust are integral to the system architecture to be recognized and taken seriously as an NGO. EcoCraft does not store the real name of the kids within the Dynamics 365 environment. Personal contact information is protected through field-level security, ensuring that our Users cannot access sensitive data. Data usage is governed by formal contracts with participating schools and all processes follow ISO-certified standards. This creates a trustworthy foundation that allows EcoCraft to be used safely in educational and non-profit contexts without compromising data protection or compliance. 

The players experience remains smooth because technical complexity is kept entirely behind the scenes. Automation and integration enhance the world’s responsiveness without interrupting gameplay. For players, interactions feel natural and immersive. The world reacts, evolves, and responds seamlessly to their actions, allowing learners to focus on creativity, collaboration, and problem-solving rather than technology. 

EcoCraft delivers scalable global impact through a trusted, accessible, and well-architected system that keeps learning engaging and safe. Its ability to combine environmental education, strong governance, and a seamless player experience makes it the clear choice to win the Redstone Realm category. 

Category: Governance & Best Practices 

As part of our commitment to strong governance and responsible use of Artificial Intelligence (AI), we’ve taken a principled approach to how our platform features are designed, tested, and deployed. This has required us to define clear development and oversight structures, that leverage native platform features where appropriate, whilst also bringing in other tools from across the stack. 

Our use of both environments and managed environments sets our foundation level strong. We immediately can ensure a healthy Application Lifecycle Management (ALM) process is put in place, whilst also affording opportunities to incorporate useful capabilities, such as Power Platform Pipelines

From there, we apply additional configurations that tap into the most appropriate platform level features. To ensure auditability and traceability, we’ve built rich monitoring and logging into our development pipeline from the ground up. With Azure DevOps, YAML pipelines, and Application Insights, every build, configuration change, and model interaction can be traced and reviewed. This not only supports effective debugging and performance measurement but also creates a clear audit trail for compliance and governance reviews. Version control via Git source control and environment separation between development, test, and production strengthen this auditability, giving stakeholders confidence in the correctness and integrity of each component of the solution.  

On the security boundaries front, we’ve deliberately separated concerns and protected critical assets such as API keys and secrets using Azure Key Vault, coupled with managed identities. This approach enforces strong security postures and minimizes the risk of credential leakage or unauthorized access. By implementing role-based access controls and environment segregation, our solution mitigates common attack vectors and ensures that sensitive operations are contained within trusted execution contexts. Aligning with principles of secure and robust system design is essential to maintaining trust and operational resilience.  

Our use of Artificial Intelligence in the solution is guided by our awareness of the risks involved. First and foremost, we ensure we build in appropriate prompt-level protections for all the AI agents we use, accepting that without this, we are potentially opening our solution to risk of abuse, data leakage and other issues. From there, we leverage Copilot Studio, which, thanks to the Copilot Control System-level protections that it provides, ensures the technology can be used safely and aligned to all data privacy concerns. 

Finally, and speaking of data privacy, this is woven into the architecture rather than treated as an afterthought. Data access controls via Dataverse security roles and Azure Role Based Access Control (RBAC) features, anonymization where appropriate, and encryption in the form of Column Level Security profiles all contribute to a privacy-preserving design that respects user rights and regulatory expectations. These measures align with widely accepted privacy frameworks that emphasize consent, secure storage, and minimal data exposure throughout the AI lifecycle. By adopting these data governance and protection strategies, we build systems that not only deliver value but also safeguard sensitive information in a way that’s reliable, defensible, and future-ready. 

Altogether, our approach considers the common things that are required to ensure any successful business application deployment, while also appreciating some of the more pressing concerns that are arising from newer technology areas, such as AI. 

Category: Data, AI & Analytics 

Operational Reporting 

Data sits at the centre of EcoCraft operations. Every action the player takes in the Minecraft world is captured as an event and stored with enough context to be useful later. This allows us to understand player behaviour over time and monitor the player experience, getting ahead of issues that might arise. 

Gameplay data from Dataverse is surfaced using Power BI, with a dashboard embedded directly into the model-driven app (see this ‘Dash It Out’ post for further details). This dashboard gives NGO users and organisers a clear, shared view of what is happening in the world – such as player activity, common actions, and outcomes – without needing to switch tools. The focus is on simple, readable visuals that support decisions, over complex reports. 

Real-time Analytics 

For real-time visibility, we use Application Insights to monitor the system as it runs. This helps us spot issues quickly, understand performance, and see how commands and events are flowing through the platform. During the challenge, this proved valuable for troubleshooting and for building confidence that the system was behaving as expected. 

Our ‘Right Now’ badge post give further information about how we use Application Insights to monitor our Azure functions, Power Automate flows and Power App usage. 

AI for Good (Gameplay)

AI is used in a few targeted ways. An agent supports the NGO user by interpreting gameplay data and suggesting or triggering changes to the world to improve the player experience. Rather than acting automatically, the agent works within clear limits and uses the data already captured to guide its decisions. 

In this scenario, the NGO user is using the ‘Change the World’ agent to ask for changes to a player’s Minecraft world using natural language. The agent interprets the request and generates the required Minecraft instructions (e.g add more trash to pick up) to send as a Command to the player’s Minecraft session. See our post for the Existensial Risk badge for more information. 

We also used AI to generate realistic sample data, including players, teachers, parents, and error logs. This allowed us to test analytics, dashboards, and monitoring early, without relying on live usage. It helped validate both the data model and the overall observability of the solution. Our post for the ‘Nasty Hacker’ badge describes how we did this in more detail. 

Overall, the aim was to show how data, analytics and AI can work together in a practical way – starting with good data, adding insight through visualisation and using AI where it genuinely improves the experience and team productivity. 

We feel we’re a strong contender in Data, AI and Analytics category because data is built into the solution from the start. All gameplay is captured as structured events, analysed through Power BI dashboards embedded directly in the model-driven app, and monitored in real time using Application Insights. AI is used in a focused and explainable way to support NGO users by improving the player experience. The result is a clear, practical example of how data, analytics and AI can work together to support the NGO user’s insight, monitoring and help them make better decisions while EcoCraft is in use. 

Category: Low-Code Innovation 

Why EcoCraft is the strongest low-code solution built at ACDC2026 

What makes our solution stand out is not a single feature or clever workaround. It is the architectural consistency: every capability builds on first-party Microsoft tooling, stays as much as possible in low code, and still delivers enterprise-grade outcomes.  

At the centre of the solution is Customer Insights – Journeys (CI-J). As a first-party engagement platform that combines segmentation, orchestration, and communication without requiring custom code. With CI-J comes no-code segmentation, highly personalized E-Mail and SMS journeys and a robust event structure out of the box. The key advantage here it is easy to use and trust! Data stays within one ecosystem, security and compliance are inherited from Dataverse and the solution is supported by Microsoft and gets better features every month.  

To connect with existing and new users, we relied on Customer Insights marketing forms published directly by Microsoft and copy & paste ready code to embedding it on every website. The forms are accessible from our website and act as the primary touchpoint for schools requesting an EcoCraft world. The forms were created entirely via drag and drop. From a business perspective, this eliminates infrastructure overhead. From a technical perspective, it avoids custom frontends, APIs, or security concerns that usually come with public forms. 

We extended the standard customer journeys using Custom Triggers in Customer Insights. While these triggers could easily act as a bridge into pro-code scenarios like Azure Functions or Java, we intentionally stayed low code and combined them with Power Automate. The result is a system that can evolve into more complex architectures later, without forcing that complexity upfront. 

Power Automate became the backbone for operational workflows. We used it to involve the ACDC sponsors (OneFlow and ms-crm addons), handle the contract management, send-out and capturing of signatures, print certificates and information sheets and connect to Azure services for storage of documents and external integrations to Minecraft. From a design perspective, this keeps business logic readable and auditable for a wider audience and reduce the need for developers. From an operational perspective, it allows citizen developers to understand and adapt the system. 

Building approval processes to keep humans in the loop was important. We want to use automated processes but not want to trust automations and AI blind. New request from schools, data usage, and outputs can be reviewed and approved, or rejected, directly in Outlook or Teams. This is essential for an NGO like EcoCraft! Accountability and transparency matter as much as innovation. 

For internal use of Ecocraft we decided to go with a model-driven app. NGO users can access and manage data in a structured, secure way without needing technical knowledge. On top of that, Power BI dashboards make impact visible. Either we want to see how many kids we trained in the last month, how many schools got an information sheet about our mission or the impact of EcoCraft to the world.  

Model-driven apps are not known for their best user experience (sometimes), so that’s why we extend our app with Custom Pages to make interactions feel smooth and intuitive, but we have to admit that we need to surf with an extended view of low-code (like a black belt need to do in some situations), to use JavaScript to open our Custom Pages. The improvement of user experience makes the decision even easier, because our mission does not allow to lose our users in a bad app. 

On the last step we extend our solution with Copilot Studio Agents to be a frontier NGO. The agents help generate new EcoCraft scenarios that children need to solve. Our users can write the scenarios in natural language with local information about the school or even with personal preferences of the child included and the agents are transforming it to a JSON format that the Minecraft server understand and automatically transforming the world. With these agents, we reduce the number of pro-code developers and keep creativity as the most important skill for new scenarios.  

Taken together, our EcoCraft solution demonstrates what low code looks like when it is treated as a strategic platform of choice. It is extensible and aligned with both business goals and technical best practices. That is why we believe it represents the strongest low-code solution developed during the ACDC2026. 

Category: Code Connoisseur 

Given the key requirement to integrate directly into Minecraft, it was always going to be necessary to incorporate pro-code extensibility within our solution. Here, we started off with a simple requirement – get something into a Minecraft world based on an external event. The two approaches open to us were as follows: 

  • Use Minecraft Bedrock Edition: This appeared to be ideal from the outset, as the techniques required aligned closely to the teams’ technical skills (Visual Studio Code, TypeScript, NPM etc.). However, it became apparent that our key dependency was on the @minecraft/server-net module, which is currently in pre-release, and we were unsuccessful in being able to use this to initiate an outbound HTTP request to an endpoint we stood up. 
  • Use Minecraft Java Edition: In our early research, we had highlighted the potential to use Remote Commands (RCON) to manipulate the Minecraft world. There were concerns around the security aspect of this and how deeply the team would need to know Java to be able to code in this manner. But it soon became apparent that this was the only viable solution to achieve the outcome we needed and, with some support available for using RCON in C#, the pathway was open to us.  

Having conducted our proof of concept, we commenced with setting up our Azure DevOps environment, which was then used to host all the code we planned to create: 

Our core Azure function, configured using a HTTP trigger, handles the following workflow: 

  1. On creation of a new Command Execution in Dataverse, a cloud flow issues a POST request to the Function App endpoint, with a payload containing our Minecraft RCON’s e.g. 

    “setblock -2 -60 16 minecraft:dried_ghast”, 

    “setblock -2 -60 20 minecraft:dried_ghast”, 

    “setblock 3 -60 19 minecraft:dried_ghast”, 

    “setblock -2 -60 14 minecraft:fire”, 

    “setblock 3 -60 16 minecraft:fire”, 

    “setblock 1 -60 12 minecraft:fire”, 

    “setblock 2 -60 22 minecraft:fire” 

  1. The function app checks the payload, parses it accordingly, before then opening a RCON connection with the server and posting each command individually. A response will be returned to indicate whether the command was processed successfully or not 

As we had introduced Azure into the equation, it was a natural next step to also implement Infrastructure as Code (IaC). We described our detailed approach in an earlier blog post, but the result is separate Bicep templates covering all the components we have deployed. This allows us to quickly redeploy our environment out, track our changes, maintain our Azure IT assets formally and, through Biceps innate capabilities, more easily handle common issues, such as incorrect resource definitions or missing dependencies. 

Finally, we have brought in custom code to support our more complex automation tasks within Dataverse. Our first preference has always been to use Power Automate cloud flows for this, but there will always be specific scenarios where a plug-in can express and execute our desired logic in the most effective way. For example, we have a plug-in that runs on creation of a new Session that links up all the required related rows using a few lines of code: 

Our plug-ins benefit from the following features we proactively implemented: 

  • Unit and integration testing built directly into the project. 
  • All code hosted within our Azure DevOps Git repository. 
  • Clear, logical folder structure, grouping all plug-in classes based on the logical table name. 

In all our coding efforts, the assistance of tools like GitHub Copilot and ChatGPT cannot be understated. They allowed for very rapid iteration and development of solutions, streamlining the amount of time it took to build out required extensibility points and allowing us to stress test our prototyping so we could make an informed go/no go decision. Thanks to the experience levels on the team, we were able to produce more quality outputs, rather than just trusting any potential “slop” generated by the AI tools. 

Overall, our solution balances the need between low-code and pro-code extensibility, by considering the need for custom code only when the requirements and the complexity mandate their usage. From there, we then take a measured and focused view on how we can maintain our code artifacts in the best possible way, to ensure that critical aspects of the development lifecycle, such as testing and deployment, can be streamlined and, often case, automated entirely. 

Category: Digital Transformation 

EcoCraft is a clear example of digital transformation because it connects a familiar digital environment with real-world processes, people, and decisions, while enabling organizations to do more with less. It demonstrates how intelligent automation can improve experience, scalability, and operational efficiency without increasing complexity or resource requirements. 

Real-world relevance is at the core of our design. Sustainability, waste reduction, and systemic thinking are not treated as abstract concepts, but translated into interactive experiences that reflect challenges faced by schools, NGOs, and communities worldwide. Actions taken by children inside Minecraft directly mirror real world cause and effect relationships. This creates feedback loops where learning outcomes are tied to realistic scenarios. We are making the experience both educational and applicable beyond the digital environment. 

Digital automation is a central role in making it scalable and practical. World changes, scenario progression, feedback loops, and data-driven responses are triggered through automated, event driven workflows. This significantly reduces manual effort for educators and NGO Users while ensuring consistent and reliable execution across sessions and locations. We can deliver high quality experiences repeatedly without needing additional staff or technical intervention, directly supporting the goal of doing more with fewer resources. 

At the same time, we keep the humans in the loop. NGO Users and educators remain in control of critical decisions such as approving scenarios, adjusting difficulty, or responding to individual learning needs. Automation supports their work rather than replacing it. This balance ensures accountability, contextual judgment, and responsible use of technology, while still benefiting from efficiency and scale. 

The impact of this approach extends beyond the hackathon itself. The underlying architecture follows reusable digital transformation patterns such as event-driven automation, consent aware data handling, agent assisted and decision making. These patterns can be applied to education platforms, community programs, nonprofit services or other customer and internal solutions. We are demonstrating not only a successful implementation, but a transferable model for intelligent automation in real-world business and more important social scenarios. 

EcoCraft improves the experience for both learners and operators while reducing operational overhead. It shows how intelligent automation, combined with human oversight, can deliver measurable impact and practical value in real-world contexts, making it a strong competitor for the Digital Transformation category. Maybe the best competitor? 

What Went Well 

  • Keeping the scope small and playing to the strengths and experience of our team meant we always had something working, even as the solution evolved 
  • Power Platform and AI enabled rapid productivity and build 
  • Clear separation between components reduced complexity and improved the ability of our team to work independently towards the shared build goals 
  • Minecraft provided an intuitive, engaging front end with a low learning curve 
  • Agile team – our use of a “manual” kanban board and hourly standups ensured we could keep on top of all tasks, pivot / adjust our approach and foster a closer working relationship, leading to an extraordinary team spirit. 

What We’d Do Next 

  • Improve reporting so in-game player behaviour patterns are easier to ingest and trigger additional automations. 
  • Track player progress over time to support more tailored responses, using a experience / “level up” based system. 
  • Extend the command model to handle more complex in-game outcomes, using agentic capabilities to generate required RCON scripts 

Final Thoughts & Wrap-Up 

The climate emergency demands more than awareness – it demands understanding, agency, and sustained action. Our solution is designed to meet young people where they already are, using engaging, interactive experiences to transform abstract climate concepts into something tangible, relatable, and empowering. By combining education with play, exploration, and problem-solving, we aim to turn climate learning from a passive experience into an active journey—one that builds confidence, curiosity, and a sense of ownership over the future. 

The potential impact of EcoCraft is significant. Research consistently shows that experiential and game-based learning can improve knowledge retention by 20-40% compared to traditional instruction, while also increasing motivation and long-term engagement. By introducing climate education earlier and reinforcing it through repeat interaction, we foresee meaningful gains in climate literacy, systems thinking, and real-world problem-solving skills. Even modest improvements at scale – such as helping one in five learners better understand climate cause-and-effect – can compound into long-term behavioural shifts that influence families, communities, and workplaces. 

Crucially, this solution doesn’t just benefit children. It supports parents with clearer conversations, shared learning moments, and a sense of reassurance that their children are being equipped for an uncertain future. For NGOs and educators, it offers a scalable, adaptable tool that can reach underserved audiences, reduce barriers to climate education, and provide measurable engagement data to inform programmes and policy. Over time, we believe this approach can contribute to stronger participation in local climate initiatives, increased adoption of sustainable behaviours, and a generation that feels informed rather than overwhelmed. 

Taking no action today locks in higher costs tomorrow – environmentally, socially, and economically. By investing now in education that inspires understanding and action, we are choosing resilience over resignation. Our solution is not a silver bullet, but it is a meaningful step: one that helps turn concern into capability, and capability into change. The future is being shaped right now – and we believe young people deserve a fun and engaging tool to help them understand the important role they can play. 

Dashboards make the world go round 🌍

Badge: Dash It Out

Category: Data, analytics & AI

How can our NGO user keep a close eye on how the EcoCraft players are doing? An operational dashboard, of course! 📊

We built out a Power BI report to surface our player and gameplay data from Dataverse using DirectQuery and visualisations. We then embedded the Power BI dashboard into our model-driven ‘Control Room’ app that the NGO user uses to control the gameplay. The user can use this to get a view of EcoCraft operations across the board.

The dashboard shows the current number of gaming sessions, session status, where in the world the players are, and information on any errors being logged.

[Full disclosure: we had intended to show a map of players around the world in the place where the EcoCraft logo is shown, but we couldn’t get the map visualisation working in our tenant. If we get time, we’ll try and fix it in time for the demo!]

Building EcoCraft the ACDC Way

Badge Claimed: ACDC Craftsman

Version 2 – Further detail added on our versioning, building, deployment and testing approaches.

It’s been a fun, interesting few days for our team at ACDC, as we dived into new and familiar topics. But the importance of the fundamentals to ensure our development and deployment process was as smooth as possible carried us through the days and long nights. Here are a few highlights we can point towards:

  • All developers need clearly defined task and development workflow and, although some may scoff at our retro take to manage it, the results speak for themselves with our very complete looking Kanban board:
  • We made sure to setup our foundational elements for effective application lifecycle management; not only within the Power Platform, but also in ensuring we have an Azure DevOps Git repository, and the associated deployment pipelines configured. Find out more about what we have in Azure here and see below examples of what we’ve configured in the Power Platform.
  • Separating out our environments between development, testing and production ensures we can develop safely, test things in the proper way and not affect our live users intentionally. And our Power Platform Pipelines ensures we can deploy everything out automatically, and also handle proper versioning of our solution:
  • We don’t hardcode things. Especially for important things like API keys and secrets. For this reason, we are using Azure Key Vault to store all of our secrets and then have them accessed directly via the Function App. Thanks to Managed Identities, this process becomes so much more easier and secure as well:
  • A continuous feedback loop ensures a more effective development workflow. Thanks to our incorporation of Application Insights capabilities, developers have a rich array of datapoints to monitor the performance of our solution, and we can even use this to initiate new work items directly into Azure DevOps
  • Artificial Intelligence presents a huge opportunity, but without considering best practice approaches when building system prompts, things can go awry very quickly. As you’ll see from the work we’ve done with our custom agent, we’ve ensured our prompts have been tested and hardened appropriately, to prevent potential misuse.
  • Our YAML pipeline handles all of all builds centrally, to ensure our Bicep templates function as we expect and to also ensure we are handling versioning correctly:
  • Our plug-ins have incorporated both logical and integration testing at the class level, to ensure things can be properly tested before it reaches our end users:

These are just a few examples from our 3 day experience, where we have all learned a lot and collaborated well as a group. And we think this close teamwork represents what ACDC is all about – because developers can only do things well when they are working together openly and collaboratively in a team. We hope to back again next year!

Let AI help you change the (EcoCraft) world

Badges Claimed: The Existential Risk

Category: Data and AI

Our AI literally changes the world. At least the world in our EcoCraft Minecraft scenario. We implemented the Agent Response feature on our Model Driven App form for the NGO worker to allow changes while the kid is solving the current level.

This could be to add more trees or animals or even add some destruction. The text input from the NGO worker will then be transformed by the agent into commands and pushed into Minecraft to adjust the current setup.

We contained the AI by system prompts to not destroy the EcoCraft world but just change it in a kid friendly way.

Move Over WebSockets, Application Insights Gets The Hippest Data Now!

Badges Claimed: Right Now, Hipster

Kids these days don’t know anything. All this stuff about “socket.io” or “WebSocket” isn’t cool, hip or vibey. So we are pandering to this new audience by instead relying on a solution that can achieve the same aims, but also help us in other respects as well – Application Insights

The good thing is that Application Insights can be used across a few areas of our solution:

  • Our Function apps can be integrated directly so we can get real-time error tracking, and also view detailed logs of all of function execution logs
  • Power Platform supports full integration with App Insights, for Dataverse, Power Automate and our Power Apps
  • And even all the latest, coolest, hippest agent technology within Copilot Studio can get into the action as well – meaning we can retain full conversation history of our agents within Application Insights. Hipception is always a good thing we’d say

With all this good data feeding into Application Insights, we can build more impactful reporting solutions, see what’s happening in real-time with our solution and close that feedback loop a lot faster. Sometimes being hip can deliver a real business advantage.

Building a Greener World with a Modern Client-Side Website

Badges Claimed: Client-Side Salsa, Feature Bombing, Crawler

(If you are impatient, scroll down to test it our yourself ⬇️)

We need a website for EcoCraft where the teachers can gather information about our event but also already learn more about sustainability. And most importantly, that’s where we want to embed the CI-J form to apply for the event.

For this, we built a modern, client-side Azure website. It’s a static site, which means it’s fast, responsive, and easy to maintain. This approach is widely used by large community events like ColorCloud, Scottish Summit, or CTTT and for good reason. Static sites scale well, load fast, and give users a smooth experience on any device.

And yes, we went all in here.

The EcoCraft website brings together many features on a single screen but they all belong there. Teachers, students, and interersted people don’t want ten different tools. They want one place that helps them understand and reduce their environmental impact.

On the site, users can:

  1. apply for an EcoCraft event using a Customer Insights – Journeys form
  2. calculate their monthly CO₂ footprint
  3. see a Power BI dashboard monitoring CO₂ emissions
  4. chat with a FAQ chatbot about CO₂ topics
  5. calculate travel emissions and see how to offset them
  6. classify waste using a simple waste guide
  7. switch between English and German #BratwurstAndBiskuits
  8. use a “salsa button” that neatly sorts and organizes all these features

(oh did we just count more than five features here that still feel coherent?)

PowerBI Report embedded
View all features (Salsa button)
The website is very responsive

Crawler: A search funtionality that actually fits the mission

Search is where things get interesting. Instead of using a traditional search engine, we integrated Ecosia directly into the website. If you haven’t heard about Ecosia, take a close look now: Ecosia is special for two reasons:

  1. It uses its revenue to plant trees
  2. It aligns perfectly with what EcoCraft stands for
Ecosia search embedded

By embedding Ecosia search, we solved a real business problem: Users can search the web for environmental topics without leaving the EcoCraft context and using a tool that actively supports sustainability.

Every search supports the idea behind our slogan: Build a greener world.

Try it our yourself: https://ecocraftwebsite.z6.web.core.windows.net/index.html

Oh and just by the way: We haven’t seen Björn so happy during the last days while creating this a-maz-ing site!

Going All Muscley: Bicep and ALM FTW

Badge Claimed: Power of the Shell

For our EcoCraft solution, we are using quite a few different Azure resources…

  • A virtual machine, and various associated resources, to host our Minecraft server
  • Fabric capacity to host all of our dashboards and reports
  • An Azure function app to facilitate connections between Dataverse and our Minecraft server, to issue commands.
  • Application Insights to collect data from the various services we are using, such as Copilot Studio agents, Dataverse and more.

Managing all of these complex resources, their dependencies and to ensure we can deploy them cleanly across our development / test / production environments would usually be very challenging. But thanks to Azure Bicep, the whole task becomes ten times easier.

We start first by having our template files setup and prepared within our Azure DevOps Git repository:

This ensures our changes can be tracked effectively, and also provides support for hosting separate parameter files per environment. Next, we can bring in the following YAML deployment pipeline, to handle the deployment to our desired resource group:

trigger: none

parameters:
  # List of bicep deployments to run. Add as many items as you want.
  - name: bicepDeployments
    type: object
    default:
      - name: 'fabric'
        bicepFile: 'EcoCraft.Bicep/EcoCraft.Bicep.Fabric.bicep'
        scope: 'resourceGroup'          # supported: resourceGroup (below)
        subscriptionId: ''              
        resourceGroup: 'BicepDeployment'
        location: 'westeurope'
        parametersFile: ''              # optional: e.g. infra/network.dev.parameters.json
      - name: 'minecraftserver1'
        bicepFile: 'EcoCraft.Bicep/EcoCraft.Bicep.MinecraftServer1.bicep'
        scope: 'resourceGroup'
        subscriptionId: ''
        resourceGroup: 'BicepDeployment'
        location: 'westeurope'
        parametersFile: ''
      - name: 'minecraftserver2'
        bicepFile: 'EcoCraft.Bicep/EcoCraft.Bicep.MinecraftServer2.bicep'
        scope: 'resourceGroup'
        subscriptionId: ''
        resourceGroup: 'BicepDeployment'
        location: 'westeurope'
        parametersFile: ''

variables:
  # Azure DevOps Service Connection name
  azureServiceConnection: 'B&B Subscription'

stages:
- stage: Deploy
  displayName: Deploy Bicep
  jobs:
  - job: DeployBicep
    displayName: Deploy all Bicep files
    pool:
      vmImage: ubuntu-latest
    steps:
    - checkout: self

    - ${{ each d in parameters.bicepDeployments }}:
      - task: AzureCLI@2
        displayName: "Deploy: ${{ d.name }} (${{ d.bicepFile }})"
        inputs:
          azureSubscription: $(azureServiceConnection)
          scriptType: bash
          scriptLocation: inlineScript
          inlineScript: |
            set -euo pipefail

            echo "== Deployment: ${DEPLOYMENT_LABEL} =="
            echo "Bicep:        ${BICEP_FILE}"
            echo "RG:           ${RESOURCE_GROUP}"
            echo "Location:     ${LOCATION}"

            if [ -n "${SUBSCRIPTION_ID}" ]; then
              echo "Setting subscription: ${SUBSCRIPTION_ID}"
              az account set --subscription "${SUBSCRIPTION_ID}"
            fi

            # Ensure RG exists (optional—remove if RG is managed elsewhere)
            az group create --name "${RESOURCE_GROUP}" --location "${LOCATION}" 1>/dev/null

            DEPLOYMENT_NAME="${DEPLOYMENT_LABEL}-$(Build.BuildId)"

            # Build optional parameter args
            PARAM_FILE_ARGS=""
            if [ -n "${PARAMETERS_FILE}" ]; then
              echo "Using parameters file: ${PARAMETERS_FILE}"
              PARAM_FILE_ARGS="--parameters @${PARAMETERS_FILE}"
            fi

            EXTRA_ARGS=""
            if [ -n "${EXTRA_PARAMETERS}" ]; then
              echo "Using extra parameters: ${EXTRA_PARAMETERS}"
              EXTRA_ARGS="${EXTRA_PARAMETERS}"
            fi

            az deployment group create \
              --name "${DEPLOYMENT_NAME}" \
              --resource-group "${RESOURCE_GROUP}" \
              --template-file "${BICEP_FILE}" \
              ${PARAM_FILE_ARGS} \
              ${EXTRA_ARGS} \
              --only-show-errors
        env:
          DEPLOYMENT_LABEL: ${{ d.name }}
          BICEP_FILE: ${{ d.bicepFile }}
          RESOURCE_GROUP: ${{ d.resourceGroup }}
          LOCATION: ${{ d.location }}
          SUBSCRIPTION_ID: ${{ coalesce(d.subscriptionId, '') }}
          PARAMETERS_FILE: ${{ coalesce(d.parametersFile, '') }}
          EXTRA_PARAMETERS: ${{ coalesce(d.parameters, '') }}

From there, our deployments are completely automated – and green starts to become our favourite colour 🤩

Nasty hacking, or just… efficient?

Badge: Nasty Hacker

What do you do when you have an error log in your app to keep on top of those pesky errors but your app is just so damn solid you don’t have enough error messages?

You fake it till you make it, of course.

We wanted to be able to show error log information in a dashboard so that NGO admin users can keep track of any errors occurring in the EcoCraft system.

But as our app is so robust and well built (cough), we didn’t have enough error messages logged to be meaningful. So we decided to mock up some error logs, which we could then store in our Error Log table. This is then shown on our Power BI report to help monitor application health.

We used the ✨ power of AI ✨ to generate a few hundred realistic-looking error logs, complete with error messages, error details and a stack trace, and linked to gaming sessions from when the kids play Minecraft.

To do this, used ChatGPT to generate CSV files of error logs, then imported the data using the standard model-driven app CSV import process, mapping the fields from the CSV to the Dataverse table as we went. An example of a prompt used for this:

Can you generate 200 error log records in a csv file? They should contain a player that you have already generated, and a random session number in the format 'SESSION-100000' where the 100000 is a number from 100001 to 103500. Also include a realistic error message, a realistic error details message and a realistic stack trace

[As an aside, we also used this approach to generate other data – players, teachers, parent, schools, and gaming sessions.]

Error logs shown in the EcoCraft Control Room app
Error log details, complete with realistic-looking error information

This approach not only lets NGO users see the sorts of error information we capture in the system, but it allows us to leverage AI and Power BI in the process.

Using AI to generate error logs? Nasty, yes, but we’re working smarter, not harder.

Trust by Design: Automating Teacher Consent with Oneflow

Badges Claimed: Sponsor Badge – Oneflow

Some automations aren’t about speed or scale. We also wanted to add them to improve trust, compliance, and doing things properly. As a solution for NGOs this is very important!

For this we integrated Oneflow into our EcoCraft process to handle exactly that:
getting a legally sound, transparent consent from teachers before their class participates in an event. By this we reduce manual paperwork and the uncertainty about whether something was signed or not.

Before a class can participate in an EcoCraft event, the NGO needs a signed agreement from the teacher confirming the participation of the class, consent to data usage during the event and understanding that all data is handled GDPR-compliant. And or course the confirmation that no data is sold or misused.

At the same time, the process needs to be simple for teachers, transparent for the NGO and traceable in the system.

That’s where Oneflow fits perfectly. Here is how the flow works

Once a teacher’s request to participate with their class is approved:

  • an event record is created
  • a Power Automate flow is triggered

This ensures that contract handling starts only after approval not before. The triggered flow then uses Oneflow actions to create a contract based on a predefined template, automatically populate teacher and event details and send the contract directly to the teacher for signature.

Flow that sends the contact
Contract email to the teacher
Template for the contract in Oneflow

Once the teacher signs the contract in Oneflow a second flow is triggered.

The related event record is updated and the system now clearly shows: contract signed

Fully signed contract
Update on the event that the contract was signed

This implementation shows Oneflow doing what it does best:

✔ digital contract creation ✔ seamless integration into automated flows ✔ clear status tracking ✔ legally sound consent handling

P.S. LinkedIn Post: https://www.linkedin.com/posts/paulinekolde_bratwurstandbiskuits-ugcPost-7420591073074438145-IrK_?utm_source=share&utm_medium=member_desktop&rcm=ACoAAB3N1vEBd8n4EivF-m5CeB_5OwLRTexU5B4

Mining for… DATA!! ⛏️

Badge: Dataminer

Our solution is for NGOs who work with schools and teachers around the world, to help educate kids on the ecological impact of humans on the world.

But how do NGOs find schools to work with? They need data, of course.

To give NGO users and idea of just how easy it is to work with data about schools in our solution, we located a data set of over 100 schools in Germany that is available publicly from the Open Data service in Bonn, Germany.

After we used the out of the box import process to import the data as a CSV, we then built a Customer Insights journey to target those schools with a postal marketing campaign, inviting them to take part in the EcoCraft initiative.

The Schools segment in Customer Insights Journeys
The Schools journey in Customer Insights Journeys

As part of the customer journey, we use DocumentsCorePack to generate a document to send to each school. This is posted to the school using the address from publicly available information.

The personalised information sheet each school is sent, using Customer Insights Journeys and DocumentsCorePack.

We’re passionate about educating young people on their ecological impact through Minecraft, and through this process, we make easy it for NGOs to engage with schools around the world.