PowerApps Spring Update

Just 18 months ago we announced the general availability of PowerApps, and since then we’ve seen incredible engagement from our customers and partners. People in over 200,000 organizations have built some amazing apps – transforming how they audit retail stores, buy cars at auctions, manage wind farms, teach algebra, and more.

Bringing the power of Dynamics 365 to PowerApps

With this significant update, we’re advancing what PowerApps can do on several key fronts:

The Common Data Service is taking a huge leap forward, adding capabilities ranging from server-side logic and business processes to advanced security and pro developer support

We're introducing a new style of app building: model-driven apps that automatically generate rich user experience based on your data and processes in the Common Data Service

PowerApps built on the canvas get new capabilities for working with the Common Data Service as well

The key to delivering these new capabilities is a set of enhancements we’re making to the Common Data Service. We took the Common Data Service as you know it today, merged its features with the Dynamics 365 platform and renamed it to the Common Data Service for Apps to reflect the new functionality.

Calculated fields to user server side logic to compute values in an entity.

Production ready pro developer SDK, based on the proven xRM SDK, allowing CDS for Apps access from any pro-dev application.

This significant update also adds a new type of application that can be created with PowerApps: Model-driven apps. Model driven apps are a more data centric way to build “forms over data” declarative applications. Model driven apps focus on entities in CDS for Apps, their relationships, associated business logic and forms. Based on that metadata they automatically render a responsive experience across mobile and web clients. The current style of building apps by designing screens remains a key capability of PowerApps. Moving forward, we call that style of apps canvas apps (I’ll go into more details regarding the differences and when to use which, later in this post).

With these new capabilities, PowerApps and the Common Data Service for Apps now power Dynamics 365 for Sales, Marketing, Customer Service and Talent. PowerApps P2 officially becomes the new platform SKU, moving away from being a admin and maker focused plan to becoming THE plan for users of stand-alone model driven apps.

If you’re already a Dynamics 365 user, this means as soon as your Dynamics 365 apps are upgraded to 9.0, your data will be available in CDS for Apps. Existing Dynamics 365 environments will show up in PowerApps, assuming you have the right access permissions. Dynamics 365 customizers will start using PowerApps to customize Dynamics 365 (no worries: Solution Explorer and other familiar editors remain available), and if you already know how to customize Dynamics 365 then you already know how to build model-driven apps!

It’s also worth noting that all your existing Dynamics 365 apps will continue to work without any modification. The only thing changing for existing Dynamics 365 customers is that the platform you’re already familiar with will get bigger, better and stronger!

Even if you’re not a current Dynamics 365 subscriber you now have a proven, enterprise-class app platform at your disposal that gives you a new approach to solve your biggest app opportunities with.

The new capabilities will be generally available from early May, but if you want to dig in early the public preview starts today. If you already have P2 licenses simply create a new CDS for Apps instance and start building model-driven apps. If you don’t own any P2 licenses you can also sign up for a P2 trial to take a test drive. Manas’ blog shows you the exact steps.

What you should know about model driven apps and canvas apps

Given we’re adding a new app style to PowerApps it’s probably worth explaining the strengths of each style and where we see customers using them.

The PowerApps you know today is focused on high productivity app development starting from the user experience for each screen. Going forward, we’ll call these canvas apps as you’re dropping and configuring controls onto a free-form canvas. This style of building provides pixel-perfect design control over the screens of your app, letting you create rich custom UI in the WYSIWYG studio.

Canvas apps are usually targeted at highly customized role- or task-specific experiences that can pull in and mash up multiple data sources from virtually anywhere. Customized user experiences help making your apps easily approachable so that users can jump right in without needing any/much training. From this release onwards, we are also adding support for server-side logic when building canvas apps with CDS for Apps, more on this later in this blog.

You still get the high productivity app development experience you expect from PowerApps, but with a bottom-up approach: start with data, relationships, business processes and forms. PowerApps then renders the user experience automatically based on the declarative model, creating the appropriate visuals based on device, form factor and even things like the assigned role of the app user. Need to add a new field to your forms? Just modify the entity form and it automatically starts to show up in all apps that use the updated form. Model-driven apps are great for apps with lots of forms and many possible user scenarios through them.

