Copilot is not available or is opening Edge. GeographicRegionFailed #AI #Copilot #edge

Already for some time I was a happy user of Copilot. I used some restrictions bypass as Copilot was not enabled for some regions. Suddely My copilot shortcut opens edge What and yes there is copilot but annoying

What does Copilot say ?

Region restrictions for Copilot can be a significant hurdle for users in unsupported countries. However, there are several steps that users can take to potentially overcome these limitations. Firstly, it’s important to ensure that you’re not connected to a VPN that might be altering your apparent location, as this can affect access to region-restricted services. Additionally, checking and possibly reconfiguring your network settings could resolve the issue, as misconfigured settings can prevent Copilot access. For those in regions where Copilot has not been officially released, changing the DNS server to a more widely accepted one like Google’s DNS may provide a solution. It’s also worth noting that Microsoft plans to expand the availability of Copilot, which could eventually make it accessible in more regions without the need for workarounds. While these methods are not guaranteed fixes, they offer a starting point for users looking to access Copilot in restricted areas. Remember to stay updated with official announcements from Microsoft for the latest information on region support and availability.

So it seems my windows build (insiders build) was set to the emea region netherlands. on every reboot this key is set. delete it and a reboot it is there again.

IsEnabledForGeographicRegionFailed

If your copilot button opens the edge browser, you must set copilot eligibility to 1. To do this, press Windows + R, then type “regedit”, then go to:

HKEY_CURRENT_USER<Software<Microsoft<Windows<Shell<Copilot<BingChat

and here you open “IsUserEligible”. and set the value to “1” instead of “0”.

After that, don’t forget to change your pc region in settings in :

Time and language<Language and region and put United states.

That sounds easy but I noticed it does not always work.

force enable Copilot with a GPO is also an option go to gpedit.msc

User settings <> windows components

This is also not always fixing the issue.

Make sure you have the folowing register keys.

Press Win + R and type regedit, then go to HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\WindowsCopilot

If the WindowsCopilot key is not there creat this first.

and create a new DWORD x32 called TurnOffWindowsCopilot, make sure the Value data = 0, do the same on HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsCopilot.
make sure the Value data = 0

next :

Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced or copy and paste it on the address bar, then change ShowCopilotButton Value Data to 1.


Any of these settings a restart of your computer is needed.

After all this Copilot should work on your windows 11 device

Hope it was helpful thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

Windows Server 2025 vs 2022: Detailed Overview

Windows Server 2025 represents the next evolution of Microsoft’s server operating system, aiming to enhance security, performance, scalability, and IT infrastructure management. This blog post will provide a detailed comparison of Windows Server 2025 and its predecessor, Windows Server 2022.

Windows Server 2022: A Recap

Windows Server 2022 is built on the strong foundation of Windows Server 2019 and brings many innovations on three key themes: security, Azure hybrid integration and management, and application platform.

Here are some of the key features of Windows Server 2022:

  • Azure Edition: Windows Server 2022 Datacenter: Azure Edition helps you use the benefits of cloud to keep your VMs up to date while minimizing downtime.
  • Hotpatching: This feature is available for Windows Server 2022 Datacenter: Azure Edition.
  • SMB over QUIC: This feature is available for Windows Server 2022 Datacenter: Azure Edition.
  • Software-defined Networking: This feature is available for Windows Server 2022 Datacenter.
  • Storage Replica: This feature is available for all editions of Windows Server 2022.

Windows Server 2025: What’s New?

Windows Server 2025 is driven by your feedback and your desire to embrace a hybrid, adaptive cloud. Here are a few areas Microsoft is investing in:

  • Windows Server Hotpatching for everyone: This feature allows for seamless updates to your server without the need for a reboot.
  • Next Generation Active Directory and SMB: These features aim to enhance the security and efficiency of your network infrastructure.
  • Mission Critical Data & Storage: This feature focuses on improving the reliability and performance of your data storage.
  • Hyper-V & AI: This feature aims to integrate artificial intelligence capabilities into your virtual machines.

Comparison of Windows Server 2022 and 2025

Here’s a comparison of the features available in Windows Server 2022 and 2025:

FeatureWindows Server 2022Windows Server 2025
Azure EditionYesYes
HotpatchingDatacenter: Azure EditionAll editions
SMB over QUICDatacenter: Azure EditionAll editions
Software-defined NetworkingDatacenterAll editions
Storage ReplicaAll editionsAll editions

In conclusion, Windows Server 2025 builds upon the strong foundation of Windows Server 2022 and introduces several new features and enhancements. By understanding the differences between these two versions, IT professionals can make informed decisions about upgrading their server infrastructure.

Stay tuned for more detailed posts about each of these features in the coming weeks!

For more information, please visit the official announcement.

Azure Firewall: A Comprehensive Comparison and Best Practices

Azure Firewall, a managed, cloud-based network security service, is an essential component of Azure’s security offerings. It comes in three different versions – Basic, Standard, and Premium – each designed to cater to a wide range of customer use cases and preferences. This blog post will provide a comprehensive comparison of these versions, discuss best practices for their use, and answer the top 5 most asked questions about Azure Firewall. We will also delve into its application in hub-spoke and Azure Virtual WAN with Secure Hub architectures.

Azure Firewall Versions: Basic, Standard, and Premium

Azure Firewall Basic

Azure Firewall Basic is recommended for SMB customers with throughput needs of 250 Mbps. It’s a cost-effective solution for businesses that require fundamental network protection.

Azure Firewall Standard

Azure Firewall Standard is recommended for customers looking for Layer 3–Layer 7 firewall and needs autoscaling to handle peak traffic periods of up to 30 Gbps. It supports enterprise features like threat intelligence, DNS proxy, custom DNS, and web categories.

Azure Firewall Premium

Azure Firewall Premium is recommended to secure highly sensitive applications (such as payment processing). It supports advanced threat protection capabilities like malware and TLS inspection. Azure Firewall Premium uses advanced hardware and offers a higher-performing underlying engine, best for heavier workloads and higher traffic volumes.

