My installation of SQL Server Management Studio 18.0 last week always got stuck on the initial "Loading packages. Please wait..." screen. The solution which worked for me was deleting the registry key underneath "HKLM\SOFTWARE\WOW6432Node\Microsoft\Microsoft SQL Server Management Studio" as outlined in Installing SSMS 18 won't go past loading packages phase.
Tuesday, October 20, 2020
Wednesday, October 14, 2020
Project Oakdale - the product formerly known as DataFlex
- Now in Preview: customize Teams with built-in Power Platform Capabilities - Project Oakdale went in public preview with the ability for everyone to try it out.

- Public preview of Power Virtual Agents within Microsoft Teams - the ability to build bots using Power Virtual Agents with the bot creation experience embedded within Teams itself. The most exciting part of this announcement is that PVA for Teams is included with your existing Teams licenses. If you are new to PVA, check out the PVA webinars and video gallery

- Azure API Management connector on the Power Platform - interesting note here "Citizen developers can use these API Management backed connectors in Power Apps hosted in Teams through the existing Teams licensing" ... Watch the session Build Power Apps within Microsoft Teams and get to the next level with Azure APIs and the Power Platform for more details
- Build custom apps to drive productivity in the remote work world with PowerApps and Teams session at Microsoft Ignite about Project Oakdale - must watch and great intro
- Why should I consider using Project Oakdale in Teams (Youtube)
- Power Apps and Microsoft Teams (Microsoft documentation)
- Announcing Microsoft Power Platform and Dynamics 365 updates at Microsoft Ignite
- Microsoft Teams as platform
- Overview of Project Oakdale (Microsoft docs)
- How are Project Oakdale and Common Data Service different? (Microsoft docs)
- How Power Platform now empowers all Teams users
- Build and customize your first Teams App with Power Apps - Full training (Youtube 00:43:04)
- Introducing Project Oakdale, a low code data platform for Microsoft Teams
- A closer look at Data Platform Capabilities in Project Oakdale
- Microsoft Dataflex questions and answers
- What is Microsoft Dataflex
- Dataflex is more (and less) than CDS
- Dataflex for Teams: limitations and opportunities
- Four things to know and five things to do following the big Microsoft Dataflex + teams announcement
Wednesday, September 23, 2020
Dynamics 365 and Power Platform monthly reading list August 2020
Technical topics (Configuration, customization and extensibility)
- Dynamics 365 - the cost of manual deployments
- Power Apps with Azure Application Insights (Youtube 00:39:52)
- Power Automate Dynamics 365 connector deprecation
- Power Platform Developer Saturday recordings
- The power of Dual Write (Youtube 00:52:35)
- Querying date intervals in the Common Data Service by @rappen
- Creating a flow which triggers where regarding field = lead by @benhosk
- Dynamics 365 - Problems with managed solutions out of sync versions
- Enable send direct email button in Unified Interface
- Find Created On date of solution components in solution layers
- Configure display activites in UCI with the card form by @inogic
- BPF Flow step as a trigger in CDS (current environment) connector
- Securing your HTTP triggered flow in Power Automate
- Access flow run history within a record in Dynamics 365/CDS by @LinnZawWin
- PowerApps Collections Cookbook
- Load data from SQL on premise to CDS using Power Platform dataflows
Topics for Dynamics 365 Business Application Platform consultants, project managers and power users
- Power Apps Licensing explained (Youtube) by @LisaMCrosbie
- Planning a Power Apps project
- Improve sales productivity and remote selling with sales accelerator
- T-Mobile manages company wide initiatives and more with Power Platform
- Imagine, build and deploy solutions with Microsoft Power Platform
- PowerApps the truth about $10 by @stevemordue
- Enrich customer data with brand and interest affinities with Dynamics 365 Customer Insights
- Modernizing the non-conformity management tool with Microsoft Power Platform
- Telstra citizen developers automate processes with Power Apps in Microsoft Teams, giving millions of minutes back to the business
Wednesday, September 09, 2020
Fixing current .NET SDK does not support targeting .Net Core 2.2 in Visual Studio 2017
I encountered below exception when building a ASP.NET Core project in Visual Studio - "The current .NET SDK does not support targeting .NET Core 2.2. Either target .NET Core 2.1 or use a version of the .NET SDK that supports .NET Core 2.2".
Luckily this forum post pointed in the correct direction - first check the installed version of the .NET Core SDK on your machine.
If you are using Visual Studio 2017, you will need to install 2.2.1xx of the SDK to support targetting .NET Core 2.2. You can download the different versions of the .NET Core 2.2 SDK on https://dotnet.microsoft.com/download/dotnet-core/2.2
Thursday, September 03, 2020
Palm oil price vs SIPEF stock price in Jupyter notebooks with Quandl
Quandl also offers free commodity price data for almost 100 commodities ( See API for commodity data) so I decided to create a Jupyter notebook comparing SIPEF's stock price with the price of palm oil. Take a look at the full notebook I shared on github if you want to learn why - https://github.com/jorisp/tradingnotebooks/blob/master/Quandl_API_Euronext_SIPEFPalmOil.ipynb
Remarks:
- Be careful when embedding images in a Jupyter notebook that you want to publish on Github (see Images in Markdown not showing when uploaded to Git for a discussion on this) - filenames are case sensitive - I got it working using the url syntax
- To store the quandl key I used the approach outlined on how to use secrets in Jupyter Notebooks with python-dotenv
- I really like Matplotlib and its versatility in rendering capabilities in this notebook I used the ability to visualize multiple time series (see code preview below) with different axes. (see code below)
sipcolor = 'tab:red' fig,ax1 = plt.subplots() ax1.plot(data['SIP'],color=sipcolor) ax1.set_ylabel('SIPEF',color=sipcolor) #Instantiate a second axes that shares the same x-axis ax2 = ax1.twinx() ax2.plot(data['PPOIL']) ax2.set_ylabel('PALM OIL USD') plt.gcf().set_size_inches(15,8) plt.show()
Related posts:
Tuesday, September 01, 2020
Quick tip: workaround kernelspec module not installed with jupyter notebooks in Visual Studio Code
This weekend I tried out working with Jupyter Notebooks in Visual Studio Code. Since I already have Jupyter up and running as part of the Anaconda distro I thought this would be easy but it took me longer than expected.
First step is to install the Python extension for VS Code and then you can start working with existing Jupyter Notebooks by just double clicking an existing notebook. Unfortunately this immediately threw an exception "Error: Jupyter cannot be started. Error attempting to locate jupyter: 'Kernelspec' module not installed in the selected interpreter." The workaround suggested on StackOverflow Python/Jupyter notebook in VSCode does not use the right environment did not resolve the issue and also the fixes described on Github - New version tries to install kernelspec were not working.
The workaround which seems to be working for me is starting VS Code from the Anaconda Prompt in the Jupyter workspace directory by typing "code ."
Wednesday, August 26, 2020
Dynamics 365 and Power Platform monthly reading list July 2020
- SLA's in the Unified Interface
- Use SQL to query data (Common Data Service)
- Tabular Data Stream (TDS) Protocol endpoint for Common Data Service
- DirectQuery CDS from Power BI by @crmchartguy
- XrmToolBox school (Youtube playlist)
- How to convert an unmanaged solution into a managed solution in Dynamics 365
- Power Platform DevOps: Part 5 - Deconstructing the framework: solutions project
- Create engaging messages with Adaptive Cards (Youtube 001:12:05)
- Power Automate Saturday Playlist (Youtube)
- Power Apps Checker now analyses modern web syntax (up to ES9)
- Monitor now supports model driven apps
- Setting sub-grid filterxml in the unified interface and other naughty things by @ddlabar
- Overcoming 5 top challenges with embedded canvas apps
- Collaborate and debug an app together in real time with monitor
- Get a users last logon time in Dynamics 365 by @nishantranaCRM
- How to restrict users from executing on demand workflows
- Enhanced integrated calendar experience in Dynamics 365 Sales
- How to use enhanced reference panels in UCI for rendering multiple subgrids
- How to merge solutions in Power Apps and Dynamics 365 with XrmToolBox Solution Mover
- Power Platform - Talking about the underdog
- Send a Power App push notification using flow to open a record in a canvas app
- How to power up Teams using Power Virtual Agents with Luise Freese (#LessCodeMorePower youtube video) with @LuisFreese and the associated blog post https://m365princess.com/how-to-use-power-virtual-agents-to-simplify-it-and-unfck-user-experience/
- Announcing Power Platform and Teams updates to help customers adapt to remote work
- Go with what you know: the value of long term customers
- Omnichannel Engagement Hub: configuring outbound messaging by @tassya
- Forms Pro is now Customer Voice by @juliandynamics
- Are you an app person or a flow person?
- Gartner positions Dynamics 365 Field Service Magic Quadrant Leader
- Telstra citizen developers automate processes with Power Apps in Microsoft Teams, giving million of minutes back to the business
Friday, August 21, 2020
Notes on learning to work with the Microsoft Graph API
Microsoft Graph is a REST API which allows you to access Microsoft Cloud services (e.g. Office 365 service like Microsoft Teams, OneDrive,Planner, SharePoint, etc.. but also enterprise mobility and security services like Azure AD, Identity Manager, etc..) resources using a single endpoint. You can use it for example for querying data in Outlook/Exchange and OneDrive but in the past couple of weeks I mainly used it for Microsoft Teams. The easiest way to get started with the Microsoft Graph API is the Microsoft Graph Explorer.
I learned quite a lot from the 30 days of Microsoft Graph blog series - a highly recommended starting point - for other resources take a look at the references section below.
References:
- Overview of Microsoft Graph
- Getting started with Microsoft Graph (Youtube 00:04:46)
- Graph explorer - https://aka.ms/ge
- Microsoft Graph tutorials
- A lap around the Microsoft Graph Toolkit - https://aka.ms/mgtlap
- Build apps with Microsoft Graph - Associate (Microsoft Learn)
- Getting started with Microsoft Graph API for developers
Friday, August 14, 2020
Don't forget to update older client applications for Dynamics 365 to the correct .NET Framework version
I lost 30 minutes this morning when trying to troubleshoot an older console app (written in 2017) which refused to connect to Dynamics 365 Customer Engagement. It was only after updating the Nuget packages for Microsoft.CrmSdk.CoreAssemblies that I noticed that I was still building against .NET Framework 4.5.2 which is not supported anymore.
Thursday, August 13, 2020
Quick tip: SQL access to Common Data Service using Tabular Data Stream (TDS)
Recently Microsoft announced Power BI DirectQuery support (in preview) to the Common Data Service (CDS) using Tabular Data Stream. You can also leverage this CDS TDS endpoint within SQL Server Management Studio to write SQL queries against the CDS database. You can connect using the base url of your CDS instance and add the port 5558. To authenticate you will need to use Azure Active Directory - Password.
By default this functionality is not enabled, so you if you try to use SQL Server Management Studio you will get below exception.
As outlined on http://aka.ms/enablesqlforcds, you will need to to go the Power Platform Admin Center to switch on the TDS support.
References:
- DirectQuery CDS for Power BI
- Tabular Data Stream (TDS) Protocol endpoint for Common Data Service (CDS)
Tuesday, August 11, 2020
Quick tip: find duplicate records in Dynamics 365 with Deduplicator plugin for XrmToolBox
If you want to quickly scan your Dynamics 365 or CDS instance for duplicate records, take a look at the Deduplicator plugin for XrmToolbox. It provides you with the option to specify one or more fields for a specific entity as matching criteria (with option to ignore blank values, leading and trailing white space and taking into account casing) and choose which additional fields to display for the duplicate results.
Friday, August 07, 2020
Notes on the Power Virtual Agent in a day lab
Since Power Virtual Agents are built on the Power Platform and the Azure Bot Framework you still have the option to extend the capabilities to suit your organisations needs.
Some notes on the Power Virtual Agent lab:
- The creation of a virtual agent or bot is super easy and intuitive with a simple graphical interface for authoring the logic that will drive your bots. The authoring canvas for the conversation tree has a great user experience and enables non-developers to create a powerful chatbot experience.
- After you import the SolutionPowerVirtualAgentInADay.zip solution file, you will need to reconfigure the connections in the different Power Automate Flows - to do this you will need to use the unique name of the CDS instance - so if you have used a Dynamics CRM instance you can not use the readable name - don't forget to add the region shorthand as well.
- If you are familiar enough with Dynamics 365 and/or Power Platform you will be able to complete the labs in a couple of hours.
- The built-in integration with Power Automate allows you to leverage the over 250+ external services and systems so the only limit is your imagination.
- To try out transferring a chat bot session to a human agent, the easiest option is to use Omnichannel for Customer Service (See Setting up Omnichannel for Customer Service on an existing Dynamics 365 trial for how to try this out). After you have completed t Only limited documentation is available on how to write logic for escalating to an agent if you are not using Omnichannel for Customer service - see Configure hand-off to any generic engagement hub and code on Github
- Introduction to Power Virtual Agents (Youtube 00:52:17)
- Create, test and deploy your bot with Virtual Agent for Customer Service (Youtube 00:10:48)
- PVA Series - real QnA chatbot with QnA maker
- Building proactive bot with Power Virtual Agent
- Create chatbot using Dynamics 365 Virtual Agent for your customers
- Dynamics 365 Virtual Agent for Customer Service (Youtube 00:08:13)
- Create, test and deploy your bot with Virtual Agent for Customer Service (Youtube 00:10:08)
- Power Virtual Agents Solution packaging (Youtube)
Saturday, August 01, 2020
Quick tip : how to check if a Microsoft Teams channel exists in a Power Automate Flow
Tuesday, July 21, 2020
Setting up Omnichannel for Customer Service on an existing Dynamics 365 trial
Listed below are the different steps required to setup a demo scenario with chat integration for Omnichannel for Customer Service in a blank (no first party app selected upon trial setup) demo trial environment which had customer service installed afterwards:
- Omnichannel for Customer Service is an add-on which requires a separate license so you first need to add this add-on in your tenant. Go to Billing > Purchase Services and select add-ons. Search for Dynamics 365 Customer Service Digital Messaging add-on trial and select it.
- After enabling the add-on you will need to provision Omnichannel for Customer Service by first providing data access consent and in a next step provisioning the Omnichannel for Customer Service application. The official Microsoft documentation still show how to to this from the legacy Dynamics 365 admin portal but you can do this from the new Power Platform Admin Portal as well - click the three dots and select manage for the Omnichannel for Customer Service
- In the separate Omnichannel for Customer Service screen you will be able to enable the different channels that you want to support. The initial setup might take a couple of hours to complete so check the same page for the status of the setup later on.
- Next you will need to assign the "Dynamics 365 Customer Service Digital Messaging add-on" license to the users who need have a Omnichannel for Customer Service security role.
- To enable chat integration, you need to create a code snippet to embed the chat control on your website or portal. You can follow the steps on the Microsoft Omnichannel for Customer Service Administrator > Quickly configure a chat widget which use a Customer Service Portal but you can add this chat widget to your own website as well.
- Support agents can use the Omnichannel for Customer Service app to interact with the users to follow up on their questions and complaints. When a new conversation comes in, it will be routed to available agents who can accept this incoming conversation. (Take a look at Understand unified routing and work distribution to understand how you automate work assignment across channels taking into account agent's capacity and skill sets)
- A customer agent will be able to interact with the customer using an inline chat window which is built on top of the Customer Service application which means that you will be able to leverage the full available context of the customer (existing contact info, open cases, etc ...)
References:
- Using omnichannel for customer service to deliver personalized support (Business Applications Summit 2020 recording)
- Omnichannel for Customer Service Collection - set of blog posts on Omnichannel for Customer Service (previously called Omnichannel Engagement Hub) by Neil Parkhurst
- A quick guide to Omnichannel for Customer Service
- Try channels in Omnichannel for Customer Service
- Setup WhatsApp channel (Preview) in Omnichannel for Customer Service
- Omnichannel for Customer Service blog posts by @thecrmninja
Thursday, July 16, 2020
How to use secrets in Jupyter Notebooks with python-dotenv
To get started you need to install the latest version of python-dotevn and then you will need to create a .env file in the same folder as your .ipynb files.
Tip: You may not be able to create .env file directly in Windows Explorer - use the command prompt and the echo command to create this file.
You can read a key-value pair in just one line of code after you loaded the extension and the os module which provides functions to interact with the operating system.
Source code is available on https://github.com/jorisp/tradingnotebooks/blob/master/dotenv.ipynb
References:
Wednesday, June 24, 2020
Using a personal access token in Postman to query the Azure DevOps Services REST API
Saturday, June 20, 2020
Dynamics 365 and Power Platform monthly reading list May 2020
- What's new in Microsoft Teams | Build Edition 2020
- Simplified system configuration in Dynamics 365 Sales
- Embedding canvas Power Apps in Microsoft Teams from @inogic
- Model-driven Power Apps and permission issues
- Power Automate Flows now available from within Business Process Flows
- Advanced filtering options for home grid views now available - 2020 Release Wave 1
- Make http request from flow in Power Automate
- Monitoring the Power Platform: Introduction and Index
- Lookup filtering enhancements in Unified Interface
- Dataflows - behind the scenes by @crmkeeper
- Dynamics 365 Assistant for Microsoft Teams (Preview)
- Exam MB-400: Microsoft PowerApps + Dynamics 365 developer - my experience and study guide
- Embedding canvas apps within model driven apps, Power Apps Portal, Power BI and custom websites
- Why would you use "Stage for Upgrade" with managed solutions?
- Adaptive cards for beginners - monitor a hashtag on Twitter by @LuiseFreese
- Importing and exporting Power Apps package as a SharePoint list form by @TomaszPoszytek
- Moving a Power Automate Flow from My Flows into a CDS solution
- Steve has a third chat with Charles Lamanna (Microsoft CVP Citizen Application Platform) by @stevemordue
- Reduce supply chain disruptions with AI,IoT and mixed reality
- 13 signs your Dynamics 365 project is doomed
- Why Power Platform licensing is complex by @jukkan
- How to use Predictive Lead and Opportunity Scoring feature of Dynamics CRM
- Maintain business continuity with Dynamics 365 Field Service
- Dynamics 365 Virtual Agent for Customer Service: an all-in-one platform by @hitachicrm
- The new Field Service (Dynamics 365) mobile app and Next generation field service mobile app available
- CDS and CDM are not the same ! Difference explained by @radacad_com
Wednesday, June 17, 2020
How to fix a broken Easyrepro project after upgrading Chrome
Luckily the exception pointed in the correct direction "System.InvalidOperationException: session not created. This version of ChromeDriver only supports Chrome version 79 (SessionNotCreated)".
Storage capacity enforcement for CDS instances
Thursday, June 11, 2020
Farewell to the Dynamics 365 Admin Center
Update June 28th: @jukkan just mentioned that there is an update in Message Center which officially states that the old Dynamics 365 Admin Center will go away. I like the speed of innovation in the cloud but this seems like incredibly short notice.
To be able to access the Power Platform Admin Portal you will need to assign an appropriate service admin role - see Use service admin roles to manage your tenant for more details.
Features/functionality which is now surfaced in the new Power Platform Admin Portal:
- App management in the Applications tab of the legacy Dynamics 365 Admin center has now moved to Power Platform Admin Center - see Manage Dynamics 365 Apps for more details. This applies to installing and managing Microsoft first party apps like Customer Service but also to other apps installed through AppSource. You first need to select your environment in the new admin center and use the Resources>Dynamics 365 apps menu to open the list of available apps to install. This same screen can be used to upgrade existing apps to newer versions. (Unfortunately there is no indication when there is a new app version available)
- Creating new Dynamics 365 instances has also moved to Power Platform Admin Center - if you try it from the legacy admin portal - you now get a warning message
- Storage details and analytics already moved to Power Platform Admin Center quite a while ago but recently the documentation about the legacy storage model got updated
- Backup and restore environments also got some interesting updates with continuous backup. Keep in mind though that backup retention is different for sandbox and production environments
Friday, June 05, 2020
Quick tip: exporting all nuget packages used in Visual Studio solution to text file with PowerShell
Tuesday, May 19, 2020
Dynamics 365 and Power Platform monthly reading list April 2020
- Global notification using Javascript in Dynamics 365 (Preview) by @priyesh_wngman7
- Power Automate Flows now available within business process flows by @inogic
- Introducing mixed reality in Power Apps (Private Preview)
- Power Apps 2020 Wave 1 updates are out now!
- 5 new to be excited about in the April 2020 Dynamics 365 Update! by @encloud9
- Advanced filtering options for home grids now available - Release 2020 Wave 1
- New omnichannel, AI and IOT updates for Customer Service
- Have you checked your Dynamics 365 storage lately? - strange update in required storage for webresources and ribbon by @crmkeeper
- Call Azure Function from Dynamics 365 webhooks
- Microsoft Power BI - CRM/ERP integration on 33 cent per day
- Get started with Dynamics 365 Field Service with demo data
- Power BI dashboards for Dynamics 365 Finance & Operations via the Common Data Service - Part 3
- Understanding Dynamics 365 for IT: Architecture, integration and more
- The easiest CDS/Dynamics 365 connection ever by @crmtipoftheday
- Dual write automates data flow between Dynamics 365 applications and Common Data Service
- United at last: Dynamics 365 dual write goes GA
- Introducing command checker for model-app ribbons
- Announcing a lap around Microsoft Graph Toolkit series
- Model-driven Power Apps and Permissions
- Deeply integrate your apps in Microsoft Teams with context variables
- What developers need to know about the activity entity
- Accessing admin areas from a unified app
- Installing Field Service Power BI Reporting suite
- Introducing the Microsoft Teams and Power Apps whitepaper
- Using business process flows in a canvas app
- New refresh cadence for PowerApps environments
Monday, May 18, 2020
Power Platform ALM process guidance published and Power Platform Build Tools general available
If you are already using tooling like the Power DevOps Tools from @waelhaemze, it might not (yet) make sense to switch over but if you are new to DevOps/ALM for Dynamics 365/Power Platform definitely take a look (for more background on this topic see My Perspective on the PowerApps Build Tools for Azure DevOps )
- Let's chat about the new Power Platform ALM guidance (Youtube) with Scott Durow, Jonas Rapp, Tricia Sinclair and Reece Campbell
- Dynamics 365 and ALM/DevOps Information to get you started
- Getting started with Power DevOps tools (Youtube) from @waelhaemze
Friday, May 15, 2020
Quick tip: generate and integrate mock data for Dynamics 365
An interesting example of leveraging the API is outlined in Power Automate your demo data by @dylanhaskins
Thursday, May 14, 2020
Easyrepro - UI automation test library for Dynamics 365 and CDS
With the release of the Easyrepro - the automated UI testing framework for Dynamics 365 on Github in June 2017, writing automated UI test has become easier although it still requires basic developer skills and access to Visual Studio tooling.
The purpose of the Easyrepro library is to provide Dynamics customers the ability to facilitate automated UI testing for their projects. The Easyrepo API's provide an easy to use set of commands that make setting up UI testing quick and easy. The functionality provided covers the core CRM commands that end users would perform on a typical workday and developers area able to extend that coverage to more functionality.
If you want to quickly explore what is possible with the EasyRepro framework, clone the repo on Github and take a look at Microsoft.Dynamics365.UIAutomation.Sample project and see how the different test classes are implemented.
Afterwards I highly recommend you to take a look at the excellent series of blog post written by the Microsoft PFE team:
- Test automation and EasyRepro: 01 - Overview and getting started
- Test automation and EasyRepro: 02 - Designing and debugging unit tests
- Test automation and EasyRepro: 03 - Extending the EasyRepro Framework
- Test automation and EasyRepro: 04 - Monitoring and Insight with EeasyRepro
- Test automation and EasyRepro: 05 - Adding EasyRepro Tests to Azure DevOps
References:
- Measuring test automation ROI in the context of continuous testing and devops
- Run and debug unit tests with Test Explorer
- Reporting on EasyRepro Test runs
- BDD for Dynamics 365 CE Part 2 - Acceptance testing with Specflow and EasyRepro
Wednesday, May 13, 2020
Resolving xauth: timeout in locking authority file /home/pi/.Xauthority on Raspberry Pi
Sunday, May 03, 2020
Quick tip: reload Python modules in Jupyter with the autoreload magic method
%load_ext autoreload %autoreload 2
For the documentation take a look https://ipython.readthedocs.io/en/stable/config/extensions/autoreload.html
Friday, May 01, 2020
Quick tip: change Jupyter notebook startup folder in Anaconda
- Generate config file by running jupyter notebook --generate-config in the Anaconda prompt
- Open the c:\Users\
\.jupyter\jupyter_notebook_config.py - Uncomment c.NotebookApp.notebook_dir = '' and fill in your startup folder e.g. 'c:\jupyter_workspace'









