D365 for Operations and Finance

MICROSOFT FLOW BASICS AND LIMITATIONS WHEN WORKING WITH DYNAMICS 365

In this post I will be covering some Microsoft Flow basics and limitations when working with Dynamics 365. This will help you determine which Flow plan and/or connectors suites best for your needs.

Connecting to your Dynamics 365 instance

Firstly let’s look at the connectors for Dynamics 365. You have two options when it comes to connecting to a D365 instance.

  1. Dynamics 365 connector

D365Connector

The Dynamics 365 connector provides limited access to the Dynamics 365 organisation.

For more info on trigger events and actions please visit: https://docs.microsoft.com/en-us/connectors/dynamicscrmonline/

  1. Common Data Services (CDS) connector

CDSConnector

Provides access to the org-based database on the Microsoft Common Data Service.

For more info on trigger events and actions please visit: https://docs.microsoft.com/en-us/connectors/runtimeservice/

Now let’s do a side by side comparison between some of the notable features:

Feature Dynamics 365 Connector CDS Connector
Trigger Flow on create Available Available
Trigger Flow on updates Available Available
Trigger Flow on specific attribute updates Not availableLimited to record level updates only

* Which means you will have to take extra measures if you have to update the triggering record within the same flow. This is to stop the flow from triggering infinitely.

Available
Change Tracking limitations Requires Change Tracking to be enabled in D365 Change Tracking is not required
Define level of scope for the Flow trigger Not availableLimited to Organisation level only Available

  • Organisation level
  • Parent: Child Business Unit level
  • Business Unit level
  • User level
Trigger Flow on deletes Available Available
Manually trigger when a flow is selected Not available Available
Action: Create Note (annotation) for specified entity record Manual Special simplified action is available
Action: Retrieve all Notes (annotations) for the provided entity Id Manual Special simplified action is available
Action: Retrieves file content for specified Note (annotation) Manual Special simplified action is available
Connector Type Standard Premium(Only available in Flow Plan 1 and 2)

Triggers

Let’s have a look at the trigger event screens of each connector. I have selected the “When a record is updated” trigger event for the screenshots.

Dynamics 365 connector:

D365Trigger

CDS Connector:

CDSTrigger

CDS connector will give you the option to select the Scope for event triggers. Scope can be set to Organisation, Parent: Child Business unit, Business Unit or User level. This is similar to the native workflow engine in D365.

In addition to the scope you will also have the option to select attribute filters. Attribute filters will ensure the event trigger is only invoked when the specified attributes are updated.

Points to consider when using update triggers:

  • Update event triggers are invoked on Update requests to the record. Event triggers would NOT check whether any attribute values are being changed or not. As long as the update request is successful the Flow would be triggered.

What does this mean?

For update triggers at record level, the flow would still be invoked even if the update request has not made any changes to the record (Applies to D365 connector and CDS connector both)

For update triggers with attribute filters, the flow would be invoked even if the update request is setting the attribute its existing value (Applies to CDS Connector)

Flow Plans

Now that we have covered triggers and actions let’s have a look at Flow Plans. Currently Flow offers 3 plans.

Flow Free Flow Plan 1 Flow Plan 2
  • 750 runs per month
  • Unlimited flow creation
  • 15-minute checks
  • 4,500 runs per month
  • Unlimited flow creation
  • 3-minute checks
  • Premium Connectors
  • 15,000 runs per month
  • Unlimited flow creation
  • 1-minute checks
  • Premium Connectors
  • Org policy settings
  • Business process flows

You can check out Microsoft Flow Plans page for more information.

Limits and configuration in Microsoft Flow

Documentation from Microsoft provides more information on current request limits, run duration and retention, looping and debatching limits, definition limits, SharePoint limits or IP address configuration.

For current limits and configuration details please visit Microsoft Docs here.

There are also some limitations in the Flow designer UI compared to the native workflow designer in D365. One of them being the ability to design grouped conditional statements. Currently Flow does not provide grouped conditions to be configured in Basic mode. Which means you will have to use the advanced mode to build your conditional statements. I have noticed that LogicApps have already added the ability to group conditional statements in the basic designer and hopefully this is on the roadmap for Flow too.

Flow:

FlowCondition

LogicApps:

LogicAppsCondition

Even with these limitations Flow offers a lot more than the native D365 workflow engine.

You can checkout Microsoft Flow Documentation page for more information and how-to guides.

I would also highly recommend watching “What the Flow” vlog series by Elaiza if you wish to learn more about Flow and how to transition from native D365 workflows to Flow.

New book on Microsoft Dynamics 365 FinOps – “Microsoft Dynamics 365 FinOps – Fixed Price Projects Revenue Recognition In-depth”

I have released a new paperback book called “Microsoft Dynamics 365 FinOps – Fixed Price Projects Revenue Recognition In-depth” on Amazon about the fixed price projects revenue recognition last Thursday .i.e. 27th September 2018. In this blog post i am going to talk about the book and the motivation behind that.

I knew basic fixed price projects revenue recognition and how to perform it in the system. However, when it came to knowing all the possible fixed price projects revenue recognition scenarios, i always had to dig the internet and find out how this scenario works and how that scenario works. And while doing that i realized that apart from the basic information about the fixed price revenue recognition, there was not much available on the internet. This triggered me write this book. I thought lets put all the logical and allowed scenarios on paper in details, along with the screenshots, explanation, supporting T-accounts, other relevant details, exceptions, shortcomings, specific behavior  and have it all in one place, in one book. The aim was to stop looking the internet endlessly for this topic henceforth.

What i did initially was plotted all the permutations and combinations with all the elements of the project group like 4 values of ‘Revenue recognition accounting rule’, 3 values of ‘Calculation methods’ and 4 values of ‘Matching principle’ and put them on excel sheet. The number came somewhere around 36. Also added further scenarios when i brought the ‘Cost template’ and its values for ‘Completion based on’ in scope. This added few more permutations and combinations with ‘Straight line’ and ‘WBS’ type of revenue recognition further adding to the scope. However, after trying each one of them by setting them up individually in the system, i concluded that 11 unique scenarios are the ones which i should be writing about in this book.

I decided to name it as “Microsoft Dynamics 365 FinOps – Fixed Price Projects Revenue Recognition In-depth” as this book gives the in-depth explanation for all the 11 scenarios along with all the accounting and relevant supporting details in over 200 pages. The second important decision was to print this book in COLOR, as the screenshots had many markings in RED, which i wanted the readers to really look at and understand it at once. The aim was always to uncover this complex beast of revenue recognition engine for fixed price projects.

Being a functional consultant, i have always faced many situations when client used to ask questions about a specific revenue recognition scenario and whether that is possible in the system and can i explain it. My regular answer was, “Let me get back to you on this”, as i knew that this is a complex area and this needs thorough preparation before presenting it to the client. Now with this book in place, i am personally in a much better position than what i was earlier. Not that i would answer all the questions about this topic instantly but at-least the turnaround time on them and the confidence would be much higher. I seriously feel that consultants working in the area of ‘Project management and accounting module’ of Microsoft Dynamics 365 FinOps, should definitely have a read through of this book.

Amazon link for the book is as follows: http://amzn.eu/d/7cEcot9

If you happen to read the book and if you wish to provide any feedback, then don’t hesitate to email it to me on kusaresarang@gmail.com. And if you like the book, then please write a review on Amazon, so that it would benefit other buyers too.

Thanks again!!

Kind Regards

Sarang Kusare

Dynamics 365 Saturday – Dublin 2018

The Dynamics 365 Saturday 2018 took place in Microsoft Dublin (One Microsoft Place) and was hosted by Janet Robb and her Team. Congratulations on Janet for a great work on organising such well-structured event.

Lots of cool sessions provided, as well as workshops for PowerApps and CRM for the ones who were interested.

 

Even though I’m not a Dynamics consultant, to me as a SharePoint/Office 365 Consultant, it was very cool to see how the same stack of products (Power platform + Azure) that we use on top of SharePoint/Office 365 is been adopted in the Dynamics Community as well. As mentioned on the keynote, for all D365 specialists it’s been a constant work to keep up to date with tons of new features been released (I can assure that for Office 365 as well), and an event like this helps to connect the community and to get a summarized overview of what’s been there in the market.

Special thanks to our Dynamics Guys who came from the UK and smashed in their presentations:

Chris Huntingford – Dynamics 365 for Marketing

Kylie Hill – My Favorite new D365 Features

It was a pleasure to meet those legends in person.

Also, the interaction from the community posting and sharing content and pictures on social media (Hashtag #365SatDub) was really nice, cool to see such engagement and nice pictures from everyone on Linkedin and Twitter.

Looking forward to the next #365SatDub!!

Calculation Method and Balancing Fee Journal

There are three calculation methods when it comes to fixed price projects, they are:

  1. None
  2. Markup percent total
  3. Markup percent estimate line
This post is not about describing what each of the calculation method does but this post is the super summary of when does the system create the balancing fee journal and when it does not. This post is for the advanced users of revenue recognition functionality. It is assumed that the readers of this post are aware of all the three methods and how they behave. This is a small post to just present the gist in a table format with respect to the creation of balancing fee journal for all three calculation methods.
Calculation method and Balancing fee journal
System behavior is different when the:
  • dimensions are NOT present on the project and hours transactions and
  • dimensions on the project and hours transactions are different
No dimensions on the project and hours transactions
Contract value – 100,000
On account transaction
Hours forecast – 146
Hours forecast
No dimensions on the project
No dimensions on project
Contract value distributed during the estimate
Contract value distribution among cost lines
Cost posted for all the three cost lines are 1,800, 1,200 and 3,600, which is equal to 6,600. Based on the contract value distribution, the revenue recognized should be 30,000. [((1,800 / 3,600) *20,000) + ((1,200 / 3,600) *30,000)) + ((3,600 / 18,000) *50,000))]
System suggested percent complete
System suggested percent complete
Actual hours v/s Hours forecast
But system suggested percent complete is 27.40 [((Total posted hours / Total hours forecast in Qty)*100), which is (40/146)*100 = 27.40] hence the accrued revenue value would be 27,400. Hence the balancing fee journal should be approximately 2,600. Completion is based on ‘Quantity’ in the cost template.
When the estimate is posted, following is the voucher posted:
One voucher for accrued revenue
And the posted transactions are as below, which shows the actual 30,000 accrued revenue and the balancing fee transaction of approximately 2,600. However strange enough there is no voucher for that balancing transaction.
Balancing fee transaction
Dimensions on the project and hours transaction are different
 
I repeated the above example with the same values, but this time with the dimensions on the project and hours transaction. However the ‘Department’ dimension  on the project is 22, and on all the three hours transactions are 23, 24 and 25 respectively.
With all the steps same as above, when the estimate was created, the system showed a percent complete of 27.40. I manually changed to 25 to see the impact on the posting.
Percent complete changed from automatic to manual
The voucher that was posted was expected to have a balancing fee transaction of 5000, with the dimensions from the project.
Balancing fee transaction
Posted transaction was as below:
Posted transactions
However in this case the voucher was posted for the balancing fee transaction.
 
Hopefully this post has helped you get more insight into the revenue recognition and generation of balancing fee transaction.
Kind Regards
Sarang Kusare

Quick Post – Fixed Price project eliminate button and invoice posting date

Everyday we learn, no matter what and that’s absolutely true. However more important is to retain what we have learnt today and reduce the time in re-inventing the wheel later. I just now learnt a very small thing but i still wish to put this in writing so that i remember it in future and also if it helps others , then nothing like it.

If the project  is over and the ‘Eliminate’ button does not activate, then there are two reasons for it, one is either the cost is not yet set to 0 or the contract value (On-account) is not yet invoiced. However there is one more reason why it wont be active, which i learnt today.

In my example, which is a straight line project, where the ‘Actual start date’ is 14th of Jan 2018 and ‘Actual end date’ is 13th of Feb 2018, however we are in September. When i invoiced the on-account (contract value), i did not realize that i haven’t changed the ‘Posting date’ and it was today, .i.e. 4th of September 2018.

On account invoice posting date

After that i started posting estimates. As there were only two months for which i need to run the estimates, i ran it for Jan 2018 and Feb 2018 and i was expecting the ‘Eliminate’ button to get active so that i can eliminate the project. However system did not activate the ‘Eliminate’ button. I instantly realized that system is probably looking at the invoice ‘Posting date’. Hence i continued the estimates till September 2018 and after the estimate for September 2018 was posted, system activated the ‘Eliminate’ button. Notice the ‘Invoice revenue’ also appeared in the month of September only.

Eliminate button activated after the September 2018 estimate posting

Just to prove it completely and validate it 100%, i created one more project but this time while posting the on-account invoice, i deliberately changed the posting date to 15th of Jan 2018.

On account invoice posting date

After that i posted two estimates for Jan 2018 and Feb 2018 and then instantly after the Feb 2018 estimated was posted, system activated the ‘Eliminate’ option.

Eliminate option activated after the February 2018 estimate posting

I know this is pretty small for a blog post but thought of capturing it so that it does not get lost.

Kind Regards
Sarang Kusare

Microsoft Cognitive Services with PowerApps – Snap It and Translate

Microsoft cognitive services gives rich Artificial Capabilities into the applications. These capabilities can be used with PowerApps when building Apps. Cognitive services can help to make your Apps Smarter.

Artificial Intelligence and Data science go in hand in hand. Microsoft packaged in all capabilities and packages those together to create easy to consume API’s such as Cognitive Services and Bot Framework.

Microsoft provides 23 Cognitive Services API’s. It’s categorises into five areas namely Vision, Speech, Language, Knowledge and Search. For the experiment below I have used Computer Vision & Microsoft Translator API’s. It helps to detect text content from an image using OCR (Optical Character Recognition) & Translate text to different languages.

You can find further information on cognitive services information by following link below.

https://azure.microsoft.com/en-us/services/cognitive-services/

When creating Connections inside PowerApps would require getting an Account Key and Site URL. Use below link to get it.

https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/

If you do not have an Azure Account yet you can use the 7-day trial to get started.

Below Image depicts the simple flow of the actions involved with the app.

Set properties as below.

Image

Image = First(colPhoto).Url

Camera

Onselect = ClearCollect(colPhoto,Camera1.Photo)

Text BOX

Text = varOCR

Overflow = Overflow.Scroll

Capture Text Button

Onselect = Set(varOCR,ImageOCR.Run(First(colPhoto).Url).ocrtext)

To Translate

Text = MicrosoftTranslator.Translate(varOCR,Dropdown1.Selected.Value)

Use the MS flow to recognize the Optical Character Recognition.

Special Note: Images can be saved in different formats. Computer Vision API is looking for binary format of the Image therefore below expression must be used in the Image Content box in OCR to Text to convert to binary format.

dataUriToBinary(triggerBody()[‘Createfile_FileContent’])

Now you can start creating your own Translator Buddy app. 😊

PSA

I have recently embarked on a wild journey that is learning Customer Engagement for those who know me I am predominantly a Finance and Operations consultant – but PSA aroused my curiosity so I thought i’d take a dive head first into it. Here you’ll see videos I upload as I go through this adventure!

Project Overview:

 

Resource management:

Skills for the PowerApp developer

It seems to me that PowerApps will prove to be a game-changer by enabling businesses and organisations to build bespoke apps designed to meet very specific needs.

The curious thing about PowerApps is that the product is pretty well where it needs to be as of today but the major blocker for a global revolution is that there simply aren’t enough people out there with anything like the skills that they would need to be able to build robust business product.

So let’s assume that you can’t buy in PowerApps skills or maybe that you have some but need to grow some more.  What would you be looking for in an individual to identify them as a potential PowerApps developer?  In this article I’m going to outline some of the skills that I would be looking for when identifying candidates with the potential to be high performers.

Excel

It feels kind of strange to start with a product rather than personal skills but in this case the Excel formula structure and Excel cell construction is so closely related to that of PowerApps that is the number 1 skill.

The Excel and PowerApps teams work closely together so that any new formulas created are aligned to each other.  With this in mind this also opens the door to the many years of formulas created by individuals within excel that can theoretically be borrowed or referenced to enhance a PowerApp.

Maths

PowerApps is the product that is the most mathematical that I’ve ever seen.  Variables can be easily created that can be used in an algebraic fashion.  X and Y properties exist to govern the position of everything that you see on a screen.

Empathy

You need to be able to consider your products from the perspective of other users.  If people don’t like your product they won’t use it, and you should be aiming for them to love them.

Logic

To my mind there are 2 kinds of logic.  Firstly, the more mathematical/excel based ‘If X=1 to this otherwise do that’ and secondly there is the type of logic where you put yourself in the shoes of a user or administrator and be able to see whether or not a form (as in business world this is the most likely application) has a logical flow.

Design

Having an eye for design is a skill people have to a greater or lesser extent.  To be fair it doesn’t come naturally to me, but I do know that from making lots of products some designs work better than others and it is a skill that can be learned.

Initiative

PowerApps won’t go to you, you have to go to PowerApps.  If you create a blank app it will stay blank until you do something.  Additionally, many technical solutions may require techniques that feel like work-arounds mainly because the problems you have been facing haven’t been faced before, so looking them up on Google won’t necessarily yield any results.

Lifelong Learning

The product is ready, but is changing all the time.  Good sources for keeping up to date are twitter and the PowerApps blog, but even the latter tend to focus on ‘big’ updates whereas some of smaller adjustments can still be game changers.  Keep up with it.  I’ll be honest in saying that there are times when staying at the cutting edge can be difficult to manage versus traditional tools and skills that stay very similar over long periods of time.

Perseverance

Some problems will require high levels of determination to find the exact syntax you need to solve your problem and when those fail you may need to pull back stick your head up and work out if there ways around the problem or if the items is even needed (i.e. do you really need to collect the data at all or is it a nice to have)

Patience

Not necessarily my forte, but patience may be required of yourself as you may not have the skills that you need at your fingertips and similarly the same may be true of those around you.  You’ll also need a level of patience on the part of your sponsors or users.  I can almost guarantee that unless they are very familiar with digital form building you may produce a product to the exact specification requested but nevertheless you, and they, know that it’s not quite right and that adjustments, sometimes significant may be required.

Use the community

The PowerApps community at this stage is currently populate by a relatively small but passionate group of individuals building highly imaginative solutions designed to stretch the product.  Make use of these by joining https://powerusers.microsoft.com, follow people on twitter posting using the #powerapps or @PowerApps references.  By all means take a look at my youtube channel www.youtube.com/dataspinners and don’t forget to join https://dynamics365society.uk which contains a PowerApps bank that you can make use of once you sign up (for free).

Go on a course

Personally, I’m quite happy with an online course as typically these are completed over a longer period of time which for me is a better way of allowing the learning to sink in.  The best single free resource is https://courses.edx.org where DAT207x is a very useful starting point.  You can search up courses run in a classroom setting, but you will need to ensure that you invest time in utilitizing the product one you’ve completed it as otherwise you’ll lose your knowledge quite quickly.

Concluding remarks

This article was intended for hirers or individuals trying to make some sense as to the range skills needed for PowerApps excellence.  Hopefully, it isn’t too daunting.  Whatever you do, start small but build usable solutions.  This particular tool offers us astonishing scope for us to run our businesses in efficient ways and the more we can grow as a community the closer we will all get to a culture of efficiency the impact of which may be widespread, more operations, better scheduling less wastage all by putting the right information in front of the right people at the right time.

 

 

PowerApps – Camera Integration Part 2

So we left the last article (Part 1 – if you have not read Part 1 please do before moving onto Part 2) with a glorious self app that involved putting a camera element into a new screen then configuring the ‘OnSelect’ command to capture the image from the camera and store it in a collection. Which looked a little something like this:

 

Please note I foolishly forgot to ‘Save’ my app (more a rush to start the weekend and grab a beer) so some of the control and component names may have changed but please just engage logic for this.

 

Displaying the collection to show the person using the app the image they have just captured:

Now the next stage is to allow the users of the application to quickly see the image they have just taken. The first step in this glorious journey is to add an image under the Camera component go to ‘Insert’>Media>Image and place it under the camera element – which should look something like this:

I think it’s important that I publicly apologise for the amount the readers of this article has to keep seeing my face, sorry ;-).

Now we need to instruct the image to show what is in the collection (remember we are using the ‘ClearCollect’ formula for storing the captured camera image in the collection which means only one will be stored at a time, so this is the main reason for choosing an ‘image’ component rather than a ‘gallery’). Select the image and go to the advance settings and set the ‘Image’ as: Camera1.Photo (previous article would be Camera3) as shown below:

Now the last piece that i’d like us to is to flip the image horizontally, to achieve this select the image and go to the ‘Design’ grouping area withing the advanced options and then select “more Options”:

Then scroll down to the ‘FlipHorizontal’ property and change it from ‘False’ to ‘True’ this will flip the image horizontally and marry up with the camera.

This finishes Part 2, Part 3 will focus on sending this image via Flow to an email address as an attachment as well as storing it on SharePoint!

If you like the articled then please do ‘Like’ it below and if you have any questions please use the questions functionality in the main menu of the site.

 

PowerApps – limitations, requirements & configuration values

Here is some more great reference material lifted from Microsoft regarding PowerApps requirements, limitations and configuration values.

 

