Using triggerBody() / triggerOutput() to read CDS trigger metadata attributes in a Flow | Power Automate

Now, for all the newbies working with Common Data Service (Current Environment) connector face a little constraint in order to read certain fields which are NOT in the list of the Dynamic Content of the CDS connector itself.

Scenario

Let’s say you want to read this field from the Body / Outputs of the CDS trigger in a Flow in Power Automate

Attributes (or rather supporting metadata) won’t be accessible directly since it’s not from the context of the CDS connector itself like you see for other fields as below –

Flow

In this example, here’s how our Flow will look like.

We’ll declare 2 variables after the CDS connector with Create or Update trigger on Accounts entity and how we can work with the results.

Reading from triggerBody()

When to use triggerBody() ? – When you want to fetch attributes from the body of the trigger.

Here’s how you can use triggerBody() function to read ‘RunAsSystemUserId’ from the outputs of CDS connector.

  1. Let’s say you have a variable declared to store your results. Let’s call it Trigger Body. Click on the fx sign to enter the formula

  2. Now, in the formula, enter triggerBody()?[‘RunAsSystemUserId’]. triggerBody() is a method to you’ll find it in auto-complete

  3. And the variable will look like this

Result of triggerBody() will be as below

Reading from triggerOutputs()

When to use triggerOutputs() ? – Whenever you need to access anything from within the body as well as some info from the header as well as shown in the 2nd screenshot in step #2 below.

Here’s how you can use triggerOutputs() funtion to read ‘RunAsSystemUserId’ from the outputs of CDS connector

  1. Let’s say you have a variable declared to store your results. Let’s call it Trigger Output. Click on the fx sign to enter the formula


  2. Now, in the formula, enter triggerOutputs()?[‘body/RunAsSystemUserId’]. triggerOutputs() is a method to you’ll find it in auto-complete.


    The reason this we write “body/RunAsSystemUserId” is because in the JSON structure of the complete Outputs of the CDS Connector, you’ll see that RunAsSystemUserId attribute lies inside body in the JSON.
    Whereas in terms of triggerBody() above, we are reading attributes from the “body” itself.

Result of triggerOutputs() will be as below

Hope this was useful!

Here are some more Power Automate / Flow posts you might want to check –

  1. Call HTTP Request from a Canvas Power App using Flow and get back Response | Power Automate
  2. Send a Power App Push Notification using Flow to open a record in Canvas App | Power Automate
  3. Accept HTTP Requests in a Flow and send Response back | Power Automate
  4. Terminate a Flow with Failed/Cancelled status | Power Automate
  5. Adaptive Cards for Teams to collect data from users using Power Automate | SharePoint Lists
  6. ChildFlowUnsupportedForInvokerConnections error while using Child Flows [SOLVED] | Power Automate
  7. BPF Flow Step as a Trigger in CDS (Current Environment) connector | Power Automate
  8. Pause a Flow using Delay and Delay Until | Power Automate
  9. Generate Dynamics 365 record link in a Flow using CDS connector | Power Automate
  10. Text Functions in a Flow | Power Automate
  11. Loop through array of objects in a Flow & Create records in CDS | Power Automate
  12. Get Count of records retrieved in CDS connector in a Flow | Power Automate

Thank you!

Send a Power App Push Notification using Flow to open a record in Canvas App | Power Automate

Let’s say most of your users are using custom Canvas Power Apps to follow their business tasks and rely on Canvas Apps for their actions inside Dynamics 365.

There could be scenarios where you want to notify them conditionally of important items that need their attention.

Scenario

Let’s say you have a few users whom you want to tell them that an Opportunity was Won. It could be a team or a single User.

Here’s what my scenario is – A PowerApp Notification is sent to designated User(s) using Flow. When an Opportunity is Won

A Power App Notification is received

And when user clicks he Notification, Canvas Power will open and show that record.

But of course, your implementation/applications for this can be limitless!! This is just my example!

Flow

