A first time for everything. I want to learn new spells and want to try fabric and power BI for the first time.
Testing import data to Power BI desktop – With both data import and Direct Query.
Setting the Data source credentials to get the queried data to the Power Bi Service.
Test is working – Now lets wave the wand and build!
Fabric
HACK:
Got help from a team in the same house – HUFFLEPUFF POWER.
We can not get the trial to work in our tenant that we have for ACDC, so i had to create a service principal user in the ACDC tenant – and make it available multitenant. And then use this service principal in fabric in my work tenant to get the data in there.
We want to make a lakehouse with fabric, so after the data is clean, we can use it in Power BI and also share the data with other instances that needs to use the data.
Made a new Lakehouse: WizardData
Made the connection to the ACDC tenant
Cleaned the data:
Did this for all 7 tables.
I could not get compliant with the Power BI for my work tenant. So i decided to use Power BI desktop direct query to get the data from Dataverse and build a dashboard.
Start of dashboard: To be continued.
One last comment – We helped another team with the HACK to get the ACDC data into another tenant. COMMUNITY! – SHARING IS CARING!
Famous words spoken by Hermione Granger after they defeated the troll.
We have really felt the impact of this during this hackathon. When venturing into new territory and using tools and setting up applications that are new and unfamiliar, we often rely on documentation to get started. More often than not, at some point the documentation fails us and we are blocked from getting further. That’s when you need friends to help unblock you.
Like when Philip helped Emil to install the correct version of .NET on his new computer to enable him to finish setting up the tooling needed to build his first PCF component.
Ulrikke got help from Andy Wingate when she got stuck setting up Business Central as a virtual table in Dataverse. Andy jumped on a Teams call in the early morning hours to help unblock her.
Stig got help from unexpected sources when he got stuck setting up a trial for Fabric in our demo environmnent. Fredrik Engseth from another team – BUT the same Hufflepuff HOUSE as us, overheard our conversation and helped us figure our a smart hack to get Dataverse connected to a developer instance of Fabric, using a Service Principal with cross tenant permissions. Thank you Fredrik <3
Sharing really is caring, and like Hermione says,
“Books And Cleverness – There Are More Important Things; Friendship And Bravery”
Even before the sun was up, we were wide awake—coffee mugs in hand and Harry Potter costumes at the ready! Our team is determined to grab that Morning Glory badge for our early start, and we’re keeping the energy high to earn the Remarkable Teamspirit badge. We’ll snap plenty of photos (wands and laptops included) and share the excitement across our social channels. Here’s to a day of coding magic and unbreakable camaraderie!
This is the first draft of or data model. Started looking at the Harry Potter Dataset and discussed in detail among us Wizards how the data should look like.
Pasted the tables below and this description into the Power Platform Plan Designer In our Ulrikke Potters Play Chamber environment – this environment is a play environment, because we do not want to use a preview feature in our other environments.
“Hello, we are building a way for wizards to collect Ingredients, and with the Ingredients they can make potions. When they make potions the wizards can go up levels, and spells gets available for them to use aswell. They will use a canvas app to scan the environment on spawn instances that will be created with power automate. The Ingredients will have a 3d model URL that will be used for the spawns. Could you please help me make the data model, below is what we have come up with.”
We also
Lets see what the plan designer comes up with – Scroll to the bottom of the tables.
Table: Contact(users) – Custom columns
Field Name
Data type
Data type specification
Level
Number
Table: Ingredient Inventory
Field Name
Data type
Data type specification
Ingredient
Lookup
Table: Ingredient
(1:N)
Quantity
Number
Contact
Lookup
Table: Contact
Table: Potion Inventory
Field Name
Data type
Data type specification
Potion
Lookup
Table: Potion
(1:N)
Quantity
Number
Contact
Lookup
Table: Contact
Table: Spell Inventory
Field Name
Data type
Data type specification
Spell
Lookup
Table: Spells
(1:N)
Mastered
yes/no
Contact
Lookup
Table: Contact
Table: Potion
Field Name
Data type
Data type specification
Potion
string
Main column
Ingredient
Lookup
Table: Ingredients
(N:N)
Effect
Text
Singe line
Characteristics
Text
Single line
Required Level
Number
image column
img
Primary image column
Table: Ingredient
Field Name
Data type
Data type specification
Ingredient
string
Main column
Rarity
Choice
Image column
img
Primary image column
Model Url
Test
Single line
Table: Spell
Field Name
Data type
Data type specification
Spell
string
Main column
Rarity
Number
Required Level
Number
Table: Spawn Instance
Field Name
Data type
Data type specification
Ingredient
Lookup
Table: Ingredients
Spawn Point
text/lookup?
– Hva AI builder produserer
Accepted the user stories
The data model that came out of the plan designer – before doing changes.
The contact table should be used as the “wizard” table:
IT made a Contact table, a custom one. So that is a big big fail from the Planner.
Did not want any data in the tables. I asked the planner to remove the data, but it made the tables with the data anyways.
Another thing it did wrong, was to make an image column – it made it an URL column. I stated that it should be a primary image column. – So needed to do a clean up of the image columns in two tables.
Many to many relationship on potion to ingredients was not made
Added a model driven app to configure the Ingredients the potion needs to be made.
NEXT step – Export the solution out of the play environment and get it into or DEV environment.
Ok, so after import to the DEV environment – an unmanaged solution. We saw more problems with the data model. So we decided to Export a managed solution form the play environment and import that into the dev – delete, and do the process again.
Ok. So it does not work the way i want it to. It is almost there, but it can NOT change a URL column to an image column. And it can not use the standard contact table.
Hermione collects and stores lots of ingredients to use for potions and spells in her beaded bag. The bag has infinite capacity, so it’s a bit hard to keep track of it’s contents.
Canvas App The solution to this is using our new interactive digital Bead Bag App that will allow you to scan items and store them to your digital bead bag. The also contains a spell book with spells and potions you can make from the ingredients you collect.
AI Builderand Power Automate We use Object Detection Model in AI Builder will analyse the images and extract information and automatically store this information in the Bead Bag.
Power Pages and Model driven app You can log on to a Power Pages site to get an overview of your inventory on a desktop view, and there is a Model Driven app back office app for admins, to view the inventory and manage all the ingredients and items in it.
Copilot Agents A Copilot Agent will work autonomously in the background to match ingredients together and present you with potions and spells that are available to you with your current inventory.
Copilot Chat You will also have a Copilot chat experience that allows you to prompt to learn what kind of potions and spells you can make with the ingredients you have in your inventory.
Power BI and Fabric A Power BI dashboard will show statistics on where different ingredients are likely to appear, user statistics and the most commonly used potions and spells
Finance and Operations After a while we expect the inventory to be quite full and you might want to sell some of the ingredients you have collected. This is where Finance and Operations come in. We want to connect Dataverse to F&O through Dual Write to access financial information, and also allow for transactions to enable selling and buying of ingredients.
Link Mobility When you put an item up for sale you will be notified by SMS when a buyer shows interest
Behold, the enchanted method of Application Lifecycle Management (ALM), where Power Platform Pipelines act as the Floo Network of solutions, transporting them safely from the cobblestone streets of Development to the bustling halls of Test and the grand castle of Production. Alas, our quest for a fourth environment—the illustrious Pipeline Host Environment—was thwarted by the restrictions of our trial license, which only permits the conjuring of three realms. As a result, we have cast a clever spell to install the pipeline application directly within the Development realm.
In the Development realm, solutions are left unmanaged, much like a young wizard’s first spell. By the time they graduate to Test and Production, they transform into managed solutions—properly polished and fit for their duties in the wizarding world.
With the ancient power of the run history scrolls, we shall keep an eye on the timeline of events, tracking mishaps and ensuring that the pipeline’s magic flows seamlessly. This vigilance allows for swift, safe development that races faster than a Firebolt broomstick
Realm Details
Realm Name
Type
Region
Language
Currency
Dev – Power Potters
Trial
EU
English (US)
EUR
Test – Power Potters
Trial
EU
English (US)
EUR
Prod – Power Potters
Trial
EU
English (US)
EUR
Pipeline Host Realm
Trial
EU
English (US)
EUR
All realms are cloaked in the protective spells of “Managed” type and are set within the European Union’s borders. They share a common tongue (English, US) and currency (EUR), creating a unified magical system that prevents dependency conflicts, as if warding off a rogue boggart.
Let the Power Potters harness this method to charm their way to flawless, fast-paced development! 🧙♂️
The pipeline:
Naming conventions
What
Convention
Example
Columns
Pascal case
pp_PowerPotters
Solutions
Capital letter for each word, short and descriptive name
Power Potter Potion Solution
Forms
Views
Adding copilot to agent and moving across environments
Of course, because we developed the datamodel in DEV, we could also easily develop and train the Copilot Agent in DEV and move it to production using solutions and Power Platform Pipelines, as well as the AI Models, and the Power Pages site
Entra ID Security Groups
We use Entra ID / Azure AD Security groups to control who has access to the different environments.
The security group is linked to the environment.
A security team is linked to the security group in Entra ID, where security roles are assigned.