Best Practices for Azure Firewall

To maximize the performance of your Azure Firewall, it’s important to follow best practices. Here are some recommendations:

  • Optimize rule configuration and processing: Organize rules using firewall policy into Rule Collection Groups and Rule Collections, prioritizing them based on their use frequency.
  • Use or migrate to Azure Firewall Premium: Azure Firewall Premium offers a higher-performing underlying engine and includes built-in accelerated networking software.
  • Add multiple public IP addresses to the firewall to prevent SNAT port exhaustion: Consider adding multiple public IP addresses (PIPs) to your firewall.

Top 5 Most Asked Questions About Azure Firewall

  1. What is Azure Firewall? Azure Firewall is a managed, cloud-based network security service that protects your Azure Virtual Network resources.
  2. What capabilities are supported in Azure Firewall? Azure Firewall supports features like threat intelligence, DNS proxy, custom DNS, web categories, and more.
  3. What is the typical deployment model for Azure Firewall? Azure Firewall is typically deployed on a central virtual network and peers with other virtual networks in a hub-and-spoke model.
  4. How can I install the Azure Firewall? You can set up Azure Firewall by using the Azure portal, PowerShell, REST API, or by using templates.
  5. Does Azure Firewall support inbound traffic filtering? Yes, Azure Firewall supports both inbound and outbound filtering.

Azure Firewall in Hub-Spoke and Azure Virtual WAN with Secure Hub

Azure Firewall plays a crucial role in the hub-spoke network architecture pattern in Azure. The hub is a virtual network (VNet) in Azure that acts as a central point of connectivity to your on-premises network. The spokes are VNets that peer with the hub, and can be used to isolate workloads. Azure Firewall secures and inspects network traffic, but it also routes traffic between VNets.

A secured hub is an Azure Virtual WAN Hub with associated security and routing policies configured by Azure Firewall Manager. Use secured virtual hubs to easily create hub-and-spoke and transitive architectures with native security services for traffic governance and protection.

Azure Firewall Features Comparison

Here’s a comparison of the features available in each version of Azure Firewall:

FeatureBasicStandardPremium
Stateful firewall (Layer 3/Layer 4)YesYesYes
Application FQDN filteringYesYesYes
Network traffic filtering rulesYesYesYes
Outbound SNAT supportYesYesYes
Threat intelligence-based filteringNoYesYes
Web categoriesNoYesYes
Intrusion Detection and Prevention System (IDPS)NoNoYes
TLS InspectionNoNoYes
URL FilteringNoNoYes

In conclusion, Azure Firewall is a robust and versatile security service that offers different versions to cater to various needs. By following best practices and understanding its application in different architectures, businesses can effectively secure their Azure resources.

Hope it was helpful thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

Introducing Windows Server 2025 running in Azure #Winsrv #Azure #Security #Windowsinsiders

Microsoft’s newest iteration, Windows Server 2025, signifies a major advancement in server technology. This release is brimming with novel features and improvements, specifically designed to enhance performance in virtual settings like Hyper-V. A notable inclusion is the extension of hotpatching capabilities to servers outside of Azure, a pioneering step aimed at minimizing downtime and optimizing server maintenance. Our exploration will center on the installation experience on Hyper-V, the uncomplicated onboarding process for Azure Arc, and the server OS patching using the Azure Update Manager.

We are excited to unveil the official name of the forthcoming release of Windows Server: Windows Server 2025. There are improvements in several areas:

  • Universal Windows Server Hotpatching
  • Next-Generation Active Directory and SMB
  • Mission-Critical Data & Storage
  • Hyper-V & AI
  • And much more…

There is a preview Build that you can use in Hyper-V or vmware. Get the ISO or VHDX from the insiders portal Join the Windows Server Insider Program here –Get started

In this demo I’ll show you that you can also run Windows server 2025 in Azure. At this time there is not yet an default image available in Azure so you need to create your own image.

first we download the VHDX or ISO and create a local VM all standard. I used Hyper-v on Windows 11.

You have the flexibility to modify or add to the image as per your requirements. For the time being, I’ve utilized the default settings and proceeded directly to Sysprep. Let’s dive straight into Sysprep. Sysprep (System Preparation) is a Microsoft tool that allows you to prepare a system (usually a new one) for distribution, by stripping user- and computer-specific data from the system. This allows you to clone the system and deploy it to other computers. Sysprep can be found in the System32 folder of your Windows installation.

Make sure the settings in sysprep are OOBE , Generalize and shutdown

When the sysprep is done we neet to convert the disk, As the disk is vhdx we need to convert this to vhd. (azure requrements)

Convert-VHD -Path .\ws2025.vhdx -DestinationPath .\ws2025mast.vhd -VHDType Fixed

Make sure the type is set on fixed as when using dynamic disk the VM will not start in Azure. The conversion takes a few minutes depending on the speed of your computer.

Now we are ready to make some steps into Azure.

We create a Storage account or you could reuse the one you already have.

Uploading a Disk to Azure: A Step-by-Step Guide

Uploading a disk to Azure can be accomplished using a variety of tools such as Azure Storage Explorer, AzCopy, or a Shared Access Signature (SAS) token. Here’s a step-by-step guide on how to do it:

Using Azure Storage Explorer

Azure Storage Explorer is a convenient tool for managing Azure storage resources. Here’s how you can use it to upload a disk:

  1. Download and install Azure Storage Explorer.
  2. Connect to your Azure account.
  3. Navigate to the storage account where you want to upload the disk.
  4. Right-click on ‘Blob Containers’ and select ‘Create Blob Container’.
  5. Give your container a name and click ‘Create’.
  6. Navigate into your new container, click on the ‘Upload’ button, and select ‘Upload Files’.
  7. Browse to your disk file, select it, and click ‘Upload’.

Using AzCopy

AzCopy is a command-line utility designed for high-performance uploading, downloading, and copying data to and from Azure Blob storage. Here’s how to use it:

  1. Download and install AzCopy.
  2. Open a command prompt or terminal window.
  3. Use the following command to upload a disk:
azcopy copy '<local-file-path>' 'https://<account-name>.blob.core.windows.net/<container-name>/<blob-name>?<SAS-token>'

Replace <local-file-path>, <account-name>, <container-name>, <blob-name>, and <SAS-token> with your specific details.

Using a SAS Token

A Shared Access Signature (SAS) provides secure delegated access to resources in your storage account. You can use a SAS token when you want to grant access to resources in your storage account without sharing your account keys. Here’s how to generate a SAS token:

  1. Navigate to the Azure portal.
  2. Go to your storage account.
  3. Click on ‘Shared access signature’ under ‘Settings’.
  4. Configure the fields as needed and click on ‘Generate SAS and connection string’.
  5. Copy the SAS token and use it as needed.

Remember, each method has its own advantages. Azure Storage Explorer provides a graphical interface, AzCopy is great for automation, and SAS tokens provide a secure way to delegate access. Choose the one that best fits your needs.

For using AzCopy you need to donload it first. Download the AzCopy V10 executable file to any directory on your computer. AzCopy V10 is just an executable file, so there’s nothing to install.

Windows 64-bit (zip) https://aka.ms/downloadazcopy-v10-windows

Here are a couple of samples that you can use to upload the image.

azcopy copy ‘.\ws2025mast.vhd’ ‘https://saws2025demo.blob.core.windows.net/upload-vhd/ws2025mast.vhd&#8217;

make sure you login when using the command line. there are some warnings on the login.azcopy login –tenant-id=<tenant-id>

https://microsoft.com/devicelogin

If you are not using MFA you will see less warnings but Make sure you always use MFA, security is you friend.

Now we have a succesful login we can stat the copy process.

Or use a sas token, the token can be found on the blob container and properties.

When using the Storage explorer you can drag the vhd file direct into the storage account.

I used the AZcopy command here you can see the progress and the log file for if something goes wrong.

Now that the File is in the Blob container we can start to make an Azure VM

First we make an Image, based on the just uploaded file.

Make sure you use the same generation type as you used in hyper-v. Gen 2 is the default.

now that the image is there we can create a vm from that image

To create a VM is just as creating a default Azure VM except you are using now your own image.

I use a spot sku for this demo it is cheap and will fit the need for this demo. hybernate is not working with the Spot SKU.

The rest next Simular like creating a standard VM

looking ath the Azure diagnostics dusring the deployment you can see the start up of the Windows server 2025 VM in Azure

Time to logon

The server is running in Azure and ready to play with this together with the Azure resources. Be aware it may not be supported as it is still preview!

Hope it was helpful thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

Azure Bastion with Azure Virtual Wan Microsoft #Azure #AzureBastion #AzureNetworking #Vwan #AzOps #blogpost #MVPBuzz

Azure Bastion is a service you deploy that lets you connect to a virtual machine using your browser and the Azure portal, or via the native SSH or RDP client already installed on your local computer. The Azure Bastion service is a fully platform-managed PaaS service that you provision inside your virtual network. It provides secure and seamless RDP/SSH connectivity to your virtual machines directly over TLS from the Azure portal or via native client. When you connect via Azure Bastion, your virtual machines don’t need a public IP address, agent, or special client software.

Bastion provides secure RDP and SSH connectivity to all of the VMs in the virtual network in which it is provisioned. Using Azure Bastion protects your virtual machines from exposing RDP/SSH ports to the outside world, while still providing secure access using RDP/SSH.

A sample setup from Microsoft Learn

In basic the main purpose is get a RDP session to a VM without any VPN direct from the portal.

Bastion SKUs

Azure Bastion has two available SKUs, Basic and Standard and the big difference between hub spoke or singel network is that you will need the standard for a Azure virtual wan. only for this option : Connect to VMs via IP address.

don’t forget the IP based connection checkbox. copy past is just as you want this.

thats all nice but on https://learn.microsoft.com/en-us/azure/bastion/vnet-peering

Deploying Azure Bastion within a Virtual WAN hub is not supported. You can deploy Azure Bastion in a spoke VNet and use the IP-based connection feature to connect to virtual machines deployed across a different VNet via the Virtual WAN hub.

So in basic it might be supported and it will work.

what is needed for the bastion ?

What I did is create a new network just for bastion, I used a /26 network use the Subnet

With the default Azure provided DNS I used the NSG, all just as you would do this in any other network.

Here you can see it is part of my virtual wan just as the other networks

A quick overview of the Bastion NSG keep in mind this is important wrong configuration means no connection. This is all by the Microsoft book.

inbound bastion NSG rules

outbound bastion NSG rules

As I used a secure hub, this network need to be peered into the secure hub just as all your other networks in the virtual wan. my vnet remote is peered

A secured virtual hub is an Azure Virtual WAN Hub with associated security and routing policies configured by Azure Firewall Manager. Use secured virtual hubs to easily create hub-and-spoke and transitive architectures with native security services for traffic governance and protection

Here you can see the vnet-remote is connected to the secure hub

In this step there are a few things different as the default route is disabled and the static route is set to no. this can be changed later or just be configured at creation. our net step is setting the security configuration in the secure hub.

As the entry is not the firewall but we create a extra entrance for the bastion in our secure hub virtual network. where I made sure that the internet traffic is unsecured and protected by NSGs.

Well Done all this but I still don’t get connection well there is also a firewall in place right it is a secure hub.

just create a Firewall rule open port 3389 or 22 or both if you need it. I use Ip groups so much easier and quicker to update you firewall.

In the destination you can add your destinations (vnets)

Now that the configuration is done it is time to test this.

Keep in mind you have to go to bastion and use the IP number, the bastion option in the VM won’t work and will tell you there is no bastion.

So used my IP to the Azure VM and username and password and got a web based connection.

Keep in mind Always use MFA to the Azure portal connection.

Hope it was helpful thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

Windows 11 22H2 Breaks virtual switches in Hyper-V #windows11 #fix #break #hyperv #vswitch  #WindowsInsiders

Windows 11 22H2 Breaks virtual switches in Hyper-V

