Saturday, December 28, 2024

The Rational Reminder podcast - favorite episodes from 2024

I started listening to the Rational Reminder Podcast somewhere around the beginning of this year and I can highly recommend it to anyone interested in sensible investing and financial decision making. 

The Rational Reminder podcast is weekly podcast about personal finance and investing from a couple of Canadians, Benjamin Felix and Cameron Passmore - both work at PWL Capital. The hosts are experienced portfolio managers who share their knowledge about a broad range of financial topics and the show often features interviews with industry experts, offering diverse perspectives and deep dives into specific areas of finance.



Benjamin Felix also creates educational content on YouTube https://www.youtube.com/@BenFelixCSI where he shares insights on investing and financial planning

Both advocate for evidence-based investing, which often includes passive investment strategies such as index funds and they emphasize the benefits of low-cost, diversified, and long-term investment approaches, which align well with passive investing principles.

Episodes which I really liked:

Monday, December 23, 2024

Hidden gem : the business process catalog for Dynamics 365 apps

The business process catalog for Dynamics 365 apps is an Excel workbook that contains more than 700 processes grouped by end-to-end scenarios and business process areas for different products (Dynamics 365 SCM, Business Central, Customer Service etc ...). It can be used as a blueprint for requirement-gathering and implementation templates. 

Microsoft updates the catalog at least four times each year and the latest November 2024 release was recently made available. This latest releases includes:

  • Azure DevOps templates that you can use to track your implementation
  • Configuration deliverable downloads for Finance and Operation apps as well as Customer Engagement apps.
  • AI generated process flow diagrams for level 3 processes to accelerate the discover process.
Download the latest version on https://aka.ms/businessprocesscatalog and explore AI generated flow diagrams at https://aka.ms/businessprocessflow

Sunday, December 22, 2024

Dynamics 365 Contact Center - the new kid on the block

 In July 2024, Microsoft announced general availability of Microsoft Dynamics 365 Contact Center. This Contact Center As A Service (CCAAS) offering allows Microsoft to compete against players such as ...

