EDIT (16/11/2021):Update the solution URL to use the Maker Portal.
EDIT (19/08/2021): I have rewritten the Flow using the latest Dataverse connector. I have also slightly refactored the Flow, so it no longer looks the Flow in this post’s screenshot.
EDIT (03/04/2019): I made further changes to display the solution URL, so that you can click and find out the details about the solution that was imported.
EDIT (20/12/2018): I updated my Flow and made some improvements. You simply have to set the Timezone on the triggering action and you are all set. The Flow will email the solution list, to the user running the Flow. The download link has been updated to point to the updated solution.
I would not call it sneaky, but sometimes when I find the Dynamics 365 CE UI or behaviour has changed slightly, I can attribute it to some update that was applied to the environment. There are email notifications for major updates, but none for minor updates or patches that can happen frequently. So, I decided to solve this problem using Flow.
Every solution import into the system causes an Import Job record to be created. If a Flow can be scheduled to run everyday, and query the Import Job records that were started the previous day, we can easily keep track of what is happening in the environment.
The first step is to trigger the Flow on a preset schedule, and read the Import Job records.
Below are the expressions that I use for the boundary dates:
- addDays(convertFromUtc(utcNow(),’AUS Eastern Standard Time’), -1, ‘yyyy-MM-dd’)
- convertFromUtc(utcNow(),’AUS Eastern Standard Time’,’yyyy-MM-dd’)
The next step is to pick up only the information we need from the returned result, and project it to a form that is conducive for email.
With the exception of Solution Name, all the other properties are retrieved from the XML on the Data property. Below are the formula’s for those:
- Publisher – xpath(xml(items(‘Parse_Import_Job_XML_and_re-map’)?[‘data’]),’string(//Publisher/Descriptions/Description[1]/@description)’)
- Started On – convertFromUtc(items(‘Parse_Import_Job_XML_and_re-map’)?[‘startedon’],’AUS Eastern Standard Time’,’dd-MM-yyyy HH:mm:ss’)
- Old Version – xpath(xml(items(‘Parse_Import_Job_XML_and_re-map’)?[‘data’]),’string(//upgradeSolutionPackageInformation/fileVersion)’)
- New Version – xpath(xml(items(‘Parse_Import_Job_XML_and_re-map’)?[‘data’]),’string(//upgradeSolutionPackageInformation/currentVersion)’)
The last few steps are to email out the results, if any solutions were imported the previous day.
The result is a barely formatted table, with the list of solutions that were imported the previous day.
With this approach, no one can sneak up a solution import on you. You have visibility over what is going on in the system.
You can download and install the Flow using this link:
Package: https://1drv.ms/u/s!AvzjERKFC6gOx3mkKpCciN-KpmC8?e=vM3DIw
Hope this is helpful to stay on top of imports.
Pure brilliance, thanks for this!
A small rectification while parsing the import job XML.
Publisher: xpath(xml(items(‘Parse_Import_Job_XML_and_re-map’)?[‘data’]), ‘string(//Publisher/UniqueName)’)
Description: xpath(xml(items(‘Parse_Import_Job_XML_and_re-map’)?[‘data’]), ‘string(//Publisher/Descriptions/Description[1]/@description)’)
Using unique name for Publisher as the LocalizedNames (or friendly names) seem to be blank for the patched solutions.
Also, for others landing on this post, here is the link to time-zone IDs
https://docs.microsoft.com/en-gb/previous-versions/windows/embedded/gg154758(v=winembedded.80)
The import fails due to changes in the support connectors. Suggestion to include JSON parsing information as well as the condition function text for new Users.