<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Messaging on Azure topics</title>
    <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/bd-p/MessagingonAzure</link>
    <description>Messaging on Azure topics</description>
    <pubDate>Tue, 28 Apr 2026 06:53:10 GMT</pubDate>
    <dc:creator>MessagingonAzure</dc:creator>
    <dc:date>2026-04-28T06:53:10Z</dc:date>
    <item>
      <title>Can IAM permission be given to Service Bus with Local authentication</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/can-iam-permission-be-given-to-service-bus-with-local/m-p/4456842#M30</link>
      <description>&lt;P&gt;If I have a Service Bus with queues in it and it has local authentication enabled. Can I give some users (using their on-premises synced account) the "Azure Service Bus Data Receiver" and "Azure Service Bus Data Sender" permission to allow them to see messages in the queue?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;They have Reader role on the parent Resource group so they can already see the Service Bus but can't access queues.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Or IAM permissions won't work if the Service bus has local authentication enabled.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Sep 2025 09:28:28 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/can-iam-permission-be-given-to-service-bus-with-local/m-p/4456842#M30</guid>
      <dc:creator>curious7</dc:creator>
      <dc:date>2025-09-25T09:28:28Z</dc:date>
    </item>
    <item>
      <title>Managing number of messages delivered by Services Bus Queue</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/managing-number-of-messages-delivered-by-services-bus-queue/m-p/4094812#M21</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to react to Blob storage events trough a webhook by using Event Grid. To handle all these events, I would like to introduce between the event publisher (Blob Storage) and the event handler (Webhook) a Service Bus queue to manage the message delivery.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The event handler can only execute up to 80 messages in parallel. I am thinking about two options:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Would it be possible to notify the Service Bus queue once the process is successfully completed on the event handler side to deliver the next message?&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Delivering the queue in batch of up to 80 messages and wait for the average time the event handler needs to complete the process to delivery the next batch (it won't be ideal). Would it be possible?&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;Any help or another approach is very well appreciated &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Sat, 23 Mar 2024 06:58:32 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/managing-number-of-messages-delivered-by-services-bus-queue/m-p/4094812#M21</guid>
      <dc:creator>salvamo</dc:creator>
      <dc:date>2024-03-23T06:58:32Z</dc:date>
    </item>
    <item>
      <title>JMS 2.0 based apps on Azure Service Bus Standard Tier</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/jms-2-0-based-apps-on-azure-service-bus-standard-tier/m-p/4083796#M20</link>
      <description>&lt;P&gt;Hello Everyone,&lt;BR /&gt;&lt;BR /&gt;I have an app hosted on Azure which uses Azure Service Bus Premium Tier, I need to downgrade the subscription to Standard Tier, to cutdown on expenses as it's a major concern, also it fits my application load.&lt;BR /&gt;&lt;BR /&gt;My concern is, my app is based on JMS API 2.0, can I migrate from Premium to Standard? Is JMS API 2.0 supported by Standard Tier? If not, please suggest any solutions or workaround.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Wed, 13 Mar 2024 11:20:48 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/jms-2-0-based-apps-on-azure-service-bus-standard-tier/m-p/4083796#M20</guid>
      <dc:creator>madanmr</dc:creator>
      <dc:date>2024-03-13T11:20:48Z</dc:date>
    </item>
    <item>
      <title>Easiest way to handle ordering on Event Hub on Blob Containers</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/easiest-way-to-handle-ordering-on-event-hub-on-blob-containers/m-p/3974598#M19</link>
      <description>&lt;P&gt;I am looking for an easy solution for ordering events.&lt;/P&gt;&lt;P&gt;I have an Azure blob storage where an external service push files into a container with different subfolders.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to respond to event by creating a handler on Event Hub on: Create blob for those files, but those files should be processed in a specific order, so files in folder-1 should be processed before folder-2 and then folder-3.&lt;/P&gt;&lt;P&gt;The problem is the external service just upload files in whatever order, and those files might be big.&lt;/P&gt;&lt;P&gt;So the file in folder-3 might load first, and then file in folder-1 which might be big so it might take 40 seconds to upload, and then&amp;nbsp; file in folder-2.&lt;/P&gt;&lt;P&gt;What the easiest way (without writing code if possible)?&lt;/P&gt;&lt;P&gt;Is there a way in Event Hub , or any other Azure service (if possible without writing code) to send to the subscriber in a custom order?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Nov 2023 03:17:39 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/easiest-way-to-handle-ordering-on-event-hub-on-blob-containers/m-p/3974598#M19</guid>
      <dc:creator>gkarwchan</dc:creator>
      <dc:date>2023-11-07T03:17:39Z</dc:date>
    </item>
    <item>
      <title>Creating Dashboards using KQL in Grafana</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/creating-dashboards-using-kql-in-grafana/m-p/3915835#M17</link>
      <description>&lt;P&gt;I want to create a dashboard in Grafana using KQL to see number of Incoming &amp;amp; Outgoing messages on each topics of EventHUbs.&lt;/P&gt;&lt;P&gt;i tried using KubePodInventory &amp;amp; ContainerLog tables in Log Analytics but i couldnot find anything related to messages .&lt;/P&gt;</description>
      <pubDate>Fri, 01 Sep 2023 11:39:42 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/creating-dashboards-using-kql-in-grafana/m-p/3915835#M17</guid>
      <dc:creator>HimanshuShekhar</dc:creator>
      <dc:date>2023-09-01T11:39:42Z</dc:date>
    </item>
    <item>
      <title>Service Bus: Entra ID User Registration with Service Bus and MS Graph Parts 1 &amp; 2</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/service-bus-entra-id-user-registration-with-service-bus-and-ms/m-p/3910919#M16</link>
      <description>&lt;P&gt;Azure Service Bus is a powerful messaging solution with a lot of applications for us to deploy!&lt;/P&gt;&lt;P&gt;Let's explore how we can integrate Service Bus with MS Graph and import our users into Entra ID with lightning fast speed!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;H3&gt;Part 1 : The Terraform files&lt;/H3&gt;&lt;H4&gt;What we need:&lt;/H4&gt;&lt;UL&gt;&lt;LI&gt;An Azure Subscription&lt;/LI&gt;&lt;LI&gt;VSCode or your favorite editor&lt;/LI&gt;&lt;LI&gt;Terraform&lt;/LI&gt;&lt;LI&gt;Docker&lt;/LI&gt;&lt;LI&gt;Let’s Encrypt Certificate&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;First things first, create a Service Principal so Terraform can authenticate to Azure&lt;/P&gt;&lt;PRE&gt;&lt;STRONG&gt;az ad sp create-for-rbac --n tform --role Contributor --scopes /subscriptions/00000000-0000-0000-0000-000000000000&lt;/STRONG&gt;&lt;/PRE&gt;&lt;P&gt;We are going to need&amp;nbsp; :&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;providers.tf&lt;/LI&gt;&lt;LI&gt;variables.tf&lt;/LI&gt;&lt;LI&gt;terraform.tfvars&lt;/LI&gt;&lt;LI&gt;main.tf&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;providers.tf&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="applescript"&gt;terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "3.48.0"
    }
  }
}
provider "azurerm" {
  features {
    key_vault {
      purge_soft_delete_on_destroy    = true
      recover_soft_deleted_key_vaults = true
    }
  }
  subscription_id = var.azure_subidid
  tenant_id       = var.azure_tenantid
  client_id       = var.azure_clientid
  client_secret   = var.azure_spsecret
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;variables.tf&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="applescript"&gt;variable "azure_spsecret" {
  description = "SP"
  type        = string
  sensitive = true

}
variable "azure_clientid" {
  description = "AppID"
  type        = string
}
variable "azure_subid" {
    description = "SubscriptionID"
    type        = string
}
variable "azure_tenantid" {
    description = "TenantID"
    type        = string
}
variable  "azure_user" {
  description = "Azure Portal User"
  type = "string"
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;terraform.tfvars&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="applescript"&gt;#Azure SP Secret
azure_spsecret = "xxxxx"
#Azure  ClientID
azure_clientid = "xxxxxx-xxxx"
#Azure  SubsctiptionID
azure_subid = "xxxxxxxxxx-xxx"
#Azure TenantID
azure_tenantid = "xxxxx-xxxxx"
#Azure User
azure_user = "xxx-xxx-xxx"&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;main.tf&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="applescript"&gt;resource "azurerm_resource_group" "rgroup" {
  name     = "rg-app"
  location = "West Europe"
}
resource "random_string" "str-name" {
  length  = 5
  upper   = false
  numeric = false
  lower   = true
  special = false
}
resource "azurerm_storage_account" "storage" {
  name                     = "st${random_string.str-name.result}01"
  resource_group_name      = azurerm_resource_group.rgroup.name
  location                 = azurerm_resource_group.rgroup.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
}



resource "azurerm_log_analytics_workspace" "logs" {
  name                = "Logskp"
  location            = azurerm_resource_group.rgroup.location
  resource_group_name = azurerm_resource_group.rgroup.name
  sku                 = "PerGB2018"
  retention_in_days   = 30
}

resource "azurerm_application_insights" "appinsights" {
  name                = "funcinsights"
  location            = azurerm_resource_group.rgroup.location
  resource_group_name = azurerm_resource_group.rgroup.name
  workspace_id        = azurerm_log_analytics_workspace.logs.id
  application_type    = "Node.JS"
}

output "instrumentation_key" {
  value     = azurerm_application_insights.appinsights.instrumentation_key
  sensitive = true
}

output "connection_string" {
  value     = azurerm_application_insights.appinsights.connection_string
  sensitive = true
}

resource "azurerm_service_plan" "appsrv" {
  name                = "aplan-${random_string.str-name.result}"
  location            = azurerm_resource_group.rgroup.location
  resource_group_name = azurerm_resource_group.rgroup.name
  os_type             = "Linux"
  sku_name            = "B1"
}

resource "azurerm_linux_function_app" "funcapp" {
  name                = "fnc${random_string.str-name.result}"
  location            = azurerm_resource_group.rgroup.location
  resource_group_name = azurerm_resource_group.rgroup.name
  service_plan_id     = azurerm_service_plan.appsrv.id

  storage_account_name       = azurerm_storage_account.storage.name
  storage_account_access_key = azurerm_storage_account.storage.primary_access_key

  functions_extension_version = "~4"
  app_settings = {
    "WEBSITE_RUN_FROM_PACKAGE"               = "1"
    "FUNCTIONS_WORKER_RUNTIME"               = "node"
    "APPLICATIONINSIGHTS_CONNECTION_STRING" = azurerm_application_insights.appinsights.connection_string
    "APPINSIGHTS_INSTRUMENTATIONKEY"               = azurerm_application_insights.appinsights.instrumentation_key
  }
  identity {
    type = "SystemAssigned"
  }
  site_config {
    application_stack {
      node_version = "18"
    }
    cors {
      allowed_origins = ["*"]
    }
  }

}

resource "azurerm_resource_group" "rgsbus" {
  name     = "rg-sbus"
  location = "West Europe"
}
resource "azurerm_servicebus_namespace" "sbus" {
  name                = "kpsbus01"
  location            = azurerm_resource_group.rgsbus.location
  resource_group_name = azurerm_resource_group.rgsbus.name
  sku                 = "Standard"
  identity {
    type = "SystemAssigned"
  }
}

resource "azurerm_servicebus_queue" "squeue" {
  name         = "sbusqueue"
  namespace_id = azurerm_servicebus_namespace.sbus.id

  enable_partitioning = true
}
# Create a KeyVault
data "azurerm_client_config" "current" {}
resource "azurerm_key_vault" "kv1" {
  name                = "kvk${random_string.str-name.result}2"
  location            = azurerm_resource_group.rgsbus.location
  resource_group_name = azurerm_resource_group.rgsbus.name
  tenant_id           = data.azurerm_client_config.current.tenant_id
  sku_name            = "standard"
}

resource "azurerm_key_vault_access_policy" "kvpolicy" {
  key_vault_id = azurerm_key_vault.kv1.id

  tenant_id = data.azurerm_client_config.current.tenant_id
  object_id = azurerm_linux_function_app.funcapp.identity[0].principal_id

  secret_permissions = [
    "Get",
  ]
}
resource "azurerm_key_vault_access_policy" "worker_access_policy" {
  key_vault_id = azurerm_key_vault.kv1.id

  tenant_id = data.azurerm_client_config.current.tenant_id
  object_id = data.azurerm_client_config.current.object_id

  key_permissions = [
    "Create",
    "Get"
  ]

  secret_permissions = [
    "Set",
    "Get",
    "Delete",
    "Purge",
    "Recover"
  ]
}
resource "azurerm_key_vault_access_policy" "user_access_policy" {
  key_vault_id = azurerm_key_vault.kv1.id

  tenant_id = data.azurerm_client_config.current.tenant_id
  object_id = var.azure_user
  secret_permissions = [
    "List",
    "Set",
    "Get",
    "Purge",
    "Recover",
    "Delete",
    "Backup",
    "Restore"
  ]
}


resource "azurerm_container_app_environment" "cappenv" {
  name                       = "contEnvironment"
  location                   = azurerm_resource_group.rgsbus.location
  resource_group_name        = azurerm_resource_group.rgsbus.name
  log_analytics_workspace_id = azurerm_log_analytics_workspace.logs.id
}
resource "azurerm_container_app" "capp" {
  name                         = "c${random_string.str-name.result}001"
  container_app_environment_id = azurerm_container_app_environment.cappenv.id
  resource_group_name          = azurerm_resource_group.rgsbus.name
  revision_mode                = "Single"

  template {
        max_replicas = 5
        min_replicas = 1
    container {
      name   = "webreg01"
      image  = "docker.io/kpassadis/webreg01:v2"
      cpu    = 1.0
      memory = "2Gi"
    }
  }
  ingress {
    allow_insecure_connections = "false"
    external_enabled = "true"
    target_port = 80
    traffic_weight {
    percentage = "100"
    latest_revision = true
    }
  }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;At this point we have created two resource groups with all the required resources :&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Log Analytics Workspace with Application Insights&lt;/LI&gt;&lt;LI&gt;Function App with an App Service Plan (Linux) and Storage Account&lt;/LI&gt;&lt;LI&gt;Service Bus Queue&lt;/LI&gt;&lt;LI&gt;Key Vault&lt;/LI&gt;&lt;LI&gt;Container App with a Docker App ( Simple HTML to POST the HTTP Trigger)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Now, i will make quick reference to the Docker Application. All we need is a Docker File and we can push it to Docker Hub and later call it directly from Container Apps.&lt;/P&gt;&lt;P&gt;So here are the HTML container app elements (index.html ,style.css ,Dockerfile) :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;index.html&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;lt;!DOCTYPE html&amp;gt;  
&amp;lt;html&amp;gt;  
&amp;lt;head&amp;gt;  
    &amp;lt;link rel="stylesheet" type="text/css" href="style.css"&amp;gt;  
    &amp;lt;style&amp;gt;
      #message {
        margin-top: 20px;
        padding: 10px;
        background-color: lightgray;
        border-radius: 5px;
        text-align: center;
        font-weight: bold;
        display: none;
      }
      /* added CSS */
      .center {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
      }
    &amp;lt;/style&amp;gt;
&amp;lt;script&amp;gt;
async function sendMessage(event) {
    event.preventDefault();
    const firstname = document.getElementById("firstname").value;
    const lastname = document.getElementById("lastname").value;
    const nickname = document.getElementById("nickname").value;

    const userData = {
        firstname: firstname,
        lastname: lastname,
        nickname: nickname
    };

    const response = await fetch("https://xxxxx.azurewebsites.net/api/xxxxx", {
        method: "POST",
        headers: {
            "Content-Type": "application/json"
        },
        body: JSON.stringify(userData)
    });

    const result = await response.json();
    document.getElementById('message').innerText = result.message;

}

    &amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;  
&amp;lt;body&amp;gt;  
&amp;lt;div class="container"&amp;gt;
    &amp;lt;form method="post" action="https://xxxxx.azurewebsites.net/api/submit-form" onsubmit="sendMessage(event)"&amp;gt;
        &amp;lt;label for="firstname"&amp;gt;First Name&amp;lt;/label&amp;gt;
        &amp;lt;input type="text" id="firstname" name="firstname" required&amp;gt;
        
        &amp;lt;label for="lastname"&amp;gt;Last Name&amp;lt;/label&amp;gt;
        &amp;lt;input type="text" id="lastname" name="lastname" required&amp;gt;
        
        &amp;lt;label for="nickname"&amp;gt;Nickname&amp;lt;/label&amp;gt;
        &amp;lt;input type="text" id="nickname" name="nickname" required&amp;gt;
        
        &amp;lt;button type="submit"&amp;gt;Submit&amp;lt;/button&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div id="message"&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;  
&amp;lt;/html&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;style.css&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="css"&gt;body {
    font-family: Arial, sans-serif;
    background-color: #cce6ff;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}

.container {
    background-color: #0073e6;
    padding: 2rem;
    border-radius: 5px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
    width: 400px;
}

form {
    display: flex;
    flex-direction: column;
}

label {
    font-weight: bold;
    margin-bottom: 0.5rem;
}

input {
    margin-bottom: 1rem;
    padding: 0.5rem;
    border: 1px solid #ccc;
    border-radius: 3px;
}

button {
    padding: 0.5rem 1rem;
    background-color: #4CAF50;
    color: white;
    border: none;
    border-radius: 3px;
    cursor: pointer;
}

button:hover {
    background-color: #45a049;
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And here is our simple Dockerfile :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;FROM nginx:stable-alpine
COPY . /usr/share/nginx/html&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;docker build -t myapp:v1 .&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;docker login&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;docker push myusername/myapp:v1&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;I won’t dive deeper into Docker but it is that simple! You can validate also with a local run {&lt;STRONG&gt;docker run –name test-container -p 8080:80 -d myusername/myapp:v1&lt;/STRONG&gt;}, and all documentation is available at &lt;A href="https://docs.docker.com/get-started/" target="_blank" rel="noopener noreferrer"&gt;Docker Get Started&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;Now prepare a &lt;A href="https://certbot.eff.org/" target="_blank" rel="noopener noreferrer"&gt;Let’s Encrypt certificate&lt;/A&gt;, and let's go to Part 2!&lt;/P&gt;&lt;H3&gt;Part 2 : The Configuration&lt;/H3&gt;&lt;P class=""&gt;We have 2 Resource Groups with Log Analytics , Application Insights , Key Vault , Service Bus and Function Apps. It is time to deploy our Function App Triggers, and take the URL to add to our Docker Image.&lt;/P&gt;&lt;P&gt;From VSCode make sure you have the latest version of azure-functions-core-tools.&lt;/P&gt;&lt;P&gt;Install required packages :&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;npm install &lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="73893" data-lia-user-login="azure" class="lia-mention lia-mention-user"&gt;azure&lt;/a&gt;/service-bus&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;npm install &lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="41501" data-lia-user-login="Pernille-Eskebo" class="lia-mention lia-mention-user"&gt;Pernille-Eskebo&lt;/a&gt;/microsoft-graph-client &lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="73893" data-lia-user-login="azure" class="lia-mention lia-mention-user"&gt;azure&lt;/a&gt;/msal-node&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Create a new HTTP Trigger with the following details :&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;index.js&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;const { ServiceBusClient } = require("@azure/service-bus");

module.exports = async function (context, req) {
    context.log('Sending message to Azure Service Bus');

    const userData = req.body;

    if (userData) {
        const connectionString = process.env["ServiceBusConnectionString"];
        const queueName = "sbusqueue";

        const sbClient = new ServiceBusClient(connectionString);
        const sender = sbClient.createSender(queueName);

        const message = {
            body: JSON.stringify(userData),
            contentType: "application/json"
        };

        await sender.sendMessages(message);

        await sender.close();
        await sbClient.close();

/*        context.res = {
            status: 200,
            body: "Message sent to Service Bus successfully."
        };
*/
context.res = {
    status: 200,
    body: { message: 'User registration submitted successfully!' }
};


    } else {
        context.res = {
            status: 400,
            body: { message: 'User registration was NOT submitted successfully!' }
        };
    }
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and &lt;EM&gt;&lt;STRONG&gt;function.json&lt;/STRONG&gt;&lt;/EM&gt; for our bindings:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "post",
        "get"
      ],
      "route": "submit-form"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "type": "serviceBus",
      "direction": "out",
      "connection": "ServiceBusConnectionString",
      "name": "outputSbMsg",
      "queueName": "sbusqueue"
    }
  ]
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Set the Function App's System Assigned Managed Identity as a Service Bus Data Owner on the Service Bus resource.&lt;/P&gt;&lt;P&gt;Add the Service Bus Connection String Setting from Service Bus Shared Access Policies . You can use the Root connection&amp;nbsp; or create a new one, and create the Function Configuration Setting with one of the Connection Strings.&lt;/P&gt;&lt;P&gt;Now, go ahead and update the Docker container with the provided URL from the trigger, into the HTML of the index.html file and push the updated image! Remember to save your files on VSCode!&lt;/P&gt;&lt;PRE&gt;&lt;STRONG&gt;docker build -t myusername/myapp:v3 .
docker push myusername/myapp:v3&lt;/STRONG&gt;&lt;/PRE&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Next we need to create our Function Trigger to import the user into Azure Active Directory with MS Graph.&lt;/P&gt;&lt;P&gt;First of all, authentication ! We will create a Service Principal with MS Graph API Permissions that will allow it to write into Azure AD. The procedure is simple , use the &lt;STRONG&gt;az ad sp create-for-rbac&lt;/STRONG&gt; command , or add a new Application Registration and create a secret. Add the MS Graph API Permissions:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Directory.ReadWrite.All (application)&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;User.ReadWrite.All (application)&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;We will store the Application (Service Principal) Details into our Key Vault so lets do this&lt;/P&gt;&lt;P&gt;Create 3 new entries into Key Vault as Secrets , the Service Principal Object ID, Tenant ID and the secret.&lt;/P&gt;&lt;P&gt;The name of the values should be kept for we need them in our code.&lt;/P&gt;&lt;P&gt;Observe that our Function App has already the GET Secrets Access Policy in place from the terraform configuration script.&lt;/P&gt;&lt;P&gt;Install : &lt;STRONG&gt;npm install &lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="73893" data-lia-user-login="azure" class="lia-mention lia-mention-user"&gt;azure&lt;/a&gt;/identity&lt;/STRONG&gt; and &lt;STRONG&gt;npm install &lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="73893" data-lia-user-login="azure" class="lia-mention lia-mention-user"&gt;azure&lt;/a&gt;/keyvault-secrets&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Now create a new Trigger for our Function, a Service Bus Trigger with the following code :&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;index.js&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;const { ConfidentialClientApplication } = require('@azure/msal-node');
const { Client } = require('@microsoft/microsoft-graph-client');
const { DefaultAzureCredential } = require('@azure/identity');
const { SecretClient } = require('@azure/keyvault-secrets');

async function getKeyVaultSecret(keyVaultUrl, secretName) {
    const credential = new DefaultAzureCredential();
    const secretClient = new SecretClient(keyVaultUrl, credential);
    const secret = await secretClient.getSecret(secretName);
    return secret.value;
}

module.exports = async function (context, myQueueItem) {
    context.log('JavaScript ServiceBus queue trigger function processed message', myQueueItem);

    const userData = JSON.parse(myQueueItem);
    const firstName = userData.firstname;
    const lastName = userData.lastname;
    const nickname = userData.nickname;
    const domainSuffix = 'example.com'; // Replace 'example.com' with your desired domain suffix


    // Set up authentication
     
// In case you dont want KeyVault
   // const clientId = 'xxxxxxxxxxx';
   // const clientSecret = 'xxxxxxxxxxxxxxx';
   // const tenantId = 'xxxxxxxxxxxxxxxx';
   // -----
// Replace with your Key Vault URL
   const keyVaultUrl = 'https://&amp;lt;your_key_vault_name&amp;gt;.vault.azure.net/';
   const clientId = await getKeyVaultSecret(keyVaultUrl, 'appRegistrationClientId');
   const clientSecret = await getKeyVaultSecret(keyVaultUrl, 'appRegistrationClientSecret');
   const tenantId = await getKeyVaultSecret(keyVaultUrl, 'appRegistrationTenantId');


    const config = {
        auth: {
            clientId: clientId,
            authority: `https://login.microsoftonline.com/${tenantId}`,
            clientSecret: clientSecret
        }
    };

    const app = new ConfidentialClientApplication(config);

    // Acquire token
    const tokenRequest = {
        scopes: ['https://graph.microsoft.com/.default']
    };

    const authResult = await app.acquireTokenByClientCredential(tokenRequest);
    const accessToken = authResult.accessToken;

    // Set up Graph client
    const client = Client.init({
        authProvider: (done) =&amp;gt; {
            done(null, accessToken);
        }
    });

    // Create a new user in Azure AD
    const newUser = {
        accountEnabled: true,
        displayName: `${firstName} ${lastName}`,
        mailNickname: nickname,
        userPrincipalName: `${nickname}@${domainSuffix}`,
        passwordProfile: {
            forceChangePasswordNextSignIn: true,
            password: 'mYComp@2022!@'
        }
    };

    const createdUser = await client.api('/users').post(newUser);

    context.log(`User created with ID: ${createdUser.id}`);
      
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and &lt;EM&gt;&lt;STRONG&gt;function.json :&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;{
  "bindings": [
    {
      "name": "myQueueItem",
      "type": "serviceBusTrigger",
      "direction": "in",
      "queueName": "sbusqueue",
      "connection": "ServiceBusConnectionString"
    }
  ]
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The final touch is to add our own custom domain!&lt;/P&gt;&lt;P&gt;So from the Azure Portal , Container Apps -Settings we add a custom domain:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;Write the domain and you will be preented the option to Upload the Certbot certificate ( or any PFX Certificate for this domain):&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Proceed with the Validation steps by adding the TXT and CNAME records and that’s it !&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;Watch how fast the users are created in Entra ID (Azure AD) !&lt;/P&gt;&lt;P&gt;The Solution is a sample and needs additional features, but is a good example of Service Bus and how Azure Integration can help us create literally anything we want !&lt;/P&gt;&lt;H3&gt;Final Thoughts&lt;/H3&gt;&lt;P&gt;Integration is key for Cloud Services and Azure is a perfect example of how Integration can help us create unique solutions with ease. Azure Service Bus along with Container Apps and Function Apps helped us create a Web App, that can register users into Azure AD fast and reliable.&lt;/P&gt;</description>
      <pubDate>Sun, 27 Aug 2023 15:30:19 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/service-bus-entra-id-user-registration-with-service-bus-and-ms/m-p/3910919#M16</guid>
      <dc:creator>KonstantinosPassadis</dc:creator>
      <dc:date>2023-08-27T15:30:19Z</dc:date>
    </item>
    <item>
      <title>How to add a complete Azure SQL Database while creating NEW Azure Cognitive Search Service Resource?</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/how-to-add-a-complete-azure-sql-database-while-creating-new/m-p/3895206#M15</link>
      <description>&lt;P&gt;Hello All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to create a MIS (Management Information Systems) Chatbot which will give answers to natural languages pertaining to business driven KPIs which will be formed using aggregated/summary/grouped data to drive conclusions on business-critical decision making and it is expected that many such KPI data asked using natural languages (instead of developer friendly complicated SQL) would be derived by joining multiple tables.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As pe the present process to create a Semantic Search capable chatbot using Azure OpenAI I first need to create an Azure Cognitive Search Service and there in the "Test Connection" button I have to choose just ONE database object be it a table/view etc. Is there a way to choose all the database objects that are there in the connected database?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I am also thinking of using multiple custom views each specific for specific aggregation addressing KPI definitions. The point is my custom join SQLs will be saved as views and I want the chatbot to deliver the answer of these views while someone asks the question in a Natural Language in Azure Open AI chat-box (as if someone has asked the connected database the said SQL query whose answers are saved as the view to be shown back to the user)?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Important:&lt;/STRONG&gt; I don't want to create a just one custom view to join tables as that would NOT solve my MIS KPI addressing use case.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please assist.!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 09 Aug 2023 14:02:12 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/how-to-add-a-complete-azure-sql-database-while-creating-new/m-p/3895206#M15</guid>
      <dc:creator>Arya_Dey</dc:creator>
      <dc:date>2023-08-09T14:02:12Z</dc:date>
    </item>
    <item>
      <title>Notification Hub design for a single application</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/notification-hub-design-for-a-single-application/m-p/3669503#M13</link>
      <description>&lt;P&gt;I have an Azure Notification hub in a namespace for sending notifications to a mobile app. If I go with a basic tier initially&amp;nbsp; and later if the active device count increases, is it better to upgrade to another higher plan or can we create another namespace for the same Mobile app.If we create 2 Namespaces for a single app, do we need to explicitly manage the sending of notification or the notification hub will do it automatically, as we have few users in 1 namespace and few users users in another namespace for the same Mobile app will it be a good approach?&lt;/P&gt;</description>
      <pubDate>Fri, 04 Nov 2022 09:27:54 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/notification-hub-design-for-a-single-application/m-p/3669503#M13</guid>
      <dc:creator>Krishnas12</dc:creator>
      <dc:date>2022-11-04T09:27:54Z</dc:date>
    </item>
    <item>
      <title>Failed to remove group membership</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/failed-to-remove-group-membership/m-p/3274777#M10</link>
      <description>&lt;P&gt;I am using a group in AAD to assign licenses to my Conference room room mailbox account.&amp;nbsp; from last few days when i am trying to remove the particular group from a room account, i am getting below error.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Failed to remove group membership&lt;/P&gt;&lt;P&gt;Unable to complete due to service connection error.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please suggest&lt;/P&gt;</description>
      <pubDate>Sun, 03 Apr 2022 14:34:57 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/failed-to-remove-group-membership/m-p/3274777#M10</guid>
      <dc:creator>Ashka123</dc:creator>
      <dc:date>2022-04-03T14:34:57Z</dc:date>
    </item>
    <item>
      <title>How to publish user-defined topic to IoT hub?</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/how-to-publish-user-defined-topic-to-iot-hub/m-p/3184578#M8</link>
      <description>&lt;P&gt;I am new to azure ecosystem. I followed some examples and documents and able to connect to the Azure IoT Hub and able to send data. The data is being sent on device/&amp;lt;deviceID&amp;gt;/messages/events topic(telemetry message) topic. From same application, I am not able to publish the message on custom topic(user-defined). Can you please help me if I am missing any additional configuration/settings for Azure IoT?&lt;/P&gt;</description>
      <pubDate>Fri, 18 Feb 2022 14:54:48 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/how-to-publish-user-defined-topic-to-iot-hub/m-p/3184578#M8</guid>
      <dc:creator>Inderveer1060</dc:creator>
      <dc:date>2022-02-18T14:54:48Z</dc:date>
    </item>
    <item>
      <title>Best practices for Azure Event Hubs - multiple subscriptions</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/best-practices-for-azure-event-hubs-multiple-subscriptions/m-p/2280332#M4</link>
      <description>&lt;P&gt;We have a customer who has 36 subscriptions and only one is being sent to an on-prem SIEM(LogRhythm).&amp;nbsp; The question was asked if you need a separate EH for each subscription or what is the best method to get all subscriptions sent to LogRhythm?&amp;nbsp; Cost is a major factor in our customers decision.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks you for this opportunity.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Sergio&lt;/P&gt;</description>
      <pubDate>Wed, 21 Apr 2021 16:26:40 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/best-practices-for-azure-event-hubs-multiple-subscriptions/m-p/2280332#M4</guid>
      <dc:creator>snteran</dc:creator>
      <dc:date>2021-04-21T16:26:40Z</dc:date>
    </item>
    <item>
      <title>How to consume Azure Event Grid messages on local desktop application?</title>
      <link>https://techcommunity.microsoft.com/t5/messaging-on-azure/how-to-consume-azure-event-grid-messages-on-local-desktop/m-p/2117203#M3</link>
      <description>&lt;P&gt;Hello All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am new to Azure Platform, Need some inputs on how can one consume Azure Event Grid messages on local environment. I already went through the documentation of the same but all I could find was references related to those apps which runs on Azure PaaS. If anyone can guide me in the right direction, I would be very much appreciate it. Thank you.&lt;/P&gt;</description>
      <pubDate>Sun, 07 Feb 2021 22:26:28 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/messaging-on-azure/how-to-consume-azure-event-grid-messages-on-local-desktop/m-p/2117203#M3</guid>
      <dc:creator>pranavjoshi</dc:creator>
      <dc:date>2021-02-07T22:26:28Z</dc:date>
    </item>
  </channel>
</rss>