Here’s what the Flow looks like –

  1. I’m triggering the Flow on Update of the Opportunity. You can use Trigger Conditions to make sure your Flow is triggered only on the update of the Opportunity Win

  2. [Optional, according to my scenario] I want to send this to the Owner of the Opportutnity for now. Of course, it makes sense to send it to others. But let’s keep it simple for now. 🙂
    So, I’m capturing Email address here to be used further down



  3. [Optional, according to my scenario] Further, I’m only checking if the Status was Won. Status Reason = 3 meaning Opportunity was Won


  4. Next, once your condition is satisfied, you can search for this Connector and Action in your Steps in the Flow.


  5. For now, you only have this one Action which you’ll need.


  6. This is how it looks –
    Recipient Item – 1 holds the Email address of the User to whom the notification will be sent to. More can be added by using the + Add new item button.
    Message holds what should be displayed when the notification is received to the end user.
    Open App – Yes/No. Boolean to set if the Power App is supposed to be Opened upon selecting the Notification or not.
    Parameters – You can pass parameters to the Canvas App and use it inside Canvas App. Example: To open the record directly if the App is designed in that way.



  7. First thing you need to do is to create a specific connection for this so that you can use it to open the specific App in Power App.


  8. You can give your Connection a name and then the ID of the App must be entered. Once done, click create.

  9. In case you’re wondering where you’ll get the App ID. You can find the Canvas App ID in the Details section of your Canvas Power App, you’ll only need that to be copied


  10. And you can enter the below options –
    In my example, I’m sending an alert to the email I captured in #2 above.. In your case, you can set this dynamically and add more as well by clicking on “+ Add new item

    In Message, I’ll enter what the notification should read.
    Open App is set to Yes. Means if I click the notification, it’ll open the Canvas Power App whose ID I used above to create the Connection.

    Parameters, this is optional. If you want to open the specific record, you can pass the GUID like this and in the next section, we’ll see how we can open the record using that.

Canvas Power App

In the previous step, remember we sent the Guid as parameter to the Canvas Power App, here’s what you can do to read the record and use it to open the specific record.
Here’s how you can read Parameters passed to the Canvas Power App.
Param(“<ParameterName>”)

I’m using it to Lookup the Opportunity that I passed from the Notification to the Canvas Power App.

In my application, I’m using Lookup to fetch the record and set it to the Item property of the Edit Form control


Some references to use if you’re looking to Capture Parameters and Lookup/Filter data based on your GUID is that’s your implementation.

  1. Pass Parameters to Canvas Power App – https://sachinbansal.blog/2018/06/17/powerapps-canvas-app-how-to-pass-parameter-in-app-url-display-data-based-on-parameter-passed/
  2. Lookup/Filter Records – http://linnzawwin.blogspot.com/2019/12/power-apps-using-common-data-services.html

Working

Let’s say an Opportunity was Won in Dynamics 365.

And the user will receive a notification like this.


Clicking on which, they’ll be taken to the Canvas Power App record which I set in my Canvas Power App.

Hope this was helpful!

Here are some more Canvas Power App posts you might want to look at –

  1. Launch URL on a Data Table Text column selection in a Canvas PowerApp | SharePoint Lists
  2. Aggregate functions in a Canvas Power App | Using on SharePoint Lists
  3. Count of total CDS records returned in a Canvas Power App connection [Quick Tip]
  4. Dependent OptionSets in a Canvas Power App for 1:N related CDS entities | Power Platform
  5. Restore older version of a Canvas Power App | Power Platform
  6. Logged In User details in a Canvas Power App
  7. Implement character length validation in a Canvas Power App | Power Platform
  8. Implementing Exit app, Logout and Confirm Exit features in a Canvas Power App
  9. Number Formatting in a Flow | Power Automate
  10. Generate Dynamics 365 record link in a Flow using CDS connector | Power Automate
  11. Accept HTTP Requests in a Flow and send Response back | Power Automate
  12. Pause a Flow using Delay and Delay Until | Power Automate

Thank you!

Accept HTTP Requests in a Flow and send Response back | Power Automate

Let’s say you want to create a consumable HTTP service, do some operation and send back Response. Here’s what you can do.

You can create an HTTP Request Trigger to receive the HTTP request, process the request and send back a Response.

Accept HTTP Request in Flow

