Ohhhh how I miss the Composite fields in dynamics<3
What about PCF?
First of you need to see that PCF controls can do. Free community examples have been release here: https://pcf.gallery/ – by Guido Preite
So can PCF controls be the answer to this? I have no idea, but would bee cool if someone with developer experience could answer me:)
This week I needed to use the List Records function, and I realized that I had no idea how to use the filters. Thank you Jonas Rapp for creating the FetchXML Builder!! The function “Flow List parameters” saved my day:)
Let’s begin with the simple filters where I get a contact with the last name of Sandsør
Test your search result with the Execute button so see that anything is actually returned. Then open the Flow List Parameters
The tool converts the Fetch XML, and magically gives the correct filter to add in our FLOW query. It can’t get much simpler than that!!
Lookups act a little bit different with the syntax, as lookups always to. This got me quite confused before finding this tool, because I was not getting match to my result.
I am searching for contacts with a given GUID. In my case I didn’t know what the GUID was, so I randomly generated a GUID for the formula. In FLOW I substituted the GUID part of query with a dynamic variable.
Filter Query with lookups, you need to add “_” as seen above. When working with lookup you won’t get at match without the “_LookupField_Value”.
Filter linked entity
The last filter is a little more complex, and might not get used due to some limitations of Odata (Must match on unique ID for related).
In this scenario I wanted to locate all contacts with last name “Sandsør” where the regarding accountID = GUID.
Choose the main entity on top, and add “link-entity”
Make sure you have the correct relationship here. Some Lookups support more than one entity, and therefore you make sure you have the correct one.
Again we find the magic with the “Flow List Parameters“.
In this scenario we also get Expand Query result that we need to copy/paste.
Apply to Each
Once you have figured out what filter to use, you can select the “Apply to Each” function, and add custom logic in here.
Julian Sharp was recently in Norway to teach the App in A Day. I was one of the lucky few that got a spot in his class. Sure I have been in Dynamics since 2007 and should know it all, but that is the only once certainty. I will never know it all, and there is always something to learn from a person that has a different perspective on things.
Thank you Julian for the great class, and the advice during the interview! See you again soon in Oslo for the PowerSaturday August 24th.
While some people say that PowerApps is Office, others will say PowerApps is Dynamics. They are both correct.
Canvas apps si exactly what it sounds like, a blank canvas you create. Here you can choose where to store data: SharePoint, SQL Server, Office 365, OneDrive for Business, CDS , Excel, and many other data sources. For the ease of use I often see storage within SharePoint lists here.
Model Driven app is essentially the Dynamics database, but without all of the bells and whistles that come with Sales/Service/Marketing/Field Service/Project Service etc. It is a clean database where you can start from “scratch” and create fairly complex applications within a short period of time.
Why make a fuss about it?
Well, if you know Microsoft as an organization you will understand me asking this question. Office is now called Modern Workplace, and Dynamics is Business Applications. PowerApps is both, so where does it belong. What team will be the ones promoting the product, and who will gain from selling PowerApps licenses?
Up-sell, Down-sell or Cross-Sell?
Office – “Up-Sell”
While Office consultants se this ass an “Up-sell” and potentially expensive Office E3 20$ + Plan 1 7$ = 27$ + Plan 2 20$ = 40$
Dynamics – “Down-Sell”
Dynamics sees this as a “Down-sell” Dynamics Sales 95$ —> Plan 2 40$ = 55$ savings pr customer
PowerApps – “Cross-Sell”
If you read Jukka’s post about PowerApps maybe what we are doing is creating a bridge between it all, the “Cross-Sell”. I can no longer only focus on Dynamics, and have to embrace PowerApps Canvas and Model Driven. Eventually I think the Office users also will see the benefits of the Model Driven, and then we can start adding value inn all areas to a common database.
We need to do one config in CRM/CDS before we continue. For the integration to work we need to create a KEY for it to match on. The source doesn’t know of GUID, so I create a key for “Account Number”. In Norway we are lucky that this number is unique and applies to all organization’s.
Open the entity you are integration to (Account for me), and create a new field called KEY. I am choosing to use the “Account Number” field here as my Unique KEY. Remember to publish changes!!
First thing I do is limit the number of accounts while testing.
Then I remove all the blank fields in the KEY, to make it equal to the user input in Dynamics. You don’t have to do this, but chose to for simplicity.
In the next step you choose the entity to connect to in CDS/CRM, and map the field. I am choosing to only map “Name” and “Account Number” during the test.
And the magic continues. Here you can setup how often you wan this awesome sync to happen. Our data is fairly static, so once a week is fine:)
Wait until the query is done, and check out the newly created/updated Accounts in Dynamics. This is just a gamechanger for me.
So the On-Premise data Gateway itself might not be the most awesome thing in history, but in combination with the data integration of PowerApps it is just incredible! Carina wrote about this earlier, but I had to see it for myself 🙂
My example is based on the need to integrate my On-Prem ERP (SQL) server with Dynamics 365 online (aka PowerApps).
This method does require that you have username/password credentials to a view in SQL that will allow you to read data. After the setup, Part 2 – Final Finnish.
I need data from On-premise to Online
I needed to integrate my ERP system (On-Premise) to D365 in the cloud. There are several ways to complete this normally with code, SSIS, Scribe etc. I wanted to learn what the PowerPlatform was capable of.
I am not a developer, so I am always seeking for solutions considered No-Code, Low-Code. Integrations was something I always had to involve developers to complete.
The software should be installed on a server, because of the need for 24/7 uptime. While testing, you can easily install the software on your personal computer as long as it is in the same network as the SQL database you are trying to connect to.
Open the software, and set it up. I chose to use my login credentials for this action. These credentials where also the ones that were “creators” in Dynamics.
When this is done you should find the Gateway in your PowerApps. NB!!! It will only install under the Default instance for now!!
Check connection with PowerApps
Last step is to open up your browser to PowerApps and see if we can retrieve the data. Open PowerApps
Make sure you navigate to the Dynamics Production environment
Then you open a new integration project
From here you connect to the On-Prem SQL DataGateway. Don’t worry, the credentials and IP are not real here:)
So the important thing on the next step is to use the credentials for your SQL server. These credentials only need to be read from a database. This means that you might have to ask someone to create read credentials for your database.
Choose the tables you want to sync. Debitor is Accounts in our ERP system.
If you are lucky, you will see the following result!! You are now one step closer to actually complete a NO-Code integration with an onprem SQL server.
So in my first ever interview I was so lucky to talk to Megan V. Walker MVP.
Megan is a huge contributor to the community, sharing examples of real life business value. She is very active on social media with weekly posts (Twitter, YouTube and blogging). The content is easy to absorb, and leaves you with the comforting feeling that “I can do this myself”. She recently got the MVP title, and I am sure we all agree that it was well deserved!