It most likely is also a way for Microsoft to embed the Nuance offering more directly into the Dynamics 365 platform. It can be quite a daunting task for consultants and customers trying to come up with a cost simulation since licensing is not that easy taking into account the different capabilities in the platform (or as Tricia calls it "licensing a contact center deal can be a special place in hell" - in Licensing the Dynamics 365 Contact Center Part 1


Data flow and components in Dynamics 365 Contact Center architecture:

  1. Customers can connect through preferred channels including Teams for internal helpdesks. Licensing and operational cost vary depending on the required channels to support
  2. Azure Communication Services (ACS) offers PSTN integration for voice 
  3. Works not only with Dynamics 365 CRM (Customer Service) but also with other CRM platform such as Salesforce and ServiceNow
  4. Use Copilot Studio to configure AI agents and IVR setup
  5. Routing based on Unified routing framework
  6. Agents work in the Agent Workspace or Customer Service Workspace if you are using Dynamics 365 
  7. Connectors allow easy integration with Microsoft 365
  8. Typical AI scenario's supported such as case summary, conversation summary, draft e-mails and knowledge article support (mainly existing functionality which already surfaced earlier in Dynamics 365 Customer Service)
  9. Built on top of Power Platform with Dataverse as the core building block
  10. Built in monitoring, management and analytics & reporting functionality
If you want to learn more about this platform - I suggest that you follow Chris Goodwill on LinkedIn and join the Dynamics 365 Contact Center LinkedIn Group

Related posts:

Saturday, December 21, 2024

Thoughts about Artificial Intelligence and business value

The question that a lot of companies have, is  how to realize business value from AI. Obviously companies don't invest millions (billions) of dollars in artificial intelligence just to play around with LLMs. Companies need to quantify the business value they want to realize.

To get an answer to this question, you might want to take a look at the white paper  Research paper - Artificial Intelligence and business value: a literature review (2021, Ida Merete Enholm, Emmanouil P., Patrick Mikalef and John Krogstie) which provides a framework for connecting AI with business value.

The white paper distinguishes between first and second order effects of GenAI. First order effects are the immediate, direct impacts of implementing Generative AI whereas second order effects are indirect, longer-term impacts that result from the first-order effects. 

While first order effects (e.g. enhancing business decisions, increasing process efficiency and transforming business processes) are crucial for justifying the initial investments and demonstrating immediate ROI, second order effects (impact on operational and financial improvements, sustainability etc...) are essential for long term strategic planning and understanding the broader implications of Generative AI.



Friday, December 20, 2024

API Playground in Dataverse Accelerator App

 The API playground is a pre-authenticated software testing tool which is part of the Dataverse Accelerator App. API playground  allows you to quickly interact with the Microsoft Dataverse Web API - check out Explore and test Dataverse in the Web API playground (Preview)





Sunday, September 29, 2024

Book review: beyond diversification - what every investor needs to know about asset allocation

I recently finished reading Beyond diversification from Sebastien Page.  Sebastien Page (Chief Investment Officer at T. Rowe Price) explains in Beyond diversification the different approaches to forecasting returns, risks and correlations across asset classes by combining academic research and practical hands-on examples. 

This book is most likely targeted at the sophisticated investor  and should not be the first book to pick up if you want to understand diversification but it provides great insights on how asset managers think about their portfolios. 

The book also extensively refers to a number of academic papers that Sebastien Page has written on asset allocation, risk measurement and return forecasting. It explores a number of dynamic asset allocation strategies, acknowledging that risk is time-varying and requires adaptive approaches. Sebastien Page also explains why the typical fixed weight asset allocation (60-40 portfolio) does not deliver a constant risk exposure.

The book recommends using a  heuristics to cope with changes in volatility: assume that next month's volatility for each asset class will be the same as last month's. For the longer term the opposite is true, 5 years of calm markets are more likely to be followed by 5 years of turbulence.

The stock-bond mix is the biggest decision that multi-asset investeros make, but this mix does not reliably reduce risk as correlations shift. Stock bond correlations were positive in the 1970s and 1980s when inflation and interest rates drove volality but then the correlation reversed.


PS With volatility being a proxy for risk, you might also check out the white paper "Practical Issues in Forecasting volatility" from Clive Granger and Ser Huang Poon which was published in the Financial Analyst Journal in February 2005.





Saturday, September 28, 2024

Dynamics 365 and Power Platform monthly reading list September 2024

 2024 Release Wave 2

Release plans for 2024 release wave 2 are now publicly available - Release plans for Dynamics 365, Power Platform, and Cloud for Industry - Dynamics 365 | Microsoft Learn - from July 29th, early access will be available for activation - other key dates for 2024 release wave 2 are also available . Also check out the videos like Dynamics 365 Service 2024 Release Wave 2 or Dynamics 365 and Power Platform 2024 Release Wave 2 - these might also contain features/functionality which are not listed in the release plans.

Copilots, AI and machine learning

Technical topics (Configuration, customization and extensibility)
Topics for Dynamics 365 Business Applications Platform consultants, project managers and power users

Thursday, September 26, 2024

Quick tip: Get-AzSubscription and Azure Cloud Shell

The Get-AzSubscription PowerShell cmdlet gets the subscription ID, subscription name and home tenant for subscriptions that the current account can access. You can also pass this values in as a parameter e.g. "Get-AzSubscription -SubscriptionId" to find the name of a subscription. 

The easiest way to execute this cmdlet (without having to install anything on your machine) is by using Azure Cloud Shell.  A handy feature of Azure Cloud Shell is predictive intellisense - use the RightArrow key to accept an inline suggestion.



Book tips: Gently easing into Agile and DevOps with the Phoenix project and the Unicorn project

If you are not familiar with Agile or DevOps, I highly recommend the books below:

If you have worked in consultancy or software development, you will have surely have a number of "aha moments" which will bring a smile to your face ...

Thursday, September 19, 2024

Power Platform Managed Identity support for Dataverse Plugins (preview)

This is a long overdue feature which allows Dataverse plug-ins to connect to Azure resources (e.g. Azure Key Vault) using managed identities, eliminating the need for credential management and enhancing security.   It currently is available in public preview but GA is expected for November 2024

You will need to create a managed identity record in Dataverse and link it ot your specific plugin assembly - for more details take a look at Set up managed identity for Power Platform (Preview) and Power Platform managed identity overview (Preview) for more details.

In your plugin, you will need to the implement the IManagedIdentityService interface which allows your plugins to interact with managed identities. Using this interface, your plugin can request an access token for a specific Azure resource. I asked Copilot to generate the code for this below but did not check it yet ...


In the meanwhile there is also a XrmToolBox plugin available to help with configuring the managed identity - see GitHub - drivardxrm/Driv.XTB.PluginIdentityManager: XrmToolBox Tool to help manage Managed Identity records in Dataverse

References:

Sunday, August 11, 2024

Unmasking hidden issues in Dataverse: the surprising role of event expander operations in System job logs - down the rabbit hole we go

 As outlined in Large AsyncOperationBase increase in Dataverse/Dynamics 365 CE: the canary in the coalmine - an increase in the amount of storage consumed by system jobs (visible in the Power Platform Admin Center storage capacity report) is a tell-tale for a Dataverse or Dynamics CRM environment which has some hidden problems.


The AsyncOperationBase table keeps a record of all asynchronous jobs (Async plugins, async workflows, internal Microsoft jobs, etc ...) which are running in the background processing data in your environment. If you have a lot of failed or cancelled jobs, there might be an issue with plugins or workflows. If you see a lot of awaiting resources jobs, there might be a big data load happening on your environment (or maybe an infinite loop).

During a periodic review of the System jobs health status, we noticed that there were a lot more jobs in status "Waiting for resources" then we were used too (More than 200.000). We raised a Microsoft support ticket for this and we got an update on this (redacted version below):

"Microsoft is rolling out a new way of how audit logs are being written in station 4 (EMEA) in a deferred manner. Entities representing these deferred operations are created in the AsyncOperationBase table. 

These operations, while rolled up in the AsyncOperationBase table, execute outside of the Async Service and are not meant to be interpreted as additional backlog that the Async Service needs to process. These operations have no negative impact on System Job throughput. When the Audit operation has been fully processed outside of the Async Service, these operations will be removed from the AsyncOperationBase table. Event Expander Operation jobs are used as part of this new audit functionality, these are important jobs to ensure auditing is not lost. 

These jobs are however processed by a separate service, so they do not affect async throughput, etc. in any way.  Seeing a lot of these jobs (operation type 92 - event expander operation) is not an issue, as these are constantly churning in order to write audit history. If you have custom reporting in place to monitor system jobs - you should exclude AsyncOperationType 92"

Saturday, August 03, 2024

Quick tip: Don't bother upgrading very old Raspberry Pi OS version with apt upgrade, just re-install

A couple of weeks ago, I uncovered an old Raspberry Pi 2 in a drawer and I wanted to try to upgrade the OS to a more recent version. The Raspberry PI still  had  Debian 8 (Jessie) installed.  After a number of failed attempts I just gave up and did a fresh install with Debian 11 (Bullseye)

PS To check the installed Raspberry PI OS version type "cat /etc/os-release" in the command prompt or "hostnamectl"

From boring to soaring: why leaders need to master story telling



"The most powerful person in the world is the storyteller - Steve Jobs"

I recently read the Harvard Business Review article : your strategy needs a story and the central idea resonated with me: "storytelling is crucial for business leaders because it effectively bridges the gap between strategy and action, making complex strategies engaging, memorable, and motivating for implementation1". Steve Job's quote also aligns with this view on the importance of storytelling in business and marketing

Story telling transforms the complexity of numbers and logic behind a business strategy into simplicity and action.  (Narrative and numbers: the values of stories  by Aswath Damodaran is a great book on this same topic, but with a different take on it)

93% of a company's employees do not understand its strategy and storytelling can be a solution to make sure that employees understand and implement the strategy and customers understand your value proposition. 

PS Although the quote "The most powerful person in the world is the storyteller" is often attributed to Steve Jobs, there's no definitive evidence that he actually said it.

Sunday, July 28, 2024

How to improve your blog posts with Microsoft Copilot

 Here is a little trick that I found on how you can improve your blogposts with Microsoft Copilot. Use this two prompts:

  1. Prompt 1: Read the blog post below and suggest 3 questions that a reader will have that are not answered in the article: (Add URL)
  2. Prompt 2: Now answer the questions. Avoid bullet-points.
It is however to always review the answers before you just copy/paste them into your blog - the generated content might not be correct - this is referred to as Generative AI hallucinations 


Quick tip: disable meeting invite notifications in Teams activity feed.

There is a new (annoying) functionality which  show meeting invite notifications in your Microsoft Teams activity feed. To disable this go to your  Teams settings and open the 'Notifications and activity' menu on the left sside. At the bottom you will find the calendar notifications which you can change to 'Off'. See Manage notification settings on Microsoft support for more details



Sunday, July 14, 2024

Quick note: Python date and time objects

In Python, a naive datetime object is one that does not contain any information about time zones or daylight saving time. This means it is unaware of the context in which it exists, such as whether it represents local time, UTC, or any other time zone. By default, the datetime object in Python is naive. You can make them timezone aware using the pytz library.

If you are working with pandas dataframes or series, you can also use the tz_localize method of the Pandas DateTimeIndex object.



References:

Sunday, May 19, 2024

Quick tip: cheap static website hosting in Azure Storage

Azure Storage's static website hosting feature provides a serverless solution for serving static content such as HTML and images, directly from the $web container. It's a cost-effective option since there's no charge for enabling the feature, with expenses arising only from storage use and operations. Additionally, it includes traffic metrics for easy monitoring of visitor statistics.


Friday, April 26, 2024

Start CRM development tools from command prompt with Power Platform CLI

It is important to keep your Dynamics 365 development tools up to date, in the past I did this by using a PowerShell script provided by Microsoft

But now the Plugin Registration Tool (prt) and Configuration Migration Tool (cmt) are part of the Power Platform CLI - see Dataverse  development tools for more info - so you can launch the Plugin Registration Tool easily from command line using "pac tool prt"


When you install the Power Platform CLI with .NET tool (which requires .NET 6.0 to be installed) you need to use the same mechanism to keep the CLI up to date.




Sunday, April 21, 2024

Power Automate license enforcement - looking at it from a Dynamics 365 CE perspective

Mid May 2023, a warning popped up in Microsoft Message Center regarding "Non-Compliant Power Automate Flows" -  soon after the message however disappeared so this got probably missed by the majority of Dataverse and Dynamics 365 admins.

This however raised some concerns in the broader Microsoft community ( see Will Power Automate enforcement licensing kill your flows?  and Upcoming licensing enforcement in Power Automate explained ). 

To be honest I did not pay a lot of attention since the message apparently vanished in thin air and after consultation with Microsoft support they said that this message was sent prematurely. But then, end of October another warning popped up.


So it seems that Microsoft is finally cracking down on Power Automate flows which are not associated with a properly licensed user for premium connectors or Power Automate flows not directly linked to a Power App. When you built your own model-driven app on top of Dynamics 365 Customer Engagement (CE) which uses Power Automate flows, you will need to associate the Power Automate Flow with with your new app.

There is a PowerShell script to identify the flows which at risk to be turned off  across your tenant - see I have many environments - how can I get the flows that need my attention across tenants in the Power Automate Licensing FAQ - which uses the Get-AdminFlowAtRiskOfSuspension cmdlet

The Get-AdminFlowAtRiskOfSuspension cmdlet is part of a separate PowerShell module which you can install using Install-Module -Name Microsoft.PowerApps.Administration.PowerShell. It will run a scan of your environments and outline


Check out Associate flows with apps - Power Automate | Microsoft Learn on how you need to link up a flow with an app (see below screenshot on where to do this in the Power Automate flow detail screen). If you make this change on a flow which is a part of a solution, then the associations will be part of the solution file and can be transported cross environments.


Related articles/blog posts:

The ABC of AI: Retrieval-Augmented-Generation (RAG) and grounding

This is the first in a series of blog posts about more advanced generative AI and Large Language Model (LLM) concepts which I use as notes to myself (check out Why I blog and you might want to consider it as well)

Retrieval-augmented generation (RAG) is an AI framework that enhances the quality of responses generated by large language models (LLMs). LLMs are trained on a massive amount of data and understand statistical relationships between words but lack true comprehension of their meanings. So when faced with specific questions in a dynamic context so that is where RAG comes in.

RAG integrates information retrieval into LLM answers by using these steps:

  1. User inputs prompt: when you ask a question, RAG uses your input prompt
  2. RAG retrieves relevant information from an external knowledge base based on the user prompt
  3. RAG combines this external content with your original promt creating a richer input for the LLM
RAG and grounding are related concepts in the context of enhancing LLMs. Grounding is the process of providing LLMs with information about a specific use-case. RAG is one of the techniques which is used for grounding (another technique is dense retrieval - see Dense X Retrieval: What retrieval granularity should we use  for more details). 

Microsoft Copilot offers a good example of grounding and RAG in use. The reason why Copilot is able to give more targetted responses, is because it uses grounding to improve the specificity of the prompt. 

Copilot uses Microsoft Graph, which can retrieve information about relationships between users, activities and organizational data (like info in Power Platform/Dataverse and/or Dynamics 365, info from e-mails, chats, documents and meetings) as part of the prompt grounding process. Microsoft Copilot will use the user prompt and additional info retrieved through Microsoft and then sends it to the LLM. For more details see Microsoft Copilot for Microsoft 365 overview


The most common systems to provide external data for RAG LLMs are vector databases and feature stores.

References:

Monday, April 15, 2024

Dynamics 365 and Power Platform monthly reading list April 2024

Copilots, AI and machine learning

 

Technical topics (Configuration, customization and extensibility)


Topics for Dynamics 365 Business Applications Platform consultants, project managers and power users


Friday, February 23, 2024

SQL Server Integration Services Project template available for Visual Studio 2022

 Since end of 2022, there is also a SQL Server Integration Services  Project template available for Visual Studio 2022 which you can install from the Visual Studio Marketplace. You can install it from the direct download link here or you can search for it in the Visual Studio 2022 extension manager and install it from there.



Thursday, February 22, 2024

Classic Azure Application Insights deprecated on February 29th 2024 - 7 days to go

 If you missed it - classic Azure Application Insights will be deprecated on February 29th 2024. If you missed the different notification e-mails, you can quite easily see the warning if you navigate to an Azure Application Insights resource in Azure Portal.


Migration is actually quite easy - you just click on the link provided and this will open up the menu depicted below which allows you to associate your Azure Application Insights resource to a Log Analytics Workspace. The good news is that there are no pricing changes when moving to the workspace-based model. 




As indicated in the migration window, this is  a one way operation so plan for it in advance - the points below might impact on how you will do the migration:

  • You can link different Application Insight resources to a single Log Analytics workspace or you can make the split - in most case you want to consolidate it.
  • Instrumentation keys do not change during the migration so you don't need to worry about this
  • The export feature is not available on the Application Insights workspace-based resources - you need to look at diagnostic settings for exporting telemetry
  • There might be some schema changes - important to consider when doing KQL queries - check out query data across Log Analytics workspaces, applications and resources in Azure Monitor
  • Existing log data will not immediately move to the Log Analytics workspace - only new logs generated after the migration will be stored in the new log location.