Let’s create a listener first, so that we can get the URL to be used and ask users to submit on that URL.

  1. In your connectors, select the below connector ‘When an HTTP request is received


  2. This will let you accept HTTP requests of different methods. First, let’s just create the schema. Assuming you know what schema you are accepting, click on ‘Use sample payload to generate schema‘.


  3. Now, enter your sample data and click Done.


  4. Schema will be generated automatically.

  5. Now, save your Flow so that a URL could be generated.


  6. Also, remember to select what type of Request to accept. It’s under the Show advanced options

  7. Select what type of HTTP request this is. In this example, I’m accepting a POST request.

    relativePath is used when you want to access a specific resource in your HTTP request that is passed in the query string. None in my case, hence, not using it.
  8. Supported verbs in the HTTP Request trigger are GET, PUT, POST, PATCH, DELETE –

Process Info

This is subjective and is completely based on your use case, you can decide what you want to do with the data you receive. Could be anything!! I’ll simply highlight in short what I’m doing here.

I’m just accepting all “Requests” entity data and giving back a Reference ID to customer telling them that their request has been registered with us. Like a typical Ticketing system where you log a ticket and you get back a reference number.

In my example, I’m simply creating a CDS record in my D365 environment and I will return the Auto-generated field value to the Response so that it can be sent back to the caller.

In case you are also looking to create an Autonumber field for yourself in CDS, you can check this post – AutoNumber field in CDS | PowerApps

Send Back Response

Now, in the step above, I’ve created a CDS record in the system. It will also auto-generate a number for the record. I’ll use the same to pass it back as a response.

  1. Now, search for Response (or rather Request) in the Connectors list and you’ll be able to choose the Response action.


  2. In the same, you can then choose what Response code you want to return. This will differ based on where you use this. Example, if you use this Response Action in case of some error, you can return 500 or 404 if something was not found, depends.
    In this case, I’m returning 200 OK and the JSON of my message and sending back the Token (Auto-number field on Request entity record creation)

  3. Here, my Flow is complete.

Testing the Flow

Understand the building blocks of the Flow. Accept Request –> Process –> Response.

Now, the URL we get when we save the Flow is the one that goes to the developers/consumers.
It contain some tokens and header information.

See how I tested it using Postman.

  1. Once I copied it from the Flow and pasted in Postman, the Headers were populated automatically in Postman. (And then you can use this to build your code later on)


  2. Now, I am sending the data in the body in the following way

  3. Now, let’s say I submit the request using Postman.
    A record will be created in my D365 (Common Data Service)

  4. And the Token that the record generated will be returned as response back to Postman

    With the status of 200 OK

  5. And that’s how you can receive HTTP requests and send back responses using Flow in Power Automate.

Here are some more Power Automate / Flow posts you might want to look at

  1. Make HTTP request from Flow in Power Automate
  2. Setting Retry Policy for an HTTP request in a Flow | Power Automate
  3. Terminate a Flow with Failed/Cancelled status | Power Automate
  4. Adaptive Cards for Teams to collect data from users using Power Automate | SharePoint Lists
  5. BPF Flow Step as a Trigger in CDS (Current Environment) connector | Power Automate
  6. ChildFlowUnsupportedForInvokerConnections error while using Child Flows [SOLVED] | Power Automate
  7. Generate Dynamics 365 record link in a Flow using CDS connector | Power Automate
  8. Pause a Flow using Delay and Delay Until | Power Automate
  9. Get Count of records retrieved in CDS connector in a Flow | Power Automate
  10. Call a Dynamics 365 Action from Flow [Bound and Unbound Actions] | Power Automate
  11. Switch-Case in a Flow | Power Automate
  12. Using Parse JSON to read individual List Records in Flow|Power Automate

Hope this was useful! 🙂

Adaptive Cards for Teams to collect data from users using Power Automate | SharePoint Lists

Adaptive Cards is something so cool and works like magic!! I’m sure there are so many creative ways to use it.

Here’s an example – Use Adaptive Cards to gather data from Microsoft Teams Users and populate it automatically to SharePoint List.

Scenario

Let’s say, you have a set of data to collect from your employees – for instance, planning a trip (or any other event for that matter) where you have to take data from employees in order to better plan the logistics.

