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”.
We use Svelte 5 (+SvelteKit) as our full-stack framework, which produces near-native JavaScript bundle sizes.
SvelteKit renders content on the server by default, minimizing client overhead and keeps environment variables safe and secure.
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.
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.
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.
A copy data step in Data Pipeline retrieves data form external data source:
Stores the data in our lakehouse in a table called Potions:
Maps all fields from the external source and to the destination table:
Retrives data from the Potions table in our lakehouse that has been updated from an external source, and later used to import to Dataverse:
Using Service Principle to connect to our Dataverse Environment and upserting (update or create) records in our Dataverse Potion table:
Mapping the fields from the Datalake and the Dataverse table and upserting it to Dataverse:
After running the pipelines it updates our Potions table in Dataverse:
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? 🪨⛏️
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. 🥰
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!
The Weasly twins are ready to get their hands dirty with coding! 🧑🏻💻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. 🏕️
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🤓