After updating to Windows 11 22H2 all my hyper-v VM’s did not work any more. vm’s where in save state and could not start anymore. There is just an easy fix and don’t panic your vm’s will run as normal with the setting change.

First the integration services need to be upgraded, in my case I had vm’s from server 2012 etc but these needs to be upgraded, so far my test lab.

The error was upgrade the configuration version.

as you can see I have several versions, more about these configuration version can be found here

Upgrading the configuration version can be done in the gui easy if you have just a few vm’s or in powershell per vm or all at once.

First lets see the version in powershell ( must run as administrator)

get-vm wvd-w10 |select version

Update-VMVersion -Name “wvd-w10” -force

get-vm wvd-w10 |select version

Update-VMVersion * -force

With these command I updated all vm’s , all are now version 11.0

With this the VM will start, but there was no network connection so there must be an issue with the hyper-v switch.

I noticed there was a default switch, Not sure if I created this in the past but I could not delete this switch, looking at the extensions of the vswitch all filter settings where tagged and that is also the issue.

UNTAG the Filters and the network connection is there Make sure you stop start the VM!

see here the two filters that are checked un check these two and apply and stop start the vm and it is all back to normal.

Annoying yes, but it is fixable and easy to fix, and I could blame my self for this as an Windows internal MVP, I did test the update but not in this scenario or to late I was a couple of builds behind.

Hope this post will help you fixing this issue quickly

Hope it was helpful thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

Move a Recovery Services vault across Azure subscriptions and resource group #Backup #ASR #Azure #ITpro #powershell

When working on migrations from datacenter to datacenter you often move the backup to a file storage keep it as archive. but when moving from Azure to Azure subscription that seems a bit more complicate. Well you could use Azure Recource mover. but that is no fun and In this case Powershell is so much easier.

In the old subscription I have a couple of Recovery servers vaults. I need them as Archive. First I made sure that all backups are stopped from the VM’s

Now logon to the Source Subscription

$destinationRG = “rg-weu-backup-demo-01”
$vault = Get-AzRecoveryServicesVault -Name demo-vault-01 – ResourceGroupName rg-demoold-weu-demo-01

this gets the proper info that we need

Next we do the move action be aware this took some time ( couple of minutes)

Move-AzResource -DestinationSubscriptionId “your subscription id” -DestinationResourceGroupName $destinationRG -ResourceId $vault.ID -Verbose

As I did not use the verbose I did not see anything.

When I checked the backup center and the resource group all the data was there quick and easy.

Hope it was helpful thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

SQL Server analysis service SSAS Can’t connect Remote An existing connection was forcibly closed by the remote host #SQL #SQLServer #Azure #SQLHelp

For some time I build/rebuild many SQL sites and often migrate the “old” servers to Azure. Faced many challenges. Clustering FCI and Always On availability groups seen and build many configurations. But lately I did not so much SQL and now in my new lab setup I had an old issue. Looking at the problem many Google hits came along, good advice but not fixing the issue. The setup is a multiple region Azure virtual wan with secure hub Running Application’s in North Europe but some need to connect to West Europe also. But Failed to connect remotely. As many Security components are between this, I had to trim down the issue, to region to vnet. Oh and I used marketplace SQL servers handy and quick, and went against my own advise the next next finish approach never do that.

Step 1 the issue Failed to connect remotely to the SQL Server analysis service SSAS, got two instances running one tabular and one multidimensional

===================================

Cannot connect to VM-WEU-SQL-p-01:2399.

===================================

A connection cannot be made. Ensure that the server is running. (Microsoft.AnalysisServices.AdomdClient)


Program Location:

at Microsoft.AnalysisServices.AdomdClient.XmlaClient.Connect(ConnectionInfo connectionInfo, Boolean beginSession)
at Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Connect()
at Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.AdomdConnection.IXmlaClientProviderEx.ConnectXmla()
at Microsoft.AnalysisServices.AdomdClient.AdomdConnection.ConnectToXMLA(Boolean createSession, Boolean isHTTP)
at Microsoft.AnalysisServices.AdomdClient.AdomdConnection.Open()

Nice Error but no clue on the actual issue or how to solve this.

As the SQL Server analysis service uses an Ini file for the configuration it is easy to adjust it and test it.

Checking the port and removed IPv6

the good old netstat -a -p TCP shows me all the ports

and yes the port 54321 is used for the SQL.

Next checking the access rights also common on the internet solutions

Non of these fixes helped my problem. But the thing is if you have multiple instances running on the SQL server then you must use the port instead of the name

So vm-sql has instances sql01,sql02,sql03

then use vm-sql\sql01 when you are running this local but access this remote you must use vm-sql:portnumer vm-sql:12345

So in my case vm-weu-sql-p-01:54321

Then I noticed something when you are using and sql server with the default instance mssqlserver and a SQL Server analysis service SSAS, with a multidimensional instances. you can connect remotely on name SQL\instance.

With the broker services running you can connect on name, did not see this in any document. So keep this in mind running SSAS in a multiple instance config always use portnumbers.

Also keep in mind you application must support portnumbers!! If not use a default instance to avoid these issues, or use a better application that does support port numbers. Hope it helps you to find the right solution for you, let me know if you have or face this issue.

ope it was helpfull thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

Still Using Azure Cloud Services (Classic) ? #Azure #ARM #ASM #Cloud #EOL #ESLZ #CAF #WAF

Azure Cloud Services (Classic) was a platform-as-a-service (PaaS) offering from Microsoft Azure that allowed developers to deploy, manage, and scale web applications and services in the cloud. However, Microsoft has announced that Azure Cloud Services (Classic) will reach its end-of-life (EOL) on September 1, 2023. In this blog post, I will provide an overview of Azure Cloud Services (Classic) and explain how to migrate your existing cloud services to the new Azure Resource Manager model.

Azure Cloud Service is a bit like an OS that is EOL, it is still running so why touch it, Well In PaaS someone else makes that choice for you. Preventing you for running Old unsecure apps. A quick query showed me this.