So, in my example, I want to plan an event for which I need to ask each employee their T-Shirt size, food preference and any allergies to be taken care of.

It’s better to let the users answer at their own accord. You simply need to create a SharePoint list and list out all the Employees whom the short questionnaire should be sent to.

Adaptive Cards (https://adaptivecards.io/)

As their website says, Adaptive Cards are platform-agnostic snippets of UI, authored in JSON, that apps and services and open exchange.

It’s a superb way to make these cards pop-up in Teams, Outlook, Bot Framework etc.

In this post, we’ll ask Microsoft Teams users to submit some info which will be automatically populated to the SharePoint List.

In https://adaptivecards.io/designer/, you can design your own Adaptive Card by looking at the samples already provided on the website.

SharePoint List

Let’s say, you’ve prepared a SharePoint List called ‘Employee Preferences‘ which looks like the below. And you need to get info from them on their Allergies, Food Preference and T-Shirt size in order to prepare for the event

Power Automate

Next step, is to create a Flow in PowerAutomate to send out these Adaptive Cards to the Teams member in their Chat so that they can send back their preferences which is automatically updated in the SharePoint List.
Let’s begin –
(Before we begin, it’s up to you to decide when should the Power Automate trigger, whether on create of Each Item, or all at once when the SP List is ready. I just chose the later. So, see what’s most suitable to you.)

  1. Let’s say my first step is to get all the items from the SharePoint List I created, called ‘Employee Preferences


    And then, set the below preferences –


  2. Next, I’ll loop through each of the SP items and initiate an Teams action to send Adaptive Card and wait for the response.

  3. Now, in Adaptive Card you’ve selected for the user of the Team, I’ve used the Email field from the SP list so that I can use it in the recipient field to send the Adaptive Card to that Teams user.

    And paste the content from Adaptive Card editor in Message field.


  4. You can use dynamic data at the right places to populate you Adaptive Card wherever needed.


  5. Finally, you can have an Update message filled in. This is shown once the User Submits back the Adaptive Card with data.
    Should update card should be selected to Yes so that it doesn’t stay like that and the user knows that the response has been captured.


  6. Then, you need to update the captured response back to the SP List.



  7. At this point, your Adaptive Card is ready! Let’s test.

Adaptive Card in Microsoft Teams

Once this is run, the Teams user gets the below in the chat.

  1. User receives and Adaptive Card in their Teams Chat.

    Let’s zoom a little and see how it looks. Notice that we had populated the name dynamically in the Adaptive Card body.

  2. Now, click on Fill Out information and the card will expand to expose the form

  3. Now, I’ll fill the information as below and Submit the same

  4. Once I click Submit, I’ll see the below message. Remember, this populated from Update message field in the Adaptive card options.

  5. And when you check back the SharePoint List, the data has been updated in the same.

    And that’s it!!
    Hope this helped!

Here are some Power Automate / Flow posts you might want to look at –

  1. ChildFlowUnsupportedForInvokerConnections error while using Child Flows [SOLVED] | Power Automate
  2. BPF Flow Step as a Trigger in CDS (Current Environment) connector | Power Automate
  3. http://flowPause a Flow using Delay and Delay Until | Power Automate
  4. Generate Dynamics 365 record link in a Flow using CDS connector | Power Automate
  5. Text Functions in a Flow | Power Automate
  6. Loop through array of objects in a Flow & Create records in CDS | Power Automate
  7. Get Count of records retrieved in CDS connector in a Flow | Power Automate
  8. Number Formatting in a Flow | Power Automate
  9. Call a Dynamics 365 Action from Flow [Bound and Unbound Actions] | Power Automate
  10. Setting Retry Policy for an HTTP request in a Flow | Power Automate
  11. Switch-Case in a Flow | Power Automate
  12. Make HTTP request from Flow in Power Automate

Thank you for your time!

ChildFlowUnsupportedForInvokerConnections error while using Child Flows [SOLVED] | Power Automate

Often times, if you are using Child Flows and but you see some unexpected while Saving your parent Flows upon adding a Child Flow, which usually look like the below
undefined

Assuming, you are aware of using Child Flows and that they can only be created inside a Solution. (Of course, that’s why you could encounter this issue since you’re able to set a Child Flow already 😊)

Reason Issue

Let’s say this is your Child Flow as shown below in Power Automate. It uses a connection for Approvals. (It could be any other connection in your case.)
undefined

Now, open Run only users section as shown below
undefined

It’ll show that my Approvals connection is relying on Provided by run-only user in Power Automate. To learn more about Run only Users, refer this post – https://www.serverlessnotes.com/docs/sharing-flows-as-owners-and-run-only-users

Now, I switch to Use this connection (<Connector>)
undefined

It’ll ask for a confirmation as per below
undefined

Once this is set for all respective connections, you’ll have no issues in adding a Child Flow to your parent Flow and saving your parent Flow!

Here are some more Power Automate / Flow posts you might want to look at –

  1. BPF Flow Step as a Trigger in CDS (Current Environment) connector | Power Automate
  2. Pause a Flow using Delay and Delay Until | Power Automate
  3. Generate Dynamics 365 record link in a Flow using CDS connector | Power Automate
  4. Get Count of records retrieved in CDS connector in a Flow | Power Automate
  5. Loop through array of objects in a Flow & Create records in CDS | Power Automate
  6. Call a Dynamics 365 Action from Flow [Bound and Unbound Actions] | Power Automate
  7. Number Formatting in a Flow | Power Automate
  8. Text Functions in a Flow | Power Automate
  9. Setting Retry Policy for an HTTP request in a Flow | Power Automate
  10. Make HTTP request from Flow in Power Automate

Hope this quick tip helps!

BPF Flow Step as a Trigger in CDS (Current Environment) connector | Power Automate

Here’s an update to the Common Data Service (Current Environment) connector in Power Automate

Remember, this is available only in Common Data Service (Current Environment) connector i.e. you’ll need to create you Flow inside a Solution in Power Automate
undefined

Flow Step

Now, you can call your Flow from a Business Process Flow, which existed for some time. But now, it’s available as a trigger in the Common Data Service (Current Environment)
undefined

Flow & BPF Setup

  1. Now, my Flow is kept simple to illustrate what has been triggered. The first step simple is run When a flow step is executed.
    It starts with a simple Instant Flow like template if you want to have an additional input
    undefined
    And then you can use these in the context further. But I’ll keep it simple assuming you are familiar with trigger inputs.
  2. Then, you get the details that you can use from the trigger.
    undefined
  3. And I’m simply passing on the values over to an email so that I can read it. You application could be anything. Typically, it could be a complex business process in a Flow to trigger when a Flow Step is triggered.
    undefined
  4. Now, in my Business Process Flow Step, I’ve added a Flow Step (Preview), mind that this is still in Preview as of writing this post.
    undefined
  5. And select the Flow I’ve intended for this.
    undefined

Running the Flow

Now, here’s how it goes –

  1. I’ve called the Flow from the Flow Step
    undefined
  2. It’ll ask for confirmation of the Flow in a window
    undefined
  3. Once all the permissions are set, depending on what’s needed in the Flow, you’ll be asked for a confirmation
    undefined
  4. Once completed, you can check in Flow Runs about what happened to the execution of the Flow
    undefined


Results

So here are some results I composed from the data of the BPF itself-
undefined

And that’s it!

Here are some more Power Automate / Flow posts you might want to look at:

  1. Pause a Flow using Delay and Delay Until | Power Automate
  2. Generate Dynamics 365 record link in a Flow using CDS connector | Power Automate
  3. Text Functions in a Flow | Power Automate
  4. Loop through array of objects in a Flow & Create records in CDS | Power Automate
  5. Get Count of records retrieved in CDS connector in a Flow | Power Automate
  6. Number Formatting in a Flow | Power Automate
  7. Call a Dynamics 365 Action from Flow [Bound and Unbound Actions] | Power Automate
  8. Switch-Case in a Flow | Power Automate
  9. Setting Retry Policy for an HTTP request in a Flow | Power Automate
  10. Make HTTP request from Flow in Power Automate

Hope this helps!!

Generate Dynamics 365 record link in a Flow using CDS connector | Power Automate

There are several ways to formulate a Dynamics 365 record URL and make it clickable in a Flow in Power Automate.

Here’s one of the ways I follow for most scenarios – Let’s say I want to open a PSA Time Entry record from my Flow, here’s how I do it

Get record action to retrieve URL

Since this post is focused on CDS connector, I can get the D365 record link in body of Get record action for Common Data Service connector.

Unfortunately, I didn’t see this if the trigger was a CDS action, so I made a separate Get record call.
undefined

undefined
But, we’ll retrieve the same without having to select/parse body object. So let’s see –

Generating Link

First, I’ve initialized a variable that’ll hold the String format of the end URL
undefined
Now, first – I’ve appended https://. This won’t come directly using the uriHost() method

Then, the uriHost() holds the formula ‘uriHost(body(‘Get_record’)?[‘@odata.id’])

Meaning, get the uriHost name i.e. Environment name itself.
undefined

Then, I’ve appended options for the window to open which are mentioned below in this post.

Finally, I’ve appended the Primary Key of the record itself at the end
undefined

Options

Now, let’s talk about the options –

  1. cmdBar = [true | false]
    It’ll show the ribbon on the record. If false is chosen, it’ll be hidden
    undefined
  2. navBar = [off | on]
    It’ll show the Navigation Bar on top if on. If off, it’ll be hidden
    undefined
  3. newWindow=[true | false]
    This didn’t affect in my case. It anyway opened in a new tab. This could be different is the link is not opened from Email but is used elsewhere
    undefined
  4. pagetype=entityrecord
    Since we are targeting a Dynamics 365 entity record, the above is used.
    undefined
  5. etn= [name of the entity]
    Name of the entity
    undefined
  6. id
    GUID of the record itself.
    undefined

Here’s an Email that I composed to show how the URL will end up looking –
undefined

Which will result in Email like this

undefined

And open the record like this.
undefined
As per my settings in the URL I created, I don’t have the Nav Bar or Command Bar visible. It’s up to you to decide your preference

Here are some more Power Automate / Flow content you might want to check –

  1. Text Functions in a Flow | Power Automate
  2. Loop through array of objects in a Flow & Create records in CDS | Power Automate
  3. Get Count of records retrieved in CDS connector in a Flow | Power Automate
  4. Number Formatting in a Flow | Power Automate
  5. Call a Dynamics 365 Action from Flow [Bound and Unbound Actions] | Power Automate
  6. Make HTTP request from Flow in Power Automate
  7. Switch-Case in a Flow | Power Automate
  8. Setting Retry Policy for an HTTP request in a Flow | Power Automate

Hope this helps!!

Text Functions in a Flow | Power Automate

As I was looking at some String/Text operations in Flow recently, here’s what I discovered.

Looks like there are a lot more to come, so let’s look at some initial ones.

undefined

Find text position

A pretty simple feature to find the position the Search Text starts from in a String.
undefined

Here, I’m trying to find where does ‘yes’ in string ‘Priyesh’ starts from in the given text. And the answer was 3. [Text Index starting from 0]
undefined

If the text doesn’t exist, the result is -1
undefined

Substring

Here’s another important Text function called Substring.

This will return the substring with starting index of 3 and the length of the string from the starting character.
undefined

In this case, it’ll return the string “yes”
undefined

If your Starting Position in Substring is out of the range i.e. exceeding the length of the entire string, you’ll see and error like below stating the issue.
Also, the same error will be displayed if the Length of the Substring chosen falls out of range i.e. the index exceeding end of the string.
undefined

Here are some more Power Automate / Flow posts you might want to look at

  1. Loop through array of objects in a Flow & Create records in CDS | Power Automate
  2. Get Count of records retrieved in CDS connector in a Flow | Power Automate
  3. Number Formatting in a Flow | Power Automate
  4. Call a Dynamics 365 Action from Flow [Bound and Unbound Actions] | Power Automate
  5. Switch-Case in a Flow | Power Automate
  6. Setting Retry Policy for an HTTP request in a Flow | Power Automate
  7. Using Parse JSON to read individual List Records in Flow|Power Automate
  8. Make HTTP request from Flow in Power Automate
  9. Enable Flow button on D365 Ribbon
  10. Button Flow in Power Automate to replicate a Quick Create Form in D365 CE

Loop through array of objects in a Flow & Create records in CDS | Power Automate

One of the most common scenarios that are looked out for are ways to loop through an array of objects received (say, from HTTP response) and create CDS records

Sample Data

Let’s say this is the sample data coming in which is an array of objects. This is coming from my HTTP trigger which I created and hosted. It could be anything else in your case
undefined

And the body looks something like this –

[{"Name":"FreshBeans Coffee","City":"Mumbai","Phone":999999999},{"Name":"Timber Mart","City":"Pune","Phone":999999999}]

Generate Schema from Payload

I need to first create the Schema to be able to easily read from the JSON response
undefined

Paste a sample Payload in the dialog box
undefined

And it will generate a Schema
undefined

And when this is generated, you can access the attributes further in your Flow
undefined

What if you just enter a blank object and not generate from Schema or enter Schema explicitly as shown below –
undefined
You won’t get the attributes from the JSON Payload which is needed further
undefined

Loop through array and Create in CDS

Now, you can use Apply To Each and pass the Parsed JSON Body. I’ve simply used Compose to see the entire Object while checking results (No other purpose of using Compose in this example)
undefined

And then the next step is to Create CDS records from the looped Objects. So, since I have the schema generated above, I can use the attributes to directly map it to the CDS Create Record action

undefined

Running the Flow

Finally, once I run the Flow and check the actions performed. I’ll create 2 records since there are 2 objects in my array.

I’ll see the Compose step to see what I got in the object. As I mentioned earlier, this is not required- I just intend to put it there to see what data came in
undefined

And the Create Record in CDS step will create record in my Dynamics 365 environment as I intended it to do –
undefined

I can check the same in Dynamics 365
undefined

You might also want to check other posts related to Power Automate –

  1. Get Count of records retrieved in CDS connector in a Flow | Power Automate
  2. Number Formatting in a Flow | Power Automate
  3. Call a Dynamics 365 Action from Flow [Bound and Unbound Actions] | Power Automate
  4. Switch-Case in a Flow | Power Automate
  5. Setting Retry Policy for an HTTP request in a Flow | Power Automate
  6. Make HTTP request from Flow in Power Automate
  7. Button Flow in Power Automate to replicate a Quick Create Form in D365 CE
  8. Enable Flow button on D365 Ribbon

Hope this was easy!

Get Count of records retrieved in CDS connector in a Flow | Power Automate

In several applications, you need to know how many record were retrieved in the List records Action in a Common Data Service connector in order to take a decision.

Scenario

Typically, let’s say I know only 1 record should exist in order to take that record forward and do an action. But how do I know when only 1 record was received? That’s when you use Control

Check Count

Now, let’s say you want to want to retrieve Accounts and know how many were returned (Perhaps, you want to proceed only if at least 1 or more were retrieved)

  1. This is my List Records action and I’ve named it as Get All Records.
    defaultListRecords
  2. And just to display how many records are retrieved, I’ll use a variable. Usually, you would use this in condition (which we’ll get to in a bit)
    initVar
  3. So, in the expressions to set the Variable, under Dynamic Content, I’ll write –
    writeHereand write the below expressioncountactualExpression
    which is set to the variable
    setVar
  4. And here are the results. I have 101 Accounts
    count

Using it for comparison

This is one of the typical use cases where you want to proceed only if you have at least 1 record –
typicalUseCase

Here are some more Flow related topics you might want to take a look at –

  1. Number Formatting in a Flow | Power Automate
  2. Get N:N records in a Canvas Power App using Common Data Service connector | Power Platform
  3. Switch-Case in a Flow | Power Automate
  4. Setting Retry Policy for an HTTP request in a Flow | Power Automate
  5. Retrieve only active Dynamics 365 CE licensed Users in CDS connector in Power Automate
  6. Button Flow in Power Automate to replicate a Quick Create Form in D365 CE
  7. Make HTTP request from Flow in Power Automate
  8. Create a To-Do List Item of Important Outlook Emails using Power Automate

Hope this quick tip helps!