Deploying Solutions using Power Platform CLI

In my previous blog post, I have already explained how you can utilize Power Pipelines which is the OOB Dynamics 365 Product capability.

Power Platform have many ways where we can deploy our solutions to higher environments…in this blog post, we will see how we can utilize Power Platform CLI to deploy our solutions.

Prerequisites: Power Platform CLI

If you don’t have installed yet in your machine, you can download Power Platform CLI from this link in either of the ways below

1.Install using Power Platform Tools for Visual Studio Code

2. Install Power Platform CLI for Windows using PowerShell

Once you got this installed, make sure you set your environment variable in your machine as below

Then you can use your favorite IDE or Command line. I personally recommend using Visual Studio Code because of the flexibility it offers and ease of installation, use.

Export and Import can be done very easily with CLI with a few commands once you were authenticated with your instance.

For authentication with your instance. Open a new terminal in visual studio code.

pac auth create –name powermvps1 –url <give your org URL here> –username <give your username here> –password <give your password here>

As below..

Once you have set up correctly, it will show that it is connected.

Now in order to export your solution..use the below commands from Vs Code

pac solution export –path <Path of the Solution Zip file> –name <Solution Name> –managed false –include general

As below..

You should see a Solution zip file got created with the same name as mentioned above…

Similarly, u can import solutions using CLI..

Here I have a solution named ecellorstest in the same folder in my machine..

Let’s try to import using CLI..inorder to import your solution,use the below commands from Vs Code…

pac solution import –path <Solution Zip file path> –activate-plugins true –publish-changes true –async true

As below..

If we check in our instance, we see the solution is imported…

That’s it, how easy it was…however I have detailed about only a part of full capabilities of Power Platform CLI, its uses are unimaginable.

Reference: Power Platform CLI for Solutions

Cheers,

PMDY

What’s the new table type being introduced..?

Hi Folks,

While you may have noticed this or not, but it’s real. Now Dynamics 365 CE existing table types have a new companion called Elastic, it is yet to be announced.

However let’s take a quick look of the table types showing up when you were trying to create a new one in Dataverse.

While everyone is aware about Standard, Activity, Virtual types in Model Driven Apps. Elastic tables are new tables which came in to Dataverse and probably it will be announced in the upcoming Microsoft Build 2023.

From my view, Elastic tables were

1. Built similar to the concept of Elastic Queries in Azure which is usually meant for the purposes of Data archiving needs.

2. You can scale out queries to large data tiers and visualize the results in business intelligence (BI) reports.

3. Elastic Query provides a complete T-SQL Database Querying capability on Azure SQL, possibly Dataverse.

Hope we get all the capabilities released with Elastic Queries of Azure SQL be released in Dataverse as well.

References:

Data Types in Model Driven Apps

Elastic Queries in Azure SQL

Cheers,

PMDY

Power Platform Requests usage…check it out in a no code way now in Admin Center(Preview)

Hi Folks,

As a Power Platform Admin/Consultant…did you often worry about your Power Platform Request Limits and usage left…? Do you receive warning messages from Microsoft regarding the usage of your database exceeded..? Want to see what are Custom Plugin Errors encountered while using your Model Driven App targeting Dataverse….then want to consolidate them and forward to your team to look into the issues without much efforts….then you were in the right place…

Just login with your credentials to admin page https://admin.powerplatform.microsoft.com/.

Expand Resources to the left…to find the Capacity menu

If you just want to know only the data usage, then you can ahead and click on Download as shown above to get one.

Want to get in depth analysis…then click on Details as highlighted in the same snap above.

This page shows your Database usage/File usage and respective categorizations by table as below..

These are reports which I was able to extract from my trial environment, however all the reports were not available currently in my region. Yes, this is expected as this feature is still in preview and not recommended for Production Projects as of now. Definitely in the future…

Note:

  1. Many people including me till now thought that Plugins or at least any operation performed within Model Driven app will not be counted for the API request limits. But…
  2. If the requests are making CRUD, assign, or share–type requests, they’ll count except internal requests. For classic workflows, this includes actions such as checking conditions, starting child workflows, or stopping workflows.
  3. You should never use any third party tools for Integration whenever you were facing any request limit issues.
  4. Request limits are applied differently for licensed users and Non-licensed users.
  5. You can add more capacity to any of your products by assigning your environment in the manage addons page.

Hope you found this post helpful…

Cheers,

PMDY

Power Platform Pipelines to Deploy Managed Solutions

Hi Folks,

As you all know Application Life Cycle Management(ALM) is very important for a project to become successful in this automation era. The faster is the iteration speed to deploy your solution to production, the more healthy your project is and so your stakeholders. This kind of Automation is usually made possible with the help of CI/CD Azure Pipelines. CI/CD for GIT Repo for Azure DevOps is famous from quite some time. You might have heard that Microsoft had got this kind of CI/CD architecture to Power Platform released in Preview last year and is now Generally Available(GA).

