Final delivery: The Quidditch Captains League

The order came to us from the Department of Magical Games and Sports, with the following requests: “Create an app that can increase engagement around Quidditch and our British and Irish players. We especially want this to become popular among the muggle-born students in order to save them from the muggle sport Football. We would also like an app for administrators here at the ministry, preferably with some reporting included.” 

The Quidditch Captains League(QCL) is a great addition to the Hogwarts School of Witchcraft and Wizardry, bringing together students’ love for the magical sport and their natural competitive spirit. With this game both muggle-born and children growing up in the wizarding world can engage in friendly rivalry within the app.

The purpose of the QCL app is to promote house unity and some friendly rivalry at Hogwarts, and to encourage inter-house cooperation and appreciation for individual talents. While traditional Quidditch matches pit houses against one another, the QCL allows students to draft players from any house or team, encouraging inter-house cooperation and appreciation for individual talents. By rooting for players across houses, students could build friendships and camaraderie beyond their own house.

In addition, the QCL provides a unique platform to teach valuable life skills. Participants can analyze player statistics, study team performances, and strategize to optimize their rosters. These activities encourage critical thinking, numerical literacy, and decision-making. Professors could even incorporate the game into lessons on Divination (predicting player performance), Arithmancy (using numerical data for predictions), and teamwork dynamics.

Not every student at Hogwarts has the opportunity to play Quidditch due to limited team spots or varying skill levels. The QCL allows everyone to engage with the sport, regardless of physical ability or flying skills. Students who might not feel confident on a broomstick can still demonstrate their passion for Quidditch through strategic gameplay.

Fabric Fera Verto

In order to improve the business productivity of our solution we opted for creating a workflow using Dataflows. Instead of manual data entry and import, we created several dataflows to enrich our solution as a whole. The workflows were set to automatically refresh at a scheduled interval, making sure that our database always would stay up to date both in terms of new and existing data. The source used in our dataflows were utilizing a Web API, which would enable us to build a dynamic solution including near real-time data.

Below is a snippet of the public API that we utilized to populate our respective tables in our Dataverse database.

Dataflows offered an effective and low code approach of integrating external data into our system. The API consisted of multiple tables and columns which gave us the flexibility to cherry pick the statistics that were of most interest for our solution. We following a simple three step process for managing each data flow:

  • Select table
  • Filter and transform data
  • Remove unnecessary columns

Once the data processing had been completed, we mapped the columns to the respective columns in our dataverse table.

Lastly, for the import method we opted for the merge option in order to be able to update our existing data automatically. This option was also essential in order to avoid duplicate data and manually configuring bulk deletion rules.

By using this external API https://hp-api.onrender.com/api/spells we got some spells professor Snape had hidden in the restricted section of the library! By this we add business value to our existing data by enriching our dataset with Publicly available sources that consist of spells in the Harry Potter universe and therefore adding business value to our solution. And by that claiming the Dataminer Badge.

This is the magical world, where managing Quidditch teams, tracking player stats, and keeping an eye on team standings feels as easy as casting spells. That’s right, we have embedded a Power BI dashboard in our model driven admin app. Because even in the wizarding world, data visualization is essential. The reason for this is for the administrators of the app to have the opportunity of sending out news and stats to the app users.

It’s like having the Marauder’s Map, but for data – every player, team, and stat laid out in beautiful charts and graphs. And the best part? I don’t even have to say “Alohomora” to unlock the insights. They’re just… there.

Low-Code Charms:

NB: All these Low-Code Charms will be shown in more detail in the video! Stay tuned 😉

Our solution has mainly relied on using low-code charms. From the user interface, to the logic behind the app, and everything in between. We consider our app functional, scalable, and easy to use keeping it efficient and low on complexity. We’ve achieved this in only three days and using only the power of low-code tools in Microsoft’s Power Platform.

From start to finish, we’ve built a comprehensive app using a carefully selected stack of Canvas apps, Model-driven apps, Power Automate, Power BI, Power FX, and Copilot Studio. The beauty of this setup? We’ve crafted a complete, fully functional solution without writing a single line of traditional code. It’s the epitome of “low-code charm,” and here’s how it all fits together.

Low-code Canvas App:

The Canvas app is where the magic happens on the front end. This is the user-facing part of the app, designed to be intuitive and user-friendly. It’s where players interact with the game—selecting teams, viewing player stats, and getting immersed in the experience.

  • Low-code Customization: We used PowerFX to customize the app’s logic. Simple formulas handle everything from navigation to displaying dynamic data, giving us full control over the interface without writing any traditional code.
  • User Experience: Whether it’s selecting a wizard for a Quidditch team or viewing a leaderboard of top players, users can easily navigate the app and get the info they need. It’s all built using drag-and-drop functionality and interactive buttons.

