Posts

Extend Azure DevOps with Azure Functions

Afbeelding
With Azure DevOps, Microsoft provides a rich platform for building your continuous integration and continuous delivery (CI/CD) workflows. Refer to https://azure.microsoft.com/en-us/services/devops/ Our CI/CD design Lately we came up with the following CI/CD design: Notice the following features: When a feature branch is created, an app service slot is created and the feature workload is deployed to this slot; When a feature is merged with master, the slot gets removed and the master workload gets deployed to the production slot. Learn more about Azure App Services and its deployment slot feature here: https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots Implementation In order to learn how to set up the above workflow you can read the following excellent blog post of Lucas Caljé: https://levelup.gitconnected.com/manage-appservice-slots-with-azure-yaml-pipelines-3fb2a2e5da9a Interestingly, Lucas' solution does not require any external integration. It

Exploring advanced DOM interop with Blazor WebAssembly

Afbeelding
With the establishment of WebAssembly in the browser space, JavaScript is not the only option anymore to run code in the browser. You can start building your modern web applications in any language of choice. Recently Microsoft has released the first version of Blazor WebAssembly. It enables you as a .NET developer to run .NET code through WebAssembly. Blazor also comes with a websocket based server model. You can check out Blazor on Microsoft Docs: https://docs.microsoft.com/en-us/aspnet/core/blazor I have been building a couple of Blazor experiments myself, of which the following two stand out: Real-time Blazor server web app. I have added a second SignalR hub to this app in order to communicate signals from one Blazor session to another. [ Blogged ] [ Source code ] [ Try it online ] Deep zoom (perturbation based!) Mandelbrot with Blazor Source code . If I find time I will blog about all my adventures to getting this deep zoom Mandelbrot to work! Try it online It was the latt

Azure Custom Role Definitions and Assignment Scopes

Afbeelding
Working with custom Role Definitions in Azure can be a funny thing. Interestingly, when reviewing the Azure Active Directory user interface in Azure Portal you will not find a way to query all available role definitions. If you query the Roles and Administrators view you will only see administrator roles: With a PowerShell cmdlet you are able to list all. Get-AzRoleDefinition | select name | sort name | ft results in something like the following: Name ---- AcrDelete AcrImageSigner AcrPull AcrPush AcrQuarantineReader AcrQuarantineWriter API Management Service Contributor API Management Service Operator Role API Management Service Reader Role App Configuration Data Owner ... But are these really all the role definitions out there? Obviously not! This list is scoped to the subscription you are currently targeting with your current Azure Context. In order for you to try out yourself, just create a couple of role definitions with various assignment scopes. Assuming you have owne

CSOM tenant API support on-premise

A while ago I tried out the CSOM tenant API on-premise with SharePoint 2013. I then thought that I wasn’t able to get it working. Then “Vesku” published a new blog on this matter: http://blogs.msdn.com/b/vesku/archive/2015/12/04/sharepoint-tenant-csom-object-support-in-sharepoint-2013-and-2016.aspx It appears that only a limited set of the tenant CSOM API is supported on-premise. For example, I tried to read the app catalog, but that does not work. He writes: All other methods of the Tenant object are not supported and will cause for exceptions due dependencies on site subscription, which typically does not exist in the on-premises deployment. Therefore, this fragment does not work: # http://zimmergren.net/technical/office-365-dev-tip-getting-all-apps-from-your-tenant-app-catalog-using-the-office-365-csom-api $coll = $tenant.GetAppInfoByName([string]::Empty) $tenant.Context.Load($coll) $tenant.Context.ExecuteQuery() Resulting in the exception: Exception calling

Azure Resource Management: Switch-AzureMode is not recognized

For all of you working in Visual Studio with the Azure Resource Management (ARM) templates: When you get the PowerShell exception that the cmdlet Switch-AzureMode cannot be found, please take note of the following: 23 November: Microsoft released Azure PowerShell 1.0 and deprecated / removed the former ARM Switch-AzureMode completely. Based on clear feedback this stateful model was absolutely not desired: https://azure.microsoft.com/nl-nl/blog/azps-1-0/ 30 November: Microsoft released Azure SDK 2.8. This incorporates new ARM templates for Visual Studio, based on the new ARM cmdlets. You can download the SDK over here: https://azure.microsoft.com/en-us/downloads/archive-net-downloads/ 30 November: Microsoft released Visual Studio 2015 update 1. This does not update Azure SDK. You will need to update the SDK yourself. So bottom-line, don’t mix Azure PowerShell 1.0 with the former versions of Azure SDK pre 2.8. Enjoy working with the ARM toolset! If you are looking for a tutorial, I

Client-side search webpart extension for filtering on followed sites

As all of you know SharePoint 2013 comes with a much improved search webpart infrastructure. One can even build search filters based on user profile properties in order to build personalized experiences (refer to the Technet article Query variables in SharePoint 2013 ). Strangely, it is currently not possible to filter search results based on the followed sites. Take the scenario where you have hundreds of sites that have stored documents, list items, etc. and you want to show a list of recently added items to the user for all his followed sites. (people that can't wait and want the ready-to-use solution: go straight to the ce_followedsites.html gist. Others, read along!) JavaScript-only solutions have their limitations Most examples in the blogosphere provide a JavaScript focused solution where you need to include the specific business rules into code for filtering and rendering. What I started to wondering whether it would be possible to extend the search webparts with a c

WhatsApp integration with your CRM system

A Dutch retailer published some interesting news: they were successful in integrating their CRM system with the WhatsApp channel. WhatsApp is currently the most often used app on mobile devices: 4 out of 10 users are using WhatsApp business-wise; in average people receive 65 new messages per day; People in the age range of 18 and 34 even receive 150 message per day, and send 60 messages per day on average. Deep integration between WhatsApp and CRM For me the catch in this news is the option that WhatsApp provides options to integrate the communication stream into one's backend system. When a customer sends a message, the CRM system provides full context information towards the employee: who, what, where. http://www.frankwatching.com/archive/2015/10/05/whatsapp-als-servicekanaal-suitsupply-pakt-het-innovatief-aan-case/