Accessing the new model driven capability is simple, just use the app mode toggle in the PowerApps portal (web.powerapps.com) to switch to model driven app mode.

Your app users will find both canvas and model driven apps in home.dynamics.com. Initially mobile clients for canvas apps and model driven apps remain separate, but this will change later this year.

Of course we will keep iterating. As always our focus is to get the new capabilities to you, our users, and then evolve them using your feedback. We will work to further enhance the creation experiences and make them more visually coherent.

Server-side logic in CDS for Apps

Common Data Service for Apps provides several types of server-side logic:

Declarative logic, that does not require writing any code. In this category CDS for Apps provides:

Business Process Flows – BPFs are a way to describe business processes as a sequence of stages with specific steps in each stage. Use a business process flow when you want users to move through the same stages and follow the same steps to interact with a customer for example. BPF allows modelling of sophisticated processes through capabilities like enforcing certain conditions are met before advancing to the next stage, or dynamically switching stages depending on input from prior stages.

Workflows – CDS for Apps support synchronous (“real-time”) and asynchronous workflows. Custom workflows can be triggered on a wide range of events such as creation of a new record, changes to a record, deletion, etc. The workflow itself can then take one or multiple actions like modifying fields, creating new records or even preventing the operation that triggered the workflow from completing.

Business rules – Ensuring accurate data, regardless of the app that created or edit it is important to maintain data consistency, and ensure apps and analytics continue to operate as expected. Business Rules provide a nice graphical UI for defining these rules and actions that will be executed sychronously when a record is created/updated.

Calculated and roll up fields – entities can now include calculations and roll ups of related records to allow you to create Excel like formulas on both number and text-based fields. This enables calculations to be defined once, ensuring a consistent value is used across all your apps.

In addition to the graphical, declarative editors, CDS for Apps now also supports pro-dev extensibility:

Code plugins – Plugins define custom business logic through .NET that can be triggered by a wide range of events in the platform. They provide the ultimate in fine-grain extensibility for pro-devs.

Custom Workflow activities – Similar to plugins, these can be written in C# and allow definition of custom activities that can be triggered as part of a workflow to execute custom business logic not easily expressed declaratively.

What do these changes mean for your existing canvas apps and any new canvas apps that you can build on the Common Data Service for Apps?

New canvas apps will continue to be able to use the Common Data Service for Apps as a data source and will also gain some new and much requested capabilities. The most exciting being the ability to use the above mentioned server-side logic in your canvas apps. Business Process Flows are not yet supported in Canvas apps, but all the other types of entity scoped server side logic can be used with Canvas apps. Evan provides details on how to get started using business rules in a canvas apps.

For existing canvas apps currently using the Common Data Service there will be some manual upgrade work required to enable the new functionality for those instances, you will begin receiving notifications starting in April with details. No worries, your existing CDS instances will continue to work, new CDS for Apps instances will already have all the new capabilities enabled.

But wait there’s more…!

While the addition of the Common Data Service for Apps is big step forward for us, expanding the scope of the business problems PowerApps can be used to address, we’ve also continued to invest in our current core feature set. For example, web authoring going to GA today and continued app performance improvements.

If you build apps connected to SharePoint, I’m sure you’ll be very happy to see we are adding support for natively uploading attachments into SharePoint lists, yes, including photos! You can read all about it in Filip’s blog.

Our Admin capability is getting a boost with new PowerShell cmdlets to automate lifecycle management and monitoring for PowerApps and Flow, we’re GDPR compliant, and we’re also starting to combine admin centers into a new unified Business Application Platform Admin center.

While we’re very excited about the updates we’re announcing today it’s just the beginning. We have big plans for the next 12 months as we work to integrate the model-driven world with the canvas world much more tightly, bringing more of the declarative capabilities into canvas apps, and enabling more canvas like functionality into model-driven apps.