2. Model-Driven App: Streamlined Admin Management

Behind the scenes, the Model-driven app handles all the data administration, especially for managing players, teams, spells, duels and player types as well as a PowerBI dashboard with data visualization of relevant player and team data for potential future use. 

  • Dataverse Integration: The model-driven app pulls in data directly from Dataverse. With no-code setup, we were able to structure the database tables and build relationships between them seamlessly.
  • Admin Controls: Admins can easily manage data like player rankings, guild creation and administration, and stats, thanks to the built-in Microsoft Dataverse tables, views and forms.

3. Power Automate: Workflow Automation for Efficiency

Power Automate ties everything together by automating several processes in the app. Examples are sending notifications when a player is added to a team or communicating with external providers such as LINK Mobility.

4. Power BI: Real-Time Data Visualization

To keep things even more engaging, we incorporated Power BI for real-time data visualization. For now, it is just integrated in the model driven app providing the chance of creating newsletters and keeping the admins of the app to track. 

In the future, the dashboard couøld be embedded and get personalized for each user of the app, but that is a task for the next hackathon :’) 

5. Copilot Studio: Helping Newbies Learn the Game

To make the game accessible to everyone, even beginners, we integrated a Copilot Studio chatbot into the app. This is a low-code, AI-powered solution that acts as a personal assistant for players, helping them understand the game’s various features.

  • Chatbot Interactions: Players can ask the bot about player stats, guild rankings, and even the best spells to use during the matches. The bot is powered by data from Dataverse, ensuring it provides accurate, up-to-date information.

6. Power FX: The Glue That Holds Everything Together

Power FX was our secret weapon throughout the app, handling all the logic from page navigation to real-time data filtering. With its simple formula syntax, we could easily define interactions, calculations, and data display rules.

What we’ve achieved with this app is a fully functional, data-driven, interactive experience using only low-code tools. Every aspect of the app—from the user interface in the Canvas app to the admin management in the Model-driven app, to the real-time data insights in Power BI has been built with simplicity, it is after all, what we can do best in team Sopranova 😉 

Digital transformation:

When a new player goes to the app and try to register we authorize the person using Link-Mobility`s SMS technology. In the backend there is a Link open API connector that handles the information, and from there send a security code to the new player. The new player then makes an registration and is now a part of the game as a game_player. 

We also made it easy for players to follow up on results. By making a Power Automate to fetch data in dataverse (end_date of game and game_player). The player will now get a email with the score and the opportunity to go directly in to the game page in the canvas app.

Pro-Code Potions

This application is designed with robust connectivity in mind, integrating multiple API connectors to ensure seamless communication and functionality. Each integration is achieved through public custom connectors in Power Automate or precise HTTP calls, allowing for smooth data exchange and interaction with external services. By leveraging these advanced techniques, we ensure that our application remains flexible, scalable, and capable of adapting to various external systems with ease.

ALM Magic:

Throughout this process, we adhered to several best practices for ALM in Power Platform:

  • Environment Strategy: We used separate environments for development and production, ensuring that changes were tested before deployment.
  • Solutions: We utilized managed solutions for production environments and unmanaged solutions for development, aligning with industry guidelines.
  • Source Control: Our integration with Git and the implementation of a branching strategy ensured effective version control and collaboration.
  • Automation: By configuring Power Platform Pipelines, we automated our deployment processes, reducing manual errors and ensuring consistency.
  • Governance and Security: We implemented role-based access control and ensured compliance with security protocols, protecting our data and applications.

Look at the ACDC Craftman blog post

Magic Matrix:

We’ve used Copilot Studio, we created a personalized chatbot and embedded it directly into our Canvas app. The goal? To provide players with quick, accessible info about the game, so they can jump in without needing to spend hours figuring out all the details.

The chatbot is designed to help players learn about key game elements, including: Wizards, Spells and Guilds. Players can get to know the strengths and roles of different wizards, quick details on which spells and pull data from the game’s leaderboards, helping them make better decisions when assembling their Quidditch teams.

We’ve integrated the game’s Dataverse tables to power the chatbot’s responses. This means that all the information the bot provides is pulled in real-time from our database, ensuring that the advice and stats are always up-to-date.

PS: We think that our solution is best explained with visuals! Wait for the video. Stay tuned

xoxo Sopranova

Crawlerlicious!

One of the technologies that we were eager to learn more about during this year’s hackathon was Copilot Studio. An effective way of doing so was to train and embed our Copilot chatbot into our canvas app.

In order to get started we wanted to test the technology by creating a simple crawler. We used the https://www.arcticclouddeveloperchallenge.net/ web site for demo purposes, and allowed or chatbot to use generative AI for answers.

The setup as a whole was quick and easy, and it motivated us to investgate this further. For example, further develop the chatbot to also handle in-game questions in our Canvas App while also connecting it with topics related to our Dataverse database.

Below is a brief demo of the first crawler version that we created:

Keep calm and ALM on: Managing your apps from spark to finish – ACDC Craftsman

In our journey to streamline our development and deployment processes, we embraced the principles of low-code development. Our goal was to align our CI/CD processes with these principles, and we found the perfect solution in Microsoft Power Platform Pipelines, enhanced by the new Git integration feature. This approach provided us with business value, offering an easily maintainable ALM solution that ensured compliance, security, and privacy protection.

Setting Up Our Environment

To begin, we created a dedicated production environment for hosting our pipeline app. This step was crucial in segregating our production workloads from development and testing activities, ensuring a stable and secure environment for our live applications.

Next, we installed the installed the Power Platform Pipelines Model-Driven App and started configuring our pipeline:

Once the pipeline was fully configured, we verified our solution by checking its connection to the pipeline. This verification step was essential to ensure that our setup was correct and that we could initiate the first deployment to our TEST environment without any issues.

Leveraging Source Control

One of the standout features of our implementation was the integration with Git. By utilizing the source control menu, we could easily view the change log and track modifications made to our solutions. This transparency was invaluable for facilitating change validation and code reviews among our developers.

In Azure DevOps, we created a new project with branches related to the respective environments.

Establishing Naming Conventions

To maintain clarity, we used prefixes on our canvas app screens and for other components within the solution. This practice helped ensure that each component was easily identifiable and organized, facilitating better management and reducing confusion.

For example, as illustrated in the below image we aimed to standardize naming convetion for screens, containers and other controls in general. The purpose of this was to make it easier when referencing these components later using Power FX. We applied this practice to our canvas app as it is a common best pratice to use elsewhere when working with Dynamics 365 modules and related components (etc, forms, security roles).

Adhering to Best Practices

Throughout this process, we adhered to several best practices for ALM in Power Platform:

  • Environment Strategy: We used separate environments for development and production, ensuring that changes were tested in DEV before deployment.
  • Solutions: We utilized managed solutions for production environments and unmanaged solutions for development, aligning with industry guidelines.
  • Source Control: Our integration with Git and the implementation of a branching strategy ensured effective version control and collaboration.
  • Automation: By configuring Power Platform Pipelines, we automated our deployment processes, reducing manual errors and ensuring consistency.
  • Governance and Security: We implemented role-based access control and ensured compliance with security protocols, protecting our data and applications.

Application lifecycle management (ALM) basics with Microsoft Power Platform – Power Platform | Microsoft Learn

Hogwarts Enchantment – Cast A Spell To Win

As part of the gamification experience of our app, we wanted to incorporate the ability to cast spells. The purpose of these spells were to gain an advantage over what was seemingly a superior opponent. Using spellcasting in a creative way enabled the user to be creative and test various spells to see their impact on the game.

This feature was solved by creating a Power Automate flow. The flow utlized the Azure Cognitive Services API and its Text-to-speech service. The user would then be prompted to use the phone microphone to record a spell, and the flow would then send back a text version and response based on the chosen spell. In addition, the flow also utilized an open API for converting the sound file to the appropriate format for further processing. Below is the outlined flow:

Below is also a demo video, illustrating the feature in effect:

Your Guide to Quidditch, introducing the SnitchBot!

We’ve used Copilot Studio, I created a personalized chatbot and embedded it directly into our Canvas app. The goal? To provide players with quick, accessible info about the game, so they can jump in without needing to spend hours figuring out all the details.

The chatbot is designed to help players learn about key game elements, including: Wizards, Spells and Guilds. Players can get to know the strengths and roles of different wizards, quick details on which spells and pull data from the game’s leaderboards, helping them make better decisions when assembling their Quidditch teams.

We’ve integrated the game’s Dataverse tables to power the chatbot’s responses. This means that all the information the bot provides is pulled in real-time from our database, ensuring that the advice and stats are always up-to-date.

However, despite all the great features Copilot can give, there are some existential risks. As the Second Wizarding world showed us, witches and wizards gathering around a common cause can lead to terrible consequences – what if sensitive data is leaked by Copilot? The app is primarily used by students at Hogwarts, but there is no stopping adult witches and wizards from signing up. The Copilot might provide more information than we can imagine, and this tech in the wrong hands can be very destructive.

Is it smarter than a 5th grader? No, but it is much quicker and much more persuasive than a 5th grader. Getting the wrong hints and using ineffective spells can be devastating for a users game statistics.

A retro badge for a (somewhat) marginalized group

I’m of course talking about those of us with little to no understanding of mathematics. Luckily, there is still a field in Dynamics that caters to our needs – the calculated column.

The administrators will need an overview of the number of games won, lost, and drawn, preferably in percentage. Using calculated columns, they will be able to see the percentage of each category without having to bring out their calculator and trying to remember how to calculate percentages.

We created three columns following the same structure:

In the administrator app the administrators can with i quick glance on the screen see how the team is doing, as well as use it in their PowerBI report.

Sadly, calculated columns will be a thing of the past at some point, and the functionality will be sorely missed.

Candle

Badge Claimed: OneFlow – The magic of modern contract signing

Gone are the days of parchment and quills – the enchanting and powerful API from OneFlow allow wizards and witches to collaborate on documents effortlessly before sealing them with a magical signature on any device.

https://developer.oneflow.com/docs/authentication-and-authorization

No more waiting for owls or messy ink spells; with OneFlow your contracts are elevated to new heights, as if touched by a charm straight from the Ministry of Magic.

One of our primary concerns is the prevention of bullying. It is imperative that our platform remains a space where respect and integrity are paramount, and every participant feels secure and valued. To this end, the OverFlow API allows us to enforce these rules consistently and transparently, ensuring that all parties understand their rights and responsibilities. We now send all new players a link to sign the contract for good conduct, terms and conditions.

Flow Rundown:

Trigger: When a new user registers in our canvas app, a new row is added to Dataverse, kicking of the process.

API Call: We send an HTTP request to the Oneflow API to initiate the contract workflow

Parsing the response: The returned JSON is parsed to extract relevant contract details.

Email Notification: A confirmation email is sent to the registerted user with contract details.

Further on we can get the contract back into dataverse by using WebHooks from OneFlow, but you can also save the contracts directly in the OneFlow user.

https://developer.oneflow.com/docs/getting-started-with-webhooks

The Magic of Responsiveness

Our solution is like magic—it adapts to every screen, big or small, without breaking a sweat. Whether it’s a tiny phone or a massive monitor, it looks great everywhere.

Shiny? Absolutely. The glossy, polished UI feels like it’s been brewed to perfection. And small screens? No problem. It doesn’t break, squish, or leave users fumbling—it’s as smooth as a perfectly cast spell.

Plug’n Play

Given that in out Quidditch game solution, the players can play a match for several days, we have decided to automate and integrate an Outlook integration to send a notification when the match is over.

We trigger the Power Automate Flow when the “end date” for the match is modified. If the end date is greater or equal than today’s date, the flow sends an email to the participants of the match notifying them that the match is over and that they can log into the app and check their results!

We have integrated a button in the email using html to redirect the user to the application saving time and providing a magical user experience 🪄

By using the Outlook integration we claim the Plug’n Play badge!

Dash it out and the data is MINE(er)- with PowerBI … and Resco

By using this external API https://hp-api.onrender.com/api/spells we got some spells professor Snape had hidden in the restricted section of the library! By this we add business value to our existing data by enriching the our dataset with Publicly available sources that consist of spells in the Harry Potter universe and therefore adding business value to our solution. And by that claiming the Dataminer Badge.

This is the magical world, where managing Quidditch teams, tracking player stats, and keeping an eye on team standings feels as easy as casting spells. That’s right, we have embedded a Power BI dashboard in our model driven admin app. Because even in the wizarding world, data visualization is essential. The reason for this is for the administrators of the app to have the opportunity of sending out news and stats to the app users.

It’s like having the Marauder’s Map, but for data – every player, team, and stat laid out in beautiful charts and graphs. And the best part? I don’t even have to say “Alohomora” to unlock the insights. They’re just… there.

Sponsor Badge (Resco)

We’ve implemented the Component for Date Handling in our Quidditch league management solution to track match dates and time slots with precision. Managing the league’s schedule is no easy task—without a proper system, it could turn into a scheduling dementor! By integrating this component into our form, we’ve ensured seamless date selection, reducing manual errors and making it easier for team captains and event organizers to stay on top of their game. The component helps maintain data integrity across Dataverse, ensuring all match details align like a well-cast Alohomoracharm—unlocking efficient workflows and automated reminders. With this magical addition, the league runs smoother than a Nimbus 2000, making it worthy of the badge