But if you still don’t really have a hands on and pretty new to get this into your project, then this blog post is for you. You don’t need to know Azure DevOps or at least you don’t need to be technical to use this new capability, even administrators can. All you need is to just follow along….You can download the presenation I had presented at Singapore User Group here

First of all, let’s see what are the prerequisites to create a Power Platform Pipeline.

  • Four environments are recommended, but you can use as few as three environments to create a pipeline.
  • Dataverse database is a must in all the environments except the Host Environment.
  • Dataverse for Teams environments aren’t supported for use with pipelines.
  • You must have a Power Platform administrator or system administrator role.
  • Pipelines are a feature of Managed Environments. As such, the development and target environments used in a pipeline must be enabled as a managed environment. Standalone licenses won’t be required when you use developer or trial environments with pipelines. More information: Managed Environments.
  • If you want to share these pipelines, you should grant access by opening the security from the host environment. The Deployment Pipeline User security role grants access to run one or more pipelines.

Now let’s see how you can set up Power Pipelines…

You need to identify which of your environments you want to configure pipeline for. For a healthy pipeline, at least you need 3 environments ie. Dev, Test, Prod, however there is no upper cap.

So for configuring our pipeline, we need one more environment in addition to above which is nothing but Host Environment which serves as the environment which stores all the configuration of the pipeline.

So below are our environments we will be using in this tutorial…

Host Environment(Required)

Development Environment (Required)

QA Environment(Optional)

Production Environment(Required)

You can navigate to https://admin.powerplatform.microsoft.com/ to create an environment with Dataverse database or follow this.

First thing, you have to do is to set up the host environment which holds the configuration of your pipeline. The configuration is pretty much easy and intuitive to follow. Make sure you choose same region to all your environments and select type as Production for all environments except developer environment. You don’t actually need to create a database as this stores only the configuration.

In the same way, I have already created the host environment and I also have few trials which I will be one of them as my test environment and one as my Developer environment, we can also configure other environment but for brevity I am leaving one not configured. Make sure to check Create database for this environment while you were creating for all the environments except the Host Environment.

For setting up the pipeline, you need to have the Environment Id’s of the environments which you would like to configure ready. Follow this link if you don’t know how you can get them.

Copy and paste them in a notepad for your quick reference during configuration.

Open the host environment from Admin portal and click on Resources Option available and click on Dynamics 365 apps.

In the next window, click on Install app and in the list of apps, choose Power Platform Pipelines, click on Next and install the app after agreeing the terms of service.

Now you need to open the host environment from https://make.powerapps.com to configure the pipeline and you should an app for Deployment Pipeline Configuration as below.

Before moving further let’s understand the table structure used for the pipeline.

Open this app as below and configure the environments which you want to use in your pipeline, set up the Development environment from where you would like to deploy the changes to your target. Make sure you select Environment Type as Development Environment and provide the respect Environment Id which you copied to your notepad earlier as above.

Similarly configure the other target environments, but proceed to select as Target Environment as the environment type. Once after system validation is done, validation status is shown as successful and the environments setup will look as below.

Now you need to create a pipeline for the configured environments, once saved, link the development environment which you configured above.

Next is configure your target environments for the pipeline to which you would like to deploy your solutions, from the quick create, give a name, choose your Previous Deployment Stage lookup and select the target environment you would like to Deploy from the lookup.

Once setup, your power pipeline should look something as below.

Note: While you are configuring the first stage to deploy to Test environment, you need leave the Previous Deployment Stage as empty.

Now go back to your Development environment, include any power platform component which you would like to deploy to next environment, here for simplicity I added one Canvas App to the solution as below.

The Canvas App component added and as soon as you select or even before you should see a Pipeline symbol as highlighted below….

Note: This icon will be appeared if you have setup everything correctly, if you still don’t see this option when you try to deploy component from Dev, then you need relook at your configuration which you have setup in the host environment, either you gave the wrong environment Id or you configured incorrectly.

Once this icon is being shown, you are set to go…once you click on the Pipeline symbol, it takes you to a new screen showing your pipeline as below

All you need to just click on Deploy here and wait for a couple of mins to Deploy the solution to next environment to Test and you should see below screen. Then click on Deploy.

Once deployment is successful, then you should see Deploy to next environment(Prod) also enabled.

That’s it, lets see if our Solution is deployed to our Test and Prod Environment.

Prod Environment:

Tips:

Use environment names that indicate their purpose, I have used trial environments for demo purpose but this feature is Generally available, so you might try it out in your actual projects meaning the deployed solution will be managed and not editable as below.

Limitations:

  1. Deleting the host environment deletes all pipelines and run data. Use caution and understand the impact of data and configuration loss as well as maker access to pipelines hosted in the environment.
  2. After General availability all the environment will be automatically enabled as managed environments, so you don’t need to worry much about setting up the environment as Managed.
  3. Licensing is also not a problem if you are a maker who’s creating the pipeline, you need to give the Deployment Pipeline Administrator and Deployment Pipeline User to the maker/user and share the pipeline for them to run it.

Hope you found this post helpful and you should definitely incorporate this feature in your projects to deploy managed solutions from one environment to another. How cool is this one….