In 2014, Microsoft launched infrastructure as a service (IaaS) on Azure Resource Manager. We’ve been enhancing capabilities ever since. Because Azure Resource Manager now has full IaaS capabilities and other advancements, Microsoft deprecated the management of IaaS virtual machines (VMs) through Azure Service Manager (ASM) on February 28, 2020. This functionality will be fully retired on September 1, 2023. #hardstop

Today, about 90 percent of the IaaS VMs are using Azure Resource Manager. If you use IaaS resources through ASM, start planning your migration now. Complete it by September 1, 2023, to take advantage of Azure Resource Manager.

VMs created using the classic deployment model will follow the Modern Lifecycle Policy for retirement.

But many vendors or apps are still using the old Azure Classic and I must say it is interesting to see what projects are all exposed to the web, a couple of query’s of some apps and some high traffic pages like Cumberland Farms | Convenience Stores and Gas (cfi-webauth-01.cloudapp.net) anyone can reach out if they need help on migration(shameless plugging)

  • As of February 28, 2020, customers who didn’t utilize IaaS VMs through ASM in the month of February 2020 can no longer create VMs (classic).
  • On September 1, 2023, customers will no longer be able to start IaaS VMs by using ASM. Any that are still running or allocated will be stopped and deallocated.
  • On September 1, 2023, subscriptions that are not migrated to Azure Resource Manager will be informed regarding timelines for deleting any remaining VMs (classic).

This retirement does not affect the following Azure services and functionality:

  • Storage accounts not used by VMs (classic)
  • Virtual networks not used by VMs (classic)
  • Other classic resources

Reference list of Azure domains

So have a good look at your Azure Resources and IF you do use Azure Classic Take Action now!.

Migrate Azure Classic (ASM) To Azure ARM (Azure Resource Manager) Cloud be easy or not, there is no onesize fits all but below I do some basic steps that get you started.

Before starting the migration process, it is important to have the following prerequisites in place:

  1. An Azure subscription with permissions to create and manage resources.
  2. A basic understanding of Azure ARM templates and deployment processes.
  3. Familiarity with the Azure Portal and PowerShell.
  4. Existing Azure Cloud Services (Classic) deployed and running.
  5. Make sure your network is not Classic.
  6. Make sure your storage account is not Classic.

Step-by-step guide:

  1. Create a new Azure Resource Group to contain the resources that will be created during the migration process.
  2. Review the existing Azure Cloud Services (Classic) deployed to identify the resources needed for the migration process.
  3. Export the configuration of each existing Azure Cloud Service (Classic) by running the following command in PowerShell
  4. Get-AzVM –ResourceGroupName <Name> | Export-AzVM
  5. Modify the configuration of each exported VM to work with ARM by replacing the cloud service name with the new resource group name.
  6. Convert each of the exported VMs to ARM templates by running the following command in PowerShell
  7. ConvertTo-AzureRMVMResource –ResourceId <Cloud Service Resource ID> –OutputFolder <Output Folder>
  8. Create a new ARM template to describe the new environment, including the new resource group, virtual network, and storage account.
  9. Modify the ARM template to include the exported VMs and the required configuration for each VM.
  10. Deploy the ARM template to create the new environment and VMs.
  11. Test the new environment to ensure that all VMs are running and that the application is working correctly.
  12. Redirect traffic from the old Azure Cloud Service (Classic) to the new ARM environment by updating the DNS configuration.
  13. Decommission the old Azure Cloud Service (Classic) and associated resources.

Conclusion:

The Sample above shows some old AzureRM commands and are replaced by AZ commands. This shows also the methods as not only the Azure portal as resources but also the PowerShell modules needs to be updated!! Migrating from Azure Cloud Services (Classic) to Azure ARM can be a complex process, but it is essential for organizations to take advantage of the latest features and benefits of the Azure platform. By following the (sample) step-by-step guide outlined above, organizations can migrate their existing Azure Cloud Services (Classic) to the new ARM environment, ensuring that their applications and services continue to run smoothly and efficiently.

Also when migration Take a good look at your Azure Foundation does it still Fit is the Governance conform WAF / CAF Enterprise-Scale

Hope it was helpfull thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

Azure a custom number of vCPUs use Virtual machines selector #Azure #MVPBuzz #Scale #Compute

Some database workloads like SQL Server require high memory, storage, and I/O bandwidth, but not a high number of cores. Many database workloads are not CPU-intensive. Azure offers pre-defined VM sizes with lower vCPU count which can help to reduce the cost of software licensing, while maintaining the same memory, storage, and I/O bandwidth.

The available vCPU count can be reduced to one half or one quarter of the original VM specification. These new VM sizes have a suffix that specifies the number of available vCPUs to make them easier for you to identify. There are no additional cores available that can be used by the VM.

For example, the Standard_E32s_v5 VM size comes with 32 vCPUs, 256 GiB RAM, 32 disks, and 80,000 IOPs or 2 GB/s of I/O bandwidth. The pre-defined Standard_E32-16s_v5 and Standard_E32-8s_v5 VM sizes comes with 16 and 8 active vCPUs respectively, while maintaining the memory, storage, and I/O bandwidth specifications of the Standard_E32s_v5.

The licensing fees charged for SQL Server are based on the avaialble vCPU count. Third party products should count the available vCPU which represents the max to be used and licensed. This results in a 50% to 75% increase in the ratio of the VM specs to available (billable) vCPUs. At this time, the VM pricing, which includes OS licensing, remains the same as the original size. 


Configure a custom number of vCPUs to reduce the number of vCPUs that are available to the virtual machine. This can help you save on vCPU software-based licensing costs. This may have performance and cost implications.

https://azure.microsoft.com/en-us/pricing/vm-selector/

Try the Virtual machine selector to get the right Virtual machine. there are many option to pick the right VM size, at the end the main thing is you application needs to run optimal, and yes the finance department want to have minimal costs. finding the sweet spot is not always easy, do not start with a B type SKU as these are limited in CPU this is perfect if you already know it doesn’t need 90% CPU all the time.

