Posts

Showing posts from 2021

Power Automate Desktop Example - Downloading Image From Email To Network Drive

Image
After watching the RPA (Robotic Process Automation) demo from Steve Winward Real-Life Use case using AI Builder Form Processing with Power Automate Desktop I have been looking for ways to utilize Power Automate Desktop Flows in order to make my life a little easier. Yesterday like every day I started clicking through the emails that I receive from my kids schools. I open each email, download the image, then move the image to a network drive on my computer. This takes me a few minutes every day but my kids are worth it :) This scenario was a perfect one for me to automate using Desktop Flows since they can access the network drive on my desktop. The basic flow of the solution will be as follows: A Power Automate Cloud Flow will be triggered to run whenever a new email comes into my Gmail account with a specific tag. The Cloud Flow will gather up all the information needed to run the Desktop Flow The Cloud Flow call the Desktop Flow by connecting through an On-Premise Data Gate

Model App Access Checker for Dataverse

Image
Want to know which model applications your users have access to in Dataverse? Check out the app access checker that is available within the Power Platform admin center . Enter a users Id or email address and see the list of published apps in your environment and all the access, license and security information specific to that user. This can be a very useful tool in troubleshooting why a user cannot see a specific app in your environment. Below are the different ways you can access the app access checker. Direct Url You can access the app access checker directly using a url. Here is the format. https://<Your Org>.crm.dynamics.com/WebResources/msdyn_AppAccessChecker.html Power Platform Admin Center Open the Power Platform admin center https://admin.powerplatform.microsoft.com/ On the Environments list click the link for the environment you would like to check. Click on See all under the User heading the Action area. Click the app access checker link located above

Enable the Export to PDF Ribbon Button

Image
Dataverse allows you to easily generate your Word Templates as PDF files . Last year they expanded the functionality beyone just the out of the box sales entities to all custom entities. In order to enable the functionality though you need to do some configuration. Below are the different methods in which you can turn the PDF generation on or off for entities. Note : Aftert updating these settings in whatever manor make sure you clear your browser data . The ribbon stores the values for which entities are enabled and disabled within the browser session. If you don’t do this you may not see the PDF generation buttons show up after you enable them. Method 1 (Sales Hub Installed): For those orgs that have the Sales Hub app this is fairly straightforward. Navigate to the Apps page for your organization https://<Your Org>.crm.dynamics.com/apps Open the Sales Hub app Navigate to the App settings Area in the sitemap and click on Overview under the General group. Microsoft

Open Model Apps Url Using Unique Name

Image
When generating links for records, lists or reports in a Dataverse environment it is important that they open the specific application they relate to so users have the best experience. To see more details about generating links for Dataverse click here. This image shows the message bar displayed within Dataverse when you open a link not directed to a specific application. Previously in order to open a specific application using a link you had to create the it with the app suffix url or append the appid parameters to the url. In order to get either of those dynamically you need to query the Model-driven Apps (appmodule) entity and return the url attribute for the suffix or the appmoduleid attribute for the app id. Using App Suffix https://<Your Org>.crm.dynamics.com/apps/<Your App Suffix>/main.aspx?pagetype=entitylist&etn=contact or Using App Id https://<Your Org>.crm.dynamics.com/main.aspx?appid=82853804-d2b3-4536-ba75-f49ccca681ea&pagetype=entityli

Return Error in Power Automate When Using Try/Catch Scopes

Image
When utilizing scopes within Power Automate to create a try/catch/finally statement it can be useful to provide additional details about any errors that occurred within the try block. The example below shows how to get the results of a try block after it has failed and return that information. To replicate this do the following: Add a Control - Scope action called ‘Try’ Add another Control - Scope action below Try called ‘Catch’ Click the (…) on the Catch action and select the Configure after run settings . Then click the ‘has failed’ checkbox. Follow the screen shot below which will get the results array of the Try block then filter it down to the Failed result. You can then utilize the filtered result to return errors. The iamge belows shows the output after a completed run. We can now see the Action name which failed as well as the error message. In this scenario I am using that information to populate a JSON object which will be used later for returning information b

Custom Process Action vs Custom API in Dataverse

Image
I recently had the opportunity to utilize the new Custom API functionality within Dataverse. I had previously used Custom Process Actions and was a little confused as to the difference and why i would want to use the Custom API functionality. After digging through the documentation I finally discovered the major difference is this… The use case I was working on only returned data to the user so the Custom API allowed me to create a Function rather than an Action. This made it much easier to test my API because i can just put the Url into the web browsers and see the results instance since it’s only a GET operation. There are some additional benefits to utilizing the Custom API as well such as being able to specify a specific security privilege. To see all the differences between Custom Process Actions and Custom API check out this article from Microsoft Headache Alert! Make Sure To Create Custom API Record Before Deploying Code On a side note, most of the articles I found a

Calling Dataverse Web API in PowerShell using Client Credentials

Image
Connecting to Dataverse using PowerShell can be very helpful for data migrations and use within Azure DevOps. Connecting to an instance in a non-interactive way can be tricky though. This article will provide you the links you need for creation and App registration and adding the app user to your environment. You can then utilize the script provided to call Web API requests including ones you define using the new Custom API functionality now available. The script was written so that it is not dependent on any outside libraries such as the Microsoft.Xrm.Tooling connector. This is helpful in situation where involving an outside library will slow down your deployment time by having to be approved in a change control board. If utilizing an outside code library is not a concern you can create a connection to Dataverse utilizing the Microsoft.Xrm.Tooling connector Get-CrmConnection cmdlet. Create App Registration The first thing to do is create an App Registration within Azure AD for

Raspberry Pi Pinout Terminal Command

Image
When i first started workign with the Raspberry Pi i found myself constantly searching for images of the pinout and then printing it. Finally I found there is a simple command within bash for all that information when you have the Pi OS installed. 🤦🤦🤦🤦🤦🤦🤦🤦🤦 pinout

.NET Core on Raspberry Pi - Access to the path is denied

Image
After installing the .NET Core sdk on my Raspberry Pi I received the following error when attempting to create a new console application using the ‘dotnet new console’ command. pi@raspberrypi:~/IoT/FirstProject $ dotnet new console System.UnauthorizedAccessException: Access to the path '/home/pi/.dotnet/5.0.203.toolpath.sentinel' is denied. ---> System.IO.IOException: Permission denied --- End of inner exception stack trace --- at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSiz

Error Connecting to Raspberry Pi in VS Code After Reset

Image
While utilizing the Remote Development tools to connecto to a raspberry pi board using SSH I encountered the following error after doing a full OS reset on the pi board. The detailed error within the VS code console was the following. WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The ECDSA host key for raspberrypi.local has changed, and the key for the corresponding IP address fe80::a25a:b6ea:ae38:25d7%bridge100 is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint

Team Member License Enforcement in GCC

Image
If you have custom applications built on Dynamics/Dataverse within the US Government Community Cloud (GCC) and only have Team user license that were purchased after October 2018 your apps screen may soon like like the one above. These Team licenses were designed for access to very specific first party apps. Customer Service Team Member Sales Team Member Project Resource Hub For a long time the restriction on these licenses in GCC had not had any sort of technical enforcement behind them but that is changing. Restrictions are being put in place that will ensure users can only utilize the first party apps listed above. Additional information on the license enforcement can be found on the Microsoft docs site . What are the team license types? To better understand what licenses you currently have in your environment let’s take a look the different team licenses. The image below shows you the display names of the different team licenses available and what they can access. As y

Power Automate Custom Connectors - Import Postman v2 Collection

Image
There are many tools you can utilize to develop Power Automate custom connectors including Postman and Swagger Inspector . I prefer to utilize Postman but recent updates to the product no longer make it possible to export to a v1 collection. This is unfortunate because the Power Automate custom connector site only allows upload of v1 collections. Luckily APIMATIC allows you to convert the Postman 2.0 collection to just about any other format you want. You can downgrade them to Postman 1.0 or you could convert them to OpenAPI 2.0 format which you can also directly upload to the Power Automate connector page. Have fun creating custom connectors!