- Up next, if you're a professional developer, we're joined
by Per Mikkelson to take a closer look
at how the Power Platform can be used
for your most demanding business apps,
including how you can build APIs as serverless functions
to bring in the functionality you need, integrate Power Apps
as part of your CICD pipelines and publish Power Apps
to Microsoft Teams for increased discoverability.
So Per, welcome to Microsoft Mechanics.
- Thanks for having me.
- And it's really great to have you on,
especially as someone who's spent a lot
of their career as a professional developer
and also running ISVs.
Now the Power Platform by design has really taken off
as a low-code development platform.
And there are more than
4 million citizen developers worldwide using it.
But if you're someone who spends most of their time
in an IDE or coding apps in other platforms
or other stacks, how does the Power Platform then help you
as a more experienced or seasoned developer?
- Well, the first thing that I'd say is,
just because the Power Platform is so accessible
it doesn't make it any less of a development platform.
So the Power Platform is really
for any app and any developer.
And what we've set out to do is remove
a lot of the pain in the software development process
and speed up the things that can take up a lot of time.
Things like UI design or pulling in trusted data sources.
This makes it simple to build new apps
or extend existing apps fast.
For example, there are some apps
that just have a few screens.
A good example of that is the health check app that we use
for COVID screenings here at Microsoft.
It has four screens.
It's connected to our key card and HR systems on the backend
and it can help us retrace which individuals were
on Microsoft campus in the event of an outbreak.
Now it would have taken someone with low-code skills
just a few hours to build and literally
thousands of people globally use it every single day.
And so there's really no reason to build
a code-intensive app to do the same thing.
- All right. And that's really a no brainer
in terms of building something like this with Power Apps.
But if you're used to building more complex apps
with multiple data sources, maybe business logic
underneath that and advanced controls,
than are Power Apps up to the task?
- So, there are tons of examples of this today.
80% of what you need to do to build your UI,
integrate your business logic and work
for processes can be done by the Power Platform.
It sits on top of Dataverse to give you a powerful
and managed data backend for any data
so that you have common data and logic stack
that all your apps and services can use.
On top of that we give you literally all 400 data connectors
which seamlessly connect with the barrier systems
and services that you may have in your organization.
These take care of the first gen of the API to code,
how to authenticate, how to pass data back and forth,
so that you can focus on your app experience
and business logic.
And if you need more custom logic on the backend,
you also have all the coding environments available in Azure
including APIs, managed services like
Azure Functions, Kubernetes, Cognitive Services,
and much much more.
- So there's tons that you can do here,
but can you show us an example?
- I'd love to.
So we've shown this app before when Charles Lamanna
was on the show.
It's an app that T-Mobile built
for campaign tracking that is used by 40,000 employees
to track more than 3000 campaigns at T-Mobile.
And they even used it to bring in
Sprint operations to support their recent merger.
It's pulling in information about different projects.
I can see past projects
and I can also see active initiatives.
And I can click through and see details for each initiative.
You can manage the aspect of each as you can see here
with the Device Promotional Proposal page, I've just opened.
Here, we can see they've incorporated an approval workflow
with project approvals.
If I click in, I can see more information about the project
and if I go to approval, there are different phases
and steps for the approval process.
And I can also choose
and see the team that's working on the project.
- That's really great to see, but how did T-Mobile
then incorporate the different data sources
into their Orbit app?
- Well, the app is using Dataverse on the backend
as well as our various prebuilt available connectors
to additional data services.
On top of that, T-Mobile has also built several APIs
and custom connectors.
And these are visible right here on the data tab
inside of the Power App studio.
We can see that they have extensively used Dataverse
with a whole bunch of different entities and tables in use.
- Got it.
And by the way, if you're new to Dataverse,
we just published a show that demonstrates how it works
as a managed data backend that you can check out
at aka.ms/DataverseMechanics.
So, the APIs here are critical then
in terms of pulling in the right data
and expanding the app functionality,
but how would you build a custom API?
And then how would that get consumed by your Power App?
- Building custom APIs give you full freedom
to code whatever you want and bring it into your Power App.
So if we continue our T-Mobile example,
they're one of the largest 5G mobile network providers
in the U.S, and they partner with various industries
and customers to build 5G connected IOT solutions as well.
So here's an example imitation of a farm that has sensors
for soil and temperature to maximize crop yield.
They want to surface information from the IOT sensors
into a Power App.
The sensor data flows to a Azure Stack Edge device
at the farm and travels via API management to our Power App.
To build the API, they're taking advantage
of a new capability to publish Azure functions
within Visual Studio so that we can do this all serverless.
It also leverages the open API standard called Swagger.
And from there, we'll publish it to Azure API management
and we'll build an Azure API end connector,
which will automatically be discoverable
in their Power Apps studio.
In our case, we've created a function in Visual Studio
to execute the code needed to read data
from the soil and temperature sensors.
Here we are using Swagger, our open API extension
to test out our function to make sure
it's reading our sensors before we publish the API to Azure.
When we run it, we can see from the response
it's getting the readings.
So now it's working, we're going to build the API.
Next, we're going to hit publish.
That takes me through a wizard experience.
First, we need to define the target.
We'll keep that as Azure.
And next up we need to define the function type.
We'll keep Azure Function App Windows as a default here.
Next we'll give it some parameters.
In this case, we'll pick our resource group,
our location, and finally our storage account.
Let's clean up the name a little bit as well
and hit create, which places our function up
in Azure stories.
And now we need to define our API management parameters.
In my case, I want to put it in this folder here.
I'll define my resource group,
my API management service name, Contoso-Dev,
I'll hit create and hit next.
Now, I need to choose my deployment type.
Here, I could have used GitHub actions
to tie my CISD process but instead I'll hit publish
to publish directly to Azure API Management.
This will then kick off the process
from Visual Studio to publish the API to API Management.
And in fact, let's hop into API Management.
There's our Contoso Farming Censor API,
and I'll test it again with a get operation here.
In the test tab, I'll hit send,
like we saw before in Swagger, I can see it's working.
Now, we go back into the API,
click on the ellipse and hit export.
From here, you'll see all the options we have to export to.
And in our case here we'll choose the one for Power Apps
and Power Automate.
We'll select our environment to publish to ContosoFarms.
So, now it should be available
in my Power Platform environment.
So let's head over to Power App studio.
I can see our connector.
So now let's bring this into our Power App.
In the data tab, I'll select add data, we'll search
for Contoso and you'll see the API here.
I'll hop back into the tree view,
I'll type a function that's going to collect
our sensor data from our API.
And with that done, I'll build a blank vertical gallery,
and next I can bind it to sensor data from my API.
And make just one final edit to the format
and define what I want to see the last reading, the name
and the type.
Now I can test it, I'll hit refresh and there it is.
So now the sensor data is shown in the app
and we can add business logic with Power Automate
to alert experts when certain thresholds are reached.
- Very cool. So, the fact that you're able
to actually wire all these disparate systems in,
and it was all serverless, you did it in
just a couple of minutes, was super impressive.
But it's going to save I think a lot of developers
a lot of time and also a lot of pain I think.
We've seen how Power Apps can be used
to deliver business critical apps
and how you can extend these apps
with your own functionality using custom APIs
like we just saw.
And I know a lot of developers though, that are watching
they might be wondering how Power Apps might work
with their existing DevOps or CICD processes.
What can we say there?
- Yeah, that's right.
And something brand new that we're really excited
about is the integration with GitHub actions
and the Power Platform.
So now you can set up CICD
for your Power Platform development
like you're probably doing now for your other apps.
This works well for UI changes
and even changes you might be making to your apps data.
I'll show you one quick example
but you can do some pretty advanced stuff like AI
and mixed reality too.
So I'm here in our Canvas app.
We actually want to add a data column for say, Access Time.
We want the data type to be date and time
and we'll make it required
and add a few advanced options and click done.
Then I'll save the table and I'll hop over to GitHub
and I want to make sure that we get the updates
into a new branch.
So I'm going to use a manual workflow to
export-and-branch-solution.
Of course, you could run this automatically,
but I want to show what's happening under the covers here.
So I'll run the workflow.
We can click into it here to see what's happening.
I'll click into export from dev.
And you'll see all the actions that were triggered.
These are all the individual steps
that are taken to create a new branch.
Now, with the new branch, let's create a pull request,
I'll give a name and create it.
Now we can look at the change logs and apart
from a bit of metadata, the only change you'll see
is the new data field for access time that we just added.
Looks good, so now I'll merge the pull request and confirm.
Now we can create a new release
with the changes we just added.
So I'll go ahead and do that.
I'll give it a version number, a title, a new release
and I'll go ahead and publish it.
And that release will trigger a release solution
to prod workflow.
We can go into that and watch the progress.
In our case, this starts with convert-to-managed,
then goes to release-to-staging
as part of the publishing process.
And by the way if you're using Azure DevOps
that's an extension we published a few months back as well.
And you can check that out at aka.ms/PowerBuildTools
to learn more.
- So now the Power Platform and Power Apps can also follow
the same dev process as your other apps.
And we saw earlier with the T-Mobile app
you can even build apps that are
either partially or no-code by design.
- And that's really the whole point.
We give you power where and when you need it.
And importantly, Power Apps give your citizen developers
who may be domain experts, the ability design the UI
and app experience that they want.
So that as a professional developer
you don't have to now spend as much time
on the app's front-end.
These apps have the potential to be far more adopted
because they've had direct business user input.
- How would we get this released then into the hands
of our users and make it more discoverable?
- Something else brand new is that we can also make sure
that you apps get seen and are more discoverable.
So here you can see our Orbit app
and I can in one click integrate it with Microsoft Teams.
You can target it to your entire organization
or specific individuals.
And under the covers, it's creating a JSON manifest
that makes this possible.
Then it gets added to your Microsoft Teams apps
so that your users can easily find them.
Or if you're a Teams admin, you can easily scope apps
to the right people and pin them to the left rail.
- Got it.
And one thing that we didn't touch on
was all the governance capabilities that are available
to you with the Power Platform.
Things like data loss prevention through
to visibility into the apps that you created
across all your different environments,
including the types of the connectors that people are using,
like the ones that we built today,
and the ability also to troubleshoot apps
through the integration with application insights in Azure.
So if you're interested in any of these topics,
check out our recent show with Charles Lamanna
at aka.ms/GovernPowerPlatform.
But Per as a coder, what's the best way then to get started
with the Power Platform?
- Well, if you're a VS code user
we've just made an extension for VS code available
for the Power Platform that you can download
from the VS code marketplace.
Also, we recently published a new learning path
that you can check out at aka.ms/FusionDevPath.
- Great stuff.
Thanks so much Per for coming on the show today
and also giving us a great update and overview
of Power Platform's capabilities for pro developers.
Of course, we're going to keep tracking all
the major updates for the Power Platform on Mechanics.
So be sure to subscribe to our channel if you haven't yet.
And thanks so much for watching.
(upbeat music)