Tracking Mischief at Hogwarts – Catch Them with Oneflow

Claims:

  • Oneflow
  • Embedding numbnut
  • Go with the flow

Our modernized learning path for our students, makes it easier for us to track mischief. If they use our Dobby bot and ask for a uspisicous spell or potion, we as teachers would like to know. We wouldn’t risk a to develop an evil wizard again would we.

We are able to track these mischievs in our solution, but we also want the students to take accountability.

That’s where Oneflow came to the rescue. Its seamless integration with Dynamics allowed us to manage mischievement contracts directly within our solution. Students can now sign their “I must not tell lies” agreements with ease, and we can monitor every step—from creation to completion—all in one place.

The contract gets created in Power Automate containing the student’s full name, and is dynamically mapped to the mischief record and sent to the student.

When the student sign the contract, we can automate our solution by utilizing the powerful OneFlow trigger to update the Mischievement status to “Resolved”.

Magical Achievements (Badge claims)

Badge #1 – Client Side salsa

Performance

  1. We use Svelte 5 (+SvelteKit) as our full-stack framework, which produces near-native JavaScript bundle sizes.
  2. SvelteKit renders content on the server by default, minimizing client overhead and keeps environment variables safe and secure.
  3. We use Tailwind CSS to style our application which produces an incredibly small CSS file by carefully compiling only the CSS actually used into single file.

State Management

To handle user state we utilize SvelteKit hooks and the msal node library to authenticate and authorize requests. Hooks run on every request to the server and provides information about the request and user state.

As a first layer of protection we check if requested path is within a user-only part of our application. If no user is signed the application will redirect the user to a login flow which redirects the user back to the original URL if successful.

For the second layer of protection we check if the request URL is towards our Dataverse instance, and if so we try to silently acquire an Access token, which is then used as the Authorization Header.

If the token acquisision fails, the user is redirected to an interactive login flow.


Badge #2 – Thieving Bastards

MSAL Node

We use MSAL node to authenticate users and authorize requests made our Dataverse instance.

Tailwind CSS

To style our application we use Tailwind CSS which is a modern utility-based approach to use CSS.

MELT UI

Melt is a low-level UI library that provides powerful API’s that abstracts a lot of the difficult parts about accessability, while being compltely unstyled so we as developers can create unique components to our app.

AI-sdk + Zod

Documented in Crawler badge below.


Badge #3 – Crawler

We have created an AI-chat instance using ai-sdk package from Vercel that the user can interact with in natural language. This package also uses Zod, the most popular JS validation library, to validate that parameters are in the correct format.


The assistant is instructed to recognize certain requests from the user and can call respective API’s based on the request.

In this instance, Dobby recognized that the student was looking for a spell with an exploding effect.

It then used the effect as a filter on Harry Potter DB.

The results from the API are returned to the chat, were the user can choose to study it further.

Helping a Team in need

Helping a team with a workaround for activating Microsoft Free Trial Capacity when not working in CDX trial environment 😰

Helping with creating a multitenant service principle using client id and client secret, and use of Dynamics 365 CRM access in Azure. And using another tenant for Fabric Free Trial capacity and use Dynamics 365 connector in Fabric to retrieve data from the CDX tenant.

Claiming the badge Sharing is Caring 🤓

Morning Glory

“Early bird gets the work” or as we say in Harry Potters “First to seize the Snitch wins the match”.

“It’s EVIDIosa, not leviosa”, the first team in the Great Hall the second day ACDC. That might not be a badge but some house points to Huffelpuff???

The team is ready for day two🤓🤓

Datamining – letting Fabric do our dirty work

Our solution is all about making learning magic easier and more accessible for young wizards and witches out there. For this to succeed, the courses need to stay up to date and relevant. Since updating subject curriculums with new potions and spells everytime something new comes out is time consuming and not something the teachers can be bothered to do between flying their brooms, watching games of Quidditch, and saving the world from Dark Magic, we figured out that we needed to solve this problem for them.

Retriving data in Fabric using Data Pipelines

We are using external data sources from Potter DB (potions & spells) and importing them into Microsoft Fabric with Data Pipelines, storing them in a datalake.

image.png

A copy data step in Data Pipeline retrieves data form external data source:
image.png

Retrieves data from external source using the endpoint https://api.potterdb.com/v1/potions
image.png

Stores the data in our lakehouse in a table called Potions:
image.png

Maps all fields from the external source and to the destination table:
image.png

Retrives data from the Potions table in our lakehouse that has been updated from an external source, and later used to import to Dataverse:
image.png

Using Service Principle to connect to our Dataverse Environment and upserting (update or create) records in our Dataverse Potion table:
image.png

Mapping the fields from the Datalake and the Dataverse table and upserting it to Dataverse:
image.png

After running the pipelines it updates our Potions table in Dataverse:
image.png

And there we have it, no need for teachers and staff to stay updated on the release waves for new spells and potions, it will all be automatically updated in the systems and arriving straight to everyone’s Mystic Mentor app.

That calls for the Dataminer badge, doesn’t it? 🪨⛏️

Sharing is caring

We couldn’t keep looking at Sopranova’s camp, with a sad Harry Potter coffee mug as the only prop to lift the team’s spirits. Since we have been gathering magical decor for weeks, we decided to be good community members and share some of our goods with them!

The look on their faces was a reward enough for itself, but of course – we wouldn’t mind the Community Champion badge for this kind gesture. 🥰

It’s finally time!

And we are so happy to be here!

We in EVIDIosa have prepped and packed our hats and wands, our magical monitors and spell makers (aka computers), to set up an enchanting environment ready to create magic. 🪄 For precautionary matters we also brought a tablecloth, as we know that coffee, redbull and other wizardly drinks might get spilled in the heat of the game!

computer with harry potter background, a wizards hat and wizardly decorations
two readheaded developers
The Weasly twins are ready to get their hands dirty with coding! 🧑🏻‍💻
Mari with a wand and Ludvig coding with glasses, and our Hufflepuff house pennant
Mari is happily having her picture taken, while Ludvig is busy preparing our magic portal – seeing everything much clearer now with Harry Potters glasses! 🤓

We are looking forward to all that is to come the next days, and with this blogpost we also want to claim the “Happy Camper” badge. 🏕️

Stay tuned for more updates on our teams magic. 🪄

xoxo

Early Delivery – It’s EVIDIosa, Not Leviosa

It’s EVIDIosa, Not Leviosa: Claiming the “Early Delivery” Badge

In the uncertain times we live in, we have seen a great need for digitalization at Hogwarts. Whether it is the return of Voldemort, a new pandemic, or trolls invading the school premises, it is important to provide the students with a learning platform in case of a lockdown. This led to the creation of​ Hogverse🎓

What do we know? 👇

  • … that we never know what to expect 😰
  • ​the return of Voldemort 🪄???​
  • trolls invading the school premises 🧌???​
  • a new pandemic 😷????​
  • … and students find the classes quite boring …

What do we need? 👇

  • modernize our teaching 👩‍🏫
  • ​arrange for potential lockdown 🚫​
  • gamification 🎮​
  • streamline training 🔁​

How do we do it? 👇
Online course portal

  • Online course portal
  • Your-own-Hermione-bot to help you with spells 🤖​
  • Gamified learning paths using AI 🕹️
  • ​The teachers own app for admin and overview​
  • Dataflows and dasboards to retrive vital information​
  • Robust ALM for strong and reliable solution​

Meet the Team

The team is ready to deliver and get our hands dirty🤓