There are many Azure sku types and all based on ACU keep a close look on ACU and cost vs performance, lower vm cost does not mean lower operation costs. try to install a large package on a B SKU and on a Standard_E2bds_v5 and size back if you can. Learn more about how Azure compute units (ACU) can help you compare compute performance across Azure SKUs.

See the link below for more about VM sizes

https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/?WT.mc_id=AZ-MVP-4025011

Microsoft Ignite 2022

As always you are waiting for some good events and #MSIgnite is a great event, this year 2022 is was hybrid, for me to limited to join in person, but as always great content is announced.

Special this year was I joined the Learn Live and I did a Session with Tomasso Groenendijk follow him on Twitter @tlagroenendijk

The session was about Design Azure Site Recovery, basic this is just the learn module from the microsoft learn But we made it a bit more interactive and added some real live experience in it. A big thanks To the Viewers as it was late and not a real topic that has many interests. So thanks and thanks for the rating and comments.

There is an on-demand option so you can watch it again or just leave me a note on twitter / linkedin or blog if you have a question.

Learn Live: Design your site recovery solution in Azure

Start with Cloud Adoption Framework enterprise-scale landing zones #CAF #Azure #Cloud #MVPBuzz

The Cloud Adoption Framework for Azure enterprise-scale landing zone architecture varies between customers. So there is no one size fits all but there is a lot in common that can be reused next time.

Often I hear Azure Enterprise-scale is not for me it is enterprise. Wrong anyone can use the CAF and Azure Enterprise-scale. as it is modular by design. But if you have just 1 VM there is still some usage that you could use say the management groups or monitoring ,RBAC.

Source :

The enterprise-scale approach to construct landing zones includes three sets of assets to support cloud teams:

  • Design guidelines: Guide to the critical decisions that drive the design of the Cloud Adoption Framework for Azure enterprise-scale landing zone.
  • Architecture: Conceptual reference architecture that demonstrates design areas and best practices.
  • Implementations: Azure Resource Manager template of the architecture to accelerate adoption.

But how do we start with this what to build Well Microsoft made this easy there is a accelerator that I will explain below.

With this solution accelerator you can setup the foundation in one process.

Often there is this error showing even if you are an Azure subscription owner

You don’t have authorization to perform action ‘Microsoft.Resources/deployments/validate/action’.

This can be fixed by adding the user account to the Owner role at Tenant root scope. This can only be done with powershell assign Owner role at Tenant root scope (“/”) as a User Access Administrator to current user
New-AzRoleAssignment -Scope ‘/’ -RoleDefinitionName ‘Owner’ -ObjectId “user objectID”

go to the user and grab the object ID

Now that everything is ready we can start.

Choose where the instance needs to land, pick the proper region for your azure resources. If your default is west europe then choose west europe here

As I did not want to deploy it in a dedicated subscription, I’ll pick my own. the prefix for the management groups is based on the text that is visible later.

The management groups holds the subscriptions and policys can be placed on the management groups.

Here are the options for the log analytics and the policys. to keep a good governance you need logging and policy’s in the Azure Microsoft defender for cloud you can see later the policys and the secure score.

At this time I don’t want to use the devops pipeline. but it is a great add on and you can start from there with the pipeline deployment

Now you need to choose the deployment go for a hub spoke or Azure virtual wan. Depending on your needs, personally I’m a big fan of Azure virtual wan so I’ll choose this. As optional resources can be added as:

  • DDoS Protection Standard
  • Azure Private DNS Zones for Azure PaaS services
  • VPN and ExpressRoute Gateways
  • Azure Firewall

With these options you may need to choose the right sku and a proper subnet and or zone redundancy.

I choose the standard sku, this is without the IDS and TLS inspection, best option is choose premium.

Always use a NSG on your network, never never never add a vm direct to the web.

In the Enterprise-scale it is best practice to use multiple subscriptions, see also the enterprise-scale layout

Now that the deployment is ready we can view de Azure virtual wan with the firewall.

The deployment of the resources are easy to find as the prefix is used on all the resources

Looking at the log analytics and de policys, always check this. maybe you need to adjust the workload and or add extra settings on the workload the make things compliant.

Overall the template is a great starter, and yes you need to configure a lot more than just the foundation, but this gives you a good understanding on what is needed and what to connect and play with the resources.

Go here for the github template of the enterprise scale

Look on my blog for how to configure the VPN and Azure firewall.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Robert Smit MVP Linkedin profile

Google  : Robert Smit MVP profile

Upgrade – Install System Center Virtual Machine Manager 2022 #SCVMM #Azure #Hybrid #AzureArc #AzOps #Sysctr

System Center – Virtual Machine Manager (VMM) Is there for a long time, many used this as the primary tool for managing the virtual and physical environment, but now days Cloud is playing more and more a big role in the infrastructure, Tools are also switching with Azure Arc or with Windows Admin center you have some powerfull tools that can mange the infrastructure.

Hybrid management with Azure

Efficiently managing IT resources that are sprawled across various locations without slowing down developer innovation is a key challenge that IT leaders face today. Azure Arc enables you to seamlessly govern, manage, and secure Windows and Linux servers, Kubernetes clusters, and applications across on-premises, multiple clouds, and the edge from a single control plane.

I must say I see less and less Vmware and VMM as I move them all to Azure. but in the meantime many of you will still using this so here is a little guide on how to upgrade from VMM 2019 to VMM 2022.

Get started with System Center 2022

Make sure the following steps are taken, else you will see some errors, I tried to simulate that so that you can see the expected error message.

  1. Complete any jobs that are currently running in VMM. note that the jobs history is deleted during the upgrade.
  2. Close any connections to the VMM management server, including the VMM console and the VMM command shell.
  3. Close any other programs that are running on the VMM management server.
  4. Ensure that there are no pending restarts on VMM servers.
  5. Perform a full backup of the VMM database.
  6. If the current SQL Server database used Always On availability groups:
    • If the VMM database is included in the availability group, remove it in SQL Server Management Studio.
    • Initiate a failover to the computer that is running SQL Server, on which the VMM database is installed.
  7. If you’re running Operations Manager with VMM, disconnect the connection between VMM and Operations Manager server.

Uninstall the System Center VMM

  1. Go to Control Panel > Programs > Program and Features, select Virtual Machine Manager and click Uninstall.
  2. On the Uninstall wizard, select Remove Features, select both VMM management Server and VMM Console under the features to remove.
  3. On database options page, select Retain database.
  4. Review the summary and click Uninstall.

Remember if you have multiple consoles you need to upgrade these also.

Now that VMM is uninstalled we can proceed. Make sure the check box is checked RETAIN Database

Now we can start the setup again.

We do a full install Console and Management server.

As my VMM server was based on windows server 2016 see the netbios name, I upgraded the server to Windows server 2022 and with the SQL server 2019.

When selecting the Database make sure you use the correct name, If you don’t know the name you can see the name in de SQL server, the wrong Database name gives you the above error.

With the correct Database name.

The next step is upgrade the Database and install VMM

make sure you use the same library name as before.

make sure you take the upgrade steps that are needed in the article when needed.

Now that the VMM server is up and running we can use VMM again and the Database and the configuration is as before.

Hope it was helpfull thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

Backup Azure Firewall with virtual wan #Azure #SDWAN #Backup #Runbook

Azure Backup can’t backup the Azure firewall directly additional steps need to be done before you can backup the Firewall rules. If you create all the rules with PowerShell or an ARM / bicep template then it is easy to add all the rules again, but often in time manual rules are changed or added. There for a good backup is needed of the rules to make sure the latest setup is been backuped.

Azure Firewall is a managed stateful network security service

Organizations can leverage Premium stock-keeping unit (SKU) features like IDPS and TLS inspection to prevent malware and viruses from spreading across networks in both lateral and horizontal directions. To meet the increased performance demands of IDPS and TLS inspection, Azure Firewall Premium uses a more powerful virtual machine SKU. Like the Standard SKU, the Premium SKU can seamlessly scale up to 30 Gbps and integrate with availability zones to support the service level agreement (SLA) of 99.99 percent. The Premium SKU complies with Payment Card Industry Data Security Standard (PCI DSS) environment needs.

Details about the Azure firewall can be found here on the microsoft doc site Azure Firewall documentation | Microsoft Docs

A setup in my testlab with some rules and keep in mind the current runbook works only if the Firewall , policys, and the storage account is in the same resource group. In this blog post I may use different naming across the screenshots, it is the method that you need and the things that can go wrong.

Requirements

  • Automation account
  • Storage Account
  • Runbook

Overview of my demo lab empty shell with rules.

When you are in need to get quickly all the firewall rules and settings you can export the template in the policy manager. as below on my policy’s for the Azure Virtual Machines

Manual is the quick and easy when we want to do this automatically we need an automation account and some runbook that will create a full backup on a storage account, and the storage account can be backup-ed with Azure backup

First we need to setup an Automation Account

Now that the Automation Account is created we can configure it to our needs.

Go to the Automation account and in the Settings blade, under Account settings, create a “Run As” account. This provide the service principal access that will be used to auto-login.

adding the run-as account

This provide the service principal access that will be used to auto-login into the runbook.

The runbook is a PowerShell module and we need to confirm that we have access to network and resources modules. It is important to check if the AZ modules are there else the PowerShell script won’t run. But all you need is already available

The modules that we need are Az.Account, Az.Network, Az.Resources

As you can see all the Az modules are there with the +model from the menu you can add your own modules that you may need.

When running the PowerShell script it needs a storage location, A storage account will be used as storage, keep in mind that the storage account needs to be globally unique It can be also on a storage account that you already have for backup or management then that account can be used.

Create a blob storage account.

This can be done with PowerShell or manual

#Create new RG for the firewall backup

  • $location=”west europe”
  • $ResourceGroupName=”name”

#Create new RG for the firewall backup
New-AzResourceGroup -Name $ResourceGroupName -Location $Location

#Create new Storage account for the firewall backup
New-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $saname
-Location $location -SkuName Standard_LRS
-Kind BlobStorage

Now we save the account name and storagekey and we create a blobcontainer

Press on show keys to make the key visible

Now that the blob is created we create a folder in the blob, you can also do this in the runbook

Now that the Storage account is created we go back to our automation account created earlier and create a runbook, this runbook is used for backup all the firewall rules to the storage account.

create a runbook

just give it a name and choose powershell 5

We are using the Runbook that is on the github page

Select the just created runbook and copy the text into the runbook section https://raw.githubusercontent.com/Azure/Azure-Network-Security/master/Azure Firewall/Runbook – Back Up Azure Firewall/Runbook.txt

Into the new created runbook and click save.

We need to test the runbook to see if it works.

Here we use the created resource group and storage account that we have created for this. you can also make this fixed in the runbook but this is better and also very handy if you want to backup more firewall policy’s

In my case I played to much, if if the folder already exist you will see an error in the test. Also I like to show what kind of errors you could get.

Starting database backup...
Logging in to Azure...
Creating 'firewallbackup' blob container space for storage...
Container 'firewallbackup' already exists
Starting Azure Firewall current configuration export in json...
Starting database backup...
Logging in to Azure...
Creating 'firewallbackup1' blob container space for storage...

CloudBlobContainer : Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer
Permission         : Microsoft.WindowsAzure.Storage.Blob.BlobContainerPermissions
PublicAccess       : Off
LastModified       : 2/8/2022 11:33:12 AM +00:00
ContinuationToken  : 
Context            : Microsoft.WindowsAzure.Commands.Common.Storage.AzureStorageContext
Name               : firewallbackup1
Container 'firewallbackup1' created
Starting Azure Firewall current configuration export in json...

Second error that could be there

Failed
The running command stopped because the preference variable “ErrorActionPreference” or common parameter is set to Stop: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 – HTTP Error Message: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.

you probably need to change the storage key that is used, or change the access to that storage account .

But when it all run’s

Starting database backup...
Logging in to Azure...
Creating 'firewallbackup' blob container space for storage...