Cheers,

PMDY

Power Fx Fomula Data type – your new companion in addition to Calculated fields in Dataverse [Insight]

Hello Folks,

I believe ever Power Platform professional working on Dataverse had one or other time got a chance to work on calculated fields. Actually it provides an easy way to perform any calculations for the supported data types since it has been introduced with CRM Version 2015 update 1.

Here is a very simple example of simple calculation to get your Fx data type up and running in few seconds….follow along….

Navigate to https://make.powerapps.com/

Open your solution, navigate to the columns in any table….for simplicity I am taking example of Accounts table…

Now create new column as below

Key values for the field, make a note that the data type (Fx) is selected

I already have two fields as below already on the form for calculating the Annual revenue per Employee from Annual Revenue of the company…

So now let’s write a simple Power Fx formula to calculate the Annual Revenue per Employee…the expression goes as below…

Annual Revenue is a currency field and Number of Employees field is single line of text. As soon as you save, system automatically identifies the data type as Decimal Number as shown above, click on save and publish the form…

Let’s see the actual use in the form…as soon as you enter the values for Annual Revenue and Number of Employees and save, the value for Calculated Revenue for the Employee field value will be calculated by the Power Fx expression.

Hope this will be useful in future for your implementations…

Points to keep in view:

  1. This formula column is in preview right now at the time of writing this blog post.
  2. And currently, formula columns can’t be used in roll-up fields or with plugins.
  3. You can use the following operators in a formula column:
    +, -, *, /, %, ^, in, exactin, &
  4. Microsoft Documentation says that the Currency data type isn’t currently supported but it works actually.
  5. The Text and Value functions only work with whole numbers, where no decimal separator is involved

Ref: Formula Column

Cheers,

PMDY

Setting up Postman Environment to test the Dataverse API’s – Quick Tip

Hi Folks,

Today in this blog post, I would like to share how we can quickly set up Postman Environment to test out the Dataverse API’s right away. It’s very easy and doesn’t need any Client Id, Client Secret registration in Azure AD for Authorization if you follow these steps as the provided Client id works for all Dataverse environments, so let me take you through.

You just need to have a Dataverse environment that you can connect to and Postman desktop App in your machine(Preferably windows)

  1. Lauch the Postman desktop application
  2. Create the environment by click

3. Enter a name for your environment, for example, Blog Environment as below

4. Get the Web API end point URL for your environment with few simple steps as below…by going to Developer resources in make.powerapps.com

Then copy the Web API endpoint URL as below…

Next step is to add following key value pairs in Postman for connecting to Dynamics..please make sure you use the same clientid(51f81489-12ee-4a9e-aaae-a2591f45987d), it is the same to connect to any Dataverse environment.

Variable Initial value

urlhttps://<your org name>.api.crm.dynamics.com
clientid51f81489-12ee-4a9e-aaae-a2591f45987d
version9.2
webapiurl{{url}}/api/data/v{{version}}/
callbackhttps://localhost
authurlhttps://login.microsoftonline.com/common/oauth2/authorize?resource={{url}}

Your updated configuration should look something as below in the Postman.

Click on save to save your newly created environment as highlighted below..

Now all you need is to generate access token in order to authenticate with your Dataverse environment to connect using OAuth 2.0

Follow the simple steps below..

Click on newly created environment, click on + symbol besides it as highlighted below

The following pane appears. Select the Authorization tab.

Set the Type to OAuth 2.0 and set Add authorization data to to Request Headers, if you scroll down a bit, you will be able to see Configure New Token option as below, else you wouldn’t.Auth request headers

In the Configure New Token pane, set the following values:

NameValueAction
Grant TypeimplicitChoose implicit from the drop-down
Callback URL{{callback}}Copy the value
Auth URL{{authurl}}Copy the value
Client ID{{clientid}}Copy the value

The settings should appear as below

Tip: If you were using the Postman to connect to multiple dataverse instances, make sure you clear your Cookies inorder delete the cookies in Postman.

Click on Get New Access Token button, within a moment, you should see a Azure Active Directory pop up to Authenticate your login from browser.

Click Get New Access Token.Once you click Get New Access Token, an Azure Active Directory sign-in dialog box appears. Enter your username and password, and then click Sign In. Once authentication completes, the following dialogue appears and just get the token with few more steps as below.

  1. Authentication completes
  2. After the authentication dialogue automatically closes in a few seconds, the Manage Access Tokens pane appears. Click Use Token.Access token page
  3. The newly generated token will automatically appear in the text box below the Available Tokens drop-down.Token autopopulate

Test your connection

The following shows how to test your connection using WhoAmI:

  1. Select GET as the HTTP method and add {{webapiurl}}WhoAmI in the editing space.Calling WhoAmI endpoint
  2. Click Send to send this request.
  3. If your request is successful, you will see the data returning from the WhoAmI endpoint, like below:Response from WhoAmI

Hope you have found this post useful…when you were working with Dataverse API’s.

Cheers,

PMDY