Category Archives: Uncategorized

Microsoft 365 Mailbox Attachment Processor – Enhancements

Recently, I had a requirement to enhance some of the source code the the mailbox attachment processor, to demonstrate how attachments from Exchange Online could be extracted from a mailbox, instead of using a app registration in Microsoft Entra Id with application policies and explicitly setting MIcrosoft Graph permissions, which of course are now deprecated, I’m now using a managed identity for an Azure VM specifically, to process mail attachments and place these onto file system instead of Azure blob storage. Whilst this was only for demonstration purposes, to explain the concept, I have added some coded artifacts to my GitHub repo here.

That said, Managed Identities do still create an application registration in MIcrosoft Entra Id, but you don’t have top manage the credentials by using a system assigned managed identity and by using Microsoft 365 Exchange RBAC, you essentially do not need to provide the application service principal Microsoft Graph permissions due to the permissions model.

The additional methods to utilise a managed identity are below.

Program2.cs

MSgraphOperations2.cs

LocalStorageOperations.cs

In addition a new PowerShell script to register the application service principal and configure RBAC permissions for the managed identity service principal to access the associated mailbox. This requires enabling Exchange organisation customisation which is also included in the script below.

EXOMailboxPermissions2.ps1

You will need to update the applicationsettings.json to add a new property called LocalAttachmentDowloadPath and enter the value of the local path you would like to download the attachments into, a local file system folder.

CarShop .NET Core Blazor Project – Part 7

Following on from Part 6, where I provided the views of the components I developed to enter, display and edit data, I am soon going to publish the source code in my GitHub repo.

What have I been up to recently….

I’ve been working on a number of projects recently, from event driven architecture application design, integrations with Oracle e-Business suite, Azure Event Hubs, Azure Function Apps, API Apps, Microsoft Anti-Malware for Blob storage, event receivers and processors, Cosmos DB as a store for events, integration with Adobe Cloud and multi-tenant auth provider Blazor projects.

What’s coming next…

It’s also time for me to refresh my Xamarin Cloud Release project which I published to Google play a few years ago with a complete refresh using a .NET MAUI Blazor Hybrid app. This will also mean migrating and updating the MySQL datastore included in the project.

I believe it’s also time to refresh my blog post format, so there is a standard format moving forward for every blog post, so I have recently created a template for this exact purpose. In addition, I believe it is also time to move away from articles describing coded solutions for Blazor projects, to also include general Microsoft Azure architecture and recent updates in smaller short focused pieces more frequently. After all, I am a Microsoft Cloud Solution Architect!

I’ve been quite busy with all those projects and now I am going to ensure that some of the project learnings and configuration, including the architecture, is going to be part of the next set of blog posts. In addition, I have an exciting new project which I had shelved previously that I think it’s now time that It was code complete and then hosted in Microsoft Azure, so watch out for my announcement in the coming months.

Cosmos DB World Blazor Application with DevExpress UI Components and Bing Maps: Part 2

A few months ago I developed and published a post on a Blazor server project which utilises DevExpress UI Framwork components, Cosmos DB and Bing Maps with JSinterop. There are two Razor UI components, which are presented on the main index page, these display country and city selector drop down controls, a tiny javascript file to interact with the Bing Maps API and a Bing maps UI component.

To use this solution, you will need to provision a Cosmos DB account and create a single collection. You can utilise the Cosmos DB migration tool to load the dataset below, into the Cosmos DB collection. Various appsettings need to be updated to reflect your own Cosmos DB account, collection, partition key, database and cosmos db key. The _host.cshtml, will need to be updated for the Javascript link reference in relation to the Bing maps key too.

The project site is accessible on Microsoft Azure below and I have now uploaded the code to my GitHub public repo. Follow the links below.

Cosmos DB World Web Site

Cosmos DB World Source Code

Cosmos DB World Countries DataSet