CloudBlobContainer : Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer
Permission         : Microsoft.WindowsAzure.Storage.Blob.BlobContainerPermissions
PublicAccess       : Off
LastModified       : 2/8/2022 1:05:04 PM +00:00
ContinuationToken  : 
Context            : Microsoft.WindowsAzure.Commands.Common.Storage.AzureStorageContext
Name               : firewallbackup
Container 'firewallbackup' created
Starting Azure Firewall current configuration export in json...

Path                                                          
----                                                          
C:\Users\Client\Temp\AzureFirewall_MVPCentral202202081305.json
Submitting request to dump Azure Firewall configuration
Removing backups older than '7' days from blob: 'firewallbackup'
Azure Firewall current configuration back up completed.

Now that the testing is complete and working we can publish the runbook

Remember if you don’t publish the runbook it won’t work.

As you run the test runbook it will keep asking would you like to save etc when you want to switch to the schedule blade. just say no save. Our final step is to schedule the backup of the firewall

Create the schedule and the retention time

We create a new schedule

Noe we need to fill in all the parameters just as in the test

ok

if you want to turn this off just click on the line on

Looking into the storage blob we see all the json files

With this json file you can redeploy the firewall rules or use it for a new deployment with a different name.

Hope it was helpfull thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit

How to Create a Windows server 2022 SOFS Cluster on a VM #sofs #ws2022 #winserv #hyperv #Azure #Windows11 #WiMVP

Building a test lab is always depending on the resource you have. Building a Lab in Azure is giving you unlimited resources and the method on building this on your own laptop. I will use the GUI as much as possible else with a powershell script there is no fun in writing the blog. I’ll use a Windows 11 OS for this blog.

For now this blog will demonstrate how to create a scale out fileserver on a windows server 2022 platform.

First we have two domain member servers ws2022 01 / 02 .

Installing the Cluster Roles on the server with powershell or the GUI

Get-WindowsFeature Failover-Clustering
install-WindowsFeature “FS-FileServer”,”Failover-Clustering”,”RSAT-Clustering” -IncludeAllSubFeature -IncludeManagementTools -ComputerName “ws2022-01.mvp.local”,”ws2022-02.mvp.local”
#Create cluster validation report
Test-Cluster -Node ws2022-01,ws2022-02
Start-sleep 8
New-Cluster -Name ws2022CL01 -Node ws2022-01,ws2022-02 -NoStorage -StaticAddress “10.255.255.41”

Remember installing the fileserver may take a reboot, you can also do this at a later stage to avoid the extra reboot.

Now that the cluster is created we configure the cluster, Quorum and add storage to the Cluster.

Here is the difference between the local setup and an Azure setup or running on windows 11. Personally I run Windows server as desktop.

Adding storage to the VM is done in the hyper-v manager. If you run Server! If you run Windows 10 or 11 you will face the issue explained below

Make sure you use scsi disk and shared disks else the disks are unusable for the SOFS file cluster. First option is create 3 shared disks

Make sure you using a shared location to store the vhd files.

When using Windows server you can bypass the share location by using a filterdriver fltMC.exe attach svhdxflt I:\ this is not working on windows 11 it is part of the Failover Clustering feature and will only work on Windows Server!

fltmc.exe attach svhdxflt C:\

Attach failed with error: 0x801f0013
The system could not find the filter specified.

To by pass this you can use ISCSI on the VM’s and this can also work perfectly on Azure. As it is a test lab the performance maybe a bit less of the iscsi connection, but works just as good.

So for the shared disk I create 3 iscsi targets each disk is mounted to both VM’s with the build in iscsi initiator. make sure the disks are not formatted and online.

Checking our just created Cluster on ws2022, and make sure it you work on node 1 all the resources are also available on node 1 , not that the disks are sitting on node 2. you could also pause node 2 that way you make sure there are no resources running on that node.

Add disk if you want a normal file server, but we are building a SOFS with CA storage, as I don’t want to wait if the disk is failing over. as a file server is way different that a SOFS!

In this case we want to build a scale out file server so we are not adding the disk here but we going create a disk pool.

A new pool is created , next step is a virtual disk and a volume

When there are no disk available the cluster is not visible here.

a minimum of 3 disks are needed, and in you test lab it can be any size but bigger that 16Gb

creating the pool,

now that the pool is created, we create the disk

The new disk is created in the next step new virtual disk

as we only have 3 disks and two nodes we have limited of configuration options.

I go for a Mirror as this will max my performance, the more disk you have the more performance you will get and different type of disk can also give caching if needed, with modern hardware Gb/s speed is easy done.

I choose here 50Gb but it all depends on the need and disk size you have. I have 1,49TB but i want to create more disk later so i need some space. and I have zero workload here.

When completed we have a virtual disk and just need to create a volume. I did uncheck the box as adding the volume on a different method, same result but just showing you that the cluster is interacting with the file server components.

When created there is a checkbox checked for the blog I unchecked this. Now I have created a Pool With a disk and our last step is creating a volume on that vdisk.

Now that the pool,disk,volume is created we can create the SOFS, must say the SOFS can be created first and add the disk later. but I like to do this this way.

Create the Scale out file server

Make sure you choose Scale out file server, the default is file server.

This will also be your netbios name. Can be changed but better use the correct name. It will be a Distributed network name.

As our final step we add the file share and this share is on top of our CSV volume that we created on the disk pool.

Add a fileshare

Just pick quick

Make sure the disk is also on your connected node, if not then you will not see the cluster storage

Create a share name.

Make sure the checkbox is set on Continuous Availability

Make sure you set the access rights conform your needs.

Make sure you set the permissions right on the file share. and grant the cluster node access to the share.

Then there comes the fun part testing performance

As you can see there is a nice performance on my test lab machine on a 1 core VM.

See good perfromance on just to see how things are working or giving a good demo

Hope it was helpfull thanks for visiting my blog.

Follow Me on Twitter @ClusterMVP

Follow My blog https://robertsmit.wordpress.com

Linkedin Profile Http://nl.linkedin.com/in/robertsmit