Blog Post

Knoxville M365 Community Days Recap

,

Hello data friends! Had a blast at my first ever M365 Community Day this past weekend! Thank you to all the amazing organizers and sponsors who made it happen, and to all the new friends I made! It was a treat to get to meet so many new faces and to have such a lovely event so close to home.

My session was about how to fix an inherited report in Power BI. Slides and resources can be found here: https://github.com/Anytsirk12/DataOnWheels/tree/main/2025%20Knoxville%20M365%20Community%20Day.

Intro to Microsoft Fabric: Drive Insights & Action from D365 and Power Platform by Scott Sewell

Fabric + dynamics platform. This will cover items that are backed by data verse as a backend (D365, Power Apps, etc.) and how it can work with Fabric.

Goal of Fabric is to turn CIOs from Chief Integration Officers to Chief Information Officers again.

Dataverse to Fabric Options:

  1. TDS Endpoint (SQL) this is automatically available from Dataverse. Requires zero installation, on by default. Does come with some overhead because it’s handling the security as you query as well. This makes it powerful for DirectQuery (no need to handle RLS in two places), but it is rather slow when data returned gets larger. It’s also rather slow for joins to other tables. This is essentially real-time.
  2. Synapse link. Builds a csv into parquet files in Azure Storage using Azure Synapse and Spark. This can then be easily pulled into Fabric. This can handle millions of rows no problem. This approach requires some Azure resources. This does introduce latency.
  3. Fabric link. Dataverse + Microsoft OneLake in Fabric. Everything stays in Dataverse and gets shortcutted to use within Fabric. Dataverse hosts the tables as parquet files and it is fully managed by Dataverse. This syncs every 15 minutes right now between Dataverse csv to Dataverse parquet for Fabric to consume. This process can take another 15 – 30 minutes to actually move the data into the lake. This results in latency. In the near near future, this process will only take about 5 minutes.
    • Creating the Fabric link is not fast at all for the initial set up. Go ahead and go to lunch while it cooks (can take several hours or even a full day).
    • Recommended scale up option is to create tables in a separate warehouse that the reporting layer can pull that is further curated. This could be populated by a simple copy job from a view in lakehouse to a table in a warehouse. Copy job by default does a compare and only pulls in new data. Super duper cool and easy. It does require a last modified date to exist in the source system.
    • One note, direct lake will fall back to direct query if you point it at a view instead of a materialized table.

Security in Dataverse for Power BI Reports
– Report-level = lowest effort, fastest speed, massive datasets, can handle “executives”
– Row-level = challenging, complexity affects speed, partitioned results, “teams”
– TDS/SQL Direct Query = slowest, 1:1 match with Dataverse, individualized data, “front-line” employees, TDS/SQL connections only

Real-Time Scenario

Gets served up in a real-time dashboard. That grabs data via Fabric event house that is grabbing data from dynamics through a Fabric event stream. Visuals in the real-time dashboard are created using KQL queries. Pretty neat. Biggest use case he’s seen is inventory reporting.

Let’s talk about Power Apps with Style(s), a look at different ways to pull CSS into Canvas Apps by Richard Toland

Ways we can pull CSS in – Inline styles, variables, formulas, environment variables, setting sources.

Power Apps Premium is a hard sell in business, but that conversation gets much easier with a branding plan using component libraries that are reusable across apps.

HTML inline controls will overwrite anything in the Power App design interface (aka modern controls). But that’s not a bad thing. The modern controls are still a bit flaky, inconsistent, and unintuitive.

Best practice is to put the HTML control scripts into variables that you call for the specific visuals. That way it’s easy to edit all of them in one place without hunting through visuals.

Functions vs formulas. Functions can be called on the fly. Formulas automate function calling in real-time.

Environment variables are helpful in context of deployment pipelines.

Some links about this that I researched later cause this is pretty cool concept:
https://powerplatformer.com/how-to-use-css-in-a-power-apps-html-text-control-with-a-custom-pcf-component/
https://softchief.com/2022/10/26/add-css-styles-to-canvas-app-power-apps-use-box-border-shadow-for-button-look-and-feel/
*super useful* https://dynamics-chronicles.com/article/workaround-have-global-css-powerapps

Automate Like a Pro: Power Fx Edition by Samir Makwana

This session is designed to empower participants with the skills and knowledge to leverage Power Fx in Power Automate Desktop for advanced automation solutions. Attendees will learn how to use Power Fx to create dynamic expressions and conditional logic, enhancing their automation workflows. The session will cover the basics of Power Fx, practical applications, and hands-on labs to ensure participants can apply what they learn immediately.

Tables & Variables. Tables store data in structured formats like excel spreadsheets. Variables hold temporary data for calculations and function execution. Variables are set by the Set function for dynamic updates.

Dynamic expressions and conditional logic. Dynamic expressions allow real-time calcs based on variable values. Conditional logic is essential for decision-making in apps. Power Fx uses If() and Switch() functions for conditional evaluations.

Search can return multiple rows based on a simple string condition (ie can look for “Apple” in a list of fruits but not everything containing “Apple”). Filter returns multiple rows but can also perform arithmetic. Look up only grabs the first record that meets the condition.
https://learn.microsoft.com/en-us/power-platform/power-fx/reference/function-filter-lookup

Best practice, define variables at the beginning of the flow. In production, you can create environment variables for even more reusability.

Original post (opens in new tab)
View comments in original post (opens in new tab)

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating