Introduction
Consume data on Dynamics 365 Finance & Operations on Power Apps (or other Power Platform Tools) can be archive in many ways, However, each way have pros & cons
- Directly to data entities using Fin & Ops Connector
- Pros: Easy, No need to do anything, Just select the connector, login and done! and can call method in entities (via Power Automate).
- Cons: Poor performance, Not good for ALM when moving app to another environment.
- Dual Write
- Pros: Best performance since data will stored in Dataverse, real-time sync with D365FO.
- Cons: Duplicate data (Same data on both Dataverse and D365FO), A LOT OF BUGS and the entities used with Dual Write need to perfectly written to work with Dual Write.
- Dataverse Dataflow
- Pros: Easy just like you use Power Query in Power BI.
- Cons: Duplicate data, only one-way synchronization, can be impacted to D365FO performance when there are ongoing schedule refresh.
Virtual Entities
If you just want to use Power Apps to do some CRUD (Create/Read/Update/Delete) with data on D365 and it’s not necessary to store those data on Dataverse, You can use Virtual Entities
(This method isn’t new but don’t know why it not that famous)
By using Virtual Entities you can (or close to) archive best-practice. because of this reason
- Good performance – Faster than Fin & Ops connector
- No duplicate data – Data is never stored on Dataverse
- Easy to setup – Not simple as Fin & Ops connector but easier than Dual-Write
- Healthy ALM – Easy to move your solution to another environment
Prerequisite
Before you start, you should know what to do before we can use Virtual Entities
- Your Power Platform environment and D365FO need to be on the SAME TENANT.
- Every interactive-user (User using Power Apps) that need to use D365FO data via Virtual Entities need to be A VALID System User on D365FO.
- You need to be an System Administrator role on D365FO & Power Platform (Only for user who will config this, interactive user can use other role
- You need to able to register an App Registration on your tenant’s Azure AD (No admin consent required)
Let’s Start
Picture may have many censored parts since I working on customer’s environment, Thank you for understanding.
1. Register an app in Azure AD
I may not provide detailed step since Microsoft have awesome docs about this >> HERE
- Go to Azure Portal
- Head to Azure Active Directory > App Registration
- Register new app
- You can use any name
- You can Select any Supported account types
- You can use any Redirect URL (optional)
- Generate Certificates & Secret
- Take note of these information since you will need to use them later
- Application (client) ID
- Object ID
- Directory (tenant) ID
- Secret’s Value (Keep this securely!!!!)
2. Add Integration User in D365FO
We need to perform this step in order to allow Power Platform to get a list of available Data Entities in D365FO
Logged in to your D365FO as System Administrator.
Then head to Users page
Click + New to add new user
Config user data (You can use all the same with me)
- User ID: Any name you want
- User name: Any name you want
- Provider: NonAAD
- Email: Any value you want, not need to be valid email
- User’s roles: Dataverse Virtual entity integration app
Remove all other roles (including System user) so this user don’t consume your license.
3. Assign our AAD App to Integration User
We now have user for Dataverse Integration but that user isn’t valid user and D365FO doesn’t know our AAD App, right? So we need to tell D365FO that our AAD app will belong to user we just created.
Head to Azure Active Directory applications page
Click + New to add new AAD app to D365FO
- Client ID: Enter your Application ID you get from step 1
- Name: Any name
- User ID: Select user we just created in step 2
and the click Save
Now our D365FO is know our AAD App and ready to accept the connection. Next, We need to config Power Platform side
4. Install Finance and Operations Virtual Entity (Optional)
Power Platform environment doesn’t know Dynamics 365 Finance & Operations by default, You need to install a package from Microsoft to your Power Platform environment.
You can install this from AppSource >> HERE
This step is optional if your Power Platform environment are created together with D365FO environment, They know each other by default in that case
5. Tell Power Platform to connect to D365FO
Next, We need to tell our Power Platform environment that which D365FO they need to connect to
From Power Apps Maker Portal, Click Gears icon on the top right and then select Advanced settings
It will open new page of old-school version of Dynamics 365 page, Click Settings > Administration
Click on Virtual Entity Data Sources
Click on Finance and Operations
(If you don’t see this item, Make sure that you already done step 4)
Enter these information
- Target URL: URL of your target D365FO instance.
- OAuth URL: https://login.windows.net/
- Tenant ID: Your tenant ID from step 1.
- AAD Application ID: Your App ID from step 1.
- AAD Application Secret: Your App Secret from step 1.
- AAD Resource: 00000015-0000-0000-c000-000000000000
And don’t forget to click that (VERY) small save icon to save the changes.
6. Choose entities to be use with our Power Platform
Now, our Power Platform environment and D365FO are now know each other so we can connect the data, but before that we need to choose which entity that we really need to use (from thousands entities)
Click this Filter icon at the top right
(Microsoft called this “Advanced Find Button”, OMG. How I suppose to know that this little filter is named like that)
Select Available Finance and Operations Entities in the Look for drop-down
And it’s a good idea to add some filter so it will not load all entities and take long time.
In this case, I want to choose only entity that contains LogisticsAddress in its name.
Then click Results
You will see a list of entity as per your filter
Click on entity name that you want to use
Next, We need to make this entity Visible in Power Apps Maker Portal just like normal Dataverse table
Just check the Visible check box and then Save
Repeating this step to add all entities you want.
7. Result
As a result, you will see those entities you selected visible in Power Apps Maker Portals, This mean you can connect this to your Power Apps, Power Automate just like what you do with normal Dataverse table!