Supported platforms for running apps using the PowerApps app

Minimum required Recommended
iOS 9.3 or later iOS 10 or later with at least 2GB of RAM
Android 5 or later Android 7 or later with at least 4GB of RAM
Windows 8.1 or later (PC only) Windows 10 Fall Creators Update with at least 8 GB of RAM)

 

Supported browsers for running apps

Browser Operating system
Google Chrome (latest version)
(recommended)
Windows 7 SP1, 8.1, and 10
Android 5 or later
iOS 8 or later
macOS
Microsoft Edge (latest version)
(recommended)
Windows 10
Microsoft Internet Explorer 11 (with Compatibility View off) Windows 7 SP1, 8.1, and 10
Mozilla Firefox (latest version) Windows 7 SP1, 8.1, and 10
Android 5 or later
iOS 8 or later
macOS
Apple Safari (latest version) iOS 8 or later
macOS

 

Supported browsers for PowerApps Studio

Browser Operating system
Google Chrome (latest version)
(recommended)
Windows 7 SP1, 8.1, and 10
macOS
Microsoft Edge (latest version)
(recommended)
Windows 10
Microsoft Internet Explorer 11 (with Compatibility View off) Windows 7 SP1, 8.1, and 10

 

Request limits

These limits apply to each single outgoing request:

Name Limit
Timeout 180 Seconds
Retry attempts 4

Note

The retry value may vary. For certain error conditions, it’s not necessary to retry.

 

IP addresses

Requests from PowerApps use IP addresses that depend on the region of the environment that the app is in. We don’t publish fully qualified domain names available for PowerApps scenarios.

Calls made from an API connected through an app (for example, the SQL API or the SharePoint API) come from the IP address specified later in this topic.

You should use these addresses if, for example, you must whitelist IP addresses for an Azure SQL database.

Region Outbound IP
Asia 52.163.91.227, 52.163.89.40, 52.163.89.65, 52.163.95.29, 13.75.89.9, 13.75.91.198, 13.75.92.202, 13.75.92.124
Australia 13.77.7.172, 13.70.191.49, 13.70.189.7, 13.70.187.251, 13.70.82.210, 13.73.203.158, 13.73.207.42, 13.73.205.35
Canada 52.233.30.222, 52.233.30.148, 52.233.30.199, 52.233.29.254, 52.232.130.205, 52.229.126.118, 52.229.126.28, 52.229.123.56
Europe 52.166.241.149, 52.166.244.232, 52.166.245.173, 52.166.243.169, 40.69.45.126, 40.69.45.11, 40.69.45.93, 40.69.42.254
India 52.172.54.172, 52.172.55.107, 52.172.55.84, 52.172.51.70, 52.172.158.185, 52.172.159.100, 52.172.158.2, 52.172.155.245
Japan 104.214.137.186, 104.214.139.29, 104.214.140.23, 104.214.138.174, 13.78.85.193, 13.78.84.73, 13.78.85.200, 13.78.86.229
United States 104.43.232.28, 104.43.232.242, 104.43.235.249, 104.43.234.211, 52.160.93.247, 52.160.91.66, 52.160.92.131, 52.160.95.100, 40.117.101.91, 40.117.98.246, 40.117.101.120, 40.117.100.191
United States (Early Access) 52.161.26.191, 52.161.27.42, 52.161.29.40, 52.161.26.33, 13.66.213.240, 13.66.214.51, 13.66.210.166, 13.66.213.29

 

Required services

This list identifies all services to which PowerApps Studio talks and their usages. Your network must not block these services.

Domain(s) Protocols Uses
management.azure.com https RP
msmanaged-na.azure-apim.net https Runtime of Connectors/Apis
login.microsoft.com
login.windows.net
login.microsoftonline.com
secure.aadcdn.microsoftonline-p.com
https ADAL
graph.microsoft.com
graph.windows.net
https Azure Graph – For getting user info (e.g. profile photo)
gallery.azure.com https Sample and Template apps
*.azure-apim.net https Api Hubs – Different sub-domains for each locale
*.powerapps.com https WebAuth + Portal
*.azureedge.net https WebAuth
*.blob.core.windows.net https Blob storage
vortex.data.microsoft.com https Telemetry

[Source: https://docs.microsoft.com/en-gb/powerapps/maker/canvas-apps/limits-and-config]