From 40184a630712f7b0cf8dd6a0fff8f2df9e9f057a Mon Sep 17 00:00:00 2001
From: SDK Automation <sdkautomation@microsoft.com>
Date: Tue, 20 Oct 2020 14:50:55 +0000
Subject: [PATCH] Generated from dd3092de68f78c322b8d6c0719bf48dacc39def3

Kusto: update readme.java.md
---
 src/kusto/HISTORY.rst                         |   16 +-
 src/kusto/azext_kusto/__init__.py             |   96 +-
 src/kusto/azext_kusto/action.py               |   34 +-
 src/kusto/azext_kusto/azext_metadata.json     |    6 +-
 src/kusto/azext_kusto/custom.py               |   34 +-
 src/kusto/azext_kusto/generated/__init__.py   |   24 +-
 .../azext_kusto/generated/_client_factory.py  |   79 +-
 src/kusto/azext_kusto/generated/_help.py      | 1556 ++++++++-------
 src/kusto/azext_kusto/generated/_params.py    | 1216 ++++++------
 .../azext_kusto/generated/_validators.py      |   18 +-
 src/kusto/azext_kusto/generated/action.py     |  498 ++---
 src/kusto/azext_kusto/generated/commands.py   |  239 +--
 src/kusto/azext_kusto/generated/custom.py     | 1761 ++++++++---------
 src/kusto/azext_kusto/manual/__init__.py      |   24 +-
 src/kusto/azext_kusto/tests/__init__.py       |  185 +-
 .../azext_kusto/tests/latest/__init__.py      |   24 +-
 .../tests/latest/test_kusto_scenario.py       | 1117 ++++++-----
 .../azext_kusto/vendored_sdks/__init__.py     |   24 +-
 .../vendored_sdks/kusto/__init__.py           |    2 +-
 .../vendored_sdks/kusto/_configuration.py     |    4 +-
 .../vendored_sdks/kusto/_version.py           |    9 -
 .../kusto/aio/_configuration_async.py         |    4 +-
 ...database_configuration_operations_async.py |  116 +-
 .../_cluster_operations_async.py              |  574 +++---
 ...r_principal_assignment_operations_async.py |  121 +-
 .../_data_connection_operations_async.py      |  210 +-
 .../_database_operations_async.py             |  180 +-
 ...e_principal_assignment_operations_async.py |  125 +-
 .../_operation_operations_async.py            |   14 +-
 .../vendored_sdks/kusto/models/__init__.py    |    2 +
 .../models/_kusto_management_client_enums.py  |  348 ++--
 .../vendored_sdks/kusto/models/_models.py     |   69 +-
 .../vendored_sdks/kusto/models/_models_py3.py |   72 +-
 ...ached_database_configuration_operations.py |   98 +-
 .../kusto/operations/_cluster_operations.py   |  502 +++--
 ...cluster_principal_assignment_operations.py |  103 +-
 .../operations/_data_connection_operations.py |  176 +-
 .../kusto/operations/_database_operations.py  |  154 +-
 ...atabase_principal_assignment_operations.py |  107 +-
 .../kusto/operations/_operation_operations.py |   14 +-
 .../azext_kusto/vendored_sdks/kusto/setup.py  |   37 -
 src/kusto/report.md                           | 1479 ++++++++------
 src/kusto/setup.py                            |  115 +-
 43 files changed, 6308 insertions(+), 5278 deletions(-)
 delete mode 100644 src/kusto/azext_kusto/vendored_sdks/kusto/_version.py
 delete mode 100644 src/kusto/azext_kusto/vendored_sdks/kusto/setup.py

diff --git a/src/kusto/HISTORY.rst b/src/kusto/HISTORY.rst
index 27f152061e8..1c139576ba0 100644
--- a/src/kusto/HISTORY.rst
+++ b/src/kusto/HISTORY.rst
@@ -1,8 +1,8 @@
-.. :changelog:
-
-Release History
-===============
-
-0.1.0
-++++++
-* Initial release.
+.. :changelog:
+
+Release History
+===============
+
+0.1.0
+++++++
+* Initial release.
diff --git a/src/kusto/azext_kusto/__init__.py b/src/kusto/azext_kusto/__init__.py
index 87ad305c2dc..ef7aec28329 100644
--- a/src/kusto/azext_kusto/__init__.py
+++ b/src/kusto/azext_kusto/__init__.py
@@ -1,46 +1,50 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-
-from azure.cli.core import AzCommandsLoader
-from azext_kusto.generated._help import helps  # pylint: disable=unused-import
-
-
-class KustoManagementClientCommandsLoader(AzCommandsLoader):
-
-    def __init__(self, cli_ctx=None):
-        from azure.cli.core.commands import CliCommandType
-        from azext_kusto.generated._client_factory import cf_kusto
-        kusto_custom = CliCommandType(
-            operations_tmpl='azext_kusto.custom#{}',
-            client_factory=cf_kusto)
-        parent = super(KustoManagementClientCommandsLoader, self)
-        parent.__init__(cli_ctx=cli_ctx, custom_command_type=kusto_custom)
-
-    def load_command_table(self, args):
-        from azext_kusto.generated.commands import load_command_table
-        load_command_table(self, args)
-        try:
-            from azext_kusto.manual.commands import load_command_table as load_command_table_manual
-            load_command_table_manual(self, args)
-        except ImportError:
-            pass
-        return self.command_table
-
-    def load_arguments(self, command):
-        from azext_kusto.generated._params import load_arguments
-        load_arguments(self, command)
-        try:
-            from azext_kusto.manual._params import load_arguments as load_arguments_manual
-            load_arguments_manual(self, command)
-        except ImportError:
-            pass
-
-
-COMMAND_LOADER_CLS = KustoManagementClientCommandsLoader
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+from azure.cli.core import AzCommandsLoader
+from azext_kusto.generated._help import helps  # pylint: disable=unused-import
+try:
+    from azext_kusto.manual._help import helps  # pylint: disable=reimported
+except ImportError:
+    pass
+
+
+class KustoManagementClientCommandsLoader(AzCommandsLoader):
+
+    def __init__(self, cli_ctx=None):
+        from azure.cli.core.commands import CliCommandType
+        from azext_kusto.generated._client_factory import cf_kusto_cl
+        kusto_custom = CliCommandType(
+            operations_tmpl='azext_kusto.custom#{}',
+            client_factory=cf_kusto_cl)
+        parent = super(KustoManagementClientCommandsLoader, self)
+        parent.__init__(cli_ctx=cli_ctx, custom_command_type=kusto_custom)
+
+    def load_command_table(self, args):
+        from azext_kusto.generated.commands import load_command_table
+        load_command_table(self, args)
+        try:
+            from azext_kusto.manual.commands import load_command_table as load_command_table_manual
+            load_command_table_manual(self, args)
+        except ImportError:
+            pass
+        return self.command_table
+
+    def load_arguments(self, command):
+        from azext_kusto.generated._params import load_arguments
+        load_arguments(self, command)
+        try:
+            from azext_kusto.manual._params import load_arguments as load_arguments_manual
+            load_arguments_manual(self, command)
+        except ImportError:
+            pass
+
+
+COMMAND_LOADER_CLS = KustoManagementClientCommandsLoader
diff --git a/src/kusto/azext_kusto/action.py b/src/kusto/azext_kusto/action.py
index a846b2766c4..d95d53bf711 100644
--- a/src/kusto/azext_kusto/action.py
+++ b/src/kusto/azext_kusto/action.py
@@ -1,17 +1,17 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-# pylint: disable=wildcard-import
-# pylint: disable=unused-wildcard-import
-
-from .generated.action import *  # noqa: F403
-try:
-    from .manual.action import *  # noqa: F403
-except ImportError:
-    pass
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=wildcard-import
+# pylint: disable=unused-wildcard-import
+
+from .generated.action import *  # noqa: F403
+try:
+    from .manual.action import *  # noqa: F403
+except ImportError:
+    pass
diff --git a/src/kusto/azext_kusto/azext_metadata.json b/src/kusto/azext_kusto/azext_metadata.json
index 7b56fb1e11a..4f48fa652a5 100644
--- a/src/kusto/azext_kusto/azext_metadata.json
+++ b/src/kusto/azext_kusto/azext_metadata.json
@@ -1,4 +1,4 @@
-{
-    "azext.isExperimental": true,
-    "azext.minCliCoreVersion": "2.3.1"
+{
+    "azext.isExperimental": true,
+    "azext.minCliCoreVersion": "2.11.0"
 }
\ No newline at end of file
diff --git a/src/kusto/azext_kusto/custom.py b/src/kusto/azext_kusto/custom.py
index 7f31674ce96..dbe9d5f9742 100644
--- a/src/kusto/azext_kusto/custom.py
+++ b/src/kusto/azext_kusto/custom.py
@@ -1,17 +1,17 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-# pylint: disable=wildcard-import
-# pylint: disable=unused-wildcard-import
-
-from .generated.custom import *  # noqa: F403
-try:
-    from .manual.custom import *  # noqa: F403
-except ImportError:
-    pass
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=wildcard-import
+# pylint: disable=unused-wildcard-import
+
+from .generated.custom import *  # noqa: F403
+try:
+    from .manual.custom import *  # noqa: F403
+except ImportError:
+    pass
diff --git a/src/kusto/azext_kusto/generated/__init__.py b/src/kusto/azext_kusto/generated/__init__.py
index ee0c4f36bd0..c9cfdc73e77 100644
--- a/src/kusto/azext_kusto/generated/__init__.py
+++ b/src/kusto/azext_kusto/generated/__init__.py
@@ -1,12 +1,12 @@
-# coding=utf-8
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-
-__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
diff --git a/src/kusto/azext_kusto/generated/_client_factory.py b/src/kusto/azext_kusto/generated/_client_factory.py
index 96406ce744f..7c129ea935b 100644
--- a/src/kusto/azext_kusto/generated/_client_factory.py
+++ b/src/kusto/azext_kusto/generated/_client_factory.py
@@ -1,39 +1,40 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-
-
-def cf_kusto(cli_ctx, *_):
-    from azure.cli.core.commands.client_factory import get_mgmt_service_client
-    from ..vendored_sdks.kusto import KustoManagementClient
-    return get_mgmt_service_client(cli_ctx, KustoManagementClient)
-
-
-def cf_cluster(cli_ctx, *_):
-    return cf_kusto(cli_ctx).cluster
-
-
-def cf_cluster_principal_assignment(cli_ctx, *_):
-    return cf_kusto(cli_ctx).cluster_principal_assignment
-
-
-def cf_database(cli_ctx, *_):
-    return cf_kusto(cli_ctx).database
-
-
-def cf_database_principal_assignment(cli_ctx, *_):
-    return cf_kusto(cli_ctx).database_principal_assignment
-
-
-def cf_attached_database_configuration(cli_ctx, *_):
-    return cf_kusto(cli_ctx).attached_database_configuration
-
-
-def cf_data_connection(cli_ctx, *_):
-    return cf_kusto(cli_ctx).data_connection
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+
+def cf_kusto_cl(cli_ctx, *_):
+    from azure.cli.core.commands.client_factory import get_mgmt_service_client
+    from ..vendored_sdks.kusto import KustoManagementClient
+    return get_mgmt_service_client(cli_ctx,
+                                   KustoManagementClient)
+
+
+def cf_cluster(cli_ctx, *_):
+    return cf_kusto_cl(cli_ctx).cluster
+
+
+def cf_cluster_principal_assignment(cli_ctx, *_):
+    return cf_kusto_cl(cli_ctx).cluster_principal_assignment
+
+
+def cf_database(cli_ctx, *_):
+    return cf_kusto_cl(cli_ctx).database
+
+
+def cf_database_principal_assignment(cli_ctx, *_):
+    return cf_kusto_cl(cli_ctx).database_principal_assignment
+
+
+def cf_attached_database_configuration(cli_ctx, *_):
+    return cf_kusto_cl(cli_ctx).attached_database_configuration
+
+
+def cf_data_connection(cli_ctx, *_):
+    return cf_kusto_cl(cli_ctx).data_connection
diff --git a/src/kusto/azext_kusto/generated/_help.py b/src/kusto/azext_kusto/generated/_help.py
index d1e784f9643..78099e62b47 100644
--- a/src/kusto/azext_kusto/generated/_help.py
+++ b/src/kusto/azext_kusto/generated/_help.py
@@ -1,758 +1,798 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-# pylint: disable=too-many-lines
-
-from knack.help_files import helps
-
-
-helps['kusto cluster'] = """
-    type: group
-    short-summary: kusto cluster
-"""
-
-helps['kusto cluster list'] = """
-    type: command
-    short-summary: Lists all Kusto clusters within a subscription.
-    examples:
-      - name: KustoClustersListByResourceGroup
-        text: |-
-               az kusto cluster list --resource-group "kustorptest"
-"""
-
-helps['kusto cluster show'] = """
-    type: command
-    short-summary: Gets a Kusto cluster.
-    examples:
-      - name: KustoClustersGet
-        text: |-
-               az kusto cluster show --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster create'] = """
-    type: command
-    short-summary: Create or update a Kusto cluster.
-    parameters:
-      - name: --sku
-        short-summary: The SKU of the cluster.
-        long-summary: |
-            Usage: --sku name=XX capacity=XX tier=XX
-
-            name: Required. SKU name.
-            capacity: The number of instances of the cluster.
-            tier: Required. SKU tier.
-      - name: --trusted-external-tenants
-        short-summary: The cluster's external tenants.
-        long-summary: |
-            Usage: --trusted-external-tenants value=XX
-
-            value: GUID representing an external tenant.
-
-            Multiple actions can be specified by using more than one --trusted-external-tenants argument.
-      - name: --optimized-autoscale
-        short-summary: Optimized auto scale definition.
-        long-summary: |
-            Usage: --optimized-autoscale version=XX is-enabled=XX minimum=XX maximum=XX
-
-            version: Required. The version of the template defined, for instance 1.
-            is-enabled: Required. A boolean value that indicate if the optimized autoscale feature is enabled or not.
-            minimum: Required. Minimum allowed instances count.
-            maximum: Required. Maximum allowed instances count.
-      - name: --virtual-network-configuration
-        short-summary: Virtual network definition.
-        long-summary: |
-            Usage: --virtual-network-configuration subnet-id=XX engine-public-ip-id=XX data-management-public-ip-id=XX
-
-            subnet-id: Required. The subnet resource id.
-            engine-public-ip-id: Required. Engine service's public IP address resource id.
-            data-management-public-ip-id: Required. Data management's service public IP address resource id.
-      - name: --key-vault-properties
-        short-summary: KeyVault properties for the cluster encryption.
-        long-summary: |
-            Usage: --key-vault-properties key-name=XX key-version=XX key-vault-uri=XX
-
-            key-name: Required. The name of the key vault key.
-            key-version: Required. The version of the key vault key.
-            key-vault-uri: Required. The Uri of the key vault.
-    examples:
-      - name: KustoClustersCreateOrUpdate
-        text: |-
-               az kusto cluster create --cluster-name "kustoclusterrptest4" --identity-type "SystemAssigned" --location "westus\
-" --enable-double-encryption false --enable-purge true --enable-streaming-ingest true --sku name="Standard_L8s" capacit\
-y=2 tier="Standard" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster update'] = """
-    type: command
-    short-summary: Update a Kusto cluster.
-    parameters:
-      - name: --sku
-        short-summary: The SKU of the cluster.
-        long-summary: |
-            Usage: --sku name=XX capacity=XX tier=XX
-
-            name: Required. SKU name.
-            capacity: The number of instances of the cluster.
-            tier: Required. SKU tier.
-      - name: --trusted-external-tenants
-        short-summary: The cluster's external tenants.
-        long-summary: |
-            Usage: --trusted-external-tenants value=XX
-
-            value: GUID representing an external tenant.
-
-            Multiple actions can be specified by using more than one --trusted-external-tenants argument.
-      - name: --optimized-autoscale
-        short-summary: Optimized auto scale definition.
-        long-summary: |
-            Usage: --optimized-autoscale version=XX is-enabled=XX minimum=XX maximum=XX
-
-            version: Required. The version of the template defined, for instance 1.
-            is-enabled: Required. A boolean value that indicate if the optimized autoscale feature is enabled or not.
-            minimum: Required. Minimum allowed instances count.
-            maximum: Required. Maximum allowed instances count.
-      - name: --virtual-network-configuration
-        short-summary: Virtual network definition.
-        long-summary: |
-            Usage: --virtual-network-configuration subnet-id=XX engine-public-ip-id=XX data-management-public-ip-id=XX
-
-            subnet-id: Required. The subnet resource id.
-            engine-public-ip-id: Required. Engine service's public IP address resource id.
-            data-management-public-ip-id: Required. Data management's service public IP address resource id.
-      - name: --key-vault-properties
-        short-summary: KeyVault properties for the cluster encryption.
-        long-summary: |
-            Usage: --key-vault-properties key-name=XX key-version=XX key-vault-uri=XX
-
-            key-name: Required. The name of the key vault key.
-            key-version: Required. The version of the key vault key.
-            key-vault-uri: Required. The Uri of the key vault.
-    examples:
-      - name: KustoClustersUpdate
-        text: |-
-               az kusto cluster update --cluster-name "kustoclusterrptest4" --identity-type "SystemAssigned" --location "westus\
-" --enable-purge true --enable-streaming-ingest true --key-vault-properties key-name="keyName" key-vault-uri="https://d\
-ummy.keyvault.com" key-version="keyVersion" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster delete'] = """
-    type: command
-    short-summary: Deletes a Kusto cluster.
-    examples:
-      - name: KustoClustersDelete
-        text: |-
-               az kusto cluster delete --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster add-language-extension'] = """
-    type: command
-    short-summary: Add a list of language extensions that can run within KQL queries.
-    parameters:
-      - name: --value
-        short-summary: The list of language extensions.
-        long-summary: |
-            Usage: --value language-extension-name=XX
-
-            language-extension-name: The language extension name.
-
-            Multiple actions can be specified by using more than one --value argument.
-    examples:
-      - name: KustoClusterAddLanguageExtensions
-        text: |-
-               az kusto cluster add-language-extension --cluster-name "kustoclusterrptest4" --value language-extension-name="PY\
-THON" --value language-extension-name="R" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster detach-follower-database'] = """
-    type: command
-    short-summary: Detaches all followers of a database owned by this cluster.
-    examples:
-      - name: KustoClusterDetachFollowerDatabases
-        text: |-
-               az kusto cluster detach-follower-database --cluster-name "kustoclusterrptest4" --attached-database-configuration\
--name "myAttachedDatabaseConfiguration" --cluster-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/reso\
-urceGroups/kustorptest/providers/Microsoft.Kusto/clusters/leader4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster diagnose-virtual-network'] = """
-    type: command
-    short-summary: Diagnoses network connectivity status for external resources on which the service is dependent on.
-    examples:
-      - name: KustoClusterDiagnoseVirtualNetwork
-        text: |-
-               az kusto cluster diagnose-virtual-network --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster list-follower-database'] = """
-    type: command
-    short-summary: Returns a list of databases that are owned by this cluster and were followed by another cluster.
-    examples:
-      - name: KustoClusterListFollowerDatabases
-        text: |-
-               az kusto cluster list-follower-database --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster list-language-extension'] = """
-    type: command
-    short-summary: Returns a list of language extensions that can run within KQL queries.
-    examples:
-      - name: KustoClusterListLanguageExtensions
-        text: |-
-               az kusto cluster list-language-extension --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster list-sku'] = """
-    type: command
-    short-summary: Lists eligible SKUs for Kusto resource provider.
-    examples:
-      - name: KustoClustersListResourceSkus
-        text: |-
-               az kusto cluster list-sku --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster remove-language-extension'] = """
-    type: command
-    short-summary: Remove a list of language extensions that can run within KQL queries.
-    parameters:
-      - name: --value
-        short-summary: The list of language extensions.
-        long-summary: |
-            Usage: --value language-extension-name=XX
-
-            language-extension-name: The language extension name.
-
-            Multiple actions can be specified by using more than one --value argument.
-    examples:
-      - name: KustoClusterRemoveLanguageExtensions
-        text: |-
-               az kusto cluster remove-language-extension --cluster-name "kustoclusterrptest4" --value language-extension-name=\
-"PYTHON" --value language-extension-name="R" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster start'] = """
-    type: command
-    short-summary: Starts a Kusto cluster.
-    examples:
-      - name: KustoClustersStart
-        text: |-
-               az kusto cluster start --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster stop'] = """
-    type: command
-    short-summary: Stops a Kusto cluster.
-    examples:
-      - name: KustoClustersStop
-        text: |-
-               az kusto cluster stop --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster wait'] = """
-    type: command
-    short-summary: Place the CLI in a waiting state until a condition of the kusto cluster is met.
-    examples:
-      - name: Pause executing next line of CLI script until the kusto cluster is successfully created.
-        text: |-
-               az kusto cluster wait --cluster-name "kustoclusterrptest4" --resource-group "kustorptest" --created
-      - name: Pause executing next line of CLI script until the kusto cluster is successfully updated.
-        text: |-
-               az kusto cluster wait --cluster-name "kustoclusterrptest4" --resource-group "kustorptest" --updated
-      - name: Pause executing next line of CLI script until the kusto cluster is successfully deleted.
-        text: |-
-               az kusto cluster wait --cluster-name "kustoclusterrptest4" --resource-group "kustorptest" --deleted
-"""
-
-helps['kusto cluster-principal-assignment'] = """
-    type: group
-    short-summary: kusto cluster-principal-assignment
-"""
-
-helps['kusto cluster-principal-assignment list'] = """
-    type: command
-    short-summary: Lists all Kusto cluster principalAssignments.
-    examples:
-      - name: KustoPrincipalAssignmentsList
-        text: |-
-               az kusto cluster-principal-assignment list --cluster-name "kustoclusterrptest4" --resource-group "kustor\
-ptest"
-"""
-
-helps['kusto cluster-principal-assignment show'] = """
-    type: command
-    short-summary: Gets a Kusto cluster principalAssignment.
-    examples:
-      - name: KustoClusterPrincipalAssignmentsGet
-        text: |-
-               az kusto cluster-principal-assignment show --cluster-name "kustoclusterrptest4" --principal-assignment-n\
-ame "kustoprincipal1" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster-principal-assignment create'] = """
-    type: command
-    short-summary: Create a Kusto cluster principalAssignment.
-    examples:
-      - name: KustoClusterPrincipalAssignmentsCreateOrUpdate
-        text: |-
-               az kusto cluster-principal-assignment create --cluster-name "kustoclusterrptest4" --principal-id "876543\
-21-1234-1234-1234-123456789123" --principal-type "App" --role "AllDatabasesAdmin" --tenant-id "12345678-1234-1234-1234-\
-123456789123" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster-principal-assignment update'] = """
-    type: command
-    short-summary: Create a Kusto cluster principalAssignment.
-    examples:
-      - name: KustoClusterPrincipalAssignmentsCreateOrUpdate
-        text: |-
-               az kusto cluster-principal-assignment update --cluster-name "kustoclusterrptest4" --principal-id "876543\
-21-1234-1234-1234-123456789123" --principal-type "App" --role "AllDatabasesAdmin" --tenant-id "12345678-1234-1234-1234-\
-123456789123" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster-principal-assignment delete'] = """
-    type: command
-    short-summary: Deletes a Kusto cluster principalAssignment.
-    examples:
-      - name: KustoClusterPrincipalAssignmentsDelete
-        text: |-
-               az kusto cluster-principal-assignment delete --cluster-name "kustoclusterrptest4" --principal-assignment\
--name "kustoprincipal1" --resource-group "kustorptest"
-"""
-
-helps['kusto cluster-principal-assignment wait'] = """
-    type: command
-    short-summary: Place the CLI in a waiting state until a condition of the kusto cluster-principal-assignment is met.
-    examples:
-      - name: Pause executing next line of CLI script until the kusto cluster-principal-assignment is successfully crea\
-ted.
-        text: |-
-               az kusto cluster-principal-assignment wait --cluster-name "kustoclusterrptest4" --principal-assignment-n\
-ame "kustoprincipal1" --resource-group "kustorptest" --created
-      - name: Pause executing next line of CLI script until the kusto cluster-principal-assignment is successfully dele\
-ted.
-        text: |-
-               az kusto cluster-principal-assignment wait --cluster-name "kustoclusterrptest4" --principal-assignment-n\
-ame "kustoprincipal1" --resource-group "kustorptest" --deleted
-"""
-
-helps['kusto database'] = """
-    type: group
-    short-summary: kusto database
-"""
-
-helps['kusto database list'] = """
-    type: command
-    short-summary: Returns the list of databases of the given Kusto cluster.
-    examples:
-      - name: KustoDatabasesListByCluster
-        text: |-
-               az kusto database list --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto database show'] = """
-    type: command
-    short-summary: Returns a database.
-    examples:
-      - name: KustoDatabasesGet
-        text: |-
-               az kusto database show --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --resource-\
-group "kustorptest"
-"""
-
-helps['kusto database create'] = """
-    type: command
-    short-summary: Creates or updates a database.
-    examples:
-      - name: KustoDatabasesCreateOrUpdate
-        text: |-
-               az kusto database create --cluster-name "KustoClusterRPTest4" --database-name "KustoDatabase8" --read-wr\
-ite-database location="westus" soft-delete-period="P1D" --resource-group "kustorptest"
-"""
-
-helps['kusto database update'] = """
-    type: command
-    short-summary: Updates a database.
-    examples:
-      - name: KustoDatabasesUpdate
-        text: |-
-               az kusto database update --cluster-name "KustoClusterRPTest4" --database-name "KustoDatabase8" --read-wr\
-ite-database soft-delete-period="P1D" --resource-group "kustorptest"
-"""
-
-helps['kusto database delete'] = """
-    type: command
-    short-summary: Deletes the database with the given name.
-    examples:
-      - name: KustoDatabasesDelete
-        text: |-
-               az kusto database delete --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --resourc\
-e-group "kustorptest"
-"""
-
-helps['kusto database add-principal'] = """
-    type: command
-    short-summary: Add Database principals permissions.
-    parameters:
-      - name: --value
-        short-summary: The list of Kusto database principals.
-        long-summary: |
-            Usage: --value role=XX name=XX type=XX fqn=XX email=XX app-id=XX
-
-            role: Required. Database principal role.
-            name: Required. Database principal name.
-            type: Required. Database principal type.
-            fqn: Database principal fully qualified name.
-            email: Database principal email if exists.
-            app-id: Application id - relevant only for application principal type.
-
-            Multiple actions can be specified by using more than one --value argument.
-    examples:
-      - name: KustoDatabaseAddPrincipals
-        text: |-
-               az kusto database add-principal --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --\
-value name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser=some_guid" role="Admin" --value na\
-me="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup=some_guid" role="Viewer" --value name="Some\
-App" type="App" app-id="some_guid_app_id" email="" fqn="aadapp=some_guid_app_id" role="Admin" --resource-group "kustorp\
-test"
-"""
-
-helps['kusto database list-principal'] = """
-    type: command
-    short-summary: Returns a list of database principals of the given Kusto cluster and database.
-    examples:
-      - name: KustoDatabaseListPrincipals
-        text: |-
-               az kusto database list-principal --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" -\
--resource-group "kustorptest"
-"""
-
-helps['kusto database remove-principal'] = """
-    type: command
-    short-summary: Remove Database principals permissions.
-    parameters:
-      - name: --value
-        short-summary: The list of Kusto database principals.
-        long-summary: |
-            Usage: --value role=XX name=XX type=XX fqn=XX email=XX app-id=XX
-
-            role: Required. Database principal role.
-            name: Required. Database principal name.
-            type: Required. Database principal type.
-            fqn: Database principal fully qualified name.
-            email: Database principal email if exists.
-            app-id: Application id - relevant only for application principal type.
-
-            Multiple actions can be specified by using more than one --value argument.
-    examples:
-      - name: KustoDatabaseRemovePrincipals
-        text: |-
-               az kusto database remove-principal --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8"\
- --value name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser=some_guid" role="Admin" --value\
- name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup=some_guid" role="Viewer" --value name="S\
-omeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp=some_guid_app_id" role="Admin" --resource-group "kust\
-orptest"
-"""
-
-helps['kusto database wait'] = """
-    type: command
-    short-summary: Place the CLI in a waiting state until a condition of the kusto database is met.
-    examples:
-      - name: Pause executing next line of CLI script until the kusto database is successfully created.
-        text: |-
-               az kusto database wait --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --resource-\
-group "kustorptest" --created
-      - name: Pause executing next line of CLI script until the kusto database is successfully updated.
-        text: |-
-               az kusto database wait --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --resource-\
-group "kustorptest" --updated
-      - name: Pause executing next line of CLI script until the kusto database is successfully deleted.
-        text: |-
-               az kusto database wait --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --resource-\
-group "kustorptest" --deleted
-"""
-
-helps['kusto database-principal-assignment'] = """
-    type: group
-    short-summary: kusto database-principal-assignment
-"""
-
-helps['kusto database-principal-assignment list'] = """
-    type: command
-    short-summary: Lists all Kusto cluster database principalAssignments.
-    examples:
-      - name: KustoPrincipalAssignmentsList
-        text: |-
-               az kusto database-principal-assignment list --cluster-name "kustoclusterrptest4" --database-name "Kustod\
-atabase8" --resource-group "kustorptest"
-"""
-
-helps['kusto database-principal-assignment show'] = """
-    type: command
-    short-summary: Gets a Kusto cluster database principalAssignment.
-    examples:
-      - name: KustoDatabasePrincipalAssignmentsGet
-        text: |-
-               az kusto database-principal-assignment show --cluster-name "kustoclusterrptest4" --database-name "Kustod\
-atabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
-"""
-
-helps['kusto database-principal-assignment create'] = """
-    type: command
-    short-summary: Creates a Kusto cluster database principalAssignment.
-    examples:
-      - name: KustoDatabasePrincipalAssignmentsCreateOrUpdate
-        text: |-
-               az kusto database-principal-assignment create --cluster-name "kustoclusterrptest4" --database-name "Kust\
-odatabase8" --principal-id "87654321-1234-1234-1234-123456789123" --principal-type "App" --role "Admin" --tenant-id "12\
-345678-1234-1234-1234-123456789123" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
-"""
-
-helps['kusto database-principal-assignment update'] = """
-    type: command
-    short-summary: Creates a Kusto cluster database principalAssignment.
-    examples:
-      - name: KustoDatabasePrincipalAssignmentsCreateOrUpdate
-        text: |-
-               az kusto database-principal-assignment update --cluster-name "kustoclusterrptest4" --database-name "Kust\
-odatabase8" --principal-id "87654321-1234-1234-1234-123456789123" --principal-type "App" --role "Admin" --tenant-id "12\
-345678-1234-1234-1234-123456789123" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
-"""
-
-helps['kusto database-principal-assignment delete'] = """
-    type: command
-    short-summary: Deletes a Kusto principalAssignment.
-    examples:
-      - name: KustoDatabasePrincipalAssignmentsDelete
-        text: |-
-               az kusto database-principal-assignment delete --cluster-name "kustoclusterrptest4" --database-name "Kust\
-odatabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
-"""
-
-helps['kusto database-principal-assignment wait'] = """
-    type: command
-    short-summary: Place the CLI in a waiting state until a condition of the kusto database-principal-assignment is met\
-.
-    examples:
-      - name: Pause executing next line of CLI script until the kusto database-principal-assignment is successfully cre\
-ated.
-        text: |-
-               az kusto database-principal-assignment wait --cluster-name "kustoclusterrptest4" --database-name "Kustod\
-atabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest" --created
-      - name: Pause executing next line of CLI script until the kusto database-principal-assignment is successfully del\
-eted.
-        text: |-
-               az kusto database-principal-assignment wait --cluster-name "kustoclusterrptest4" --database-name "Kustod\
-atabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest" --deleted
-"""
-
-helps['kusto attached-database-configuration'] = """
-    type: group
-    short-summary: kusto attached-database-configuration
-"""
-
-helps['kusto attached-database-configuration list'] = """
-    type: command
-    short-summary: Returns the list of attached database configurations of the given Kusto cluster.
-    examples:
-      - name: KustoAttachedDatabaseConfigurationsListByCluster
-        text: |-
-               az kusto attached-database-configuration list --cluster-name "kustoclusterrptest4" --resource-group "kus\
-torptest"
-"""
-
-helps['kusto attached-database-configuration show'] = """
-    type: command
-    short-summary: Returns an attached database configuration.
-    examples:
-      - name: AttachedDatabaseConfigurationsGet
-        text: |-
-               az kusto attached-database-configuration show --attached-database-configuration-name "attachedDatabaseConfigurations1" --cluster-name "k\
-ustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto attached-database-configuration create'] = """
-    type: command
-    short-summary: Creates or updates an attached database configuration.
-    examples:
-      - name: AttachedDatabaseConfigurationsCreateOrUpdate
-        text: |-
-               az kusto attached-database-configuration create --attached-database-configuration-name "attachedDatabaseConfigurations1" --cluster-name \
-"kustoclusterrptest4" --location "westus" --cluster-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/re\
-sourceGroups/kustorptest/providers/Microsoft.Kusto/Clusters/KustoClusterLeader" --database-name "kustodatabase" --defau\
-lt-principals-modification-kind "Union" --resource-group "kustorptest"
-"""
-
-helps['kusto attached-database-configuration update'] = """
-    type: command
-    short-summary: Creates or updates an attached database configuration.
-    examples:
-      - name: AttachedDatabaseConfigurationsCreateOrUpdate
-        text: |-
-               az kusto attached-database-configuration update --attached-database-configuration-name "attachedDatabaseConfigurations1" --cluster-name \
-"kustoclusterrptest4" --location "westus" --cluster-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/re\
-sourceGroups/kustorptest/providers/Microsoft.Kusto/Clusters/KustoClusterLeader" --database-name "kustodatabase" --defau\
-lt-principals-modification-kind "Union" --resource-group "kustorptest"
-"""
-
-helps['kusto attached-database-configuration delete'] = """
-    type: command
-    short-summary: Deletes the attached database configuration with the given name.
-    examples:
-      - name: AttachedDatabaseConfigurationsDelete
-        text: |-
-               az kusto attached-database-configuration delete --attached-database-configuration-name "attachedDatabaseConfigurations1" --cluster-name \
-"kustoclusterrptest4" --resource-group "kustorptest"
-"""
-
-helps['kusto attached-database-configuration wait'] = """
-    type: command
-    short-summary: Place the CLI in a waiting state until a condition of the kusto attached-database-configuration is m\
-et.
-    examples:
-      - name: Pause executing next line of CLI script until the kusto attached-database-configuration is successfully c\
-reated.
-        text: |-
-               az kusto attached-database-configuration wait --attached-database-configuration-name "attachedDatabaseConfigurations1" --cluster-name "k\
-ustoclusterrptest4" --resource-group "kustorptest" --created
-      - name: Pause executing next line of CLI script until the kusto attached-database-configuration is successfully d\
-eleted.
-        text: |-
-               az kusto attached-database-configuration wait --attached-database-configuration-name "attachedDatabaseConfigurations1" --cluster-name "k\
-ustoclusterrptest4" --resource-group "kustorptest" --deleted
-"""
-
-helps['kusto data-connection'] = """
-    type: group
-    short-summary: kusto data-connection
-"""
-
-helps['kusto data-connection list'] = """
-    type: command
-    short-summary: Returns the list of data connections of the given Kusto database.
-    examples:
-      - name: KustoDatabasesListByCluster
-        text: |-
-               az kusto data-connection list --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --re\
-source-group "kustorptest"
-"""
-
-helps['kusto data-connection show'] = """
-    type: command
-    short-summary: Returns a data connection.
-    examples:
-      - name: KustoDataConnectionsGet
-        text: |-
-               az kusto data-connection show --cluster-name "kustoclusterrptest4" --data-connection-name "DataConnections8" --database-\
-name "KustoDatabase8" --resource-group "kustorptest"
-"""
-
-helps['kusto data-connection event-grid'] = """
-    type: group
-    short-summary: kusto data-connection sub group event-grid
-"""
-
-helps['kusto data-connection event-grid create'] = """
-    type: command
-    short-summary: Creates or updates a data connection.
-"""
-
-helps['kusto data-connection event-hub'] = """
-    type: group
-    short-summary: kusto data-connection sub group event-hub
-"""
-
-helps['kusto data-connection event-hub create'] = """
-    type: command
-    short-summary: Creates or updates a data connection.
-    examples:
-      - name: KustoDataConnectionsCreateOrUpdate
-        text: |-
-               az kusto data-connection event-hub create --cluster-name "kustoclusterrptest4" --data-connection-name "DataConnections8"\
- --database-name "KustoDatabase8" --location "westus" --consumer-group "testConsumerGroup1" --event-hub-resource-id "/s\
-ubscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Microsoft.EventHub/namespaces/ev\
-enthubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
-"""
-
-helps['kusto data-connection iot-hub'] = """
-    type: group
-    short-summary: kusto data-connection sub group iot-hub
-"""
-
-helps['kusto data-connection iot-hub create'] = """
-    type: command
-    short-summary: Creates or updates a data connection.
-"""
-
-helps['kusto data-connection event-grid update'] = """
-    type: command
-    short-summary: Updates a data connection.
-"""
-
-helps['kusto data-connection event-hub update'] = """
-    type: command
-    short-summary: Updates a data connection.
-    examples:
-      - name: KustoDataConnectionsUpdate
-        text: |-
-               az kusto data-connection event-hub update --cluster-name "kustoclusterrptest4" --data-connection-name "DataConnections8"\
- --database-name "KustoDatabase8" --location "westus" --consumer-group "testConsumerGroup1" --event-hub-resource-id "/s\
-ubscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Microsoft.EventHub/namespaces/ev\
-enthubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
-"""
-
-helps['kusto data-connection iot-hub update'] = """
-    type: command
-    short-summary: Updates a data connection.
-"""
-
-helps['kusto data-connection delete'] = """
-    type: command
-    short-summary: Deletes the data connection with the given name.
-    examples:
-      - name: KustoDataConnectionsDelete
-        text: |-
-               az kusto data-connection delete --cluster-name "kustoclusterrptest4" --data-connection-name "kustoeventhubconnection1" -\
--database-name "KustoDatabase8" --resource-group "kustorptest"
-"""
-
-helps['kusto data-connection event-grid data-connection-validation'] = """
-    type: command
-    short-summary: Checks that the data connection parameters are valid.
-"""
-
-helps['kusto data-connection event-hub data-connection-validation'] = """
-    type: command
-    short-summary: Checks that the data connection parameters are valid.
-    examples:
-      - name: KustoDataConnectionValidation
-        text: |-
-               az kusto data-connection event-hub data-connection-validation --cluster-name "kustoclusterrptest4" --dat\
-abase-name "KustoDatabase8" --data-connection-name "DataConnections8" --consumer-group "testConsumerGroup1" --event-hub-resource-id "/s\
-ubscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Microsoft.EventHub/namespaces/ev\
-enthubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
-"""
-
-helps['kusto data-connection iot-hub data-connection-validation'] = """
-    type: command
-    short-summary: Checks that the data connection parameters are valid.
-"""
-
-helps['kusto data-connection wait'] = """
-    type: command
-    short-summary: Place the CLI in a waiting state until a condition of the kusto data-connection is met.
-    examples:
-      - name: Pause executing next line of CLI script until the kusto data-connection is successfully created.
-        text: |-
-               az kusto data-connection wait --cluster-name "kustoclusterrptest4" --data-connection-name "DataConnections8" --database-\
-name "KustoDatabase8" --resource-group "kustorptest" --created
-      - name: Pause executing next line of CLI script until the kusto data-connection is successfully deleted.
-        text: |-
-               az kusto data-connection wait --cluster-name "kustoclusterrptest4" --data-connection-name "DataConnections8" --database-\
-name "KustoDatabase8" --resource-group "kustorptest" --deleted
-"""
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-lines
+
+from knack.help_files import helps
+
+
+helps['kusto cluster'] = """
+    type: group
+    short-summary: kusto cluster
+"""
+
+helps['kusto cluster list'] = """
+    type: command
+    short-summary: "Lists all Kusto clusters within a subscription."
+    examples:
+      - name: KustoClustersListByResourceGroup
+        text: |-
+               az kusto cluster list --resource-group "kustorptest"
+"""
+
+helps['kusto cluster show'] = """
+    type: command
+    short-summary: "Gets a Kusto cluster."
+    examples:
+      - name: KustoClustersGet
+        text: |-
+               az kusto cluster show --name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster create'] = """
+    type: command
+    short-summary: "Create or update a Kusto cluster."
+    parameters:
+      - name: --sku
+        short-summary: "The SKU of the cluster."
+        long-summary: |
+            Usage: --sku name=XX capacity=XX tier=XX
+
+            name: Required. SKU name.
+            capacity: The number of instances of the cluster.
+            tier: Required. SKU tier.
+      - name: --trusted-external-tenants
+        short-summary: "The cluster's external tenants."
+        long-summary: |
+            Usage: --trusted-external-tenants value=XX
+
+            value: GUID representing an external tenant.
+
+            Multiple actions can be specified by using more than one --trusted-external-tenants argument.
+      - name: --optimized-autoscale
+        short-summary: "Optimized auto scale definition."
+        long-summary: |
+            Usage: --optimized-autoscale version=XX is-enabled=XX minimum=XX maximum=XX
+
+            version: Required. The version of the template defined, for instance 1.
+            is-enabled: Required. A boolean value that indicate if the optimized autoscale feature is enabled or not.
+            minimum: Required. Minimum allowed instances count.
+            maximum: Required. Maximum allowed instances count.
+      - name: --virtual-network-configuration
+        short-summary: "Virtual network definition."
+        long-summary: |
+            Usage: --virtual-network-configuration subnet-id=XX engine-public-ip-id=XX data-management-public-ip-id=XX
+
+            subnet-id: Required. The subnet resource id.
+            engine-public-ip-id: Required. Engine service's public IP address resource id.
+            data-management-public-ip-id: Required. Data management's service public IP address resource id.
+      - name: --key-vault-properties
+        short-summary: "KeyVault properties for the cluster encryption."
+        long-summary: |
+            Usage: --key-vault-properties key-name=XX key-version=XX key-vault-uri=XX user-identity=XX
+
+            key-name: Required. The name of the key vault key.
+            key-version: The version of the key vault key.
+            key-vault-uri: Required. The Uri of the key vault.
+            user-identity: The user assigned identity (ARM resource id) that has access to the key.
+    examples:
+      - name: KustoClustersCreateOrUpdate
+        text: |-
+               az kusto cluster create --name "kustoclusterrptest4" --identity-type "SystemAssigned" --location \
+"westus" --enable-double-encryption false --enable-purge true --enable-streaming-ingest true --sku name="Standard_L8s" \
+capacity=2 tier="Standard" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster update'] = """
+    type: command
+    short-summary: "Update a Kusto cluster."
+    parameters:
+      - name: --sku
+        short-summary: "The SKU of the cluster."
+        long-summary: |
+            Usage: --sku name=XX capacity=XX tier=XX
+
+            name: Required. SKU name.
+            capacity: The number of instances of the cluster.
+            tier: Required. SKU tier.
+      - name: --trusted-external-tenants
+        short-summary: "The cluster's external tenants."
+        long-summary: |
+            Usage: --trusted-external-tenants value=XX
+
+            value: GUID representing an external tenant.
+
+            Multiple actions can be specified by using more than one --trusted-external-tenants argument.
+      - name: --optimized-autoscale
+        short-summary: "Optimized auto scale definition."
+        long-summary: |
+            Usage: --optimized-autoscale version=XX is-enabled=XX minimum=XX maximum=XX
+
+            version: Required. The version of the template defined, for instance 1.
+            is-enabled: Required. A boolean value that indicate if the optimized autoscale feature is enabled or not.
+            minimum: Required. Minimum allowed instances count.
+            maximum: Required. Maximum allowed instances count.
+      - name: --virtual-network-configuration
+        short-summary: "Virtual network definition."
+        long-summary: |
+            Usage: --virtual-network-configuration subnet-id=XX engine-public-ip-id=XX data-management-public-ip-id=XX
+
+            subnet-id: Required. The subnet resource id.
+            engine-public-ip-id: Required. Engine service's public IP address resource id.
+            data-management-public-ip-id: Required. Data management's service public IP address resource id.
+      - name: --key-vault-properties
+        short-summary: "KeyVault properties for the cluster encryption."
+        long-summary: |
+            Usage: --key-vault-properties key-name=XX key-version=XX key-vault-uri=XX user-identity=XX
+
+            key-name: Required. The name of the key vault key.
+            key-version: The version of the key vault key.
+            key-vault-uri: Required. The Uri of the key vault.
+            user-identity: The user assigned identity (ARM resource id) that has access to the key.
+    examples:
+      - name: KustoClustersUpdate
+        text: |-
+               az kusto cluster update --name "kustoclusterrptest4" --identity-type "SystemAssigned" --location \
+"westus" --enable-purge true --enable-streaming-ingest true --engine-type "V2" --key-vault-properties \
+key-name="keyName" key-vault-uri="https://dummy.keyvault.com" key-version="keyVersion" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster delete'] = """
+    type: command
+    short-summary: "Deletes a Kusto cluster."
+    examples:
+      - name: KustoClustersDelete
+        text: |-
+               az kusto cluster delete --name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster add-language-extension'] = """
+    type: command
+    short-summary: "Add a list of language extensions that can run within KQL queries."
+    parameters:
+      - name: --value
+        short-summary: "The list of language extensions."
+        long-summary: |
+            Usage: --value language-extension-name=XX
+
+            language-extension-name: The language extension name.
+
+            Multiple actions can be specified by using more than one --value argument.
+    examples:
+      - name: KustoClusterAddLanguageExtensions
+        text: |-
+               az kusto cluster add-language-extension --name "kustoclusterrptest4" --value \
+language-extension-name="PYTHON" --value language-extension-name="R" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster detach-follower-database'] = """
+    type: command
+    short-summary: "Detaches all followers of a database owned by this cluster."
+    examples:
+      - name: KustoClusterDetachFollowerDatabases
+        text: |-
+               az kusto cluster detach-follower-database --name "kustoclusterrptest4" --attached-database-configuration\
+-name "myAttachedDatabaseConfiguration" --cluster-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/reso\
+urceGroups/kustorptest/providers/Microsoft.Kusto/clusters/leader4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster diagnose-virtual-network'] = """
+    type: command
+    short-summary: "Diagnoses network connectivity status for external resources on which the service is dependent \
+on."
+    examples:
+      - name: KustoClusterDiagnoseVirtualNetwork
+        text: |-
+               az kusto cluster diagnose-virtual-network --name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster list-follower-database'] = """
+    type: command
+    short-summary: "Returns a list of databases that are owned by this cluster and were followed by another cluster."
+    examples:
+      - name: KustoClusterListFollowerDatabases
+        text: |-
+               az kusto cluster list-follower-database --name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster list-language-extension'] = """
+    type: command
+    short-summary: "Returns a list of language extensions that can run within KQL queries."
+    examples:
+      - name: KustoClusterListLanguageExtensions
+        text: |-
+               az kusto cluster list-language-extension --name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster list-sku'] = """
+    type: command
+    short-summary: "Lists eligible SKUs for Kusto resource provider."
+    examples:
+      - name: KustoClustersListResourceSkus
+        text: |-
+               az kusto cluster list-sku --name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster remove-language-extension'] = """
+    type: command
+    short-summary: "Remove a list of language extensions that can run within KQL queries."
+    parameters:
+      - name: --value
+        short-summary: "The list of language extensions."
+        long-summary: |
+            Usage: --value language-extension-name=XX
+
+            language-extension-name: The language extension name.
+
+            Multiple actions can be specified by using more than one --value argument.
+    examples:
+      - name: KustoClusterRemoveLanguageExtensions
+        text: |-
+               az kusto cluster remove-language-extension --name "kustoclusterrptest4" --value \
+language-extension-name="PYTHON" --value language-extension-name="R" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster start'] = """
+    type: command
+    short-summary: "Starts a Kusto cluster."
+    examples:
+      - name: KustoClustersStart
+        text: |-
+               az kusto cluster start --name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster stop'] = """
+    type: command
+    short-summary: "Stops a Kusto cluster."
+    examples:
+      - name: KustoClustersStop
+        text: |-
+               az kusto cluster stop --name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster wait'] = """
+    type: command
+    short-summary: Place the CLI in a waiting state until a condition of the kusto cluster is met.
+    examples:
+      - name: Pause executing next line of CLI script until the kusto cluster is successfully created.
+        text: |-
+               az kusto cluster wait --name "kustoclusterrptest4" --resource-group "kustorptest" --created
+      - name: Pause executing next line of CLI script until the kusto cluster is successfully updated.
+        text: |-
+               az kusto cluster wait --name "kustoclusterrptest4" --resource-group "kustorptest" --updated
+      - name: Pause executing next line of CLI script until the kusto cluster is successfully deleted.
+        text: |-
+               az kusto cluster wait --name "kustoclusterrptest4" --resource-group "kustorptest" --deleted
+"""
+
+helps['kusto cluster-principal-assignment'] = """
+    type: group
+    short-summary: kusto cluster-principal-assignment
+"""
+
+helps['kusto cluster-principal-assignment list'] = """
+    type: command
+    short-summary: "Lists all Kusto cluster principalAssignments."
+    examples:
+      - name: KustoPrincipalAssignmentsList
+        text: |-
+               az kusto cluster-principal-assignment list --cluster-name "kustoclusterrptest4" --resource-group \
+"kustorptest"
+"""
+
+helps['kusto cluster-principal-assignment show'] = """
+    type: command
+    short-summary: "Gets a Kusto cluster principalAssignment."
+    examples:
+      - name: KustoClusterPrincipalAssignmentsGet
+        text: |-
+               az kusto cluster-principal-assignment show --cluster-name "kustoclusterrptest4" \
+--principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster-principal-assignment create'] = """
+    type: command
+    short-summary: "Create a Kusto cluster principalAssignment."
+    examples:
+      - name: KustoClusterPrincipalAssignmentsCreateOrUpdate
+        text: |-
+               az kusto cluster-principal-assignment create --cluster-name "kustoclusterrptest4" --principal-id \
+"87654321-1234-1234-1234-123456789123" --principal-type "App" --role "AllDatabasesAdmin" --tenant-id \
+"12345678-1234-1234-1234-123456789123" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster-principal-assignment update'] = """
+    type: command
+    short-summary: "Create a Kusto cluster principalAssignment."
+"""
+
+helps['kusto cluster-principal-assignment delete'] = """
+    type: command
+    short-summary: "Deletes a Kusto cluster principalAssignment."
+    examples:
+      - name: KustoClusterPrincipalAssignmentsDelete
+        text: |-
+               az kusto cluster-principal-assignment delete --cluster-name "kustoclusterrptest4" \
+--principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+"""
+
+helps['kusto cluster-principal-assignment wait'] = """
+    type: command
+    short-summary: Place the CLI in a waiting state until a condition of the kusto cluster-principal-assignment is \
+met.
+    examples:
+      - name: Pause executing next line of CLI script until the kusto cluster-principal-assignment is successfully \
+created.
+        text: |-
+               az kusto cluster-principal-assignment wait --cluster-name "kustoclusterrptest4" \
+--principal-assignment-name "kustoprincipal1" --resource-group "kustorptest" --created
+      - name: Pause executing next line of CLI script until the kusto cluster-principal-assignment is successfully \
+updated.
+        text: |-
+               az kusto cluster-principal-assignment wait --cluster-name "kustoclusterrptest4" \
+--principal-assignment-name "kustoprincipal1" --resource-group "kustorptest" --updated
+      - name: Pause executing next line of CLI script until the kusto cluster-principal-assignment is successfully \
+deleted.
+        text: |-
+               az kusto cluster-principal-assignment wait --cluster-name "kustoclusterrptest4" \
+--principal-assignment-name "kustoprincipal1" --resource-group "kustorptest" --deleted
+"""
+
+helps['kusto database'] = """
+    type: group
+    short-summary: kusto database
+"""
+
+helps['kusto database list'] = """
+    type: command
+    short-summary: "Returns the list of databases of the given Kusto cluster."
+    examples:
+      - name: KustoDatabasesListByCluster
+        text: |-
+               az kusto database list --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto database show'] = """
+    type: command
+    short-summary: "Returns a database."
+    examples:
+      - name: KustoDatabasesGet
+        text: |-
+               az kusto database show --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--resource-group "kustorptest"
+"""
+
+helps['kusto database create'] = """
+    type: command
+    short-summary: "Creates or updates a database."
+    parameters:
+      - name: --read-write-database
+        short-summary: "Class representing a read write database."
+        long-summary: |
+            Usage: --read-write-database soft-delete-period=XX hot-cache-period=XX location=XX kind=XX
+
+            soft-delete-period: The time the data should be kept before it stops being accessible to queries in \
+TimeSpan.
+            hot-cache-period: The time the data should be kept in cache for fast queries in TimeSpan.
+            location: Resource location.
+            kind: Required. Kind of the database
+      - name: --read-only-following-database
+        short-summary: "Class representing a read only following database."
+        long-summary: |
+            Usage: --read-only-following-database hot-cache-period=XX location=XX kind=XX
+
+            hot-cache-period: The time the data should be kept in cache for fast queries in TimeSpan.
+            location: Resource location.
+            kind: Required. Kind of the database
+    examples:
+      - name: KustoDatabasesCreateOrUpdate
+        text: |-
+               az kusto database create --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--parameters "{\\"location\\":\\"westus\\",\\"properties\\":{\\"softDeletePeriod\\":\\"P1D\\"}}" --resource-group \
+"kustorptest"
+"""
+
+helps['kusto database update'] = """
+    type: command
+    short-summary: "Updates a database."
+    parameters:
+      - name: --read-write-database
+        short-summary: "Class representing a read write database."
+        long-summary: |
+            Usage: --read-write-database soft-delete-period=XX hot-cache-period=XX location=XX kind=XX
+
+            soft-delete-period: The time the data should be kept before it stops being accessible to queries in \
+TimeSpan.
+            hot-cache-period: The time the data should be kept in cache for fast queries in TimeSpan.
+            location: Resource location.
+            kind: Required. Kind of the database
+      - name: --read-only-following-database
+        short-summary: "Class representing a read only following database."
+        long-summary: |
+            Usage: --read-only-following-database hot-cache-period=XX location=XX kind=XX
+
+            hot-cache-period: The time the data should be kept in cache for fast queries in TimeSpan.
+            location: Resource location.
+            kind: Required. Kind of the database
+    examples:
+      - name: KustoDatabasesUpdate
+        text: |-
+               az kusto database update --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--parameters "{\\"properties\\":{\\"softDeletePeriod\\":\\"P1D\\"}}" --resource-group "kustorptest"
+"""
+
+helps['kusto database delete'] = """
+    type: command
+    short-summary: "Deletes the database with the given name."
+    examples:
+      - name: KustoDatabasesDelete
+        text: |-
+               az kusto database delete --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--resource-group "kustorptest"
+"""
+
+helps['kusto database add-principal'] = """
+    type: command
+    short-summary: "Add Database principals permissions."
+    parameters:
+      - name: --value
+        short-summary: "The list of Kusto database principals."
+        long-summary: |
+            Usage: --value role=XX name=XX type=XX fqn=XX email=XX app-id=XX
+
+            role: Required. Database principal role.
+            name: Required. Database principal name.
+            type: Required. Database principal type.
+            fqn: Database principal fully qualified name.
+            email: Database principal email if exists.
+            app-id: Application id - relevant only for application principal type.
+
+            Multiple actions can be specified by using more than one --value argument.
+    examples:
+      - name: KustoDatabaseAddPrincipals
+        text: |-
+               az kusto database add-principal --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--value name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser=some_guid" role="Admin" --value \
+name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup=some_guid" role="Viewer" --value \
+name="SomeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp=some_guid_app_id" role="Admin" \
+--resource-group "kustorptest"
+"""
+
+helps['kusto database list-principal'] = """
+    type: command
+    short-summary: "Returns a list of database principals of the given Kusto cluster and database."
+    examples:
+      - name: KustoDatabaseListPrincipals
+        text: |-
+               az kusto database list-principal --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--resource-group "kustorptest"
+"""
+
+helps['kusto database remove-principal'] = """
+    type: command
+    short-summary: "Remove Database principals permissions."
+    parameters:
+      - name: --value
+        short-summary: "The list of Kusto database principals."
+        long-summary: |
+            Usage: --value role=XX name=XX type=XX fqn=XX email=XX app-id=XX
+
+            role: Required. Database principal role.
+            name: Required. Database principal name.
+            type: Required. Database principal type.
+            fqn: Database principal fully qualified name.
+            email: Database principal email if exists.
+            app-id: Application id - relevant only for application principal type.
+
+            Multiple actions can be specified by using more than one --value argument.
+    examples:
+      - name: KustoDatabaseRemovePrincipals
+        text: |-
+               az kusto database remove-principal --cluster-name "kustoclusterrptest4" --database-name \
+"KustoDatabase8" --value name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser=some_guid" \
+role="Admin" --value name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup=some_guid" \
+role="Viewer" --value name="SomeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp=some_guid_app_id" \
+role="Admin" --resource-group "kustorptest"
+"""
+
+helps['kusto database wait'] = """
+    type: command
+    short-summary: Place the CLI in a waiting state until a condition of the kusto database is met.
+    examples:
+      - name: Pause executing next line of CLI script until the kusto database is successfully created.
+        text: |-
+               az kusto database wait --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--resource-group "kustorptest" --created
+      - name: Pause executing next line of CLI script until the kusto database is successfully updated.
+        text: |-
+               az kusto database wait --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--resource-group "kustorptest" --updated
+      - name: Pause executing next line of CLI script until the kusto database is successfully deleted.
+        text: |-
+               az kusto database wait --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--resource-group "kustorptest" --deleted
+"""
+
+helps['kusto database-principal-assignment'] = """
+    type: group
+    short-summary: kusto database-principal-assignment
+"""
+
+helps['kusto database-principal-assignment list'] = """
+    type: command
+    short-summary: "Lists all Kusto cluster database principalAssignments."
+    examples:
+      - name: KustoPrincipalAssignmentsList
+        text: |-
+               az kusto database-principal-assignment list --cluster-name "kustoclusterrptest4" --database-name \
+"Kustodatabase8" --resource-group "kustorptest"
+"""
+
+helps['kusto database-principal-assignment show'] = """
+    type: command
+    short-summary: "Gets a Kusto cluster database principalAssignment."
+    examples:
+      - name: KustoDatabasePrincipalAssignmentsGet
+        text: |-
+               az kusto database-principal-assignment show --cluster-name "kustoclusterrptest4" --database-name \
+"Kustodatabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+"""
+
+helps['kusto database-principal-assignment create'] = """
+    type: command
+    short-summary: "Creates a Kusto cluster database principalAssignment."
+    examples:
+      - name: KustoDatabasePrincipalAssignmentsCreateOrUpdate
+        text: |-
+               az kusto database-principal-assignment create --cluster-name "kustoclusterrptest4" --database-name \
+"Kustodatabase8" --principal-id "87654321-1234-1234-1234-123456789123" --principal-type "App" --role "Admin" \
+--tenant-id "12345678-1234-1234-1234-123456789123" --principal-assignment-name "kustoprincipal1" --resource-group \
+"kustorptest"
+"""
+
+helps['kusto database-principal-assignment update'] = """
+    type: command
+    short-summary: "Creates a Kusto cluster database principalAssignment."
+"""
+
+helps['kusto database-principal-assignment delete'] = """
+    type: command
+    short-summary: "Deletes a Kusto principalAssignment."
+    examples:
+      - name: KustoDatabasePrincipalAssignmentsDelete
+        text: |-
+               az kusto database-principal-assignment delete --cluster-name "kustoclusterrptest4" --database-name \
+"Kustodatabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+"""
+
+helps['kusto database-principal-assignment wait'] = """
+    type: command
+    short-summary: Place the CLI in a waiting state until a condition of the kusto database-principal-assignment is \
+met.
+    examples:
+      - name: Pause executing next line of CLI script until the kusto database-principal-assignment is successfully \
+created.
+        text: |-
+               az kusto database-principal-assignment wait --cluster-name "kustoclusterrptest4" --database-name \
+"Kustodatabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest" --created
+      - name: Pause executing next line of CLI script until the kusto database-principal-assignment is successfully \
+updated.
+        text: |-
+               az kusto database-principal-assignment wait --cluster-name "kustoclusterrptest4" --database-name \
+"Kustodatabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest" --updated
+      - name: Pause executing next line of CLI script until the kusto database-principal-assignment is successfully \
+deleted.
+        text: |-
+               az kusto database-principal-assignment wait --cluster-name "kustoclusterrptest4" --database-name \
+"Kustodatabase8" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest" --deleted
+"""
+
+helps['kusto attached-database-configuration'] = """
+    type: group
+    short-summary: kusto attached-database-configuration
+"""
+
+helps['kusto attached-database-configuration list'] = """
+    type: command
+    short-summary: "Returns the list of attached database configurations of the given Kusto cluster."
+    examples:
+      - name: KustoAttachedDatabaseConfigurationsListByCluster
+        text: |-
+               az kusto attached-database-configuration list --cluster-name "kustoclusterrptest4" --resource-group \
+"kustorptest"
+"""
+
+helps['kusto attached-database-configuration show'] = """
+    type: command
+    short-summary: "Returns an attached database configuration."
+    examples:
+      - name: AttachedDatabaseConfigurationsGet
+        text: |-
+               az kusto attached-database-configuration show --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto attached-database-configuration create'] = """
+    type: command
+    short-summary: "Creates or updates an attached database configuration."
+    examples:
+      - name: AttachedDatabaseConfigurationsCreateOrUpdate
+        text: |-
+               az kusto attached-database-configuration create --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --location "westus" --cluster-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/re\
+sourceGroups/kustorptest/providers/Microsoft.Kusto/Clusters/KustoClusterLeader" --database-name "kustodatabase" \
+--default-principals-modification-kind "Union" --resource-group "kustorptest"
+"""
+
+helps['kusto attached-database-configuration update'] = """
+    type: command
+    short-summary: "Creates or updates an attached database configuration."
+"""
+
+helps['kusto attached-database-configuration delete'] = """
+    type: command
+    short-summary: "Deletes the attached database configuration with the given name."
+    examples:
+      - name: AttachedDatabaseConfigurationsDelete
+        text: |-
+               az kusto attached-database-configuration delete --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --resource-group "kustorptest"
+"""
+
+helps['kusto attached-database-configuration wait'] = """
+    type: command
+    short-summary: Place the CLI in a waiting state until a condition of the kusto attached-database-configuration is \
+met.
+    examples:
+      - name: Pause executing next line of CLI script until the kusto attached-database-configuration is successfully \
+created.
+        text: |-
+               az kusto attached-database-configuration wait --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --resource-group "kustorptest" --created
+      - name: Pause executing next line of CLI script until the kusto attached-database-configuration is successfully \
+updated.
+        text: |-
+               az kusto attached-database-configuration wait --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --resource-group "kustorptest" --updated
+      - name: Pause executing next line of CLI script until the kusto attached-database-configuration is successfully \
+deleted.
+        text: |-
+               az kusto attached-database-configuration wait --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --resource-group "kustorptest" --deleted
+"""
+
+helps['kusto data-connection'] = """
+    type: group
+    short-summary: kusto data-connection
+"""
+
+helps['kusto data-connection list'] = """
+    type: command
+    short-summary: "Returns the list of data connections of the given Kusto database."
+    examples:
+      - name: KustoDatabasesListByCluster
+        text: |-
+               az kusto data-connection list --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--resource-group "kustorptest"
+"""
+
+helps['kusto data-connection show'] = """
+    type: command
+    short-summary: "Returns a data connection."
+    examples:
+      - name: KustoDataConnectionsGet
+        text: |-
+               az kusto data-connection show --cluster-name "kustoclusterrptest4" --name "DataConnections8" \
+--database-name "KustoDatabase8" --resource-group "kustorptest"
+"""
+
+helps['kusto data-connection event-grid'] = """
+    type: group
+    short-summary: kusto data-connection sub group event-grid
+"""
+
+helps['kusto data-connection event-grid create'] = """
+    type: command
+    short-summary: "Creates or updates a data connection."
+"""
+
+helps['kusto data-connection event-hub'] = """
+    type: group
+    short-summary: kusto data-connection sub group event-hub
+"""
+
+helps['kusto data-connection event-hub create'] = """
+    type: command
+    short-summary: "Creates or updates a data connection."
+    examples:
+      - name: KustoDataConnectionsCreateOrUpdate
+        text: |-
+               az kusto data-connection event-hub create --cluster-name "kustoclusterrptest4" --name \
+"DataConnections8" --database-name "KustoDatabase8" --location "westus" --consumer-group "testConsumerGroup1" \
+--event-hub-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Micro\
+soft.EventHub/namespaces/eventhubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
+"""
+
+helps['kusto data-connection iot-hub'] = """
+    type: group
+    short-summary: kusto data-connection sub group iot-hub
+"""
+
+helps['kusto data-connection iot-hub create'] = """
+    type: command
+    short-summary: "Creates or updates a data connection."
+"""
+
+helps['kusto data-connection event-grid update'] = """
+    type: command
+    short-summary: "Updates a data connection."
+"""
+
+helps['kusto data-connection event-hub update'] = """
+    type: command
+    short-summary: "Updates a data connection."
+    examples:
+      - name: KustoDataConnectionsUpdate
+        text: |-
+               az kusto data-connection event-hub update --cluster-name "kustoclusterrptest4" --name \
+"DataConnections8" --database-name "KustoDatabase8" --location "westus" --consumer-group "testConsumerGroup1" \
+--event-hub-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Micro\
+soft.EventHub/namespaces/eventhubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
+"""
+
+helps['kusto data-connection iot-hub update'] = """
+    type: command
+    short-summary: "Updates a data connection."
+"""
+
+helps['kusto data-connection delete'] = """
+    type: command
+    short-summary: "Deletes the data connection with the given name."
+    examples:
+      - name: KustoDataConnectionsDelete
+        text: |-
+               az kusto data-connection delete --cluster-name "kustoclusterrptest4" --name "kustoeventhubconnection1" \
+--database-name "KustoDatabase8" --resource-group "kustorptest"
+"""
+
+helps['kusto data-connection event-grid data-connection-validation'] = """
+    type: command
+    short-summary: "Checks that the data connection parameters are valid."
+"""
+
+helps['kusto data-connection event-hub data-connection-validation'] = """
+    type: command
+    short-summary: "Checks that the data connection parameters are valid."
+    examples:
+      - name: KustoDataConnectionValidation
+        text: |-
+               az kusto data-connection event-hub data-connection-validation --cluster-name "kustoclusterrptest4" \
+--database-name "KustoDatabase8" --name "DataConnections8" --consumer-group "testConsumerGroup1" \
+--event-hub-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Micro\
+soft.EventHub/namespaces/eventhubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
+"""
+
+helps['kusto data-connection iot-hub data-connection-validation'] = """
+    type: command
+    short-summary: "Checks that the data connection parameters are valid."
+"""
+
+helps['kusto data-connection wait'] = """
+    type: command
+    short-summary: Place the CLI in a waiting state until a condition of the kusto data-connection is met.
+    examples:
+      - name: Pause executing next line of CLI script until the kusto data-connection is successfully created.
+        text: |-
+               az kusto data-connection wait --cluster-name "kustoclusterrptest4" --name "DataConnections8" \
+--database-name "KustoDatabase8" --resource-group "kustorptest" --created
+      - name: Pause executing next line of CLI script until the kusto data-connection is successfully deleted.
+        text: |-
+               az kusto data-connection wait --cluster-name "kustoclusterrptest4" --name "DataConnections8" \
+--database-name "KustoDatabase8" --resource-group "kustorptest" --deleted
+"""
diff --git a/src/kusto/azext_kusto/generated/_params.py b/src/kusto/azext_kusto/generated/_params.py
index 3b70e5a28ad..e192ea90056 100644
--- a/src/kusto/azext_kusto/generated/_params.py
+++ b/src/kusto/azext_kusto/generated/_params.py
@@ -1,573 +1,643 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-# pylint: disable=too-many-lines
-# pylint: disable=too-many-statements
-
-from knack.arguments import CLIArgumentType
-from azure.cli.core.commands.parameters import (
-    tags_type,
-    get_three_state_flag,
-    get_enum_type,
-    resource_group_name_type,
-    get_location_type
-)
-from azure.cli.core.commands.validators import get_default_location_from_resource_group
-from azext_kusto.action import (
-    AddSku,
-    AddTrustedExternalTenants,
-    AddOptimizedAutoscale,
-    AddVirtualNetworkConfiguration,
-    AddKeyVaultProperties,
-    AddClustersValue,
-    AddReadWriteDatabase,
-    AddReadOnlyFollowingDatabase,
-    AddDatabasesValue
-)
-
-
-def load_arguments(self, _):
-
-    with self.argument_context('kusto cluster list') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-
-    with self.argument_context('kusto cluster show') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-
-    with self.argument_context('kusto cluster create') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('tags', tags_type)
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('sku', action=AddSku, nargs='+', help='The SKU of the cluster.')
-        c.argument('zones', nargs='+', help='The availability zones of the cluster.')
-        c.argument('trusted_external_tenants', action=AddTrustedExternalTenants, nargs='+', help='The cluster\'s extern'
-                   'al tenants.')
-        c.argument('optimized_autoscale', action=AddOptimizedAutoscale, nargs='+', help='Optimized auto scale definitio'
-                   'n.')
-        c.argument('enable_disk_encryption', arg_type=get_three_state_flag(), help='A boolean value that indicates if t'
-                   'he cluster\'s disks are encrypted.')
-        c.argument('enable_streaming_ingest', arg_type=get_three_state_flag(), help='A boolean value that indicates if '
-                   'the streaming ingest is enabled.')
-        c.argument('virtual_network_configuration', action=AddVirtualNetworkConfiguration, nargs='+', help='Virtual net'
-                   'work definition.')
-        c.argument('key_vault_properties', action=AddKeyVaultProperties, nargs='+', help='KeyVault properties for the c'
-                   'luster encryption.')
-        c.argument('enable_purge', arg_type=get_three_state_flag(), help='A boolean value that indicates if the purge o'
-                   'perations are enabled.')
-        c.argument('enable_double_encryption', arg_type=get_three_state_flag(), help='A boolean value that indicates if'
-                   ' double encryption is enabled.')
-        c.argument('identity_type', arg_type=get_enum_type(['None', 'SystemAssigned']), help='The identity type.')
-        c.argument('identity_user_assigned_identities', arg_type=CLIArgumentType(options_list=['--identity-user-assigne''d-identities'], help='The list of user identities associated with the Kusto cluster. The user ident''ity dictionary key references will be ARM resource ids in the form: \'/subscriptions/{subscriptionI''d}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{i''dentityName}\'. Expected value: json-string/@json-file.'))
-
-    with self.argument_context('kusto cluster update') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-        c.argument('tags', tags_type)
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('sku', action=AddSku, nargs='+', help='The SKU of the cluster.')
-        c.argument('trusted_external_tenants', action=AddTrustedExternalTenants, nargs='+', help='The cluster\'s extern'
-                   'al tenants.')
-        c.argument('optimized_autoscale', action=AddOptimizedAutoscale, nargs='+', help='Optimized auto scale definitio'
-                   'n.')
-        c.argument('enable_disk_encryption', arg_type=get_three_state_flag(), help='A boolean value that indicates if t'
-                   'he cluster\'s disks are encrypted.')
-        c.argument('enable_streaming_ingest', arg_type=get_three_state_flag(), help='A boolean value that indicates if '
-                   'the streaming ingest is enabled.')
-        c.argument('virtual_network_configuration', action=AddVirtualNetworkConfiguration, nargs='+', help='Virtual net'
-                   'work definition.')
-        c.argument('key_vault_properties', action=AddKeyVaultProperties, nargs='+', help='KeyVault properties for the c'
-                   'luster encryption.')
-        c.argument('enable_purge', arg_type=get_three_state_flag(), help='A boolean value that indicates if the purge o'
-                   'perations are enabled.')
-        c.argument('enable_double_encryption', arg_type=get_three_state_flag(), help='A boolean value that indicates if'
-                   ' double encryption is enabled.')
-        c.argument('identity_type', arg_type=get_enum_type(['None', 'SystemAssigned']), help='The identity type.')
-        c.argument('identity_user_assigned_identities', arg_type=CLIArgumentType(options_list=['--identity-user-assigne''d-identities'], help='The list of user identities associated with the Kusto cluster. The user ident''ity dictionary key references will be ARM resource ids in the form: \'/subscriptions/{subscriptionI''d}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{i''dentityName}\'. Expected value: json-string/@json-file.'))
-
-    with self.argument_context('kusto cluster delete') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-
-    with self.argument_context('kusto cluster add-language-extension') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-        c.argument('value', action=AddClustersValue, nargs='+', help='The list of language extensions.')
-
-    with self.argument_context('kusto cluster detach-follower-database') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-        c.argument('cluster_resource_id', help='Resource id of the cluster that follows a database owned by this cluste'
-                   'r.')
-        c.argument('attached_database_configuration_name', help='Resource name of the attached database configuration i'
-                   'n the follower cluster.')
-
-    with self.argument_context('kusto cluster diagnose-virtual-network') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-
-    with self.argument_context('kusto cluster list-follower-database') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-
-    with self.argument_context('kusto cluster list-language-extension') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-
-    with self.argument_context('kusto cluster list-sku') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-
-    with self.argument_context('kusto cluster remove-language-extension') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-        c.argument('value', action=AddClustersValue, nargs='+', help='The list of language extensions.')
-
-    with self.argument_context('kusto cluster start') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-
-    with self.argument_context('kusto cluster stop') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-
-    with self.argument_context('kusto cluster wait') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.',
-                   id_part='name')
-
-    with self.argument_context('kusto cluster-principal-assignment list') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-
-    with self.argument_context('kusto cluster-principal-assignment show') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.', id_part='child_name_'
-                   '1')
-
-    with self.argument_context('kusto cluster-principal-assignment create') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.')
-        c.argument('principal_id', help='The principal ID assigned to the cluster principal. It can be a user email, ap'
-                   'plication ID, or security group name.')
-        c.argument('role', arg_type=get_enum_type(['AllDatabasesAdmin', 'AllDatabasesViewer']), help='Cluster principal'
-                   ' role.')
-        c.argument('tenant_id', help='The tenant id of the principal')
-        c.argument('principal_type', arg_type=get_enum_type(['App', 'Group', 'User']), help='Principal type.')
-
-    with self.argument_context('kusto cluster-principal-assignment update') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.', id_part='child_name_'
-                   '1')
-        c.argument('principal_id', help='The principal ID assigned to the cluster principal. It can be a user email, ap'
-                   'plication ID, or security group name.')
-        c.argument('role', arg_type=get_enum_type(['AllDatabasesAdmin', 'AllDatabasesViewer']), help='Cluster principal'
-                   ' role.')
-        c.argument('tenant_id', help='The tenant id of the principal')
-        c.argument('principal_type', arg_type=get_enum_type(['App', 'Group', 'User']), help='Principal type.')
-
-    with self.argument_context('kusto cluster-principal-assignment delete') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.', id_part='child_name_'
-                   '1')
-
-    with self.argument_context('kusto cluster-principal-assignment wait') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.', id_part='child_name_'
-                   '1')
-
-    with self.argument_context('kusto database list') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-
-    with self.argument_context('kusto database show') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-
-    with self.argument_context('kusto database create') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.')
-        c.argument('read_write_database', action=AddReadWriteDatabase, nargs='+', help='Class representing a read write'
-                   ' database.', arg_group='Parameters')
-        c.argument('read_only_following_database', action=AddReadOnlyFollowingDatabase, nargs='+', help='Class represen'
-                   'ting a read only following database.', arg_group='Parameters')
-
-    with self.argument_context('kusto database update') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('read_write_database', action=AddReadWriteDatabase, nargs='+', help='Class representing a read write'
-                   ' database.', arg_group='Parameters')
-        c.argument('read_only_following_database', action=AddReadOnlyFollowingDatabase, nargs='+', help='Class represen'
-                   'ting a read only following database.', arg_group='Parameters')
-
-    with self.argument_context('kusto database delete') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-
-    with self.argument_context('kusto database add-principal') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('value', action=AddDatabasesValue, nargs='+', help='The list of Kusto database principals.')
-
-    with self.argument_context('kusto database list-principal') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.')
-
-    with self.argument_context('kusto database remove-principal') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('value', action=AddDatabasesValue, nargs='+', help='The list of Kusto database principals.')
-
-    with self.argument_context('kusto database wait') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-
-    with self.argument_context('kusto database-principal-assignment list') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.')
-
-    with self.argument_context('kusto database-principal-assignment show') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.', id_part='child_name_'
-                   '2')
-
-    with self.argument_context('kusto database-principal-assignment create') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.')
-        c.argument('principal_id', help='The principal ID assigned to the database principal. It can be a user email, a'
-                   'pplication ID, or security group name.')
-        c.argument('role', arg_type=get_enum_type(['Admin', 'Ingestor', 'Monitor', 'User', 'UnrestrictedViewers', 'View'
-                   'er']), help='Database principal role.')
-        c.argument('tenant_id', help='The tenant id of the principal')
-        c.argument('principal_type', arg_type=get_enum_type(['App', 'Group', 'User']), help='Principal type.')
-
-    with self.argument_context('kusto database-principal-assignment update') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.', id_part='child_name_'
-                   '2')
-        c.argument('principal_id', help='The principal ID assigned to the database principal. It can be a user email, a'
-                   'pplication ID, or security group name.')
-        c.argument('role', arg_type=get_enum_type(['Admin', 'Ingestor', 'Monitor', 'User', 'UnrestrictedViewers', 'View'
-                   'er']), help='Database principal role.')
-        c.argument('tenant_id', help='The tenant id of the principal')
-        c.argument('principal_type', arg_type=get_enum_type(['App', 'Group', 'User']), help='Principal type.')
-
-    with self.argument_context('kusto database-principal-assignment delete') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.', id_part='child_name_'
-                   '2')
-
-    with self.argument_context('kusto database-principal-assignment wait') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('principal_assignment_name', help='The name of the Kusto principalAssignment.', id_part='child_name_'
-                   '2')
-
-    with self.argument_context('kusto attached-database-configuration list') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-
-    with self.argument_context('kusto attached-database-configuration show') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('attached_database_configuration_name', help='The name of the attache'
-                   'd database configuration.', id_part='child_name_1')
-
-    with self.argument_context('kusto attached-database-configuration create') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('attached_database_configuration_name', help='The name of the attache'
-                   'd database configuration.')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('database_name', help='The name of the database which you would like to attach, use * if you want to'
-                   ' follow all current and future databases.')
-        c.argument('cluster_resource_id', help='The resource id of the cluster where the databases you would like to at'
-                   'tach reside.')
-        c.argument('default_principals_modification_kind', arg_type=get_enum_type(['Union', 'Replace', 'None']), help='The default principals modification kind')
-
-    with self.argument_context('kusto attached-database-configuration update') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('attached_database_configuration_name', help='The name of the attached database configuration.')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('database_name', help='The name of the database which you would like to attach, use * if you want to'
-                   ' follow all current and future databases.')
-        c.argument('cluster_resource_id', help='The resource id of the cluster where the databases you would like to at'
-                   'tach reside.')
-        c.argument('default_principals_modification_kind', arg_type=get_enum_type(['Union', 'Replace', 'None']), help='The default principals modification kind')
-
-    with self.argument_context('kusto attached-database-configuration delete') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('attached_database_configuration_name', help='The name of the attache'
-                   'd database configuration.', id_part='child_name_1')
-
-    with self.argument_context('kusto attached-database-configuration wait') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('attached_database_configuration_name', help='The name of the attache'
-                   'd database configuration.', id_part='child_name_1')
-
-    with self.argument_context('kusto data-connection list') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.')
-
-    with self.argument_context('kusto data-connection show') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.',
-                   id_part='child_name_2')
-
-    with self.argument_context('kusto data-connection event-grid create') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.')
-        c.argument('data_connection_name', help='The name of the data connection.')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('storage_account_resource_id',
-                   help='The resource ID of the storage account where the data resides.')
-        c.argument('event_hub_resource_id', help='The resource ID where the event grid is configured to send events.')
-        c.argument('consumer_group', help='The event hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('ignore_first_record', arg_type=get_three_state_flag(), help='A Boolean value that, if set to true, '
-                   'indicates that ingestion should ignore the first record of every file')
-        c.argument('blob_storage_event_type', arg_type=get_enum_type(['Microsoft.Storage.BlobCreated', 'Microsoft.Stora'
-                   'ge.BlobRenamed']), help='The name of blob storage event type to process.')
-
-    with self.argument_context('kusto data-connection event-hub create') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.')
-        c.argument('data_connection_name', help='The name of the data connection.')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('event_hub_resource_id', help='The resource ID of the event hub to be used to create a data connecti'
-                   'on.')
-        c.argument('consumer_group', help='The event hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('event_system_properties', nargs='+', help='System properties of the event hub')
-        c.argument('compression', arg_type=get_enum_type(['None', 'GZip']), help='The event hub messages compression ty'
-                   'pe')
-
-    with self.argument_context('kusto data-connection iot-hub create') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.')
-        c.argument('data_connection_name', help='The name of the data connection.')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('iot_hub_resource_id',
-                   help='The resource ID of the Iot hub to be used to create a data connection.')
-        c.argument('consumer_group', help='The iot hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('event_system_properties', nargs='+', help='System properties of the iot hub')
-        c.argument('shared_access_policy_name', help='The name of the share access policy')
-
-    with self.argument_context('kusto data-connection event-grid update') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.',
-                   id_part='child_name_2')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('storage_account_resource_id',
-                   help='The resource ID of the storage account where the data resides.')
-        c.argument('event_hub_resource_id', help='The resource ID where the event grid is configured to send events.')
-        c.argument('consumer_group', help='The event hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('ignore_first_record', arg_type=get_three_state_flag(), help='A Boolean value that, if set to true, '
-                   'indicates that ingestion should ignore the first record of every file')
-        c.argument('blob_storage_event_type', arg_type=get_enum_type(['Microsoft.Storage.BlobCreated', 'Microsoft.Stora'
-                   'ge.BlobRenamed']), help='The name of blob storage event type to process.')
-
-    with self.argument_context('kusto data-connection event-hub update') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.',
-                   id_part='child_name_2')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('event_hub_resource_id', help='The resource ID of the event hub to be used to create a data connecti'
-                   'on.')
-        c.argument('consumer_group', help='The event hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('event_system_properties', nargs='+', help='System properties of the event hub')
-        c.argument('compression', arg_type=get_enum_type(['None', 'GZip']), help='The event hub messages compression ty'
-                   'pe')
-
-    with self.argument_context('kusto data-connection iot-hub update') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.',
-                   id_part='child_name_2')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('iot_hub_resource_id',
-                   help='The resource ID of the Iot hub to be used to create a data connection.')
-        c.argument('consumer_group', help='The iot hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('event_system_properties', nargs='+', help='System properties of the iot hub')
-        c.argument('shared_access_policy_name', help='The name of the share access policy')
-
-    with self.argument_context('kusto data-connection delete') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.',
-                   id_part='child_name_2')
-
-    with self.argument_context('kusto data-connection event-grid data-connection-validation') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('storage_account_resource_id',
-                   help='The resource ID of the storage account where the data resides.')
-        c.argument('event_hub_resource_id', help='The resource ID where the event grid is configured to send events.')
-        c.argument('consumer_group', help='The event hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('ignore_first_record', arg_type=get_three_state_flag(), help='A Boolean value that, if set to true, '
-                   'indicates that ingestion should ignore the first record of every file')
-        c.argument('blob_storage_event_type', arg_type=get_enum_type(['Microsoft.Storage.BlobCreated', 'Microsoft.Stora'
-                   'ge.BlobRenamed']), help='The name of blob storage event type to process.')
-
-    with self.argument_context('kusto data-connection event-hub data-connection-validation') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('event_hub_resource_id', help='The resource ID of the event hub to be used to create a data connecti'
-                   'on.')
-        c.argument('consumer_group', help='The event hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('event_system_properties', nargs='+', help='System properties of the event hub')
-        c.argument('compression', arg_type=get_enum_type(['None', 'GZip']), help='The event hub messages compression ty'
-                   'pe')
-
-    with self.argument_context('kusto data-connection iot-hub data-connection-validation') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.')
-        c.argument('location', arg_type=get_location_type(self.cli_ctx),
-                   validator=get_default_location_from_resource_group)
-        c.argument('iot_hub_resource_id',
-                   help='The resource ID of the Iot hub to be used to create a data connection.')
-        c.argument('consumer_group', help='The iot hub consumer group.')
-        c.argument('table_name', help='The table where the data should be ingested. Optionally the table information ca'
-                   'n be added to each message.')
-        c.argument('mapping_rule_name', help='The mapping rule to be used to ingest the data. Optionally the mapping in'
-                   'formation can be added to each message.')
-        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', 'T'
-                   'XT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC', 'APACHEAVRO', 'W3CLOGFILE']), help='The'
-                   ' data format of the message. Optionally the data format can be added to each message.')
-        c.argument('event_system_properties', nargs='+', help='System properties of the iot hub')
-        c.argument('shared_access_policy_name', help='The name of the share access policy')
-
-    with self.argument_context('kusto data-connection wait') as c:
-        c.argument('resource_group_name', resource_group_name_type)
-        c.argument('cluster_name', help='The name of the Kusto cluster.', id_part='name')
-        c.argument('database_name', help='The name of the database in the Kusto cluster.', id_part='child_name_1')
-        c.argument('data_connection_name', help='The name of the data connection.',
-                   id_part='child_name_2')
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-lines
+# pylint: disable=too-many-statements
+
+from azure.cli.core.commands.parameters import (
+    tags_type,
+    get_three_state_flag,
+    get_enum_type,
+    resource_group_name_type,
+    get_location_type
+)
+from azure.cli.core.commands.validators import (
+    get_default_location_from_resource_group,
+    validate_file_or_dict
+)
+from azext_kusto.action import (
+    AddSku,
+    AddTrustedExternalTenants,
+    AddOptimizedAutoscale,
+    AddVirtualNetworkConfiguration,
+    AddKeyVaultProperties,
+    AddClustersValue,
+    AddReadWriteDatabase,
+    AddReadOnlyFollowingDatabase,
+    AddDatabasesValue
+)
+
+
+def load_arguments(self, _):
+
+    with self.argument_context('kusto cluster list') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+
+    with self.argument_context('kusto cluster show') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+
+    with self.argument_context('kusto cluster create') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.')
+        c.argument('tags', tags_type)
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('sku', action=AddSku, nargs='+', help='The SKU of the cluster.')
+        c.argument('zones', nargs='*', help='The availability zones of the cluster.')
+        c.argument('trusted_external_tenants', action=AddTrustedExternalTenants, nargs='*', help='The cluster\'s '
+                   'external tenants.')
+        c.argument('optimized_autoscale', action=AddOptimizedAutoscale, nargs='*', help='Optimized auto scale '
+                   'definition.')
+        c.argument('enable_disk_encryption', arg_type=get_three_state_flag(), help='A boolean value that indicates if '
+                   'the cluster\'s disks are encrypted.')
+        c.argument('enable_streaming_ingest', arg_type=get_three_state_flag(), help='A boolean value that indicates if '
+                   'the streaming ingest is enabled.')
+        c.argument('virtual_network_configuration', action=AddVirtualNetworkConfiguration, nargs='*', help='Virtual '
+                   'network definition.')
+        c.argument('key_vault_properties', action=AddKeyVaultProperties, nargs='*', help='KeyVault properties for the '
+                   'cluster encryption.')
+        c.argument('enable_purge', arg_type=get_three_state_flag(), help='A boolean value that indicates if the purge '
+                   'operations are enabled.')
+        c.argument('enable_double_encryption', arg_type=get_three_state_flag(), help='A boolean value that indicates '
+                   'if double encryption is enabled.')
+        c.argument('engine_type', arg_type=get_enum_type(['V2', 'V3']), help='The engine type')
+        c.argument('identity_type', arg_type=get_enum_type(['None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned, '
+                                                            'UserAssigned']), help='The type of managed identity used. '
+                   'The type \'SystemAssigned, UserAssigned\' includes both an implicitly created identity and a set '
+                   'of user-assigned identities. The type \'None\' will remove all identities.')
+        c.argument('identity_user_assigned_identities', type=validate_file_or_dict, help='The list of user identities '
+                   'associated with the Kusto cluster. The user identity dictionary key references will be ARM '
+                   'resource ids in the form: \'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/prov'
+                   'iders/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}\'. Expected value: '
+                   'json-string/@json-file.')
+
+    with self.argument_context('kusto cluster update') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+        c.argument('tags', tags_type)
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('sku', action=AddSku, nargs='*', help='The SKU of the cluster.')
+        c.argument('trusted_external_tenants', action=AddTrustedExternalTenants, nargs='*', help='The cluster\'s '
+                   'external tenants.')
+        c.argument('optimized_autoscale', action=AddOptimizedAutoscale, nargs='*', help='Optimized auto scale '
+                   'definition.')
+        c.argument('enable_disk_encryption', arg_type=get_three_state_flag(), help='A boolean value that indicates if '
+                   'the cluster\'s disks are encrypted.')
+        c.argument('enable_streaming_ingest', arg_type=get_three_state_flag(), help='A boolean value that indicates if '
+                   'the streaming ingest is enabled.')
+        c.argument('virtual_network_configuration', action=AddVirtualNetworkConfiguration, nargs='*', help='Virtual '
+                   'network definition.')
+        c.argument('key_vault_properties', action=AddKeyVaultProperties, nargs='*', help='KeyVault properties for the '
+                   'cluster encryption.')
+        c.argument('enable_purge', arg_type=get_three_state_flag(), help='A boolean value that indicates if the purge '
+                   'operations are enabled.')
+        c.argument('enable_double_encryption', arg_type=get_three_state_flag(), help='A boolean value that indicates '
+                   'if double encryption is enabled.')
+        c.argument('engine_type', arg_type=get_enum_type(['V2', 'V3']), help='The engine type')
+        c.argument('identity_type', arg_type=get_enum_type(['None', 'SystemAssigned', 'UserAssigned', 'SystemAssigned, '
+                                                            'UserAssigned']), help='The type of managed identity used. '
+                   'The type \'SystemAssigned, UserAssigned\' includes both an implicitly created identity and a set '
+                   'of user-assigned identities. The type \'None\' will remove all identities.')
+        c.argument('identity_user_assigned_identities', type=validate_file_or_dict, help='The list of user identities '
+                   'associated with the Kusto cluster. The user identity dictionary key references will be ARM '
+                   'resource ids in the form: \'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/prov'
+                   'iders/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}\'. Expected value: '
+                   'json-string/@json-file.')
+
+    with self.argument_context('kusto cluster delete') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+
+    with self.argument_context('kusto cluster add-language-extension') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+        c.argument('value', action=AddClustersValue, nargs='*', help='The list of language extensions.')
+
+    with self.argument_context('kusto cluster detach-follower-database') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+        c.argument('cluster_resource_id', type=str, help='Resource id of the cluster that follows a database owned by '
+                   'this cluster.')
+        c.argument('attached_database_configuration_name', type=str, help='Resource name of the attached database '
+                   'configuration in the follower cluster.')
+
+    with self.argument_context('kusto cluster diagnose-virtual-network') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+
+    with self.argument_context('kusto cluster list-follower-database') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.')
+
+    with self.argument_context('kusto cluster list-language-extension') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.')
+
+    with self.argument_context('kusto cluster list-sku') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.')
+
+    with self.argument_context('kusto cluster remove-language-extension') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+        c.argument('value', action=AddClustersValue, nargs='*', help='The list of language extensions.')
+
+    with self.argument_context('kusto cluster start') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+
+    with self.argument_context('kusto cluster stop') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+
+    with self.argument_context('kusto cluster wait') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', options_list=['--name', '-n', '--cluster-name'], type=str, help='The name of the '
+                   'Kusto cluster.', id_part='name')
+
+    with self.argument_context('kusto cluster-principal-assignment list') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+
+    with self.argument_context('kusto cluster-principal-assignment show') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.', id_part=''
+                   'child_name_1')
+
+    with self.argument_context('kusto cluster-principal-assignment create') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.')
+        c.argument('principal_id', type=str, help='The principal ID assigned to the cluster principal. It can be a '
+                   'user email, application ID, or security group name.')
+        c.argument('role', arg_type=get_enum_type(['AllDatabasesAdmin', 'AllDatabasesViewer']), help='Cluster '
+                   'principal role.')
+        c.argument('tenant_id', type=str, help='The tenant id of the principal')
+        c.argument('principal_type', arg_type=get_enum_type(['App', 'Group', 'User']), help='Principal type.')
+
+    with self.argument_context('kusto cluster-principal-assignment update') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.', id_part=''
+                   'child_name_1')
+        c.argument('principal_id', type=str, help='The principal ID assigned to the cluster principal. It can be a '
+                   'user email, application ID, or security group name.')
+        c.argument('role', arg_type=get_enum_type(['AllDatabasesAdmin', 'AllDatabasesViewer']), help='Cluster '
+                   'principal role.')
+        c.argument('tenant_id', type=str, help='The tenant id of the principal')
+        c.argument('principal_type', arg_type=get_enum_type(['App', 'Group', 'User']), help='Principal type.')
+
+    with self.argument_context('kusto cluster-principal-assignment delete') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.', id_part=''
+                   'child_name_1')
+
+    with self.argument_context('kusto cluster-principal-assignment wait') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.', id_part=''
+                   'child_name_1')
+
+    with self.argument_context('kusto database list') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+
+    with self.argument_context('kusto database show') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+
+    with self.argument_context('kusto database create') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.')
+        c.argument('read_write_database', action=AddReadWriteDatabase, nargs='*', help='Class representing a read '
+                   'write database.', arg_group='Parameters')
+        c.argument('read_only_following_database', action=AddReadOnlyFollowingDatabase, nargs='*', help='Class '
+                   'representing a read only following database.', arg_group='Parameters')
+
+    with self.argument_context('kusto database update') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('read_write_database', action=AddReadWriteDatabase, nargs='*', help='Class representing a read '
+                   'write database.', arg_group='Parameters')
+        c.argument('read_only_following_database', action=AddReadOnlyFollowingDatabase, nargs='*', help='Class '
+                   'representing a read only following database.', arg_group='Parameters')
+
+    with self.argument_context('kusto database delete') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+
+    with self.argument_context('kusto database add-principal') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('value', action=AddDatabasesValue, nargs='*', help='The list of Kusto database principals.')
+
+    with self.argument_context('kusto database list-principal') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.')
+
+    with self.argument_context('kusto database remove-principal') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('value', action=AddDatabasesValue, nargs='*', help='The list of Kusto database principals.')
+
+    with self.argument_context('kusto database wait') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+
+    with self.argument_context('kusto database-principal-assignment list') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.')
+
+    with self.argument_context('kusto database-principal-assignment show') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.', id_part=''
+                   'child_name_2')
+
+    with self.argument_context('kusto database-principal-assignment create') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.')
+        c.argument('principal_id', type=str, help='The principal ID assigned to the database principal. It can be a '
+                   'user email, application ID, or security group name.')
+        c.argument('role', arg_type=get_enum_type(['Admin', 'Ingestor', 'Monitor', 'User', 'UnrestrictedViewers', ''
+                                                   'Viewer']), help='Database principal role.')
+        c.argument('tenant_id', type=str, help='The tenant id of the principal')
+        c.argument('principal_type', arg_type=get_enum_type(['App', 'Group', 'User']), help='Principal type.')
+
+    with self.argument_context('kusto database-principal-assignment update') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.', id_part=''
+                   'child_name_2')
+        c.argument('principal_id', type=str, help='The principal ID assigned to the database principal. It can be a '
+                   'user email, application ID, or security group name.')
+        c.argument('role', arg_type=get_enum_type(['Admin', 'Ingestor', 'Monitor', 'User', 'UnrestrictedViewers', ''
+                                                   'Viewer']), help='Database principal role.')
+        c.argument('tenant_id', type=str, help='The tenant id of the principal')
+        c.argument('principal_type', arg_type=get_enum_type(['App', 'Group', 'User']), help='Principal type.')
+
+    with self.argument_context('kusto database-principal-assignment delete') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.', id_part=''
+                   'child_name_2')
+
+    with self.argument_context('kusto database-principal-assignment wait') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('principal_assignment_name', type=str, help='The name of the Kusto principalAssignment.', id_part=''
+                   'child_name_2')
+
+    with self.argument_context('kusto attached-database-configuration list') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+
+    with self.argument_context('kusto attached-database-configuration show') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('attached_database_configuration_name', options_list=['--name', '-n', ''
+                                                                         '--attached-database-configuration-name'],
+                   type=str, help='The name of the attached database configuration.', id_part='child_name_1')
+
+    with self.argument_context('kusto attached-database-configuration create') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('attached_database_configuration_name', options_list=['--name', '-n', ''
+                                                                         '--attached-database-configuration-name'],
+                   type=str, help='The name of the attached database configuration.')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('database_name', type=str, help='The name of the database which you would like to attach, use * if '
+                   'you want to follow all current and future databases.')
+        c.argument('cluster_resource_id', type=str, help='The resource id of the cluster where the databases you would '
+                   'like to attach reside.')
+        c.argument('default_principals_modification_kind', arg_type=get_enum_type(['Union', 'Replace', 'None']), help=''
+                   'The default principals modification kind')
+
+    with self.argument_context('kusto attached-database-configuration update') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('attached_database_configuration_name', options_list=['--name', '-n', ''
+                                                                         '--attached-database-configuration-name'],
+                   type=str, help='The name of the attached database configuration.', id_part='child_name_1')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('database_name', type=str, help='The name of the database which you would like to attach, use * if '
+                   'you want to follow all current and future databases.')
+        c.argument('cluster_resource_id', type=str, help='The resource id of the cluster where the databases you would '
+                   'like to attach reside.')
+        c.argument('default_principals_modification_kind', arg_type=get_enum_type(['Union', 'Replace', 'None']), help=''
+                   'The default principals modification kind')
+
+    with self.argument_context('kusto attached-database-configuration delete') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('attached_database_configuration_name', options_list=['--name', '-n', ''
+                                                                         '--attached-database-configuration-name'],
+                   type=str, help='The name of the attached database configuration.', id_part='child_name_1')
+
+    with self.argument_context('kusto attached-database-configuration wait') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('attached_database_configuration_name', options_list=['--name', '-n', ''
+                                                                         '--attached-database-configuration-name'],
+                   type=str, help='The name of the attached database configuration.', id_part='child_name_1')
+
+    with self.argument_context('kusto data-connection list') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.')
+
+    with self.argument_context('kusto data-connection show') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.', id_part='child_name_2')
+
+    with self.argument_context('kusto data-connection event-grid create') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('storage_account_resource_id', type=str, help='The resource ID of the storage account where the '
+                   'data resides.')
+        c.argument('event_hub_resource_id', type=str, help='The resource ID where the event grid is configured to send '
+                   'events.')
+        c.argument('consumer_group', type=str, help='The event hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('ignore_first_record', arg_type=get_three_state_flag(), help='A Boolean value that, if set to true, '
+                   'indicates that ingestion should ignore the first record of every file')
+        c.argument('blob_storage_event_type', arg_type=get_enum_type(['Microsoft.Storage.BlobCreated', ''
+                                                                      'Microsoft.Storage.BlobRenamed']), help='The '
+                   'name of blob storage event type to process.')
+
+    with self.argument_context('kusto data-connection event-hub create') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('event_hub_resource_id', type=str, help='The resource ID of the event hub to be used to create a '
+                   'data connection.')
+        c.argument('consumer_group', type=str, help='The event hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('event_system_properties', nargs='*', help='System properties of the event hub')
+        c.argument('compression', arg_type=get_enum_type(['None', 'GZip']), help='The event hub messages compression '
+                   'type')
+
+    with self.argument_context('kusto data-connection iot-hub create') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('iot_hub_resource_id', type=str, help='The resource ID of the Iot hub to be used to create a data '
+                   'connection.')
+        c.argument('consumer_group', type=str, help='The iot hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('event_system_properties', nargs='*', help='System properties of the iot hub')
+        c.argument('shared_access_policy_name', type=str, help='The name of the share access policy')
+
+    with self.argument_context('kusto data-connection event-grid update') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.', id_part='child_name_2')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('storage_account_resource_id', type=str, help='The resource ID of the storage account where the '
+                   'data resides.')
+        c.argument('event_hub_resource_id', type=str, help='The resource ID where the event grid is configured to send '
+                   'events.')
+        c.argument('consumer_group', type=str, help='The event hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('ignore_first_record', arg_type=get_three_state_flag(), help='A Boolean value that, if set to true, '
+                   'indicates that ingestion should ignore the first record of every file')
+        c.argument('blob_storage_event_type', arg_type=get_enum_type(['Microsoft.Storage.BlobCreated', ''
+                                                                      'Microsoft.Storage.BlobRenamed']), help='The '
+                   'name of blob storage event type to process.')
+
+    with self.argument_context('kusto data-connection event-hub update') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.', id_part='child_name_2')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('event_hub_resource_id', type=str, help='The resource ID of the event hub to be used to create a '
+                   'data connection.')
+        c.argument('consumer_group', type=str, help='The event hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('event_system_properties', nargs='*', help='System properties of the event hub')
+        c.argument('compression', arg_type=get_enum_type(['None', 'GZip']), help='The event hub messages compression '
+                   'type')
+
+    with self.argument_context('kusto data-connection iot-hub update') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.', id_part='child_name_2')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('iot_hub_resource_id', type=str, help='The resource ID of the Iot hub to be used to create a data '
+                   'connection.')
+        c.argument('consumer_group', type=str, help='The iot hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('event_system_properties', nargs='*', help='System properties of the iot hub')
+        c.argument('shared_access_policy_name', type=str, help='The name of the share access policy')
+
+    with self.argument_context('kusto data-connection delete') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.', id_part='child_name_2')
+
+    with self.argument_context('kusto data-connection event-grid data-connection-validation') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('storage_account_resource_id', type=str, help='The resource ID of the storage account where the '
+                   'data resides.')
+        c.argument('event_hub_resource_id', type=str, help='The resource ID where the event grid is configured to send '
+                   'events.')
+        c.argument('consumer_group', type=str, help='The event hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('ignore_first_record', arg_type=get_three_state_flag(), help='A Boolean value that, if set to true, '
+                   'indicates that ingestion should ignore the first record of every file')
+        c.argument('blob_storage_event_type', arg_type=get_enum_type(['Microsoft.Storage.BlobCreated', ''
+                                                                      'Microsoft.Storage.BlobRenamed']), help='The '
+                   'name of blob storage event type to process.')
+
+    with self.argument_context('kusto data-connection event-hub data-connection-validation') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('event_hub_resource_id', type=str, help='The resource ID of the event hub to be used to create a '
+                   'data connection.')
+        c.argument('consumer_group', type=str, help='The event hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('event_system_properties', nargs='*', help='System properties of the event hub')
+        c.argument('compression', arg_type=get_enum_type(['None', 'GZip']), help='The event hub messages compression '
+                   'type')
+
+    with self.argument_context('kusto data-connection iot-hub data-connection-validation') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.')
+        c.argument('location', arg_type=get_location_type(self.cli_ctx),
+                   validator=get_default_location_from_resource_group)
+        c.argument('iot_hub_resource_id', type=str, help='The resource ID of the Iot hub to be used to create a data '
+                   'connection.')
+        c.argument('consumer_group', type=str, help='The iot hub consumer group.')
+        c.argument('table_name', type=str, help='The table where the data should be ingested. Optionally the table '
+                   'information can be added to each message.')
+        c.argument('mapping_rule_name', type=str, help='The mapping rule to be used to ingest the data. Optionally the '
+                   'mapping information can be added to each message.')
+        c.argument('data_format', arg_type=get_enum_type(['MULTIJSON', 'JSON', 'CSV', 'TSV', 'SCSV', 'SOHSV', 'PSV', ''
+                                                          'TXT', 'RAW', 'SINGLEJSON', 'AVRO', 'TSVE', 'PARQUET', 'ORC',
+                                                          'APACHEAVRO', 'W3CLOGFILE']), help='The data format of the '
+                   'message. Optionally the data format can be added to each message.')
+        c.argument('event_system_properties', nargs='*', help='System properties of the iot hub')
+        c.argument('shared_access_policy_name', type=str, help='The name of the share access policy')
+
+    with self.argument_context('kusto data-connection wait') as c:
+        c.argument('resource_group_name', resource_group_name_type)
+        c.argument('cluster_name', type=str, help='The name of the Kusto cluster.', id_part='name')
+        c.argument('database_name', type=str, help='The name of the database in the Kusto cluster.', id_part=''
+                   'child_name_1')
+        c.argument('data_connection_name', options_list=['--name', '-n', '--data-connection-name'], type=str, help=''
+                   'The name of the data connection.', id_part='child_name_2')
diff --git a/src/kusto/azext_kusto/generated/_validators.py b/src/kusto/azext_kusto/generated/_validators.py
index e5ac7838677..b33a44c1ebf 100644
--- a/src/kusto/azext_kusto/generated/_validators.py
+++ b/src/kusto/azext_kusto/generated/_validators.py
@@ -1,9 +1,9 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
diff --git a/src/kusto/azext_kusto/generated/action.py b/src/kusto/azext_kusto/generated/action.py
index 54127f7e785..b5ef4ed7add 100644
--- a/src/kusto/azext_kusto/generated/action.py
+++ b/src/kusto/azext_kusto/generated/action.py
@@ -1,248 +1,250 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-# pylint: disable=protected-access
-
-import argparse
-from knack.util import CLIError
-from collections import defaultdict
-
-
-class AddSku(argparse.Action):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        namespace.sku = action
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'name':
-                d['name'] = v[0]
-            elif kl == 'capacity':
-                d['capacity'] = v[0]
-            elif kl == 'tier':
-                d['tier'] = v[0]
-        return d
-
-
-class AddTrustedExternalTenants(argparse._AppendAction):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        super(AddTrustedExternalTenants, self).__call__(parser, namespace, action, option_string)
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'value':
-                d['value'] = v[0]
-        return d
-
-
-class AddOptimizedAutoscale(argparse.Action):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        namespace.optimized_autoscale = action
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'version':
-                d['version'] = v[0]
-            elif kl == 'is-enabled':
-                d['is_enabled'] = v[0]
-            elif kl == 'minimum':
-                d['minimum'] = v[0]
-            elif kl == 'maximum':
-                d['maximum'] = v[0]
-        return d
-
-
-class AddVirtualNetworkConfiguration(argparse.Action):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        namespace.virtual_network_configuration = action
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'subnet-id':
-                d['subnet_id'] = v[0]
-            elif kl == 'engine-public-ip-id':
-                d['engine_public_ip_id'] = v[0]
-            elif kl == 'data-management-public-ip-id':
-                d['data_management_public_ip_id'] = v[0]
-        return d
-
-
-class AddKeyVaultProperties(argparse.Action):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        namespace.key_vault_properties = action
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'key-name':
-                d['key_name'] = v[0]
-            elif kl == 'key-version':
-                d['key_version'] = v[0]
-            elif kl == 'key-vault-uri':
-                d['key_vault_uri'] = v[0]
-        return d
-
-
-class AddClustersValue(argparse._AppendAction):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        super(AddClustersValue, self).__call__(parser, namespace, action, option_string)
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'language-extension-name':
-                d['language_extension_name'] = v[0]
-        return d
-
-
-class AddReadWriteDatabase(argparse.Action):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        namespace.read_write_database = action
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'soft-delete-period':
-                d['soft_delete_period'] = v[0]
-            elif kl == 'hot-cache-period':
-                d['hot_cache_period'] = v[0]
-            elif kl == 'location':
-                d['location'] = v[0]
-        d['kind'] = 'ReadWrite'
-        return d
-
-
-class AddReadOnlyFollowingDatabase(argparse.Action):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        namespace.read_only_following_database = action
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'hot-cache-period':
-                d['hot_cache_period'] = v[0]
-            elif kl == 'location':
-                d['location'] = v[0]
-        d['kind'] = 'ReadOnlyFollowing'
-        return d
-
-
-class AddDatabasesValue(argparse._AppendAction):
-    def __call__(self, parser, namespace, values, option_string=None):
-        action = self.get_action(values, option_string)
-        super(AddDatabasesValue, self).__call__(parser, namespace, action, option_string)
-
-    def get_action(self, values, option_string):  # pylint: disable=no-self-use
-        try:
-            properties = defaultdict(list)
-            for (k, v) in (x.split('=', 1) for x in values):
-                properties[k].append(v)
-            properties = dict(properties)
-        except ValueError:
-            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
-        d = {}
-        for k in properties:
-            kl = k.lower()
-            v = properties[k]
-            if kl == 'role':
-                d['role'] = v[0]
-            elif kl == 'name':
-                d['name'] = v[0]
-            elif kl == 'type':
-                d['type'] = v[0]
-            elif kl == 'fqn':
-                d['fqn'] = v[0]
-            elif kl == 'email':
-                d['email'] = v[0]
-            elif kl == 'app-id':
-                d['app_id'] = v[0]
-        return d
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=protected-access
+
+import argparse
+from collections import defaultdict
+from knack.util import CLIError
+
+
+class AddSku(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        namespace.sku = action
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'name':
+                d['name'] = v[0]
+            elif kl == 'capacity':
+                d['capacity'] = v[0]
+            elif kl == 'tier':
+                d['tier'] = v[0]
+        return d
+
+
+class AddTrustedExternalTenants(argparse._AppendAction):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        super(AddTrustedExternalTenants, self).__call__(parser, namespace, action, option_string)
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'value':
+                d['value'] = v[0]
+        return d
+
+
+class AddOptimizedAutoscale(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        namespace.optimized_autoscale = action
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'version':
+                d['version'] = v[0]
+            elif kl == 'is-enabled':
+                d['is_enabled'] = v[0]
+            elif kl == 'minimum':
+                d['minimum'] = v[0]
+            elif kl == 'maximum':
+                d['maximum'] = v[0]
+        return d
+
+
+class AddVirtualNetworkConfiguration(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        namespace.virtual_network_configuration = action
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'subnet-id':
+                d['subnet_id'] = v[0]
+            elif kl == 'engine-public-ip-id':
+                d['engine_public_ip_id'] = v[0]
+            elif kl == 'data-management-public-ip-id':
+                d['data_management_public_ip_id'] = v[0]
+        return d
+
+
+class AddKeyVaultProperties(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        namespace.key_vault_properties = action
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'key-name':
+                d['key_name'] = v[0]
+            elif kl == 'key-version':
+                d['key_version'] = v[0]
+            elif kl == 'key-vault-uri':
+                d['key_vault_uri'] = v[0]
+            elif kl == 'user-identity':
+                d['user_identity'] = v[0]
+        return d
+
+
+class AddClustersValue(argparse._AppendAction):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        super(AddClustersValue, self).__call__(parser, namespace, action, option_string)
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'language-extension-name':
+                d['language_extension_name'] = v[0]
+        return d
+
+
+class AddReadWriteDatabase(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        namespace.read_write_database = action
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'soft-delete-period':
+                d['soft_delete_period'] = v[0]
+            elif kl == 'hot-cache-period':
+                d['hot_cache_period'] = v[0]
+            elif kl == 'location':
+                d['location'] = v[0]
+        d['kind'] = 'ReadWrite'
+        return d
+
+
+class AddReadOnlyFollowingDatabase(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        namespace.read_only_following_database = action
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'hot-cache-period':
+                d['hot_cache_period'] = v[0]
+            elif kl == 'location':
+                d['location'] = v[0]
+        d['kind'] = 'ReadOnlyFollowing'
+        return d
+
+
+class AddDatabasesValue(argparse._AppendAction):
+    def __call__(self, parser, namespace, values, option_string=None):
+        action = self.get_action(values, option_string)
+        super(AddDatabasesValue, self).__call__(parser, namespace, action, option_string)
+
+    def get_action(self, values, option_string):  # pylint: disable=no-self-use
+        try:
+            properties = defaultdict(list)
+            for (k, v) in (x.split('=', 1) for x in values):
+                properties[k].append(v)
+            properties = dict(properties)
+        except ValueError:
+            raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+        d = {}
+        for k in properties:
+            kl = k.lower()
+            v = properties[k]
+            if kl == 'role':
+                d['role'] = v[0]
+            elif kl == 'name':
+                d['name'] = v[0]
+            elif kl == 'type':
+                d['type'] = v[0]
+            elif kl == 'fqn':
+                d['fqn'] = v[0]
+            elif kl == 'email':
+                d['email'] = v[0]
+            elif kl == 'app-id':
+                d['app_id'] = v[0]
+        return d
diff --git a/src/kusto/azext_kusto/generated/commands.py b/src/kusto/azext_kusto/generated/commands.py
index ab108067a0f..fd600949355 100644
--- a/src/kusto/azext_kusto/generated/commands.py
+++ b/src/kusto/azext_kusto/generated/commands.py
@@ -1,117 +1,122 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-
-from azure.cli.core.commands import CliCommandType
-
-
-def load_command_table(self, _):
-
-    from azext_kusto.generated._client_factory import cf_cluster
-    kusto_cluster = CliCommandType(
-        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._cluster_operations#ClusterOperations.{}',
-        client_factory=cf_cluster)
-    with self.command_group('kusto cluster', kusto_cluster, client_factory=cf_cluster, is_experimental=True) as g:
-        g.custom_command('list', 'kusto_cluster_list')
-        g.custom_show_command('show', 'kusto_cluster_show')
-        g.custom_command('create', 'kusto_cluster_create', supports_no_wait=True)
-        g.custom_command('update', 'kusto_cluster_update', supports_no_wait=True)
-        g.custom_command('delete', 'kusto_cluster_delete', supports_no_wait=True)
-        g.custom_command('add-language-extension', 'kusto_cluster_add_language_extension', supports_no_wait=True)
-        g.custom_command('detach-follower-database', 'kusto_cluster_detach_follower_database', supports_no_wait=True)
-        g.custom_command('diagnose-virtual-network', 'kusto_cluster_diagnose_virtual_network', supports_no_wait=True)
-        g.custom_command('list-follower-database', 'kusto_cluster_list_follower_database')
-        g.custom_command('list-language-extension', 'kusto_cluster_list_language_extension')
-        g.custom_command('list-sku', 'kusto_cluster_list_sku')
-        g.custom_command('remove-language-extension', 'kusto_cluster_remove_language_extension',
-                         supports_no_wait=True)
-        g.custom_command('start', 'kusto_cluster_start', supports_no_wait=True)
-        g.custom_command('stop', 'kusto_cluster_stop', supports_no_wait=True)
-        g.custom_wait_command('wait', 'kusto_cluster_show')
-
-    from azext_kusto.generated._client_factory import cf_cluster_principal_assignment
-    kusto_cluster_principal_assignment = CliCommandType(
-        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._cluster_principal_assignment_operations#ClusterPri'
-        'ncipalAssignmentOperations.{}',
-        client_factory=cf_cluster_principal_assignment)
-    with self.command_group('kusto cluster-principal-assignment', kusto_cluster_principal_assignment,
-                            client_factory=cf_cluster_principal_assignment, is_experimental=True) as g:
-        g.custom_command('list', 'kusto_cluster_principal_assignment_list')
-        g.custom_show_command('show', 'kusto_cluster_principal_assignment_show')
-        g.custom_command('create', 'kusto_cluster_principal_assignment_create', supports_no_wait=True)
-        g.custom_command('update', 'kusto_cluster_principal_assignment_update', supports_no_wait=True)
-        g.custom_command('delete', 'kusto_cluster_principal_assignment_delete', supports_no_wait=True)
-        g.custom_wait_command('wait', 'kusto_cluster_principal_assignment_show')
-
-    from azext_kusto.generated._client_factory import cf_database
-    kusto_database = CliCommandType(
-        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._database_operations#DatabaseOperations.{}',
-        client_factory=cf_database)
-    with self.command_group('kusto database', kusto_database, client_factory=cf_database, is_experimental=True) as g:
-        g.custom_command('list', 'kusto_database_list')
-        g.custom_show_command('show', 'kusto_database_show')
-        g.custom_command('create', 'kusto_database_create', supports_no_wait=True)
-        g.custom_command('update', 'kusto_database_update', supports_no_wait=True)
-        g.custom_command('delete', 'kusto_database_delete', supports_no_wait=True)
-        g.custom_command('add-principal', 'kusto_database_add_principal')
-        g.custom_command('list-principal', 'kusto_database_list_principal')
-        g.custom_command('remove-principal', 'kusto_database_remove_principal')
-        g.custom_wait_command('wait', 'kusto_database_show')
-
-    from azext_kusto.generated._client_factory import cf_database_principal_assignment
-    kusto_database_principal_assignment = CliCommandType(
-        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._database_principal_assignment_operations#DatabaseP'
-        'rincipalAssignmentOperations.{}',
-        client_factory=cf_database_principal_assignment)
-    with self.command_group('kusto database-principal-assignment', kusto_database_principal_assignment,
-                            client_factory=cf_database_principal_assignment, is_experimental=True) as g:
-        g.custom_command('list', 'kusto_database_principal_assignment_list')
-        g.custom_show_command('show', 'kusto_database_principal_assignment_show')
-        g.custom_command('create', 'kusto_database_principal_assignment_create', supports_no_wait=True)
-        g.custom_command('update', 'kusto_database_principal_assignment_update', supports_no_wait=True)
-        g.custom_command('delete', 'kusto_database_principal_assignment_delete', supports_no_wait=True)
-        g.custom_wait_command('wait', 'kusto_database_principal_assignment_show')
-
-    from azext_kusto.generated._client_factory import cf_attached_database_configuration
-    kusto_attached_database_configuration = CliCommandType(
-        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._attached_database_configuration_operations#Attache'
-        'dDatabaseConfigurationOperations.{}',
-        client_factory=cf_attached_database_configuration)
-    with self.command_group('kusto attached-database-configuration', kusto_attached_database_configuration,
-                            client_factory=cf_attached_database_configuration, is_experimental=True) as g:
-        g.custom_command('list', 'kusto_attached_database_configuration_list')
-        g.custom_show_command('show', 'kusto_attached_database_configuration_show')
-        g.custom_command('create', 'kusto_attached_database_configuration_create', supports_no_wait=True)
-        g.custom_command('update', 'kusto_attached_database_configuration_update', supports_no_wait=True)
-        g.custom_command('delete', 'kusto_attached_database_configuration_delete', supports_no_wait=True)
-        g.custom_wait_command('wait', 'kusto_attached_database_configuration_show')
-
-    from azext_kusto.generated._client_factory import cf_data_connection
-    kusto_data_connection = CliCommandType(
-        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._data_connection_operations#DataConnectionOperation'
-        's.{}',
-        client_factory=cf_data_connection)
-    with self.command_group('kusto data-connection', kusto_data_connection, client_factory=cf_data_connection,
-                            is_experimental=True) as g:
-        g.custom_command('list', 'kusto_data_connection_list')
-        g.custom_show_command('show', 'kusto_data_connection_show')
-        g.custom_command('event-grid create', 'kusto_data_connection_event_grid_create', supports_no_wait=True)
-        g.custom_command('event-hub create', 'kusto_data_connection_event_hub_create', supports_no_wait=True)
-        g.custom_command('iot-hub create', 'kusto_data_connection_iot_hub_create', supports_no_wait=True)
-        g.custom_command('event-grid update', 'kusto_data_connection_event_grid_update', supports_no_wait=True)
-        g.custom_command('event-hub update', 'kusto_data_connection_event_hub_update', supports_no_wait=True)
-        g.custom_command('iot-hub update', 'kusto_data_connection_iot_hub_update', supports_no_wait=True)
-        g.custom_command('delete', 'kusto_data_connection_delete', supports_no_wait=True)
-        g.custom_command('event-grid data-connection-validation', 'kusto_data_connection_event_grid_data_connection_val'
-                         'idation', supports_no_wait=True)
-        g.custom_command('event-hub data-connection-validation', 'kusto_data_connection_event_hub_data_connection_valid'
-                         'ation', supports_no_wait=True)
-        g.custom_command('iot-hub data-connection-validation', 'kusto_data_connection_iot_hub_data_connection_validatio'
-                         'n', supports_no_wait=True)
-        g.custom_wait_command('wait', 'kusto_data_connection_show')
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-statements
+# pylint: disable=too-many-locals
+
+from azure.cli.core.commands import CliCommandType
+
+
+def load_command_table(self, _):
+
+    from azext_kusto.generated._client_factory import cf_cluster
+    kusto_cluster = CliCommandType(
+        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._cluster_operations#ClusterOperations.{}',
+        client_factory=cf_cluster)
+    with self.command_group('kusto cluster', kusto_cluster, client_factory=cf_cluster, is_experimental=True) as g:
+        g.custom_command('list', 'kusto_cluster_list')
+        g.custom_show_command('show', 'kusto_cluster_show')
+        g.custom_command('create', 'kusto_cluster_create', supports_no_wait=True)
+        g.custom_command('update', 'kusto_cluster_update', supports_no_wait=True)
+        g.custom_command('delete', 'kusto_cluster_delete', supports_no_wait=True, confirmation=True)
+        g.custom_command('add-language-extension', 'kusto_cluster_add_language_extension', supports_no_wait=True)
+        g.custom_command('detach-follower-database', 'kusto_cluster_detach_follower_database', supports_no_wait=True)
+        g.custom_command('diagnose-virtual-network', 'kusto_cluster_diagnose_virtual_network', supports_no_wait=True)
+        g.custom_command('list-follower-database', 'kusto_cluster_list_follower_database')
+        g.custom_command('list-language-extension', 'kusto_cluster_list_language_extension')
+        g.custom_command('list-sku', 'kusto_cluster_list_sku')
+        g.custom_command('remove-language-extension', 'kusto_cluster_remove_language_extension',
+                         supports_no_wait=True)
+        g.custom_command('start', 'kusto_cluster_start', supports_no_wait=True)
+        g.custom_command('stop', 'kusto_cluster_stop', supports_no_wait=True)
+        g.custom_wait_command('wait', 'kusto_cluster_show')
+
+    from azext_kusto.generated._client_factory import cf_cluster_principal_assignment
+    kusto_cluster_principal_assignment = CliCommandType(
+        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._cluster_principal_assignment_operations#ClusterPri'
+        'ncipalAssignmentOperations.{}',
+        client_factory=cf_cluster_principal_assignment)
+    with self.command_group('kusto cluster-principal-assignment', kusto_cluster_principal_assignment,
+                            client_factory=cf_cluster_principal_assignment, is_experimental=True) as g:
+        g.custom_command('list', 'kusto_cluster_principal_assignment_list')
+        g.custom_show_command('show', 'kusto_cluster_principal_assignment_show')
+        g.custom_command('create', 'kusto_cluster_principal_assignment_create', supports_no_wait=True)
+        g.custom_command('update', 'kusto_cluster_principal_assignment_update', supports_no_wait=True)
+        g.custom_command('delete', 'kusto_cluster_principal_assignment_delete', supports_no_wait=True,
+                         confirmation=True)
+        g.custom_wait_command('wait', 'kusto_cluster_principal_assignment_show')
+
+    from azext_kusto.generated._client_factory import cf_database
+    kusto_database = CliCommandType(
+        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._database_operations#DatabaseOperations.{}',
+        client_factory=cf_database)
+    with self.command_group('kusto database', kusto_database, client_factory=cf_database, is_experimental=True) as g:
+        g.custom_command('list', 'kusto_database_list')
+        g.custom_show_command('show', 'kusto_database_show')
+        g.custom_command('create', 'kusto_database_create', supports_no_wait=True)
+        g.custom_command('update', 'kusto_database_update', supports_no_wait=True)
+        g.custom_command('delete', 'kusto_database_delete', supports_no_wait=True, confirmation=True)
+        g.custom_command('add-principal', 'kusto_database_add_principal')
+        g.custom_command('list-principal', 'kusto_database_list_principal')
+        g.custom_command('remove-principal', 'kusto_database_remove_principal')
+        g.custom_wait_command('wait', 'kusto_database_show')
+
+    from azext_kusto.generated._client_factory import cf_database_principal_assignment
+    kusto_database_principal_assignment = CliCommandType(
+        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._database_principal_assignment_operations#DatabaseP'
+        'rincipalAssignmentOperations.{}',
+        client_factory=cf_database_principal_assignment)
+    with self.command_group('kusto database-principal-assignment', kusto_database_principal_assignment,
+                            client_factory=cf_database_principal_assignment, is_experimental=True) as g:
+        g.custom_command('list', 'kusto_database_principal_assignment_list')
+        g.custom_show_command('show', 'kusto_database_principal_assignment_show')
+        g.custom_command('create', 'kusto_database_principal_assignment_create', supports_no_wait=True)
+        g.custom_command('update', 'kusto_database_principal_assignment_update', supports_no_wait=True)
+        g.custom_command('delete', 'kusto_database_principal_assignment_delete', supports_no_wait=True,
+                         confirmation=True)
+        g.custom_wait_command('wait', 'kusto_database_principal_assignment_show')
+
+    from azext_kusto.generated._client_factory import cf_attached_database_configuration
+    kusto_attached_database_configuration = CliCommandType(
+        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._attached_database_configuration_operations#Attache'
+        'dDatabaseConfigurationOperations.{}',
+        client_factory=cf_attached_database_configuration)
+    with self.command_group('kusto attached-database-configuration', kusto_attached_database_configuration,
+                            client_factory=cf_attached_database_configuration, is_experimental=True) as g:
+        g.custom_command('list', 'kusto_attached_database_configuration_list')
+        g.custom_show_command('show', 'kusto_attached_database_configuration_show')
+        g.custom_command('create', 'kusto_attached_database_configuration_create', supports_no_wait=True)
+        g.custom_command('update', 'kusto_attached_database_configuration_update', supports_no_wait=True)
+        g.custom_command('delete', 'kusto_attached_database_configuration_delete', supports_no_wait=True,
+                         confirmation=True)
+        g.custom_wait_command('wait', 'kusto_attached_database_configuration_show')
+
+    from azext_kusto.generated._client_factory import cf_data_connection
+    kusto_data_connection = CliCommandType(
+        operations_tmpl='azext_kusto.vendored_sdks.kusto.operations._data_connection_operations#DataConnectionOperation'
+        's.{}',
+        client_factory=cf_data_connection)
+    with self.command_group('kusto data-connection', kusto_data_connection, client_factory=cf_data_connection,
+                            is_experimental=True) as g:
+        g.custom_command('list', 'kusto_data_connection_list')
+        g.custom_show_command('show', 'kusto_data_connection_show')
+        g.custom_command('event-grid create', 'kusto_data_connection_event_grid_create', supports_no_wait=True)
+        g.custom_command('event-hub create', 'kusto_data_connection_event_hub_create', supports_no_wait=True)
+        g.custom_command('iot-hub create', 'kusto_data_connection_iot_hub_create', supports_no_wait=True)
+        g.custom_command('event-grid update', 'kusto_data_connection_event_grid_update', supports_no_wait=True)
+        g.custom_command('event-hub update', 'kusto_data_connection_event_hub_update', supports_no_wait=True)
+        g.custom_command('iot-hub update', 'kusto_data_connection_iot_hub_update', supports_no_wait=True)
+        g.custom_command('delete', 'kusto_data_connection_delete', supports_no_wait=True, confirmation=True)
+        g.custom_command('event-grid data-connection-validation', 'kusto_data_connection_event_grid_data_connection_val'
+                         'idation', supports_no_wait=True)
+        g.custom_command('event-hub data-connection-validation', 'kusto_data_connection_event_hub_data_connection_valid'
+                         'ation', supports_no_wait=True)
+        g.custom_command('iot-hub data-connection-validation', 'kusto_data_connection_iot_hub_data_connection_validatio'
+                         'n', supports_no_wait=True)
+        g.custom_wait_command('wait', 'kusto_data_connection_show')
diff --git a/src/kusto/azext_kusto/generated/custom.py b/src/kusto/azext_kusto/generated/custom.py
index 0ed65217ee7..c415f8f5719 100644
--- a/src/kusto/azext_kusto/generated/custom.py
+++ b/src/kusto/azext_kusto/generated/custom.py
@@ -1,881 +1,880 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-# pylint: disable=too-many-lines
-
-import json
-from knack.util import CLIError
-from azure.cli.core.util import sdk_no_wait
-
-
-def kusto_cluster_list(client,
-                       resource_group_name=None):
-    if resource_group_name:
-        return client.list_by_resource_group(resource_group_name=resource_group_name)
-    return client.list()
-
-
-def kusto_cluster_show(client,
-                       resource_group_name,
-                       cluster_name):
-    return client.get(resource_group_name=resource_group_name,
-                      cluster_name=cluster_name)
-
-
-def kusto_cluster_create(client,
-                         resource_group_name,
-                         cluster_name,
-                         location,
-                         sku,
-                         tags=None,
-                         zones=None,
-                         trusted_external_tenants=None,
-                         optimized_autoscale=None,
-                         enable_disk_encryption=None,
-                         enable_streaming_ingest=None,
-                         virtual_network_configuration=None,
-                         key_vault_properties=None,
-                         enable_purge=None,
-                         enable_double_encryption=None,
-                         identity_type=None,
-                         identity_user_assigned_identities=None,
-                         no_wait=False):
-    if enable_streaming_ingest is None:
-        enable_streaming_ingest = False
-    if enable_purge is None:
-        enable_purge = False
-    if enable_double_encryption is None:
-        enable_double_encryption = False
-    if isinstance(identity_user_assigned_identities, str):
-        identity_user_assigned_identities = json.loads(identity_user_assigned_identities)
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       tags=tags,
-                       location=location,
-                       sku=sku,
-                       zones=zones,
-                       trusted_external_tenants=trusted_external_tenants,
-                       optimized_autoscale=optimized_autoscale,
-                       enable_disk_encryption=enable_disk_encryption,
-                       enable_streaming_ingest=enable_streaming_ingest,
-                       virtual_network_configuration=virtual_network_configuration,
-                       key_vault_properties=key_vault_properties,
-                       enable_purge=enable_purge,
-                       enable_double_encryption=enable_double_encryption,
-                       type=identity_type,
-                       user_assigned_identities=identity_user_assigned_identities)
-
-
-def kusto_cluster_update(client,
-                         resource_group_name,
-                         cluster_name,
-                         tags=None,
-                         location=None,
-                         sku=None,
-                         trusted_external_tenants=None,
-                         optimized_autoscale=None,
-                         enable_disk_encryption=None,
-                         enable_streaming_ingest=None,
-                         virtual_network_configuration=None,
-                         key_vault_properties=None,
-                         enable_purge=None,
-                         enable_double_encryption=None,
-                         identity_type=None,
-                         identity_user_assigned_identities=None,
-                         no_wait=False):
-    if enable_streaming_ingest is None:
-        enable_streaming_ingest = False
-    if enable_purge is None:
-        enable_purge = False
-    if enable_double_encryption is None:
-        enable_double_encryption = False
-    if isinstance(identity_user_assigned_identities, str):
-        identity_user_assigned_identities = json.loads(identity_user_assigned_identities)
-    return sdk_no_wait(no_wait,
-                       client.begin_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       tags=tags,
-                       location=location,
-                       sku=sku,
-                       trusted_external_tenants=trusted_external_tenants,
-                       optimized_autoscale=optimized_autoscale,
-                       enable_disk_encryption=enable_disk_encryption,
-                       enable_streaming_ingest=enable_streaming_ingest,
-                       virtual_network_configuration=virtual_network_configuration,
-                       key_vault_properties=key_vault_properties,
-                       enable_purge=enable_purge,
-                       enable_double_encryption=enable_double_encryption,
-                       type=identity_type,
-                       user_assigned_identities=identity_user_assigned_identities)
-
-
-def kusto_cluster_delete(client,
-                         resource_group_name,
-                         cluster_name,
-                         no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_delete,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name)
-
-
-def kusto_cluster_add_language_extension(client,
-                                         resource_group_name,
-                                         cluster_name,
-                                         value=None,
-                                         no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_add_language_extension,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       value=value)
-
-
-def kusto_cluster_detach_follower_database(client,
-                                           resource_group_name,
-                                           cluster_name,
-                                           cluster_resource_id,
-                                           attached_database_configuration_name,
-                                           no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_detach_follower_database,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       cluster_resource_id=cluster_resource_id,
-                       attached_database_configuration_name=attached_database_configuration_name)
-
-
-def kusto_cluster_diagnose_virtual_network(client,
-                                           resource_group_name,
-                                           cluster_name,
-                                           no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_diagnose_virtual_network,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name)
-
-
-def kusto_cluster_list_follower_database(client,
-                                         resource_group_name,
-                                         cluster_name):
-    return client.list_follower_database(resource_group_name=resource_group_name,
-                                         cluster_name=cluster_name)
-
-
-def kusto_cluster_list_language_extension(client,
-                                          resource_group_name,
-                                          cluster_name):
-    return client.list_language_extension(resource_group_name=resource_group_name,
-                                          cluster_name=cluster_name)
-
-
-def kusto_cluster_list_sku(client,
-                           resource_group_name=None,
-                           cluster_name=None):
-    if resource_group_name and cluster_name is not None:
-        return client.list_sku_by_resource(resource_group_name=resource_group_name,
-                                           cluster_name=cluster_name)
-    return client.list_sku()
-
-
-def kusto_cluster_remove_language_extension(client,
-                                            resource_group_name,
-                                            cluster_name,
-                                            value=None,
-                                            no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_remove_language_extension,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       value=value)
-
-
-def kusto_cluster_start(client,
-                        resource_group_name,
-                        cluster_name,
-                        no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_start,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name)
-
-
-def kusto_cluster_stop(client,
-                       resource_group_name,
-                       cluster_name,
-                       no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_stop,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name)
-
-
-def kusto_cluster_principal_assignment_list(client,
-                                            resource_group_name,
-                                            cluster_name):
-    return client.list(resource_group_name=resource_group_name,
-                       cluster_name=cluster_name)
-
-
-def kusto_cluster_principal_assignment_show(client,
-                                            resource_group_name,
-                                            cluster_name,
-                                            principal_assignment_name):
-    return client.get(resource_group_name=resource_group_name,
-                      cluster_name=cluster_name,
-                      principal_assignment_name=principal_assignment_name)
-
-
-def kusto_cluster_principal_assignment_create(client,
-                                              resource_group_name,
-                                              cluster_name,
-                                              principal_assignment_name,
-                                              principal_id=None,
-                                              role=None,
-                                              tenant_id=None,
-                                              principal_type=None,
-                                              no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       principal_assignment_name=principal_assignment_name,
-                       principal_id=principal_id,
-                       role=role,
-                       tenant_id=tenant_id,
-                       principal_type=principal_type)
-
-
-def kusto_cluster_principal_assignment_update(client,
-                                              resource_group_name,
-                                              cluster_name,
-                                              principal_assignment_name,
-                                              principal_id=None,
-                                              role=None,
-                                              tenant_id=None,
-                                              principal_type=None,
-                                              no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       principal_assignment_name=principal_assignment_name,
-                       principal_id=principal_id,
-                       role=role,
-                       tenant_id=tenant_id,
-                       principal_type=principal_type)
-
-
-def kusto_cluster_principal_assignment_delete(client,
-                                              resource_group_name,
-                                              cluster_name,
-                                              principal_assignment_name,
-                                              no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_delete,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       principal_assignment_name=principal_assignment_name)
-
-
-def kusto_database_list(client,
-                        resource_group_name,
-                        cluster_name):
-    return client.list_by_cluster(resource_group_name=resource_group_name,
-                                  cluster_name=cluster_name)
-
-
-def kusto_database_show(client,
-                        resource_group_name,
-                        cluster_name,
-                        database_name):
-    return client.get(resource_group_name=resource_group_name,
-                      cluster_name=cluster_name,
-                      database_name=database_name)
-
-
-def kusto_database_create(client,
-                          resource_group_name,
-                          cluster_name,
-                          database_name,
-                          read_write_database=None,
-                          read_only_following_database=None,
-                          no_wait=False):
-    all_parameters = []
-    if read_write_database is not None:
-        all_parameters.append(read_write_database)
-    if read_only_following_database is not None:
-        all_parameters.append(read_only_following_database)
-    if len(all_parameters) > 1:
-        raise CLIError('at most one of  read_write_database, read_only_following_database is needed for parameters!')
-    if len(all_parameters) != 1:
-        raise CLIError('parameters is required. but none of read_write_database, read_only_following_database is provid'
-                       'ed!')
-    parameters = all_parameters[0] if len(all_parameters) == 1 else None
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       parameters=parameters)
-
-
-def kusto_database_update(client,
-                          resource_group_name,
-                          cluster_name,
-                          database_name,
-                          read_write_database=None,
-                          read_only_following_database=None,
-                          no_wait=False):
-    all_parameters = []
-    if read_write_database is not None:
-        all_parameters.append(read_write_database)
-    if read_only_following_database is not None:
-        all_parameters.append(read_only_following_database)
-    if len(all_parameters) > 1:
-        raise CLIError('at most one of  read_write_database, read_only_following_database is needed for parameters!')
-    if len(all_parameters) != 1:
-        raise CLIError('parameters is required. but none of read_write_database, read_only_following_database is provid'
-                       'ed!')
-    parameters = all_parameters[0] if len(all_parameters) == 1 else None
-    return sdk_no_wait(no_wait,
-                       client.begin_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       parameters=parameters)
-
-
-def kusto_database_delete(client,
-                          resource_group_name,
-                          cluster_name,
-                          database_name,
-                          no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_delete,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name)
-
-
-def kusto_database_add_principal(client,
-                                 resource_group_name,
-                                 cluster_name,
-                                 database_name,
-                                 value=None):
-    return client.add_principal(resource_group_name=resource_group_name,
-                                cluster_name=cluster_name,
-                                database_name=database_name,
-                                value=value)
-
-
-def kusto_database_list_principal(client,
-                                  resource_group_name,
-                                  cluster_name,
-                                  database_name):
-    return client.list_principal(resource_group_name=resource_group_name,
-                                 cluster_name=cluster_name,
-                                 database_name=database_name)
-
-
-def kusto_database_remove_principal(client,
-                                    resource_group_name,
-                                    cluster_name,
-                                    database_name,
-                                    value=None):
-    return client.remove_principal(resource_group_name=resource_group_name,
-                                   cluster_name=cluster_name,
-                                   database_name=database_name,
-                                   value=value)
-
-
-def kusto_database_principal_assignment_list(client,
-                                             resource_group_name,
-                                             cluster_name,
-                                             database_name):
-    return client.list(resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name)
-
-
-def kusto_database_principal_assignment_show(client,
-                                             resource_group_name,
-                                             cluster_name,
-                                             database_name,
-                                             principal_assignment_name):
-    return client.get(resource_group_name=resource_group_name,
-                      cluster_name=cluster_name,
-                      database_name=database_name,
-                      principal_assignment_name=principal_assignment_name)
-
-
-def kusto_database_principal_assignment_create(client,
-                                               resource_group_name,
-                                               cluster_name,
-                                               database_name,
-                                               principal_assignment_name,
-                                               principal_id=None,
-                                               role=None,
-                                               tenant_id=None,
-                                               principal_type=None,
-                                               no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       principal_assignment_name=principal_assignment_name,
-                       principal_id=principal_id,
-                       role=role,
-                       tenant_id=tenant_id,
-                       principal_type=principal_type)
-
-
-def kusto_database_principal_assignment_update(client,
-                                               resource_group_name,
-                                               cluster_name,
-                                               database_name,
-                                               principal_assignment_name,
-                                               principal_id=None,
-                                               role=None,
-                                               tenant_id=None,
-                                               principal_type=None,
-                                               no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       principal_assignment_name=principal_assignment_name,
-                       principal_id=principal_id,
-                       role=role,
-                       tenant_id=tenant_id,
-                       principal_type=principal_type)
-
-
-def kusto_database_principal_assignment_delete(client,
-                                               resource_group_name,
-                                               cluster_name,
-                                               database_name,
-                                               principal_assignment_name,
-                                               no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_delete,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       principal_assignment_name=principal_assignment_name)
-
-
-def kusto_attached_database_configuration_list(client,
-                                               resource_group_name,
-                                               cluster_name):
-    return client.list_by_cluster(resource_group_name=resource_group_name,
-                                  cluster_name=cluster_name)
-
-
-def kusto_attached_database_configuration_show(client,
-                                               resource_group_name,
-                                               cluster_name,
-                                               attached_database_configuration_name):
-    return client.get(resource_group_name=resource_group_name,
-                      cluster_name=cluster_name,
-                      attached_database_configuration_name=attached_database_configuration_name)
-
-
-def kusto_attached_database_configuration_create(client,
-                                                 resource_group_name,
-                                                 cluster_name,
-                                                 attached_database_configuration_name,
-                                                 location=None,
-                                                 database_name=None,
-                                                 cluster_resource_id=None,
-                                                 default_principals_modification_kind=None,
-                                                 no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       attached_database_configuration_name=attached_database_configuration_name,
-                       location=location,
-                       database_name=database_name,
-                       cluster_resource_id=cluster_resource_id,
-                       default_principals_modification_kind=default_principals_modification_kind)
-
-
-def kusto_attached_database_configuration_update(client,
-                                                 resource_group_name,
-                                                 cluster_name,
-                                                 attached_database_configuration_name,
-                                                 location=None,
-                                                 database_name=None,
-                                                 cluster_resource_id=None,
-                                                 default_principals_modification_kind=None,
-                                                 no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       attached_database_configuration_name=attached_database_configuration_name,
-                       location=location,
-                       database_name=database_name,
-                       cluster_resource_id=cluster_resource_id,
-                       default_principals_modification_kind=default_principals_modification_kind)
-
-
-def kusto_attached_database_configuration_delete(client,
-                                                 resource_group_name,
-                                                 cluster_name,
-                                                 attached_database_configuration_name,
-                                                 no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_delete,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       attached_database_configuration_name=attached_database_configuration_name)
-
-
-def kusto_data_connection_list(client,
-                               resource_group_name,
-                               cluster_name,
-                               database_name):
-    return client.list_by_database(resource_group_name=resource_group_name,
-                                   cluster_name=cluster_name,
-                                   database_name=database_name)
-
-
-def kusto_data_connection_show(client,
-                               resource_group_name,
-                               cluster_name,
-                               database_name,
-                               data_connection_name):
-    return client.get(resource_group_name=resource_group_name,
-                      cluster_name=cluster_name,
-                      database_name=database_name,
-                      data_connection_name=data_connection_name)
-
-
-def kusto_data_connection_event_grid_create(client,
-                                            resource_group_name,
-                                            cluster_name,
-                                            database_name,
-                                            data_connection_name,
-                                            location=None,
-                                            storage_account_resource_id=None,
-                                            event_hub_resource_id=None,
-                                            consumer_group=None,
-                                            table_name=None,
-                                            mapping_rule_name=None,
-                                            data_format=None,
-                                            ignore_first_record=None,
-                                            blob_storage_event_type=None,
-                                            no_wait=False):
-    parameters = {}
-    parameters['location'] = location
-    parameters['kind'] = 'EventGrid'
-    parameters['storage_account_resource_id'] = storage_account_resource_id
-    parameters['event_hub_resource_id'] = event_hub_resource_id
-    parameters['consumer_group'] = consumer_group
-    parameters['table_name'] = table_name
-    parameters['mapping_rule_name'] = mapping_rule_name
-    parameters['data_format'] = data_format
-    parameters['ignore_first_record'] = ignore_first_record
-    parameters['blob_storage_event_type'] = blob_storage_event_type
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       parameters=parameters)
-
-
-def kusto_data_connection_event_hub_create(client,
-                                           resource_group_name,
-                                           cluster_name,
-                                           database_name,
-                                           data_connection_name,
-                                           location=None,
-                                           event_hub_resource_id=None,
-                                           consumer_group=None,
-                                           table_name=None,
-                                           mapping_rule_name=None,
-                                           data_format=None,
-                                           event_system_properties=None,
-                                           compression=None,
-                                           no_wait=False):
-    parameters = {}
-    parameters['location'] = location
-    parameters['kind'] = 'EventHub'
-    parameters['event_hub_resource_id'] = event_hub_resource_id
-    parameters['consumer_group'] = consumer_group
-    parameters['table_name'] = table_name
-    parameters['mapping_rule_name'] = mapping_rule_name
-    parameters['data_format'] = data_format
-    parameters['event_system_properties'] = event_system_properties
-    parameters['compression'] = compression
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       parameters=parameters)
-
-
-def kusto_data_connection_iot_hub_create(client,
-                                         resource_group_name,
-                                         cluster_name,
-                                         database_name,
-                                         data_connection_name,
-                                         location=None,
-                                         iot_hub_resource_id=None,
-                                         consumer_group=None,
-                                         table_name=None,
-                                         mapping_rule_name=None,
-                                         data_format=None,
-                                         event_system_properties=None,
-                                         shared_access_policy_name=None,
-                                         no_wait=False):
-    parameters = {}
-    parameters['location'] = location
-    parameters['kind'] = 'IotHub'
-    parameters['iot_hub_resource_id'] = iot_hub_resource_id
-    parameters['consumer_group'] = consumer_group
-    parameters['table_name'] = table_name
-    parameters['mapping_rule_name'] = mapping_rule_name
-    parameters['data_format'] = data_format
-    parameters['event_system_properties'] = event_system_properties
-    parameters['shared_access_policy_name'] = shared_access_policy_name
-    return sdk_no_wait(no_wait,
-                       client.begin_create_or_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       parameters=parameters)
-
-
-def kusto_data_connection_event_grid_update(client,
-                                            resource_group_name,
-                                            cluster_name,
-                                            database_name,
-                                            data_connection_name,
-                                            location=None,
-                                            storage_account_resource_id=None,
-                                            event_hub_resource_id=None,
-                                            consumer_group=None,
-                                            table_name=None,
-                                            mapping_rule_name=None,
-                                            data_format=None,
-                                            ignore_first_record=None,
-                                            blob_storage_event_type=None,
-                                            no_wait=False):
-    parameters = {}
-    parameters['location'] = location
-    parameters['kind'] = 'EventGrid'
-    parameters['storage_account_resource_id'] = storage_account_resource_id
-    parameters['event_hub_resource_id'] = event_hub_resource_id
-    parameters['consumer_group'] = consumer_group
-    parameters['table_name'] = table_name
-    parameters['mapping_rule_name'] = mapping_rule_name
-    parameters['data_format'] = data_format
-    parameters['ignore_first_record'] = ignore_first_record
-    parameters['blob_storage_event_type'] = blob_storage_event_type
-    return sdk_no_wait(no_wait,
-                       client.begin_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       parameters=parameters)
-
-
-def kusto_data_connection_event_hub_update(client,
-                                           resource_group_name,
-                                           cluster_name,
-                                           database_name,
-                                           data_connection_name,
-                                           location=None,
-                                           event_hub_resource_id=None,
-                                           consumer_group=None,
-                                           table_name=None,
-                                           mapping_rule_name=None,
-                                           data_format=None,
-                                           event_system_properties=None,
-                                           compression=None,
-                                           no_wait=False):
-    parameters = {}
-    parameters['location'] = location
-    parameters['kind'] = 'EventHub'
-    parameters['event_hub_resource_id'] = event_hub_resource_id
-    parameters['consumer_group'] = consumer_group
-    parameters['table_name'] = table_name
-    parameters['mapping_rule_name'] = mapping_rule_name
-    parameters['data_format'] = data_format
-    parameters['event_system_properties'] = event_system_properties
-    parameters['compression'] = compression
-    return sdk_no_wait(no_wait,
-                       client.begin_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       parameters=parameters)
-
-
-def kusto_data_connection_iot_hub_update(client,
-                                         resource_group_name,
-                                         cluster_name,
-                                         database_name,
-                                         data_connection_name,
-                                         location=None,
-                                         iot_hub_resource_id=None,
-                                         consumer_group=None,
-                                         table_name=None,
-                                         mapping_rule_name=None,
-                                         data_format=None,
-                                         event_system_properties=None,
-                                         shared_access_policy_name=None,
-                                         no_wait=False):
-    parameters = {}
-    parameters['location'] = location
-    parameters['kind'] = 'IotHub'
-    parameters['iot_hub_resource_id'] = iot_hub_resource_id
-    parameters['consumer_group'] = consumer_group
-    parameters['table_name'] = table_name
-    parameters['mapping_rule_name'] = mapping_rule_name
-    parameters['data_format'] = data_format
-    parameters['event_system_properties'] = event_system_properties
-    parameters['shared_access_policy_name'] = shared_access_policy_name
-    return sdk_no_wait(no_wait,
-                       client.begin_update,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       parameters=parameters)
-
-
-def kusto_data_connection_delete(client,
-                                 resource_group_name,
-                                 cluster_name,
-                                 database_name,
-                                 data_connection_name,
-                                 no_wait=False):
-    return sdk_no_wait(no_wait,
-                       client.begin_delete,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name)
-
-
-def kusto_data_connection_event_grid_data_connection_validation(client,
-                                                                resource_group_name,
-                                                                cluster_name,
-                                                                database_name,
-                                                                data_connection_name=None,
-                                                                location=None,
-                                                                storage_account_resource_id=None,
-                                                                event_hub_resource_id=None,
-                                                                consumer_group=None,
-                                                                table_name=None,
-                                                                mapping_rule_name=None,
-                                                                data_format=None,
-                                                                ignore_first_record=None,
-                                                                blob_storage_event_type=None,
-                                                                no_wait=False):
-    properties = {}
-    properties['location'] = location
-    properties['kind'] = 'EventGrid'
-    properties['storage_account_resource_id'] = storage_account_resource_id
-    properties['event_hub_resource_id'] = event_hub_resource_id
-    properties['consumer_group'] = consumer_group
-    properties['table_name'] = table_name
-    properties['mapping_rule_name'] = mapping_rule_name
-    properties['data_format'] = data_format
-    properties['ignore_first_record'] = ignore_first_record
-    properties['blob_storage_event_type'] = blob_storage_event_type
-    return sdk_no_wait(no_wait,
-                       client.begin_data_connection_validation,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       properties=properties)
-
-
-def kusto_data_connection_event_hub_data_connection_validation(client,
-                                                               resource_group_name,
-                                                               cluster_name,
-                                                               database_name,
-                                                               data_connection_name=None,
-                                                               location=None,
-                                                               event_hub_resource_id=None,
-                                                               consumer_group=None,
-                                                               table_name=None,
-                                                               mapping_rule_name=None,
-                                                               data_format=None,
-                                                               event_system_properties=None,
-                                                               compression=None,
-                                                               no_wait=False):
-    properties = {}
-    properties['location'] = location
-    properties['kind'] = 'EventHub'
-    properties['event_hub_resource_id'] = event_hub_resource_id
-    properties['consumer_group'] = consumer_group
-    properties['table_name'] = table_name
-    properties['mapping_rule_name'] = mapping_rule_name
-    properties['data_format'] = data_format
-    properties['event_system_properties'] = event_system_properties
-    properties['compression'] = compression
-    return sdk_no_wait(no_wait,
-                       client.begin_data_connection_validation,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       properties=properties)
-
-
-def kusto_data_connection_iot_hub_data_connection_validation(client,
-                                                             resource_group_name,
-                                                             cluster_name,
-                                                             database_name,
-                                                             data_connection_name=None,
-                                                             location=None,
-                                                             iot_hub_resource_id=None,
-                                                             consumer_group=None,
-                                                             table_name=None,
-                                                             mapping_rule_name=None,
-                                                             data_format=None,
-                                                             event_system_properties=None,
-                                                             shared_access_policy_name=None,
-                                                             no_wait=False):
-    properties = {}
-    properties['location'] = location
-    properties['kind'] = 'IotHub'
-    properties['iot_hub_resource_id'] = iot_hub_resource_id
-    properties['consumer_group'] = consumer_group
-    properties['table_name'] = table_name
-    properties['mapping_rule_name'] = mapping_rule_name
-    properties['data_format'] = data_format
-    properties['event_system_properties'] = event_system_properties
-    properties['shared_access_policy_name'] = shared_access_policy_name
-    return sdk_no_wait(no_wait,
-                       client.begin_data_connection_validation,
-                       resource_group_name=resource_group_name,
-                       cluster_name=cluster_name,
-                       database_name=database_name,
-                       data_connection_name=data_connection_name,
-                       properties=properties)
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-lines
+
+from knack.util import CLIError
+from azure.cli.core.util import sdk_no_wait
+
+
+def kusto_cluster_list(client,
+                       resource_group_name=None):
+    if resource_group_name:
+        return client.list_by_resource_group(resource_group_name=resource_group_name)
+    return client.list()
+
+
+def kusto_cluster_show(client,
+                       resource_group_name,
+                       cluster_name):
+    return client.get(resource_group_name=resource_group_name,
+                      cluster_name=cluster_name)
+
+
+def kusto_cluster_create(client,
+                         resource_group_name,
+                         cluster_name,
+                         location,
+                         sku,
+                         tags=None,
+                         zones=None,
+                         trusted_external_tenants=None,
+                         optimized_autoscale=None,
+                         enable_disk_encryption=None,
+                         enable_streaming_ingest=None,
+                         virtual_network_configuration=None,
+                         key_vault_properties=None,
+                         enable_purge=None,
+                         enable_double_encryption=None,
+                         engine_type=None,
+                         identity_type=None,
+                         identity_user_assigned_identities=None,
+                         no_wait=False):
+    if enable_streaming_ingest is None:
+        enable_streaming_ingest = False
+    if enable_purge is None:
+        enable_purge = False
+    if enable_double_encryption is None:
+        enable_double_encryption = False
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       tags=tags,
+                       location=location,
+                       sku=sku,
+                       zones=zones,
+                       trusted_external_tenants=trusted_external_tenants,
+                       optimized_autoscale=optimized_autoscale,
+                       enable_disk_encryption=enable_disk_encryption,
+                       enable_streaming_ingest=enable_streaming_ingest,
+                       virtual_network_configuration=virtual_network_configuration,
+                       key_vault_properties=key_vault_properties,
+                       enable_purge=enable_purge,
+                       enable_double_encryption=enable_double_encryption,
+                       engine_type=engine_type,
+                       type=identity_type,
+                       user_assigned_identities=identity_user_assigned_identities)
+
+
+def kusto_cluster_update(client,
+                         resource_group_name,
+                         cluster_name,
+                         tags=None,
+                         location=None,
+                         sku=None,
+                         trusted_external_tenants=None,
+                         optimized_autoscale=None,
+                         enable_disk_encryption=None,
+                         enable_streaming_ingest=None,
+                         virtual_network_configuration=None,
+                         key_vault_properties=None,
+                         enable_purge=None,
+                         enable_double_encryption=None,
+                         engine_type=None,
+                         identity_type=None,
+                         identity_user_assigned_identities=None,
+                         no_wait=False):
+    if enable_streaming_ingest is None:
+        enable_streaming_ingest = False
+    if enable_purge is None:
+        enable_purge = False
+    if enable_double_encryption is None:
+        enable_double_encryption = False
+    return sdk_no_wait(no_wait,
+                       client.begin_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       tags=tags,
+                       location=location,
+                       sku=sku,
+                       trusted_external_tenants=trusted_external_tenants,
+                       optimized_autoscale=optimized_autoscale,
+                       enable_disk_encryption=enable_disk_encryption,
+                       enable_streaming_ingest=enable_streaming_ingest,
+                       virtual_network_configuration=virtual_network_configuration,
+                       key_vault_properties=key_vault_properties,
+                       enable_purge=enable_purge,
+                       enable_double_encryption=enable_double_encryption,
+                       engine_type=engine_type,
+                       type=identity_type,
+                       user_assigned_identities=identity_user_assigned_identities)
+
+
+def kusto_cluster_delete(client,
+                         resource_group_name,
+                         cluster_name,
+                         no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_delete,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name)
+
+
+def kusto_cluster_add_language_extension(client,
+                                         resource_group_name,
+                                         cluster_name,
+                                         value=None,
+                                         no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_add_language_extension,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       value=value)
+
+
+def kusto_cluster_detach_follower_database(client,
+                                           resource_group_name,
+                                           cluster_name,
+                                           cluster_resource_id,
+                                           attached_database_configuration_name,
+                                           no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_detach_follower_database,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       cluster_resource_id=cluster_resource_id,
+                       attached_database_configuration_name=attached_database_configuration_name)
+
+
+def kusto_cluster_diagnose_virtual_network(client,
+                                           resource_group_name,
+                                           cluster_name,
+                                           no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_diagnose_virtual_network,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name)
+
+
+def kusto_cluster_list_follower_database(client,
+                                         resource_group_name,
+                                         cluster_name):
+    return client.list_follower_database(resource_group_name=resource_group_name,
+                                         cluster_name=cluster_name)
+
+
+def kusto_cluster_list_language_extension(client,
+                                          resource_group_name,
+                                          cluster_name):
+    return client.list_language_extension(resource_group_name=resource_group_name,
+                                          cluster_name=cluster_name)
+
+
+def kusto_cluster_list_sku(client,
+                           resource_group_name=None,
+                           cluster_name=None):
+    if resource_group_name and cluster_name is not None:
+        return client.list_sku_by_resource(resource_group_name=resource_group_name,
+                                           cluster_name=cluster_name)
+    return client.list_sku()
+
+
+def kusto_cluster_remove_language_extension(client,
+                                            resource_group_name,
+                                            cluster_name,
+                                            value=None,
+                                            no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_remove_language_extension,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       value=value)
+
+
+def kusto_cluster_start(client,
+                        resource_group_name,
+                        cluster_name,
+                        no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_start,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name)
+
+
+def kusto_cluster_stop(client,
+                       resource_group_name,
+                       cluster_name,
+                       no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_stop,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name)
+
+
+def kusto_cluster_principal_assignment_list(client,
+                                            resource_group_name,
+                                            cluster_name):
+    return client.list(resource_group_name=resource_group_name,
+                       cluster_name=cluster_name)
+
+
+def kusto_cluster_principal_assignment_show(client,
+                                            resource_group_name,
+                                            cluster_name,
+                                            principal_assignment_name):
+    return client.get(resource_group_name=resource_group_name,
+                      cluster_name=cluster_name,
+                      principal_assignment_name=principal_assignment_name)
+
+
+def kusto_cluster_principal_assignment_create(client,
+                                              resource_group_name,
+                                              cluster_name,
+                                              principal_assignment_name,
+                                              principal_id=None,
+                                              role=None,
+                                              tenant_id=None,
+                                              principal_type=None,
+                                              no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       principal_assignment_name=principal_assignment_name,
+                       principal_id=principal_id,
+                       role=role,
+                       tenant_id=tenant_id,
+                       principal_type=principal_type)
+
+
+def kusto_cluster_principal_assignment_update(client,
+                                              resource_group_name,
+                                              cluster_name,
+                                              principal_assignment_name,
+                                              principal_id=None,
+                                              role=None,
+                                              tenant_id=None,
+                                              principal_type=None,
+                                              no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       principal_assignment_name=principal_assignment_name,
+                       principal_id=principal_id,
+                       role=role,
+                       tenant_id=tenant_id,
+                       principal_type=principal_type)
+
+
+def kusto_cluster_principal_assignment_delete(client,
+                                              resource_group_name,
+                                              cluster_name,
+                                              principal_assignment_name,
+                                              no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_delete,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       principal_assignment_name=principal_assignment_name)
+
+
+def kusto_database_list(client,
+                        resource_group_name,
+                        cluster_name):
+    return client.list_by_cluster(resource_group_name=resource_group_name,
+                                  cluster_name=cluster_name)
+
+
+def kusto_database_show(client,
+                        resource_group_name,
+                        cluster_name,
+                        database_name):
+    return client.get(resource_group_name=resource_group_name,
+                      cluster_name=cluster_name,
+                      database_name=database_name)
+
+
+def kusto_database_create(client,
+                          resource_group_name,
+                          cluster_name,
+                          database_name,
+                          read_write_database=None,
+                          read_only_following_database=None,
+                          no_wait=False):
+    all_parameters = []
+    if read_write_database is not None:
+        all_parameters.append(read_write_database)
+    if read_only_following_database is not None:
+        all_parameters.append(read_only_following_database)
+    if len(all_parameters) > 1:
+        raise CLIError('at most one of  read_write_database, read_only_following_database is needed for parameters!')
+    if len(all_parameters) != 1:
+        raise CLIError('parameters is required. but none of read_write_database, read_only_following_database is '
+                       'provided!')
+    parameters = all_parameters[0] if len(all_parameters) == 1 else None
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       parameters=parameters)
+
+
+def kusto_database_update(client,
+                          resource_group_name,
+                          cluster_name,
+                          database_name,
+                          read_write_database=None,
+                          read_only_following_database=None,
+                          no_wait=False):
+    all_parameters = []
+    if read_write_database is not None:
+        all_parameters.append(read_write_database)
+    if read_only_following_database is not None:
+        all_parameters.append(read_only_following_database)
+    if len(all_parameters) > 1:
+        raise CLIError('at most one of  read_write_database, read_only_following_database is needed for parameters!')
+    if len(all_parameters) != 1:
+        raise CLIError('parameters is required. but none of read_write_database, read_only_following_database is '
+                       'provided!')
+    parameters = all_parameters[0] if len(all_parameters) == 1 else None
+    return sdk_no_wait(no_wait,
+                       client.begin_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       parameters=parameters)
+
+
+def kusto_database_delete(client,
+                          resource_group_name,
+                          cluster_name,
+                          database_name,
+                          no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_delete,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name)
+
+
+def kusto_database_add_principal(client,
+                                 resource_group_name,
+                                 cluster_name,
+                                 database_name,
+                                 value=None):
+    return client.add_principal(resource_group_name=resource_group_name,
+                                cluster_name=cluster_name,
+                                database_name=database_name,
+                                value=value)
+
+
+def kusto_database_list_principal(client,
+                                  resource_group_name,
+                                  cluster_name,
+                                  database_name):
+    return client.list_principal(resource_group_name=resource_group_name,
+                                 cluster_name=cluster_name,
+                                 database_name=database_name)
+
+
+def kusto_database_remove_principal(client,
+                                    resource_group_name,
+                                    cluster_name,
+                                    database_name,
+                                    value=None):
+    return client.remove_principal(resource_group_name=resource_group_name,
+                                   cluster_name=cluster_name,
+                                   database_name=database_name,
+                                   value=value)
+
+
+def kusto_database_principal_assignment_list(client,
+                                             resource_group_name,
+                                             cluster_name,
+                                             database_name):
+    return client.list(resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name)
+
+
+def kusto_database_principal_assignment_show(client,
+                                             resource_group_name,
+                                             cluster_name,
+                                             database_name,
+                                             principal_assignment_name):
+    return client.get(resource_group_name=resource_group_name,
+                      cluster_name=cluster_name,
+                      database_name=database_name,
+                      principal_assignment_name=principal_assignment_name)
+
+
+def kusto_database_principal_assignment_create(client,
+                                               resource_group_name,
+                                               cluster_name,
+                                               database_name,
+                                               principal_assignment_name,
+                                               principal_id=None,
+                                               role=None,
+                                               tenant_id=None,
+                                               principal_type=None,
+                                               no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       principal_assignment_name=principal_assignment_name,
+                       principal_id=principal_id,
+                       role=role,
+                       tenant_id=tenant_id,
+                       principal_type=principal_type)
+
+
+def kusto_database_principal_assignment_update(client,
+                                               resource_group_name,
+                                               cluster_name,
+                                               database_name,
+                                               principal_assignment_name,
+                                               principal_id=None,
+                                               role=None,
+                                               tenant_id=None,
+                                               principal_type=None,
+                                               no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       principal_assignment_name=principal_assignment_name,
+                       principal_id=principal_id,
+                       role=role,
+                       tenant_id=tenant_id,
+                       principal_type=principal_type)
+
+
+def kusto_database_principal_assignment_delete(client,
+                                               resource_group_name,
+                                               cluster_name,
+                                               database_name,
+                                               principal_assignment_name,
+                                               no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_delete,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       principal_assignment_name=principal_assignment_name)
+
+
+def kusto_attached_database_configuration_list(client,
+                                               resource_group_name,
+                                               cluster_name):
+    return client.list_by_cluster(resource_group_name=resource_group_name,
+                                  cluster_name=cluster_name)
+
+
+def kusto_attached_database_configuration_show(client,
+                                               resource_group_name,
+                                               cluster_name,
+                                               attached_database_configuration_name):
+    return client.get(resource_group_name=resource_group_name,
+                      cluster_name=cluster_name,
+                      attached_database_configuration_name=attached_database_configuration_name)
+
+
+def kusto_attached_database_configuration_create(client,
+                                                 resource_group_name,
+                                                 cluster_name,
+                                                 attached_database_configuration_name,
+                                                 location=None,
+                                                 database_name=None,
+                                                 cluster_resource_id=None,
+                                                 default_principals_modification_kind=None,
+                                                 no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       attached_database_configuration_name=attached_database_configuration_name,
+                       location=location,
+                       database_name=database_name,
+                       cluster_resource_id=cluster_resource_id,
+                       default_principals_modification_kind=default_principals_modification_kind)
+
+
+def kusto_attached_database_configuration_update(client,
+                                                 resource_group_name,
+                                                 cluster_name,
+                                                 attached_database_configuration_name,
+                                                 location=None,
+                                                 database_name=None,
+                                                 cluster_resource_id=None,
+                                                 default_principals_modification_kind=None,
+                                                 no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       attached_database_configuration_name=attached_database_configuration_name,
+                       location=location,
+                       database_name=database_name,
+                       cluster_resource_id=cluster_resource_id,
+                       default_principals_modification_kind=default_principals_modification_kind)
+
+
+def kusto_attached_database_configuration_delete(client,
+                                                 resource_group_name,
+                                                 cluster_name,
+                                                 attached_database_configuration_name,
+                                                 no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_delete,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       attached_database_configuration_name=attached_database_configuration_name)
+
+
+def kusto_data_connection_list(client,
+                               resource_group_name,
+                               cluster_name,
+                               database_name):
+    return client.list_by_database(resource_group_name=resource_group_name,
+                                   cluster_name=cluster_name,
+                                   database_name=database_name)
+
+
+def kusto_data_connection_show(client,
+                               resource_group_name,
+                               cluster_name,
+                               database_name,
+                               data_connection_name):
+    return client.get(resource_group_name=resource_group_name,
+                      cluster_name=cluster_name,
+                      database_name=database_name,
+                      data_connection_name=data_connection_name)
+
+
+def kusto_data_connection_event_grid_create(client,
+                                            resource_group_name,
+                                            cluster_name,
+                                            database_name,
+                                            data_connection_name,
+                                            location=None,
+                                            storage_account_resource_id=None,
+                                            event_hub_resource_id=None,
+                                            consumer_group=None,
+                                            table_name=None,
+                                            mapping_rule_name=None,
+                                            data_format=None,
+                                            ignore_first_record=None,
+                                            blob_storage_event_type=None,
+                                            no_wait=False):
+    parameters = {}
+    parameters['location'] = location
+    parameters['kind'] = 'EventGrid'
+    parameters['storage_account_resource_id'] = storage_account_resource_id
+    parameters['event_hub_resource_id'] = event_hub_resource_id
+    parameters['consumer_group'] = consumer_group
+    parameters['table_name'] = table_name
+    parameters['mapping_rule_name'] = mapping_rule_name
+    parameters['data_format'] = data_format
+    parameters['ignore_first_record'] = ignore_first_record
+    parameters['blob_storage_event_type'] = blob_storage_event_type
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       parameters=parameters)
+
+
+def kusto_data_connection_event_hub_create(client,
+                                           resource_group_name,
+                                           cluster_name,
+                                           database_name,
+                                           data_connection_name,
+                                           location=None,
+                                           event_hub_resource_id=None,
+                                           consumer_group=None,
+                                           table_name=None,
+                                           mapping_rule_name=None,
+                                           data_format=None,
+                                           event_system_properties=None,
+                                           compression=None,
+                                           no_wait=False):
+    parameters = {}
+    parameters['location'] = location
+    parameters['kind'] = 'EventHub'
+    parameters['event_hub_resource_id'] = event_hub_resource_id
+    parameters['consumer_group'] = consumer_group
+    parameters['table_name'] = table_name
+    parameters['mapping_rule_name'] = mapping_rule_name
+    parameters['data_format'] = data_format
+    parameters['event_system_properties'] = event_system_properties
+    parameters['compression'] = compression
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       parameters=parameters)
+
+
+def kusto_data_connection_iot_hub_create(client,
+                                         resource_group_name,
+                                         cluster_name,
+                                         database_name,
+                                         data_connection_name,
+                                         location=None,
+                                         iot_hub_resource_id=None,
+                                         consumer_group=None,
+                                         table_name=None,
+                                         mapping_rule_name=None,
+                                         data_format=None,
+                                         event_system_properties=None,
+                                         shared_access_policy_name=None,
+                                         no_wait=False):
+    parameters = {}
+    parameters['location'] = location
+    parameters['kind'] = 'IotHub'
+    parameters['iot_hub_resource_id'] = iot_hub_resource_id
+    parameters['consumer_group'] = consumer_group
+    parameters['table_name'] = table_name
+    parameters['mapping_rule_name'] = mapping_rule_name
+    parameters['data_format'] = data_format
+    parameters['event_system_properties'] = event_system_properties
+    parameters['shared_access_policy_name'] = shared_access_policy_name
+    return sdk_no_wait(no_wait,
+                       client.begin_create_or_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       parameters=parameters)
+
+
+def kusto_data_connection_event_grid_update(client,
+                                            resource_group_name,
+                                            cluster_name,
+                                            database_name,
+                                            data_connection_name,
+                                            location=None,
+                                            storage_account_resource_id=None,
+                                            event_hub_resource_id=None,
+                                            consumer_group=None,
+                                            table_name=None,
+                                            mapping_rule_name=None,
+                                            data_format=None,
+                                            ignore_first_record=None,
+                                            blob_storage_event_type=None,
+                                            no_wait=False):
+    parameters = {}
+    parameters['location'] = location
+    parameters['kind'] = 'EventGrid'
+    parameters['storage_account_resource_id'] = storage_account_resource_id
+    parameters['event_hub_resource_id'] = event_hub_resource_id
+    parameters['consumer_group'] = consumer_group
+    parameters['table_name'] = table_name
+    parameters['mapping_rule_name'] = mapping_rule_name
+    parameters['data_format'] = data_format
+    parameters['ignore_first_record'] = ignore_first_record
+    parameters['blob_storage_event_type'] = blob_storage_event_type
+    return sdk_no_wait(no_wait,
+                       client.begin_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       parameters=parameters)
+
+
+def kusto_data_connection_event_hub_update(client,
+                                           resource_group_name,
+                                           cluster_name,
+                                           database_name,
+                                           data_connection_name,
+                                           location=None,
+                                           event_hub_resource_id=None,
+                                           consumer_group=None,
+                                           table_name=None,
+                                           mapping_rule_name=None,
+                                           data_format=None,
+                                           event_system_properties=None,
+                                           compression=None,
+                                           no_wait=False):
+    parameters = {}
+    parameters['location'] = location
+    parameters['kind'] = 'EventHub'
+    parameters['event_hub_resource_id'] = event_hub_resource_id
+    parameters['consumer_group'] = consumer_group
+    parameters['table_name'] = table_name
+    parameters['mapping_rule_name'] = mapping_rule_name
+    parameters['data_format'] = data_format
+    parameters['event_system_properties'] = event_system_properties
+    parameters['compression'] = compression
+    return sdk_no_wait(no_wait,
+                       client.begin_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       parameters=parameters)
+
+
+def kusto_data_connection_iot_hub_update(client,
+                                         resource_group_name,
+                                         cluster_name,
+                                         database_name,
+                                         data_connection_name,
+                                         location=None,
+                                         iot_hub_resource_id=None,
+                                         consumer_group=None,
+                                         table_name=None,
+                                         mapping_rule_name=None,
+                                         data_format=None,
+                                         event_system_properties=None,
+                                         shared_access_policy_name=None,
+                                         no_wait=False):
+    parameters = {}
+    parameters['location'] = location
+    parameters['kind'] = 'IotHub'
+    parameters['iot_hub_resource_id'] = iot_hub_resource_id
+    parameters['consumer_group'] = consumer_group
+    parameters['table_name'] = table_name
+    parameters['mapping_rule_name'] = mapping_rule_name
+    parameters['data_format'] = data_format
+    parameters['event_system_properties'] = event_system_properties
+    parameters['shared_access_policy_name'] = shared_access_policy_name
+    return sdk_no_wait(no_wait,
+                       client.begin_update,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       parameters=parameters)
+
+
+def kusto_data_connection_delete(client,
+                                 resource_group_name,
+                                 cluster_name,
+                                 database_name,
+                                 data_connection_name,
+                                 no_wait=False):
+    return sdk_no_wait(no_wait,
+                       client.begin_delete,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name)
+
+
+def kusto_data_connection_event_grid_data_connection_validation(client,
+                                                                resource_group_name,
+                                                                cluster_name,
+                                                                database_name,
+                                                                data_connection_name=None,
+                                                                location=None,
+                                                                storage_account_resource_id=None,
+                                                                event_hub_resource_id=None,
+                                                                consumer_group=None,
+                                                                table_name=None,
+                                                                mapping_rule_name=None,
+                                                                data_format=None,
+                                                                ignore_first_record=None,
+                                                                blob_storage_event_type=None,
+                                                                no_wait=False):
+    properties = {}
+    properties['location'] = location
+    properties['kind'] = 'EventGrid'
+    properties['storage_account_resource_id'] = storage_account_resource_id
+    properties['event_hub_resource_id'] = event_hub_resource_id
+    properties['consumer_group'] = consumer_group
+    properties['table_name'] = table_name
+    properties['mapping_rule_name'] = mapping_rule_name
+    properties['data_format'] = data_format
+    properties['ignore_first_record'] = ignore_first_record
+    properties['blob_storage_event_type'] = blob_storage_event_type
+    return sdk_no_wait(no_wait,
+                       client.begin_data_connection_validation,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       properties=properties)
+
+
+def kusto_data_connection_event_hub_data_connection_validation(client,
+                                                               resource_group_name,
+                                                               cluster_name,
+                                                               database_name,
+                                                               data_connection_name=None,
+                                                               location=None,
+                                                               event_hub_resource_id=None,
+                                                               consumer_group=None,
+                                                               table_name=None,
+                                                               mapping_rule_name=None,
+                                                               data_format=None,
+                                                               event_system_properties=None,
+                                                               compression=None,
+                                                               no_wait=False):
+    properties = {}
+    properties['location'] = location
+    properties['kind'] = 'EventHub'
+    properties['event_hub_resource_id'] = event_hub_resource_id
+    properties['consumer_group'] = consumer_group
+    properties['table_name'] = table_name
+    properties['mapping_rule_name'] = mapping_rule_name
+    properties['data_format'] = data_format
+    properties['event_system_properties'] = event_system_properties
+    properties['compression'] = compression
+    return sdk_no_wait(no_wait,
+                       client.begin_data_connection_validation,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       properties=properties)
+
+
+def kusto_data_connection_iot_hub_data_connection_validation(client,
+                                                             resource_group_name,
+                                                             cluster_name,
+                                                             database_name,
+                                                             data_connection_name=None,
+                                                             location=None,
+                                                             iot_hub_resource_id=None,
+                                                             consumer_group=None,
+                                                             table_name=None,
+                                                             mapping_rule_name=None,
+                                                             data_format=None,
+                                                             event_system_properties=None,
+                                                             shared_access_policy_name=None,
+                                                             no_wait=False):
+    properties = {}
+    properties['location'] = location
+    properties['kind'] = 'IotHub'
+    properties['iot_hub_resource_id'] = iot_hub_resource_id
+    properties['consumer_group'] = consumer_group
+    properties['table_name'] = table_name
+    properties['mapping_rule_name'] = mapping_rule_name
+    properties['data_format'] = data_format
+    properties['event_system_properties'] = event_system_properties
+    properties['shared_access_policy_name'] = shared_access_policy_name
+    return sdk_no_wait(no_wait,
+                       client.begin_data_connection_validation,
+                       resource_group_name=resource_group_name,
+                       cluster_name=cluster_name,
+                       database_name=database_name,
+                       data_connection_name=data_connection_name,
+                       properties=properties)
diff --git a/src/kusto/azext_kusto/manual/__init__.py b/src/kusto/azext_kusto/manual/__init__.py
index ee0c4f36bd0..c9cfdc73e77 100644
--- a/src/kusto/azext_kusto/manual/__init__.py
+++ b/src/kusto/azext_kusto/manual/__init__.py
@@ -1,12 +1,12 @@
-# coding=utf-8
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-
-__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
diff --git a/src/kusto/azext_kusto/tests/__init__.py b/src/kusto/azext_kusto/tests/__init__.py
index 5f8f1fd97ad..50e0627daff 100644
--- a/src/kusto/azext_kusto/tests/__init__.py
+++ b/src/kusto/azext_kusto/tests/__init__.py
@@ -1,71 +1,114 @@
-# coding=utf-8
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-import inspect
-import os
-import sys
-import traceback
-from azure.core.exceptions import AzureError
-from azure.cli.testsdk.exceptions import CliTestError, CliExecutionError, JMESPathCheckAssertionError
-
-
-__path__ = __import__('pkgutil').extend_path(__path__, __name__)
-exceptions = []
-
-
-def try_manual(func):
-    def import_manual_function(origin_func):
-        from importlib import import_module
-        decorated_path = inspect.getfile(origin_func)
-        module_path = __path__[0]
-        if not decorated_path.startswith(module_path):
-            raise Exception("Decorator can only be used in submodules!")
-        manual_path = os.path.join(
-            decorated_path[module_path.rfind(os.path.sep) + 1:])
-        manual_file_path, manual_file_name = os.path.split(manual_path)
-        module_name, _ = os.path.splitext(manual_file_name)
-        manual_module = "..manual." + \
-            ".".join(manual_file_path.split(os.path.sep) + [module_name, ])
-        return getattr(import_module(manual_module, package=__name__), origin_func.__name__)
-
-    def get_func_to_call():
-        func_to_call = func
-        try:
-            func_to_call = import_manual_function(func)
-            print("Found manual override for {}(...)".format(func.__name__))
-        except (ImportError, AttributeError):
-            pass
-        return func_to_call
-
-    def wrapper(*args, **kwargs):
-        func_to_call = get_func_to_call()
-        print("running {}()...".format(func.__name__))
-        try:
-            return func_to_call(*args, **kwargs)
-        except (AssertionError, AzureError, CliTestError, CliExecutionError, JMESPathCheckAssertionError) as e:
-            print("--------------------------------------")
-            print("step exception: ", e)
-            print("--------------------------------------", file=sys.stderr)
-            print("step exception in {}: {}".format(func.__name__, e), file=sys.stderr)
-            traceback.print_exc()
-            exceptions.append((func.__name__, sys.exc_info()))
-
-    if inspect.isclass(func):
-        return get_func_to_call()
-    return wrapper
-
-
-def raise_if():
-    if exceptions:
-        if len(exceptions) <= 1:
-            raise exceptions[0][1][1]
-        message = "{}\nFollowed with exceptions in other steps:\n".format(str(exceptions[0][1][1]))
-        message += "\n".join(["{}: {}".format(h[0], h[1][1]) for h in exceptions[1:]])
-        raise exceptions[0][1][0](message).with_traceback(exceptions[0][1][2])
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+import inspect
+import logging
+import os
+import sys
+import traceback
+import datetime as dt
+
+from azure.core.exceptions import AzureError
+from azure.cli.testsdk.exceptions import CliTestError, CliExecutionError, JMESPathCheckAssertionError
+
+
+logger = logging.getLogger('azure.cli.testsdk')
+logger.addHandler(logging.StreamHandler())
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+exceptions = []
+test_map = dict()
+SUCCESSED = "successed"
+FAILED = "failed"
+
+
+def try_manual(func):
+    def import_manual_function(origin_func):
+        from importlib import import_module
+        decorated_path = inspect.getfile(origin_func)
+        module_path = __path__[0]
+        if not decorated_path.startswith(module_path):
+            raise Exception("Decorator can only be used in submodules!")
+        manual_path = os.path.join(
+            decorated_path[module_path.rfind(os.path.sep) + 1:])
+        manual_file_path, manual_file_name = os.path.split(manual_path)
+        module_name, _ = os.path.splitext(manual_file_name)
+        manual_module = "..manual." + \
+            ".".join(manual_file_path.split(os.path.sep) + [module_name, ])
+        return getattr(import_module(manual_module, package=__name__), origin_func.__name__)
+
+    def get_func_to_call():
+        func_to_call = func
+        try:
+            func_to_call = import_manual_function(func)
+            func_to_call = import_manual_function(func)
+            logger.info("Found manual override for %s(...)", func.__name__)
+        except (ImportError, AttributeError):
+            pass
+        return func_to_call
+
+    def wrapper(*args, **kwargs):
+        func_to_call = get_func_to_call()
+        logger.info("running %s()...", func.__name__)
+        try:
+            test_map[func.__name__] = dict()
+            test_map[func.__name__]["result"] = SUCCESSED
+            test_map[func.__name__]["error_message"] = ""
+            test_map[func.__name__]["error_stack"] = ""
+            test_map[func.__name__]["error_normalized"] = ""
+            test_map[func.__name__]["start_dt"] = dt.datetime.utcnow()
+            ret = func_to_call(*args, **kwargs)
+        except (AssertionError, AzureError, CliTestError, CliExecutionError, SystemExit,
+                JMESPathCheckAssertionError) as e:
+            test_map[func.__name__]["end_dt"] = dt.datetime.utcnow()
+            test_map[func.__name__]["result"] = FAILED
+            test_map[func.__name__]["error_message"] = str(e).replace("\r\n", " ").replace("\n", " ")[:500]
+            test_map[func.__name__]["error_stack"] = traceback.format_exc().replace(
+                "\r\n", " ").replace("\n", " ")[:500]
+            logger.info("--------------------------------------")
+            logger.info("step exception: %s", e)
+            logger.error("--------------------------------------")
+            logger.error("step exception in %s: %s", func.__name__, e)
+            logger.info(traceback.format_exc())
+            exceptions.append((func.__name__, sys.exc_info()))
+        else:
+            test_map[func.__name__]["end_dt"] = dt.datetime.utcnow()
+            return ret
+
+    if inspect.isclass(func):
+        return get_func_to_call()
+    return wrapper
+
+
+def calc_coverage(filename):
+    filename = filename.split(".")[0]
+    coverage_name = filename + "_coverage.md"
+    with open(coverage_name, "w") as f:
+        f.write("|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt|\n")
+        total = len(test_map)
+        covered = 0
+        for k, v in test_map.items():
+            if not k.startswith("step_"):
+                total -= 1
+                continue
+            if v["result"] == SUCCESSED:
+                covered += 1
+            f.write("|{step_name}|{result}|{error_message}|{error_stack}|{error_normalized}|{start_dt}|"
+                    "{end_dt}|\n".format(step_name=k, **v))
+        f.write("Coverage: {}/{}\n".format(covered, total))
+    print("Create coverage\n", file=sys.stderr)
+
+
+def raise_if():
+    if exceptions:
+        if len(exceptions) <= 1:
+            raise exceptions[0][1][1]
+        message = "{}\nFollowed with exceptions in other steps:\n".format(str(exceptions[0][1][1]))
+        message += "\n".join(["{}: {}".format(h[0], h[1][1]) for h in exceptions[1:]])
+        raise exceptions[0][1][0](message).with_traceback(exceptions[0][1][2])
diff --git a/src/kusto/azext_kusto/tests/latest/__init__.py b/src/kusto/azext_kusto/tests/latest/__init__.py
index ee0c4f36bd0..c9cfdc73e77 100644
--- a/src/kusto/azext_kusto/tests/latest/__init__.py
+++ b/src/kusto/azext_kusto/tests/latest/__init__.py
@@ -1,12 +1,12 @@
-# coding=utf-8
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-
-__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
diff --git a/src/kusto/azext_kusto/tests/latest/test_kusto_scenario.py b/src/kusto/azext_kusto/tests/latest/test_kusto_scenario.py
index 2fc3d87700e..b4fe6edbdb1 100644
--- a/src/kusto/azext_kusto/tests/latest/test_kusto_scenario.py
+++ b/src/kusto/azext_kusto/tests/latest/test_kusto_scenario.py
@@ -1,533 +1,584 @@
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-
-import os
-from azure.cli.testsdk import ScenarioTest
-from .. import try_manual, raise_if
-from azure.cli.testsdk import ResourceGroupPreparer
-
-
-TEST_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__), '..'))
-
-
-@try_manual
-def setup(test, rg):
-    pass
-
-
-# EXAMPLE: KustoClustersCreateOrUpdate
-@try_manual
-def step_kustoclusterscreateorupdate(test, rg):
-    test.cmd('az kusto cluster create '
-             '--name "{Clusters_3}" '
-             '--identity-type "SystemAssigned" '
-             '--location "westus" '
-             '--enable-double-encryption false '
-             '--enable-purge true '
-             '--enable-streaming-ingest true '
-             '--sku name="Standard_L8s" capacity=2 tier="Standard" '
-             '--resource-group "{rg}"',
-             checks=[])
-    test.cmd('az kusto cluster wait --created '
-             '--name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasesCreateOrUpdate
-@try_manual
-def step_kustodatabasescreateorupdate(test, rg):
-    test.cmd('az kusto database create '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--parameters "{{\\"location\\":\\"westus\\",\\"properties\\":{{\\"softDeletePeriod\\":\\"P1D\\"}}}}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDataConnectionsCreateOrUpdate
-@try_manual
-def step_kustodataconnectionscreateorupdate(test, rg):
-    test.cmd('az kusto data-connection event-hub create '
-             '--cluster-name "{Clusters_3}" '
-             '--name "{DataConnections8}" '
-             '--database-name "KustoDatabase8" '
-             '--location "westus" '
-             '--consumer-group "testConsumerGroup1" '
-             '--event-hub-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.EventHu'
-             'b/namespaces/eventhubTestns1/eventhubs/eventhubTest1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: AttachedDatabaseConfigurationsCreateOrUpdate
-@try_manual
-def step_attacheddatabaseconfigurationscreateorupdate(test, rg):
-    test.cmd('az kusto attached-database-configuration create '
-             '--name "{attachedDatabaseConfigurations1}" '
-             '--cluster-name "{Clusters_3}" '
-             '--location "westus" '
-             '--cluster-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.Kusto/Clu'
-             'sters/{Clusters_2}" '
-             '--database-name "kustodatabase" '
-             '--default-principals-modification-kind "Union" '
-             '--resource-group "{rg}"',
-             checks=[])
-    test.cmd('az kusto attached-database-configuration wait --created '
-             '--name "{attachedDatabaseConfigurations1}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: AttachedDatabaseConfigurationsGet
-@try_manual
-def step_attacheddatabaseconfigurationsget(test, rg):
-    test.cmd('az kusto attached-database-configuration show '
-             '--name "{attachedDatabaseConfigurations1}" '
-             '--cluster-name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-# EXAMPLE: KustoDataConnectionsGet
-
-
-@try_manual
-def step_kustodataconnectionsget(test, rg):
-    test.cmd('az kusto data-connection show '
-             '--name "{DataConnections8}" '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasesListByCluster
-@try_manual
-def step_kustodatabaseslistbycluster(test, rg):
-    test.cmd('az kusto database list '
-             '--cluster-name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoAttachedDatabaseConfigurationsListByCluster
-@try_manual
-def step_kustoattacheddatabaseconfigurationslistbycluster(test, rg):
-    test.cmd('az kusto attached-database-configuration list '
-             '--cluster-name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasesGet
-@try_manual
-def step_kustodatabasesget(test, rg):
-    test.cmd('az kusto database show '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasesListByCluster
-@try_manual
-def step_kustodatabaseslistbycluster(test, rg):
-    test.cmd('az kusto database list '
-             '--cluster-name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersListResourceSkus
-@try_manual
-def step_kustoclusterslistresourceskus(test, rg):
-    test.cmd('az kusto cluster list-sku '
-             '--name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersGet
-@try_manual
-def step_kustoclustersget(test, rg):
-    test.cmd('az kusto cluster show '
-             '--name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersListByResourceGroup
-@try_manual
-def step_kustoclusterslistbyresourcegroup(test, rg):
-    test.cmd('az kusto cluster list '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersList
-@try_manual
-def step_kustoclusterslist(test, rg):
-    test.cmd('az kusto cluster list '
-             '-g ""',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersListSkus
-@try_manual
-def step_kustoclusterslistskus(test, rg):
-    test.cmd('az kusto cluster list-sku '
-             '-g ""',
-             checks=[])
-
-
-# EXAMPLE: KustoOperationsList
-@try_manual
-def step_kustooperationslist(test, rg):
-    # EXAMPLE NOT FOUND!
-    pass
-
-
-# EXAMPLE: KustoDataConnectionsUpdate
-@try_manual
-def step_kustodataconnectionsupdate(test, rg):
-    test.cmd('az kusto data-connection event-hub update '
-             '--cluster-name "{Clusters_3}" '
-             '--name "{DataConnections8}" '
-             '--database-name "KustoDatabase8" '
-             '--location "westus" '
-             '--consumer-group "testConsumerGroup1" '
-             '--event-hub-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.EventHu'
-             'b/namespaces/eventhubTestns1/eventhubs/eventhubTest1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDataConnectionValidation
-@try_manual
-def step_kustodataconnectionvalidation(test, rg):
-    test.cmd('az kusto data-connection event-hub data-connection-validation '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--name "{DataConnections8}" '
-             '--consumer-group "testConsumerGroup1" '
-             '--event-hub-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.EventHu'
-             'b/namespaces/eventhubTestns1/eventhubs/eventhubTest1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDataConnectionsCheckNameAvailability
-@try_manual
-def step_kustodataconnectionschecknameavailability(test, rg):
-    # EXAMPLE NOT FOUND!
-    pass
-
-
-# EXAMPLE: KustoDatabaseRemovePrincipals
-@try_manual
-def step_kustodatabaseremoveprincipals(test, rg):
-    test.cmd('az kusto database remove-principal '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--value name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser role="Admin" '
-             '--value name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup role="Viewer" '
-             '--value name="SomeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp role="Admin" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabaseListPrincipals
-@try_manual
-def step_kustodatabaselistprincipals(test, rg):
-    test.cmd('az kusto database list-principal '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabaseAddPrincipals
-@try_manual
-def step_kustodatabaseaddprincipals(test, rg):
-    test.cmd('az kusto database add-principal '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--value name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser role="Admin" '
-             '--value name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup role="Viewer" '
-             '--value name="SomeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp role="Admin" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasesUpdate
-@try_manual
-def step_kustodatabasesupdate(test, rg):
-    test.cmd('az kusto database update '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--parameters "{{\\"properties\\":{{\\"softDeletePeriod\\":\\"P1D\\"}}}}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClusterDetachFollowerDatabases
-@try_manual
-def step_kustoclusterdetachfollowerdatabases(test, rg):
-    test.cmd('az kusto cluster detach-follower-database '
-             '--name "{Clusters_3}" '
-             '--attached-database-configuration-name "{AttachedDatabaseConfigurations_2}" '
-             '--cluster-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.Kusto/clu'
-             'sters/{leader4}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabaseCheckNameAvailability
-@try_manual
-def step_kustodatabasechecknameavailability(test, rg):
-    # EXAMPLE NOT FOUND!
-    pass
-
-
-# EXAMPLE: KustoClusterListFollowerDatabases
-@try_manual
-def step_kustoclusterlistfollowerdatabases(test, rg):
-    test.cmd('az kusto cluster list-follower-database '
-             '--name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersStart
-@try_manual
-def step_kustoclustersstart(test, rg):
-    test.cmd('az kusto cluster start '
-             '--name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersStop
-@try_manual
-def step_kustoclustersstop(test, rg):
-    test.cmd('az kusto cluster stop '
-             '--name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersUpdate
-@try_manual
-def step_kustoclustersupdate(test, rg):
-    test.cmd('az kusto cluster update '
-             '--name "{Clusters_3}" '
-             '--identity-type "SystemAssigned" '
-             '--location "westus" '
-             '--enable-purge true '
-             '--enable-streaming-ingest true '
-             '--key-vault-properties key-name="keyName" key-vault-uri="https://dummy.keyvault.com" key-version="keyVers'
-             'ion" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersCheckNameAvailability
-@try_manual
-def step_kustoclusterschecknameavailability(test, rg):
-    # EXAMPLE NOT FOUND!
-    pass
-
-
-# EXAMPLE: AttachedDatabaseConfigurationsDelete
-@try_manual
-def step_attacheddatabaseconfigurationsdelete(test, rg):
-    test.cmd('az kusto attached-database-configuration delete '
-             '--name "{attachedDatabaseConfigurations1}" '
-             '--cluster-name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDataConnectionsDelete
-@try_manual
-def step_kustodataconnectionsdelete(test, rg):
-    test.cmd('az kusto data-connection delete '
-             '--cluster-name "{Clusters_3}" '
-             '--name "{DataConnections_2}" '
-             '--database-name "KustoDatabase8" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasesDelete
-@try_manual
-def step_kustodatabasesdelete(test, rg):
-    test.cmd('az kusto database delete '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "KustoDatabase8" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClustersDelete
-@try_manual
-def step_kustoclustersdelete(test, rg):
-    test.cmd('az kusto cluster delete '
-             '--name "{Clusters_3}" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasePrincipalAssignmentsGet
-@try_manual
-def step_kustodatabaseprincipalassignmentsget(test, rg):
-    test.cmd('az kusto database-principal-assignment show '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "Kustodatabase8" '
-             '--principal-assignment-name "kustoprincipal1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasePrincipalAssignmentsCreateOrUpdate
-@try_manual
-def step_kustodatabaseprincipalassignmentscreateorupdate(test, rg):
-    test.cmd('az kusto database-principal-assignment create '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "Kustodatabase8" '
-             '--principal-id "87654321-1234-1234-1234-123456789123" '
-             '--principal-type "App" '
-             '--role "Admin" '
-             '--tenant-id "12345678-1234-1234-1234-123456789123" '
-             '--principal-assignment-name "kustoprincipal1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoDatabasePrincipalAssignmentsDelete
-@try_manual
-def step_kustodatabaseprincipalassignmentsdelete(test, rg):
-    test.cmd('az kusto database-principal-assignment delete '
-             '--cluster-name "{Clusters_3}" '
-             '--database-name "Kustodatabase8" '
-             '--principal-assignment-name "kustoprincipal1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClusterPrincipalAssignmentsGet
-@try_manual
-def step_kustoclusterprincipalassignmentsget(test, rg):
-    test.cmd('az kusto cluster-principal-assignment show '
-             '--cluster-name "{Clusters_3}" '
-             '--principal-assignment-name "kustoprincipal1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClusterPrincipalAssignmentsCreateOrUpdate
-@try_manual
-def step_kustoclusterprincipalassignmentscreateorupdate(test, rg):
-    test.cmd('az kusto cluster-principal-assignment create '
-             '--cluster-name "{Clusters_3}" '
-             '--principal-id "87654321-1234-1234-1234-123456789123" '
-             '--principal-type "App" '
-             '--role "AllDatabasesAdmin" '
-             '--tenant-id "12345678-1234-1234-1234-123456789123" '
-             '--principal-assignment-name "kustoprincipal1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-# EXAMPLE: KustoClusterPrincipalAssignmentsDelete
-@try_manual
-def step_kustoclusterprincipalassignmentsdelete(test, rg):
-    test.cmd('az kusto cluster-principal-assignment delete '
-             '--cluster-name "{Clusters_3}" '
-             '--principal-assignment-name "kustoprincipal1" '
-             '--resource-group "{rg}"',
-             checks=[])
-
-
-@try_manual
-def cleanup(test, rg):
-    pass
-
-
-@try_manual
-def call_scenario(test, rg):
-    setup(test, rg)
-    step_kustoclusterscreateorupdate(test, rg)
-    step_kustodatabasescreateorupdate(test, rg)
-    step_kustodataconnectionscreateorupdate(test, rg)
-    step_attacheddatabaseconfigurationscreateorupdate(test, rg)
-    step_attacheddatabaseconfigurationsget(test, rg)
-    step_kustodataconnectionsget(test, rg)
-    step_kustodatabaseslistbycluster(test, rg)
-    step_kustoattacheddatabaseconfigurationslistbycluster(test, rg)
-    step_kustodatabasesget(test, rg)
-    step_kustodatabaseslistbycluster(test, rg)
-    step_kustoclusterslistresourceskus(test, rg)
-    step_kustoclustersget(test, rg)
-    step_kustoclusterslistbyresourcegroup(test, rg)
-    step_kustoclusterslist(test, rg)
-    step_kustoclusterslistskus(test, rg)
-    step_kustooperationslist(test, rg)
-    step_kustodataconnectionsupdate(test, rg)
-    step_kustodataconnectionvalidation(test, rg)
-    step_kustodataconnectionschecknameavailability(test, rg)
-    step_kustodatabaseremoveprincipals(test, rg)
-    step_kustodatabaselistprincipals(test, rg)
-    step_kustodatabaseaddprincipals(test, rg)
-    step_kustodatabasesupdate(test, rg)
-    step_kustoclusterdetachfollowerdatabases(test, rg)
-    step_kustodatabasechecknameavailability(test, rg)
-    step_kustoclusterlistfollowerdatabases(test, rg)
-    step_kustoclustersstart(test, rg)
-    step_kustoclustersstop(test, rg)
-    step_kustoclustersupdate(test, rg)
-    step_kustoclusterschecknameavailability(test, rg)
-    step_attacheddatabaseconfigurationsdelete(test, rg)
-    step_kustodataconnectionsdelete(test, rg)
-    step_kustodatabasesdelete(test, rg)
-    step_kustoclustersdelete(test, rg)
-    step_kustodatabaseprincipalassignmentsget(test, rg)
-    step_kustodatabaseprincipalassignmentscreateorupdate(test, rg)
-    step_kustodatabaseprincipalassignmentsdelete(test, rg)
-    step_kustoclusterprincipalassignmentsget(test, rg)
-    step_kustoclusterprincipalassignmentscreateorupdate(test, rg)
-    step_kustoclusterprincipalassignmentsdelete(test, rg)
-    cleanup(test, rg)
-
-
-@try_manual
-class KustoManagementClientScenarioTest(ScenarioTest):
-
-    @ResourceGroupPreparer(name_prefix='clitestkusto_kustorptest'[:7], key='rg', parameter_name='rg')
-    def test_kusto(self, rg):
-
-        self.kwargs.update({
-            'subscription_id': self.get_subscription_id()
-        })
-
-        self.kwargs.update({
-            'Clusters_4': 'default',
-            'AttachedDatabaseConfigurations_3': 'default',
-            'leader4': 'leader4',
-            'Clusters_2': 'KustoClusterLeader',
-            'Clusters_3': 'kustoclusterrptest4',
-            'attachedDatabaseConfigurations1': 'attachedDatabaseConfigurations1',
-            'AttachedDatabaseConfigurations_2': 'myAttachedDatabaseConfiguration',
-            'DataConnections8': 'DataConnections8',
-            'DataConnections_2': 'kustoeventhubconnection1',
-        })
-
-        call_scenario(self, rg)
-        raise_if()
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import os
+from azure.cli.testsdk import ScenarioTest
+from .. import try_manual, raise_if, calc_coverage
+from azure.cli.testsdk import ResourceGroupPreparer
+
+
+TEST_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__), '..'))
+
+
+# Env setup
+@try_manual
+def setup(test, rg):
+    pass
+
+
+# EXAMPLE: KustoClustersCreateOrUpdate
+@try_manual
+def step_kustoclusterscreateorupdate(test, rg):
+    test.cmd('az kusto cluster create '
+             '--name "{myCluster}" '
+             '--identity-type "SystemAssigned" '
+             '--location "westus" '
+             '--enable-double-encryption false '
+             '--enable-purge true '
+             '--enable-streaming-ingest true '
+             '--sku name="Standard_L8s" capacity=2 tier="Standard" '
+             '--resource-group "{rg}"',
+             checks=[
+                 test.check("name", "{myCluster}", case_sensitive=False),
+                 test.check("identity.type", "SystemAssigned", case_sensitive=False),
+                 test.check("location", "westus", case_sensitive=False),
+                 test.check("enableDoubleEncryption", False),
+                 test.check("enablePurge", True),
+                 test.check("enableStreamingIngest", True),
+                 test.check("sku.name", "Standard_L8s", case_sensitive=False),
+                 test.check("sku.capacity", 2),
+                 test.check("sku.tier", "Standard", case_sensitive=False),
+             ])
+    test.cmd('az kusto cluster wait --created '
+             '--name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabasesCreateOrUpdate
+@try_manual
+def step_kustodatabasescreateorupdate(test, rg):
+    test.cmd('az kusto database create '
+             '--cluster-name "{myCluster}" '
+             '--database-name "KustoDatabase8" '
+             '--parameters "{{\\"location\\":\\"westus\\",\\"properties\\":{{\\"softDeletePeriod\\":\\"P1D\\"}}}}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDataConnectionsCreateOrUpdate
+@try_manual
+def step_kustodataconnectionscreateorupdate(test, rg):
+    test.cmd('az kusto data-connection event-hub create '
+             '--cluster-name "{myCluster}" '
+             '--name "{myDataConnection}" '
+             '--database-name "KustoDatabase8" '
+             '--location "westus" '
+             '--consumer-group "testConsumerGroup1" '
+             '--event-hub-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.EventHu'
+             'b/namespaces/eventhubTestns1/eventhubs/eventhubTest1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: AttachedDatabaseConfigurationsCreateOrUpdate
+@try_manual
+def step_attacheddatabaseconfigurationscreateorupdate(test, rg):
+    test.cmd('az kusto attached-database-configuration create '
+             '--name "{myAttachedDatabaseConfiguration2}" '
+             '--cluster-name "{myCluster}" '
+             '--location "westus" '
+             '--cluster-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.Kusto/Clu'
+             'sters/{myCluster3}" '
+             '--database-name "kustodatabase" '
+             '--default-principals-modification-kind "Union" '
+             '--resource-group "{rg}"',
+             checks=[
+                 test.check("location", "westus", case_sensitive=False),
+                 test.check("clusterResourceId", "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Micros"
+                            "oft.Kusto/Clusters/{myCluster3}", case_sensitive=False),
+                 test.check("defaultPrincipalsModificationKind", "Union", case_sensitive=False),
+             ])
+    test.cmd('az kusto attached-database-configuration wait --created '
+             '--name "{myAttachedDatabaseConfiguration2}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: AttachedDatabaseConfigurationsGet
+@try_manual
+def step_attacheddatabaseconfigurationsget(test, rg):
+    test.cmd('az kusto attached-database-configuration show '
+             '--name "{myAttachedDatabaseConfiguration2}" '
+             '--cluster-name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[
+                 test.check("location", "westus", case_sensitive=False),
+                 test.check("defaultPrincipalsModificationKind", "Union", case_sensitive=False),
+             ])
+
+
+# EXAMPLE: KustoDataConnectionsGet
+@try_manual
+def step_kustodataconnectionsget(test, rg):
+    test.cmd('az kusto data-connection show '
+             '--cluster-name "{myCluster}" '
+             '--name "{myDataConnection}" '
+             '--database-name "KustoDatabase8" '
+             '--resource-group "{rg}"',
+             checks=[
+                 test.check("location", "westus", case_sensitive=False),
+                 test.check("consumerGroup", "testConsumerGroup1", case_sensitive=False),
+                 test.check("eventHubResourceId", "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Micro"
+                            "soft.EventHub/namespaces/eventhubTestns1/eventhubs/eventhubTest1", case_sensitive=False),
+             ])
+
+
+# EXAMPLE: KustoDatabasesListByCluster
+@try_manual
+def step_kustodatabaseslistbycluster(test, rg):
+    test.cmd('az kusto database list '
+             '--cluster-name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoAttachedDatabaseConfigurationsListByCluster
+@try_manual
+def step_kustoattacheddatabaseconfigurationslistbyclus(test, rg):
+    test.cmd('az kusto attached-database-configuration list '
+             '--cluster-name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[
+                 test.check('length(@)', 1),
+             ])
+
+
+# EXAMPLE: KustoDatabasesGet
+@try_manual
+def step_kustodatabasesget(test, rg):
+    test.cmd('az kusto database show '
+             '--cluster-name "{myCluster}" '
+             '--database-name "KustoDatabase8" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabasesListByCluster
+@try_manual
+def step_kustodatabaseslistbycluster(test, rg):
+    test.cmd('az kusto database list '
+             '--cluster-name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClustersListResourceSkus
+@try_manual
+def step_kustoclusterslistresourceskus(test, rg):
+    test.cmd('az kusto cluster list-sku '
+             '--name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClustersGet
+@try_manual
+def step_kustoclustersget(test, rg):
+    test.cmd('az kusto cluster show '
+             '--name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[
+                 test.check("name", "{myCluster}", case_sensitive=False),
+                 test.check("identity.type", "SystemAssigned", case_sensitive=False),
+                 test.check("location", "westus", case_sensitive=False),
+                 test.check("enableStreamingIngest", True),
+                 test.check("sku.name", "Standard_L8s", case_sensitive=False),
+                 test.check("sku.capacity", 2),
+                 test.check("sku.tier", "Standard", case_sensitive=False),
+             ])
+
+
+# EXAMPLE: KustoClustersListByResourceGroup
+@try_manual
+def step_kustoclusterslistbyresourcegroup(test, rg):
+    test.cmd('az kusto cluster list '
+             '--resource-group "{rg}"',
+             checks=[
+                 test.check('length(@)', 1),
+             ])
+
+
+# EXAMPLE: KustoClustersList
+@try_manual
+def step_kustoclusterslist(test, rg):
+    test.cmd('az kusto cluster list '
+             '-g ""',
+             checks=[
+                 test.check('length(@)', 1),
+             ])
+
+
+# EXAMPLE: KustoClustersListSkus
+@try_manual
+def step_kustoclusterslistskus(test, rg):
+    test.cmd('az kusto cluster list-sku '
+             '-g ""',
+             checks=[])
+
+
+# EXAMPLE: KustoOperationsList
+@try_manual
+def step_kustooperationslist(test, rg):
+    # EXAMPLE NOT FOUND!
+    pass
+
+
+# EXAMPLE: KustoDataConnectionsUpdate
+@try_manual
+def step_kustodataconnectionsupdate(test, rg):
+    test.cmd('az kusto data-connection event-hub update '
+             '--cluster-name "{myCluster}" '
+             '--name "{myDataConnection}" '
+             '--database-name "KustoDatabase8" '
+             '--location "westus" '
+             '--consumer-group "testConsumerGroup1" '
+             '--event-hub-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.EventHu'
+             'b/namespaces/eventhubTestns1/eventhubs/eventhubTest1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDataConnectionValidation
+@try_manual
+def step_kustodataconnectionvalidation(test, rg):
+    test.cmd('az kusto data-connection event-hub data-connection-validation '
+             '--cluster-name "{myCluster}" '
+             '--database-name "KustoDatabase8" '
+             '--name "{myDataConnection}" '
+             '--consumer-group "testConsumerGroup1" '
+             '--event-hub-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.EventHu'
+             'b/namespaces/eventhubTestns1/eventhubs/eventhubTest1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDataConnectionsCheckNameAvailability
+@try_manual
+def step_kustodataconnectionschecknameavailability(test, rg):
+    # EXAMPLE NOT FOUND!
+    pass
+
+
+# EXAMPLE: KustoDatabaseRemovePrincipals
+@try_manual
+def step_kustodatabaseremoveprincipals(test, rg):
+    test.cmd('az kusto database remove-principal '
+             '--cluster-name "{myCluster}" '
+             '--database-name "KustoDatabase8" '
+             '--value name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser role="Admin" '
+             '--value name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup role="Viewer" '
+             '--value name="SomeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp role="Admin" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabaseListPrincipals
+@try_manual
+def step_kustodatabaselistprincipals(test, rg):
+    test.cmd('az kusto database list-principal '
+             '--cluster-name "{myCluster}" '
+             '--database-name "KustoDatabase8" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabaseAddPrincipals
+@try_manual
+def step_kustodatabaseaddprincipals(test, rg):
+    test.cmd('az kusto database add-principal '
+             '--cluster-name "{myCluster}" '
+             '--database-name "KustoDatabase8" '
+             '--value name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser role="Admin" '
+             '--value name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup role="Viewer" '
+             '--value name="SomeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp role="Admin" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabasesUpdate
+@try_manual
+def step_kustodatabasesupdate(test, rg):
+    test.cmd('az kusto database update '
+             '--cluster-name "{myCluster}" '
+             '--database-name "KustoDatabase8" '
+             '--parameters "{{\\"properties\\":{{\\"softDeletePeriod\\":\\"P1D\\"}}}}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClusterDetachFollowerDatabases
+@try_manual
+def step_kustoclusterdetachfollowerdatabases(test, rg):
+    test.cmd('az kusto cluster detach-follower-database '
+             '--name "{myCluster}" '
+             '--attached-database-configuration-name "{myAttachedDatabaseConfiguration}" '
+             '--cluster-resource-id "/subscriptions/{subscription_id}/resourceGroups/{rg}/providers/Microsoft.Kusto/clu'
+             'sters/{myCluster2}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabaseCheckNameAvailability
+@try_manual
+def step_kustodatabasechecknameavailability(test, rg):
+    # EXAMPLE NOT FOUND!
+    pass
+
+
+# EXAMPLE: KustoClusterListFollowerDatabases
+@try_manual
+def step_kustoclusterlistfollowerdatabases(test, rg):
+    test.cmd('az kusto cluster list-follower-database '
+             '--name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClustersStart
+@try_manual
+def step_kustoclustersstart(test, rg):
+    test.cmd('az kusto cluster start '
+             '--name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClustersStop
+@try_manual
+def step_kustoclustersstop(test, rg):
+    test.cmd('az kusto cluster stop '
+             '--name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClustersUpdate
+@try_manual
+def step_kustoclustersupdate(test, rg):
+    test.cmd('az kusto cluster update '
+             '--name "{myCluster}" '
+             '--identity-type "SystemAssigned" '
+             '--location "westus" '
+             '--enable-purge true '
+             '--enable-streaming-ingest true '
+             '--engine-type "V2" '
+             '--key-vault-properties key-name="keyName" key-vault-uri="https://dummy.keyvault.com" '
+             'key-version="keyVersion" '
+             '--resource-group "{rg}"',
+             checks=[
+                 test.check("name", "{myCluster}", case_sensitive=False),
+                 test.check("identity.type", "SystemAssigned", case_sensitive=False),
+                 test.check("location", "westus", case_sensitive=False),
+                 test.check("enablePurge", True),
+                 test.check("enableStreamingIngest", True),
+                 test.check("engineType", "V2", case_sensitive=False),
+                 test.check("keyVaultProperties.keyName", "keyName", case_sensitive=False),
+                 test.check("keyVaultProperties.keyVaultUri", "https://dummy.keyvault.com", case_sensitive=False),
+                 test.check("keyVaultProperties.keyVersion", "keyVersion", case_sensitive=False),
+             ])
+
+
+# EXAMPLE: KustoClustersCheckNameAvailability
+@try_manual
+def step_kustoclusterschecknameavailability(test, rg):
+    # EXAMPLE NOT FOUND!
+    pass
+
+
+# EXAMPLE: AttachedDatabaseConfigurationsDelete
+@try_manual
+def step_attacheddatabaseconfigurationsdelete(test, rg):
+    test.cmd('az kusto attached-database-configuration delete -y '
+             '--name "{myAttachedDatabaseConfiguration2}" '
+             '--cluster-name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDataConnectionsDelete
+@try_manual
+def step_kustodataconnectionsdelete(test, rg):
+    test.cmd('az kusto data-connection delete -y '
+             '--cluster-name "{myCluster}" '
+             '--name "{myDataConnection2}" '
+             '--database-name "KustoDatabase8" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabasesDelete
+@try_manual
+def step_kustodatabasesdelete(test, rg):
+    test.cmd('az kusto database delete -y '
+             '--cluster-name "{myCluster}" '
+             '--database-name "KustoDatabase8" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClustersDelete
+@try_manual
+def step_kustoclustersdelete(test, rg):
+    test.cmd('az kusto cluster delete -y '
+             '--name "{myCluster}" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabasePrincipalAssignmentsGet
+@try_manual
+def step_kustodatabaseprincipalassignmentsget(test, rg):
+    test.cmd('az kusto database-principal-assignment show '
+             '--cluster-name "{myCluster}" '
+             '--database-name "Kustodatabase8" '
+             '--principal-assignment-name "kustoprincipal1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabasePrincipalAssignmentsCreateOrUpdate
+@try_manual
+def step_kustodatabaseprincipalassignmentscreateorupda(test, rg):
+    test.cmd('az kusto database-principal-assignment create '
+             '--cluster-name "{myCluster}" '
+             '--database-name "Kustodatabase8" '
+             '--principal-id "87654321-1234-1234-1234-123456789123" '
+             '--principal-type "App" '
+             '--role "Admin" '
+             '--tenant-id "12345678-1234-1234-1234-123456789123" '
+             '--principal-assignment-name "kustoprincipal1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoDatabasePrincipalAssignmentsDelete
+@try_manual
+def step_kustodatabaseprincipalassignmentsdelete(test, rg):
+    test.cmd('az kusto database-principal-assignment delete -y '
+             '--cluster-name "{myCluster}" '
+             '--database-name "Kustodatabase8" '
+             '--principal-assignment-name "kustoprincipal1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClusterPrincipalAssignmentsGet
+@try_manual
+def step_kustoclusterprincipalassignmentsget(test, rg):
+    test.cmd('az kusto cluster-principal-assignment show '
+             '--cluster-name "{myCluster}" '
+             '--principal-assignment-name "kustoprincipal1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClusterPrincipalAssignmentsCreateOrUpdate
+@try_manual
+def step_kustoclusterprincipalassignmentscreateorupdat(test, rg):
+    test.cmd('az kusto cluster-principal-assignment create '
+             '--cluster-name "{myCluster}" '
+             '--principal-id "87654321-1234-1234-1234-123456789123" '
+             '--principal-type "App" '
+             '--role "AllDatabasesAdmin" '
+             '--tenant-id "12345678-1234-1234-1234-123456789123" '
+             '--principal-assignment-name "kustoprincipal1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# EXAMPLE: KustoClusterPrincipalAssignmentsDelete
+@try_manual
+def step_kustoclusterprincipalassignmentsdelete(test, rg):
+    test.cmd('az kusto cluster-principal-assignment delete -y '
+             '--cluster-name "{myCluster}" '
+             '--principal-assignment-name "kustoprincipal1" '
+             '--resource-group "{rg}"',
+             checks=[])
+
+
+# Env cleanup
+@try_manual
+def cleanup(test, rg):
+    pass
+
+
+# Testcase
+@try_manual
+def call_scenario(test, rg):
+    setup(test, rg)
+    step_kustoclusterscreateorupdate(test, rg)
+    step_kustodatabasescreateorupdate(test, rg)
+    step_kustodataconnectionscreateorupdate(test, rg)
+    step_attacheddatabaseconfigurationscreateorupdate(test, rg)
+    step_attacheddatabaseconfigurationsget(test, rg)
+    step_kustodataconnectionsget(test, rg)
+    step_kustodatabaseslistbycluster(test, rg)
+    step_kustoattacheddatabaseconfigurationslistbyclus(test, rg)
+    step_kustodatabasesget(test, rg)
+    step_kustodatabaseslistbycluster(test, rg)
+    step_kustoclusterslistresourceskus(test, rg)
+    step_kustoclustersget(test, rg)
+    step_kustoclusterslistbyresourcegroup(test, rg)
+    step_kustoclusterslist(test, rg)
+    step_kustoclusterslistskus(test, rg)
+    step_kustooperationslist(test, rg)
+    step_kustodataconnectionsupdate(test, rg)
+    step_kustodataconnectionvalidation(test, rg)
+    step_kustodataconnectionschecknameavailability(test, rg)
+    step_kustodatabaseremoveprincipals(test, rg)
+    step_kustodatabaselistprincipals(test, rg)
+    step_kustodatabaseaddprincipals(test, rg)
+    step_kustodatabasesupdate(test, rg)
+    step_kustoclusterdetachfollowerdatabases(test, rg)
+    step_kustodatabasechecknameavailability(test, rg)
+    step_kustoclusterlistfollowerdatabases(test, rg)
+    step_kustoclustersstart(test, rg)
+    step_kustoclustersstop(test, rg)
+    step_kustoclustersupdate(test, rg)
+    step_kustoclusterschecknameavailability(test, rg)
+    step_attacheddatabaseconfigurationsdelete(test, rg)
+    step_kustodataconnectionsdelete(test, rg)
+    step_kustodatabasesdelete(test, rg)
+    step_kustoclustersdelete(test, rg)
+    step_kustodatabaseprincipalassignmentsget(test, rg)
+    step_kustodatabaseprincipalassignmentscreateorupda(test, rg)
+    step_kustodatabaseprincipalassignmentsdelete(test, rg)
+    step_kustoclusterprincipalassignmentsget(test, rg)
+    step_kustoclusterprincipalassignmentscreateorupdat(test, rg)
+    step_kustoclusterprincipalassignmentsdelete(test, rg)
+    cleanup(test, rg)
+
+
+@try_manual
+class KustoManagementClientScenarioTest(ScenarioTest):
+
+    @ResourceGroupPreparer(name_prefix='clitestkusto_kustorptest'[:7], key='rg', parameter_name='rg')
+    def test_kusto(self, rg):
+
+        self.kwargs.update({
+            'subscription_id': self.get_subscription_id()
+        })
+
+        self.kwargs.update({
+            'myCluster4': 'default',
+            'myAttachedDatabaseConfiguration3': 'default',
+            'myCluster2': 'leader4',
+            'myCluster3': 'KustoClusterLeader',
+            'myCluster': 'kustoclusterrptest4',
+            'myAttachedDatabaseConfiguration': 'myAttachedDatabaseConfiguration',
+            'myAttachedDatabaseConfiguration2': 'attachedDatabaseConfigurations1',
+            'myDataConnection': 'DataConnections8',
+            'myDataConnection2': 'kustoeventhubconnection1',
+        })
+
+        call_scenario(self, rg)
+        calc_coverage(__file__)
+        raise_if()
diff --git a/src/kusto/azext_kusto/vendored_sdks/__init__.py b/src/kusto/azext_kusto/vendored_sdks/__init__.py
index ee0c4f36bd0..c9cfdc73e77 100644
--- a/src/kusto/azext_kusto/vendored_sdks/__init__.py
+++ b/src/kusto/azext_kusto/vendored_sdks/__init__.py
@@ -1,12 +1,12 @@
-# coding=utf-8
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for
-# license information.
-#
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is
-# regenerated.
-# --------------------------------------------------------------------------
-
-__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/__init__.py b/src/kusto/azext_kusto/vendored_sdks/kusto/__init__.py
index 1400c9fa9c1..09dc5c9bdea 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/__init__.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/__init__.py
@@ -10,7 +10,7 @@
 __all__ = ['KustoManagementClient']
 
 try:
-    from ._patch import patch_sdk
+    from ._patch import patch_sdk  # type: ignore
     patch_sdk()
 except ImportError:
     pass
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/_configuration.py b/src/kusto/azext_kusto/vendored_sdks/kusto/_configuration.py
index ee4c2c9c9ac..2985b2104e7 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/_configuration.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/_configuration.py
@@ -10,6 +10,7 @@
 
 from azure.core.configuration import Configuration
 from azure.core.pipeline import policies
+from azure.mgmt.core.policies import ARMHttpLoggingPolicy
 
 if TYPE_CHECKING:
     # pylint: disable=unused-import,ungrouped-imports
@@ -46,7 +47,7 @@ def __init__(
 
         self.credential = credential
         self.subscription_id = subscription_id
-        self.api_version = "2020-06-14"
+        self.api_version = "2020-09-18"
         self.credential_scopes = ['https://management.azure.com/.default']
         self.credential_scopes.extend(kwargs.pop('credential_scopes', []))
         kwargs.setdefault('sdk_moniker', 'kustomanagementclient/{}'.format(VERSION))
@@ -61,6 +62,7 @@ def _configure(
         self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs)
         self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs)
         self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs)
+        self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs)
         self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs)
         self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs)
         self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs)
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/_version.py b/src/kusto/azext_kusto/vendored_sdks/kusto/_version.py
deleted file mode 100644
index 60c349ae6a8..00000000000
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/_version.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# coding=utf-8
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for license information.
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is regenerated.
-# --------------------------------------------------------------------------
-
-VERSION = "0.1.0"
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/_configuration_async.py b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/_configuration_async.py
index e1c166820e5..2a3459bf5ae 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/_configuration_async.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/_configuration_async.py
@@ -10,6 +10,7 @@
 
 from azure.core.configuration import Configuration
 from azure.core.pipeline import policies
+from azure.mgmt.core.policies import ARMHttpLoggingPolicy
 
 if TYPE_CHECKING:
     # pylint: disable=unused-import,ungrouped-imports
@@ -43,7 +44,7 @@ def __init__(
 
         self.credential = credential
         self.subscription_id = subscription_id
-        self.api_version = "2020-06-14"
+        self.api_version = "2020-09-18"
         self.credential_scopes = ['https://management.azure.com/.default']
         self.credential_scopes.extend(kwargs.pop('credential_scopes', []))
         kwargs.setdefault('sdk_moniker', 'kustomanagementclient/{}'.format(VERSION))
@@ -57,6 +58,7 @@ def _configure(
         self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs)
         self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs)
         self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs)
+        self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs)
         self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs)
         self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs)
         self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs)
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_attached_database_configuration_operations_async.py b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_attached_database_configuration_operations_async.py
index f42d9b81c9c..8ba0e61d8a1 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_attached_database_configuration_operations_async.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_attached_database_configuration_operations_async.py
@@ -12,7 +12,7 @@
 from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
 from azure.core.pipeline import PipelineResponse
 from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
-from azure.core.polling import AsyncNoPolling, AsyncPollingMethod, async_poller
+from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod
 from azure.mgmt.core.exceptions import ARMErrorFormat
 from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling
 
@@ -63,9 +63,13 @@ def list_by_cluster(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.AttachedDatabaseConfigurationListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_by_cluster.metadata['url']  # type: ignore
@@ -79,15 +83,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -137,7 +137,7 @@ async def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.AttachedDatabaseConfiguration"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -157,7 +157,6 @@ async def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -189,8 +188,8 @@ async def _create_or_update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.AttachedDatabaseConfiguration(location=location, database_name=database_name, cluster_resource_id=cluster_resource_id, default_principals_modification_kind=default_principals_modification_kind)
-        api_version = "2020-06-14"
+        parameters = models.AttachedDatabaseConfiguration(location=location, database_name=database_name, cluster_resource_id=cluster_resource_id, default_principals_modification_kind=default_principals_modification_kind)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -212,9 +211,8 @@ async def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'AttachedDatabaseConfiguration')
+        body_content = self._serialize.body(parameters, 'AttachedDatabaseConfiguration')
         body_content_kwargs['content'] = body_content
         request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -225,7 +223,6 @@ async def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('AttachedDatabaseConfiguration', pipeline_response)
 
@@ -241,7 +238,7 @@ async def _create_or_update_initial(
         return deserialized
     _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/attachedDatabaseConfigurations/{attachedDatabaseConfigurationName}'}  # type: ignore
 
-    async def create_or_update(
+    async def begin_create_or_update(
         self,
         resource_group_name: str,
         cluster_name: str,
@@ -251,7 +248,7 @@ async def create_or_update(
         cluster_resource_id: Optional[str] = None,
         default_principals_modification_kind: Optional[Union[str, "models.DefaultPrincipalsModificationKind"]] = None,
         **kwargs
-    ) -> "models.AttachedDatabaseConfiguration":
+    ) -> AsyncLROPoller["models.AttachedDatabaseConfiguration"]:
         """Creates or updates an attached database configuration.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -263,20 +260,21 @@ async def create_or_update(
         :param location: Resource location.
         :type location: str
         :param database_name: The name of the database which you would like to attach, use * if you
-     want to follow all current and future databases.
+         want to follow all current and future databases.
         :type database_name: str
         :param cluster_resource_id: The resource id of the cluster where the databases you would like
-     to attach reside.
+         to attach reside.
         :type cluster_resource_id: str
         :param default_principals_modification_kind: The default principals modification kind.
         :type default_principals_modification_kind: str or ~kusto_management_client.models.DefaultPrincipalsModificationKind
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: AttachedDatabaseConfiguration, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.AttachedDatabaseConfiguration
+        :return: An instance of AsyncLROPoller that returns either AttachedDatabaseConfiguration or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.AttachedDatabaseConfiguration]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -285,17 +283,19 @@ async def create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            attached_database_configuration_name=attached_database_configuration_name,
-            location=location,
-            database_name=database_name,
-            cluster_resource_id=cluster_resource_id,
-            default_principals_modification_kind=default_principals_modification_kind,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                attached_database_configuration_name=attached_database_configuration_name,
+                location=location,
+                database_name=database_name,
+                cluster_resource_id=cluster_resource_id,
+                default_principals_modification_kind=default_principals_modification_kind,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -310,8 +310,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/attachedDatabaseConfigurations/{attachedDatabaseConfigurationName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/attachedDatabaseConfigurations/{attachedDatabaseConfigurationName}'}  # type: ignore
 
     async def _delete_initial(
         self,
@@ -323,7 +331,7 @@ async def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -342,7 +350,6 @@ async def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -356,13 +363,13 @@ async def _delete_initial(
 
     _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/attachedDatabaseConfigurations/{attachedDatabaseConfigurationName}'}  # type: ignore
 
-    async def delete(
+    async def begin_delete(
         self,
         resource_group_name: str,
         cluster_name: str,
         attached_database_configuration_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Deletes the attached database configuration with the given name.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -372,12 +379,13 @@ async def delete(
         :param attached_database_configuration_name: The name of the attached database configuration.
         :type attached_database_configuration_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -386,13 +394,15 @@ async def delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            attached_database_configuration_name=attached_database_configuration_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                attached_database_configuration_name=attached_database_configuration_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -404,5 +414,13 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/attachedDatabaseConfigurations/{attachedDatabaseConfigurationName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/attachedDatabaseConfigurations/{attachedDatabaseConfigurationName}'}  # type: ignore
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_cluster_operations_async.py b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_cluster_operations_async.py
index 382ed19396a..dc6089fb0ec 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_cluster_operations_async.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_cluster_operations_async.py
@@ -12,7 +12,7 @@
 from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
 from azure.core.pipeline import PipelineResponse
 from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
-from azure.core.polling import AsyncNoPolling, AsyncPollingMethod, async_poller
+from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod
 from azure.mgmt.core.exceptions import ARMErrorFormat
 from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling
 
@@ -63,7 +63,7 @@ async def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.Cluster"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -82,7 +82,6 @@ async def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -115,6 +114,7 @@ async def _create_or_update_initial(
         key_vault_properties: Optional["models.KeyVaultProperties"] = None,
         enable_purge: Optional[bool] = False,
         enable_double_encryption: Optional[bool] = False,
+        engine_type: Optional[Union[str, "models.EngineType"]] = None,
         type: Optional[Union[str, "models.IdentityType"]] = None,
         user_assigned_identities: Optional[Dict[str, "models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
         **kwargs
@@ -123,8 +123,8 @@ async def _create_or_update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.Cluster(tags=tags, location=location, sku=sku, zones=zones, trusted_external_tenants=trusted_external_tenants, optimized_autoscale=optimized_autoscale, enable_disk_encryption=enable_disk_encryption, enable_streaming_ingest=enable_streaming_ingest, virtual_network_configuration=virtual_network_configuration, key_vault_properties=key_vault_properties, enable_purge=enable_purge, enable_double_encryption=enable_double_encryption, type_identity_type=type, user_assigned_identities=user_assigned_identities)
-        api_version = "2020-06-14"
+        parameters = models.Cluster(tags=tags, location=location, sku=sku, zones=zones, trusted_external_tenants=trusted_external_tenants, optimized_autoscale=optimized_autoscale, enable_disk_encryption=enable_disk_encryption, enable_streaming_ingest=enable_streaming_ingest, virtual_network_configuration=virtual_network_configuration, key_vault_properties=key_vault_properties, enable_purge=enable_purge, enable_double_encryption=enable_double_encryption, engine_type=engine_type, type_identity_type=type, user_assigned_identities=user_assigned_identities)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -145,9 +145,8 @@ async def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'Cluster')
+        body_content = self._serialize.body(parameters, 'Cluster')
         body_content_kwargs['content'] = body_content
         request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -158,7 +157,6 @@ async def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('Cluster', pipeline_response)
 
@@ -171,7 +169,7 @@ async def _create_or_update_initial(
         return deserialized
     _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
-    async def create_or_update(
+    async def begin_create_or_update(
         self,
         resource_group_name: str,
         cluster_name: str,
@@ -187,10 +185,11 @@ async def create_or_update(
         key_vault_properties: Optional["models.KeyVaultProperties"] = None,
         enable_purge: Optional[bool] = False,
         enable_double_encryption: Optional[bool] = False,
+        engine_type: Optional[Union[str, "models.EngineType"]] = None,
         type: Optional[Union[str, "models.IdentityType"]] = None,
         user_assigned_identities: Optional[Dict[str, "models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
         **kwargs
-    ) -> "models.Cluster":
+    ) -> AsyncLROPoller["models.Cluster"]:
         """Create or update a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -210,10 +209,10 @@ async def create_or_update(
         :param optimized_autoscale: Optimized auto scale definition.
         :type optimized_autoscale: ~kusto_management_client.models.OptimizedAutoscale
         :param enable_disk_encryption: A boolean value that indicates if the cluster's disks are
-     encrypted.
+         encrypted.
         :type enable_disk_encryption: bool
         :param enable_streaming_ingest: A boolean value that indicates if the streaming ingest is
-     enabled.
+         enabled.
         :type enable_streaming_ingest: bool
         :param virtual_network_configuration: Virtual network definition.
         :type virtual_network_configuration: ~kusto_management_client.models.VirtualNetworkConfiguration
@@ -222,21 +221,26 @@ async def create_or_update(
         :param enable_purge: A boolean value that indicates if the purge operations are enabled.
         :type enable_purge: bool
         :param enable_double_encryption: A boolean value that indicates if double encryption is
-     enabled.
+         enabled.
         :type enable_double_encryption: bool
-        :param type: The identity type.
+        :param engine_type: The engine type.
+        :type engine_type: str or ~kusto_management_client.models.EngineType
+        :param type: The type of managed identity used. The type 'SystemAssigned, UserAssigned'
+         includes both an implicitly created identity and a set of user-assigned identities. The type
+         'None' will remove all identities.
         :type type: str or ~kusto_management_client.models.IdentityType
         :param user_assigned_identities: The list of user identities associated with the Kusto cluster.
-     The user identity dictionary key references will be ARM resource ids in the form:
-     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
+         The user identity dictionary key references will be ARM resource ids in the form:
+         '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
         :type user_assigned_identities: dict[str, ~kusto_management_client.models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties]
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: Cluster, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.Cluster
+        :return: An instance of AsyncLROPoller that returns either Cluster or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.Cluster]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -245,26 +249,29 @@ async def create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            location=location,
-            sku=sku,
-            tags=tags,
-            zones=zones,
-            trusted_external_tenants=trusted_external_tenants,
-            optimized_autoscale=optimized_autoscale,
-            enable_disk_encryption=enable_disk_encryption,
-            enable_streaming_ingest=enable_streaming_ingest,
-            virtual_network_configuration=virtual_network_configuration,
-            key_vault_properties=key_vault_properties,
-            enable_purge=enable_purge,
-            enable_double_encryption=enable_double_encryption,
-            type=type,
-            user_assigned_identities=user_assigned_identities,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                location=location,
+                sku=sku,
+                tags=tags,
+                zones=zones,
+                trusted_external_tenants=trusted_external_tenants,
+                optimized_autoscale=optimized_autoscale,
+                enable_disk_encryption=enable_disk_encryption,
+                enable_streaming_ingest=enable_streaming_ingest,
+                virtual_network_configuration=virtual_network_configuration,
+                key_vault_properties=key_vault_properties,
+                enable_purge=enable_purge,
+                enable_double_encryption=enable_double_encryption,
+                engine_type=engine_type,
+                type=type,
+                user_assigned_identities=user_assigned_identities,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -279,8 +286,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
     async def _update_initial(
         self,
@@ -297,6 +312,7 @@ async def _update_initial(
         key_vault_properties: Optional["models.KeyVaultProperties"] = None,
         enable_purge: Optional[bool] = False,
         enable_double_encryption: Optional[bool] = False,
+        engine_type: Optional[Union[str, "models.EngineType"]] = None,
         type: Optional[Union[str, "models.IdentityType"]] = None,
         user_assigned_identities: Optional[Dict[str, "models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
         **kwargs
@@ -305,8 +321,8 @@ async def _update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.ClusterUpdate(tags=tags, location=location, sku=sku, trusted_external_tenants=trusted_external_tenants, optimized_autoscale=optimized_autoscale, enable_disk_encryption=enable_disk_encryption, enable_streaming_ingest=enable_streaming_ingest, virtual_network_configuration=virtual_network_configuration, key_vault_properties=key_vault_properties, enable_purge=enable_purge, enable_double_encryption=enable_double_encryption, type_identity_type=type, user_assigned_identities=user_assigned_identities)
-        api_version = "2020-06-14"
+        parameters = models.ClusterUpdate(tags=tags, location=location, sku=sku, trusted_external_tenants=trusted_external_tenants, optimized_autoscale=optimized_autoscale, enable_disk_encryption=enable_disk_encryption, enable_streaming_ingest=enable_streaming_ingest, virtual_network_configuration=virtual_network_configuration, key_vault_properties=key_vault_properties, enable_purge=enable_purge, enable_double_encryption=enable_double_encryption, engine_type=engine_type, type_identity_type=type, user_assigned_identities=user_assigned_identities)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -327,9 +343,8 @@ async def _update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'ClusterUpdate')
+        body_content = self._serialize.body(parameters, 'ClusterUpdate')
         body_content_kwargs['content'] = body_content
         request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -340,7 +355,6 @@ async def _update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('Cluster', pipeline_response)
 
@@ -356,7 +370,7 @@ async def _update_initial(
         return deserialized
     _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
-    async def update(
+    async def begin_update(
         self,
         resource_group_name: str,
         cluster_name: str,
@@ -371,10 +385,11 @@ async def update(
         key_vault_properties: Optional["models.KeyVaultProperties"] = None,
         enable_purge: Optional[bool] = False,
         enable_double_encryption: Optional[bool] = False,
+        engine_type: Optional[Union[str, "models.EngineType"]] = None,
         type: Optional[Union[str, "models.IdentityType"]] = None,
         user_assigned_identities: Optional[Dict[str, "models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
         **kwargs
-    ) -> "models.Cluster":
+    ) -> AsyncLROPoller["models.Cluster"]:
         """Update a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -392,10 +407,10 @@ async def update(
         :param optimized_autoscale: Optimized auto scale definition.
         :type optimized_autoscale: ~kusto_management_client.models.OptimizedAutoscale
         :param enable_disk_encryption: A boolean value that indicates if the cluster's disks are
-     encrypted.
+         encrypted.
         :type enable_disk_encryption: bool
         :param enable_streaming_ingest: A boolean value that indicates if the streaming ingest is
-     enabled.
+         enabled.
         :type enable_streaming_ingest: bool
         :param virtual_network_configuration: Virtual network definition.
         :type virtual_network_configuration: ~kusto_management_client.models.VirtualNetworkConfiguration
@@ -404,21 +419,26 @@ async def update(
         :param enable_purge: A boolean value that indicates if the purge operations are enabled.
         :type enable_purge: bool
         :param enable_double_encryption: A boolean value that indicates if double encryption is
-     enabled.
+         enabled.
         :type enable_double_encryption: bool
-        :param type: The identity type.
+        :param engine_type: The engine type.
+        :type engine_type: str or ~kusto_management_client.models.EngineType
+        :param type: The type of managed identity used. The type 'SystemAssigned, UserAssigned'
+         includes both an implicitly created identity and a set of user-assigned identities. The type
+         'None' will remove all identities.
         :type type: str or ~kusto_management_client.models.IdentityType
         :param user_assigned_identities: The list of user identities associated with the Kusto cluster.
-     The user identity dictionary key references will be ARM resource ids in the form:
-     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
+         The user identity dictionary key references will be ARM resource ids in the form:
+         '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
         :type user_assigned_identities: dict[str, ~kusto_management_client.models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties]
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: Cluster, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.Cluster
+        :return: An instance of AsyncLROPoller that returns either Cluster or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.Cluster]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -427,25 +447,28 @@ async def update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            tags=tags,
-            location=location,
-            sku=sku,
-            trusted_external_tenants=trusted_external_tenants,
-            optimized_autoscale=optimized_autoscale,
-            enable_disk_encryption=enable_disk_encryption,
-            enable_streaming_ingest=enable_streaming_ingest,
-            virtual_network_configuration=virtual_network_configuration,
-            key_vault_properties=key_vault_properties,
-            enable_purge=enable_purge,
-            enable_double_encryption=enable_double_encryption,
-            type=type,
-            user_assigned_identities=user_assigned_identities,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                tags=tags,
+                location=location,
+                sku=sku,
+                trusted_external_tenants=trusted_external_tenants,
+                optimized_autoscale=optimized_autoscale,
+                enable_disk_encryption=enable_disk_encryption,
+                enable_streaming_ingest=enable_streaming_ingest,
+                virtual_network_configuration=virtual_network_configuration,
+                key_vault_properties=key_vault_properties,
+                enable_purge=enable_purge,
+                enable_double_encryption=enable_double_encryption,
+                engine_type=engine_type,
+                type=type,
+                user_assigned_identities=user_assigned_identities,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -460,8 +483,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
     async def _delete_initial(
         self,
@@ -472,7 +503,7 @@ async def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -490,7 +521,6 @@ async def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -504,12 +534,12 @@ async def _delete_initial(
 
     _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
-    async def delete(
+    async def begin_delete(
         self,
         resource_group_name: str,
         cluster_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Deletes a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -517,12 +547,13 @@ async def delete(
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -531,12 +562,14 @@ async def delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -548,8 +581,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
     async def _stop_initial(
         self,
@@ -560,7 +601,7 @@ async def _stop_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._stop_initial.metadata['url']  # type: ignore
@@ -578,7 +619,6 @@ async def _stop_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.post(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -592,12 +632,12 @@ async def _stop_initial(
 
     _stop_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/stop'}  # type: ignore
 
-    async def stop(
+    async def begin_stop(
         self,
         resource_group_name: str,
         cluster_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Stops a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -605,12 +645,13 @@ async def stop(
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -619,12 +660,14 @@ async def stop(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._stop_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._stop_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -636,8 +679,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    stop.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/stop'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_stop.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/stop'}  # type: ignore
 
     async def _start_initial(
         self,
@@ -648,7 +699,7 @@ async def _start_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._start_initial.metadata['url']  # type: ignore
@@ -666,7 +717,6 @@ async def _start_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.post(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -680,12 +730,12 @@ async def _start_initial(
 
     _start_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/start'}  # type: ignore
 
-    async def start(
+    async def begin_start(
         self,
         resource_group_name: str,
         cluster_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Starts a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -693,12 +743,13 @@ async def start(
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -707,12 +758,14 @@ async def start(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._start_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._start_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -724,8 +777,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    start.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/start'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_start.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/start'}  # type: ignore
 
     def list_follower_database(
         self,
@@ -733,7 +794,8 @@ def list_follower_database(
         cluster_name: str,
         **kwargs
     ) -> AsyncIterable["models.FollowerDatabaseListResult"]:
-        """Returns a list of databases that are owned by this cluster and were followed by another cluster.
+        """Returns a list of databases that are owned by this cluster and were followed by another
+        cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
         :type resource_group_name: str
@@ -747,9 +809,13 @@ def list_follower_database(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.FollowerDatabaseListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_follower_database.metadata['url']  # type: ignore
@@ -763,15 +829,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.post(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.post(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -810,8 +872,8 @@ async def _detach_follower_database_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _follower_database_to_remove = models.FollowerDatabaseDefinition(cluster_resource_id=cluster_resource_id, attached_database_configuration_name=attached_database_configuration_name)
-        api_version = "2020-06-14"
+        follower_database_to_remove = models.FollowerDatabaseDefinition(cluster_resource_id=cluster_resource_id, attached_database_configuration_name=attached_database_configuration_name)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -831,9 +893,8 @@ async def _detach_follower_database_initial(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_follower_database_to_remove, 'FollowerDatabaseDefinition')
+        body_content = self._serialize.body(follower_database_to_remove, 'FollowerDatabaseDefinition')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -849,14 +910,14 @@ async def _detach_follower_database_initial(
 
     _detach_follower_database_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/detachFollowerDatabases'}  # type: ignore
 
-    async def detach_follower_database(
+    async def begin_detach_follower_database(
         self,
         resource_group_name: str,
         cluster_name: str,
         cluster_resource_id: str,
         attached_database_configuration_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Detaches all followers of a database owned by this cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -864,18 +925,19 @@ async def detach_follower_database(
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :param cluster_resource_id: Resource id of the cluster that follows a database owned by this
-     cluster.
+         cluster.
         :type cluster_resource_id: str
         :param attached_database_configuration_name: Resource name of the attached database
-     configuration in the follower cluster.
+         configuration in the follower cluster.
         :type attached_database_configuration_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -884,14 +946,16 @@ async def detach_follower_database(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._detach_follower_database_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cluster_resource_id=cluster_resource_id,
-            attached_database_configuration_name=attached_database_configuration_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._detach_follower_database_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cluster_resource_id=cluster_resource_id,
+                attached_database_configuration_name=attached_database_configuration_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -903,19 +967,27 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    detach_follower_database.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/detachFollowerDatabases'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_detach_follower_database.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/detachFollowerDatabases'}  # type: ignore
 
     async def _diagnose_virtual_network_initial(
         self,
         resource_group_name: str,
         cluster_name: str,
         **kwargs
-    ) -> "models.DiagnoseVirtualNetworkResult":
-        cls = kwargs.pop('cls', None)  # type: ClsType["models.DiagnoseVirtualNetworkResult"]
+    ) -> Optional["models.DiagnoseVirtualNetworkResult"]:
+        cls = kwargs.pop('cls', None)  # type: ClsType[Optional["models.DiagnoseVirtualNetworkResult"]]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._diagnose_virtual_network_initial.metadata['url']  # type: ignore
@@ -934,7 +1006,6 @@ async def _diagnose_virtual_network_initial(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.post(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -953,25 +1024,27 @@ async def _diagnose_virtual_network_initial(
         return deserialized
     _diagnose_virtual_network_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/diagnoseVirtualNetwork'}  # type: ignore
 
-    async def diagnose_virtual_network(
+    async def begin_diagnose_virtual_network(
         self,
         resource_group_name: str,
         cluster_name: str,
         **kwargs
-    ) -> "models.DiagnoseVirtualNetworkResult":
-        """Diagnoses network connectivity status for external resources on which the service is dependent on.
+    ) -> AsyncLROPoller["models.DiagnoseVirtualNetworkResult"]:
+        """Diagnoses network connectivity status for external resources on which the service is dependent
+        on.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
         :type resource_group_name: str
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: DiagnoseVirtualNetworkResult, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.DiagnoseVirtualNetworkResult
+        :return: An instance of AsyncLROPoller that returns either DiagnoseVirtualNetworkResult or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.DiagnoseVirtualNetworkResult]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -980,12 +1053,14 @@ async def diagnose_virtual_network(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._diagnose_virtual_network_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._diagnose_virtual_network_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -1000,8 +1075,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'},  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    diagnose_virtual_network.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/diagnoseVirtualNetwork'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_diagnose_virtual_network.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/diagnoseVirtualNetwork'}  # type: ignore
 
     def list_by_resource_group(
         self,
@@ -1020,9 +1103,13 @@ def list_by_resource_group(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ClusterListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_by_resource_group.metadata['url']  # type: ignore
@@ -1035,15 +1122,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -1084,9 +1167,13 @@ def list(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ClusterListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list.metadata['url']  # type: ignore
@@ -1098,15 +1185,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -1147,9 +1230,13 @@ def list_sku(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.SkuDescriptionList"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_sku.metadata['url']  # type: ignore
@@ -1161,15 +1248,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -1220,8 +1303,8 @@ async def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _cluster_name = models.ClusterCheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        cluster_name = models.ClusterCheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -1241,9 +1324,8 @@ async def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_cluster_name, 'ClusterCheckNameRequest')
+        body_content = self._serialize.body(cluster_name, 'ClusterCheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -1282,9 +1364,13 @@ def list_sku_by_resource(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ListResourceSkusResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_sku_by_resource.metadata['url']  # type: ignore
@@ -1298,15 +1384,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -1353,9 +1435,13 @@ def list_language_extension(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.LanguageExtensionsList"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_language_extension.metadata['url']  # type: ignore
@@ -1369,15 +1455,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.post(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.post(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -1415,8 +1497,8 @@ async def _add_language_extension_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _language_extensions_to_add = models.LanguageExtensionsList(value=value)
-        api_version = "2020-06-14"
+        language_extensions_to_add = models.LanguageExtensionsList(value=value)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -1436,9 +1518,8 @@ async def _add_language_extension_initial(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_language_extensions_to_add, 'LanguageExtensionsList')
+        body_content = self._serialize.body(language_extensions_to_add, 'LanguageExtensionsList')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -1454,13 +1535,13 @@ async def _add_language_extension_initial(
 
     _add_language_extension_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/addLanguageExtensions'}  # type: ignore
 
-    async def add_language_extension(
+    async def begin_add_language_extension(
         self,
         resource_group_name: str,
         cluster_name: str,
         value: Optional[List["models.LanguageExtension"]] = None,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Add a list of language extensions that can run within KQL queries.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -1470,12 +1551,13 @@ async def add_language_extension(
         :param value: The list of language extensions.
         :type value: list[~kusto_management_client.models.LanguageExtension]
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -1484,13 +1566,15 @@ async def add_language_extension(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._add_language_extension_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            value=value,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._add_language_extension_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                value=value,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -1502,8 +1586,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    add_language_extension.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/addLanguageExtensions'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_add_language_extension.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/addLanguageExtensions'}  # type: ignore
 
     async def _remove_language_extension_initial(
         self,
@@ -1516,8 +1608,8 @@ async def _remove_language_extension_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _language_extensions_to_remove = models.LanguageExtensionsList(value=value)
-        api_version = "2020-06-14"
+        language_extensions_to_remove = models.LanguageExtensionsList(value=value)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -1537,9 +1629,8 @@ async def _remove_language_extension_initial(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_language_extensions_to_remove, 'LanguageExtensionsList')
+        body_content = self._serialize.body(language_extensions_to_remove, 'LanguageExtensionsList')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -1555,13 +1646,13 @@ async def _remove_language_extension_initial(
 
     _remove_language_extension_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/removeLanguageExtensions'}  # type: ignore
 
-    async def remove_language_extension(
+    async def begin_remove_language_extension(
         self,
         resource_group_name: str,
         cluster_name: str,
         value: Optional[List["models.LanguageExtension"]] = None,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Remove a list of language extensions that can run within KQL queries.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -1571,12 +1662,13 @@ async def remove_language_extension(
         :param value: The list of language extensions.
         :type value: list[~kusto_management_client.models.LanguageExtension]
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -1585,13 +1677,15 @@ async def remove_language_extension(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._remove_language_extension_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            value=value,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._remove_language_extension_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                value=value,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -1603,5 +1697,13 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    remove_language_extension.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/removeLanguageExtensions'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_remove_language_extension.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/removeLanguageExtensions'}  # type: ignore
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_cluster_principal_assignment_operations_async.py b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_cluster_principal_assignment_operations_async.py
index 9c35c6bb8c0..629a5c0f756 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_cluster_principal_assignment_operations_async.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_cluster_principal_assignment_operations_async.py
@@ -12,7 +12,7 @@
 from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
 from azure.core.pipeline import PipelineResponse
 from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
-from azure.core.polling import AsyncNoPolling, AsyncPollingMethod, async_poller
+from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod
 from azure.mgmt.core.exceptions import ARMErrorFormat
 from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling
 
@@ -70,8 +70,8 @@ async def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _principal_assignment_name = models.ClusterPrincipalAssignmentCheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        principal_assignment_name = models.ClusterPrincipalAssignmentCheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -92,9 +92,8 @@ async def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_principal_assignment_name, 'ClusterPrincipalAssignmentCheckNameRequest')
+        body_content = self._serialize.body(principal_assignment_name, 'ClusterPrincipalAssignmentCheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -136,7 +135,7 @@ async def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ClusterPrincipalAssignment"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -156,7 +155,6 @@ async def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -188,8 +186,8 @@ async def _create_or_update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.ClusterPrincipalAssignment(principal_id=principal_id, role=role, tenant_id=tenant_id, principal_type=principal_type)
-        api_version = "2020-06-14"
+        parameters = models.ClusterPrincipalAssignment(principal_id=principal_id, role=role, tenant_id=tenant_id, principal_type=principal_type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -211,9 +209,8 @@ async def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'ClusterPrincipalAssignment')
+        body_content = self._serialize.body(parameters, 'ClusterPrincipalAssignment')
         body_content_kwargs['content'] = body_content
         request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -224,7 +221,6 @@ async def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('ClusterPrincipalAssignment', pipeline_response)
 
@@ -237,7 +233,7 @@ async def _create_or_update_initial(
         return deserialized
     _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
-    async def create_or_update(
+    async def begin_create_or_update(
         self,
         resource_group_name: str,
         cluster_name: str,
@@ -247,7 +243,7 @@ async def create_or_update(
         tenant_id: Optional[str] = None,
         principal_type: Optional[Union[str, "models.PrincipalType"]] = None,
         **kwargs
-    ) -> "models.ClusterPrincipalAssignment":
+    ) -> AsyncLROPoller["models.ClusterPrincipalAssignment"]:
         """Create a Kusto cluster principalAssignment.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -257,7 +253,7 @@ async def create_or_update(
         :param principal_assignment_name: The name of the Kusto principalAssignment.
         :type principal_assignment_name: str
         :param principal_id: The principal ID assigned to the cluster principal. It can be a user
-     email, application ID, or security group name.
+         email, application ID, or security group name.
         :type principal_id: str
         :param role: Cluster principal role.
         :type role: str or ~kusto_management_client.models.ClusterPrincipalRole
@@ -266,12 +262,13 @@ async def create_or_update(
         :param principal_type: Principal type.
         :type principal_type: str or ~kusto_management_client.models.PrincipalType
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: ClusterPrincipalAssignment, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.ClusterPrincipalAssignment
+        :return: An instance of AsyncLROPoller that returns either ClusterPrincipalAssignment or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.ClusterPrincipalAssignment]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -280,17 +277,19 @@ async def create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            principal_assignment_name=principal_assignment_name,
-            principal_id=principal_id,
-            role=role,
-            tenant_id=tenant_id,
-            principal_type=principal_type,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                principal_assignment_name=principal_assignment_name,
+                principal_id=principal_id,
+                role=role,
+                tenant_id=tenant_id,
+                principal_type=principal_type,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -305,8 +304,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
     async def _delete_initial(
         self,
@@ -318,7 +325,7 @@ async def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -337,7 +344,6 @@ async def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -351,13 +357,13 @@ async def _delete_initial(
 
     _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
-    async def delete(
+    async def begin_delete(
         self,
         resource_group_name: str,
         cluster_name: str,
         principal_assignment_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Deletes a Kusto cluster principalAssignment.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -367,12 +373,13 @@ async def delete(
         :param principal_assignment_name: The name of the Kusto principalAssignment.
         :type principal_assignment_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -381,13 +388,15 @@ async def delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            principal_assignment_name=principal_assignment_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                principal_assignment_name=principal_assignment_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -399,8 +408,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
     def list(
         self,
@@ -422,9 +439,13 @@ def list(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ClusterPrincipalAssignmentListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list.metadata['url']  # type: ignore
@@ -438,15 +459,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_data_connection_operations_async.py b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_data_connection_operations_async.py
index b4a7b8ff101..1bbd91d4625 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_data_connection_operations_async.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_data_connection_operations_async.py
@@ -12,7 +12,7 @@
 from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
 from azure.core.pipeline import PipelineResponse
 from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
-from azure.core.polling import AsyncNoPolling, AsyncPollingMethod, async_poller
+from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod
 from azure.mgmt.core.exceptions import ARMErrorFormat
 from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling
 
@@ -66,9 +66,13 @@ def list_by_database(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnectionListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_by_database.metadata['url']  # type: ignore
@@ -83,15 +87,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -126,13 +126,13 @@ async def _data_connection_validation_initial(
         data_connection_name: Optional[str] = None,
         properties: Optional["models.DataConnection"] = None,
         **kwargs
-    ) -> "models.DataConnectionValidationListResult":
-        cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnectionValidationListResult"]
+    ) -> Optional["models.DataConnectionValidationListResult"]:
+        cls = kwargs.pop('cls', None)  # type: ClsType[Optional["models.DataConnectionValidationListResult"]]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.DataConnectionValidation(data_connection_name=data_connection_name, properties=properties)
-        api_version = "2020-06-14"
+        parameters = models.DataConnectionValidation(data_connection_name=data_connection_name, properties=properties)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -154,9 +154,8 @@ async def _data_connection_validation_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'DataConnectionValidation')
+        body_content = self._serialize.body(parameters, 'DataConnectionValidation')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -177,7 +176,7 @@ async def _data_connection_validation_initial(
         return deserialized
     _data_connection_validation_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnectionValidation'}  # type: ignore
 
-    async def data_connection_validation(
+    async def begin_data_connection_validation(
         self,
         resource_group_name: str,
         cluster_name: str,
@@ -185,7 +184,7 @@ async def data_connection_validation(
         data_connection_name: Optional[str] = None,
         properties: Optional["models.DataConnection"] = None,
         **kwargs
-    ) -> "models.DataConnectionValidationListResult":
+    ) -> AsyncLROPoller["models.DataConnectionValidationListResult"]:
         """Checks that the data connection parameters are valid.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -199,12 +198,13 @@ async def data_connection_validation(
         :param properties: The data connection properties to validate.
         :type properties: ~kusto_management_client.models.DataConnection
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: DataConnectionValidationListResult, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.DataConnectionValidationListResult
+        :return: An instance of AsyncLROPoller that returns either DataConnectionValidationListResult or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.DataConnectionValidationListResult]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -213,15 +213,17 @@ async def data_connection_validation(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._data_connection_validation_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            data_connection_name=data_connection_name,
-            properties=properties,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._data_connection_validation_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                data_connection_name=data_connection_name,
+                properties=properties,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -236,8 +238,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'location'},  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    data_connection_validation.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnectionValidation'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_data_connection_validation.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnectionValidation'}  # type: ignore
 
     async def check_name_availability(
         self,
@@ -269,8 +279,8 @@ async def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _data_connection_name = models.DataConnectionCheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        data_connection_name = models.DataConnectionCheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -292,9 +302,8 @@ async def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_data_connection_name, 'DataConnectionCheckNameRequest')
+        body_content = self._serialize.body(data_connection_name, 'DataConnectionCheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -339,7 +348,7 @@ async def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnection"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -360,7 +369,6 @@ async def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -389,7 +397,7 @@ async def _create_or_update_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnection"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -412,7 +420,6 @@ async def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
         body_content = self._serialize.body(parameters, 'DataConnection')
         body_content_kwargs['content'] = body_content
@@ -425,7 +432,6 @@ async def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('DataConnection', pipeline_response)
 
@@ -441,7 +447,7 @@ async def _create_or_update_initial(
         return deserialized
     _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
 
-    async def create_or_update(
+    async def begin_create_or_update(
         self,
         resource_group_name: str,
         cluster_name: str,
@@ -449,7 +455,7 @@ async def create_or_update(
         data_connection_name: str,
         parameters: "models.DataConnection",
         **kwargs
-    ) -> "models.DataConnection":
+    ) -> AsyncLROPoller["models.DataConnection"]:
         """Creates or updates a data connection.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -463,12 +469,13 @@ async def create_or_update(
         :param parameters: The data connection parameters supplied to the CreateOrUpdate operation.
         :type parameters: ~kusto_management_client.models.DataConnection
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: DataConnection, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.DataConnection
+        :return: An instance of AsyncLROPoller that returns either DataConnection or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.DataConnection]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -477,15 +484,17 @@ async def create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            data_connection_name=data_connection_name,
-            parameters=parameters,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                data_connection_name=data_connection_name,
+                parameters=parameters,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -500,8 +509,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
 
     async def _update_initial(
         self,
@@ -515,7 +532,7 @@ async def _update_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnection"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -538,7 +555,6 @@ async def _update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
         body_content = self._serialize.body(parameters, 'DataConnection')
         body_content_kwargs['content'] = body_content
@@ -551,7 +567,6 @@ async def _update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('DataConnection', pipeline_response)
 
@@ -567,7 +582,7 @@ async def _update_initial(
         return deserialized
     _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
 
-    async def update(
+    async def begin_update(
         self,
         resource_group_name: str,
         cluster_name: str,
@@ -575,7 +590,7 @@ async def update(
         data_connection_name: str,
         parameters: "models.DataConnection",
         **kwargs
-    ) -> "models.DataConnection":
+    ) -> AsyncLROPoller["models.DataConnection"]:
         """Updates a data connection.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -589,12 +604,13 @@ async def update(
         :param parameters: The data connection parameters supplied to the Update operation.
         :type parameters: ~kusto_management_client.models.DataConnection
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: DataConnection, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.DataConnection
+        :return: An instance of AsyncLROPoller that returns either DataConnection or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.DataConnection]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -603,15 +619,17 @@ async def update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            data_connection_name=data_connection_name,
-            parameters=parameters,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                data_connection_name=data_connection_name,
+                parameters=parameters,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -626,8 +644,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
 
     async def _delete_initial(
         self,
@@ -640,7 +666,7 @@ async def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -660,7 +686,6 @@ async def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -674,14 +699,14 @@ async def _delete_initial(
 
     _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
 
-    async def delete(
+    async def begin_delete(
         self,
         resource_group_name: str,
         cluster_name: str,
         database_name: str,
         data_connection_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Deletes the data connection with the given name.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -693,12 +718,13 @@ async def delete(
         :param data_connection_name: The name of the data connection.
         :type data_connection_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -707,14 +733,16 @@ async def delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            data_connection_name=data_connection_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                data_connection_name=data_connection_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -726,5 +754,13 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_database_operations_async.py b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_database_operations_async.py
index 340064db262..ed5527a0154 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_database_operations_async.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_database_operations_async.py
@@ -12,7 +12,7 @@
 from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
 from azure.core.pipeline import PipelineResponse
 from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
-from azure.core.polling import AsyncNoPolling, AsyncPollingMethod, async_poller
+from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod
 from azure.mgmt.core.exceptions import ARMErrorFormat
 from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling
 
@@ -70,8 +70,8 @@ async def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _resource_name = models.CheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        resource_name = models.CheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -92,9 +92,8 @@ async def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_resource_name, 'CheckNameRequest')
+        body_content = self._serialize.body(resource_name, 'CheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -133,9 +132,13 @@ def list_by_cluster(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DatabaseListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_by_cluster.metadata['url']  # type: ignore
@@ -149,15 +152,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -207,7 +206,7 @@ async def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.Database"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -227,7 +226,6 @@ async def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -255,7 +253,7 @@ async def _create_or_update_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.Database"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -277,7 +275,6 @@ async def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
         body_content = self._serialize.body(parameters, 'Database')
         body_content_kwargs['content'] = body_content
@@ -290,7 +287,6 @@ async def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('Database', pipeline_response)
 
@@ -306,14 +302,14 @@ async def _create_or_update_initial(
         return deserialized
     _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
-    async def create_or_update(
+    async def begin_create_or_update(
         self,
         resource_group_name: str,
         cluster_name: str,
         database_name: str,
         parameters: "models.Database",
         **kwargs
-    ) -> "models.Database":
+    ) -> AsyncLROPoller["models.Database"]:
         """Creates or updates a database.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -325,12 +321,13 @@ async def create_or_update(
         :param parameters: The database parameters supplied to the CreateOrUpdate operation.
         :type parameters: ~kusto_management_client.models.Database
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: Database, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.Database
+        :return: An instance of AsyncLROPoller that returns either Database or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.Database]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -339,14 +336,16 @@ async def create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            parameters=parameters,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                parameters=parameters,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -361,8 +360,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
     async def _update_initial(
         self,
@@ -375,7 +382,7 @@ async def _update_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.Database"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -397,7 +404,6 @@ async def _update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
         body_content = self._serialize.body(parameters, 'Database')
         body_content_kwargs['content'] = body_content
@@ -410,7 +416,6 @@ async def _update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('Database', pipeline_response)
 
@@ -426,14 +431,14 @@ async def _update_initial(
         return deserialized
     _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
-    async def update(
+    async def begin_update(
         self,
         resource_group_name: str,
         cluster_name: str,
         database_name: str,
         parameters: "models.Database",
         **kwargs
-    ) -> "models.Database":
+    ) -> AsyncLROPoller["models.Database"]:
         """Updates a database.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -445,12 +450,13 @@ async def update(
         :param parameters: The database parameters supplied to the Update operation.
         :type parameters: ~kusto_management_client.models.Database
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: Database, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.Database
+        :return: An instance of AsyncLROPoller that returns either Database or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.Database]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -459,14 +465,16 @@ async def update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            parameters=parameters,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                parameters=parameters,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -481,8 +489,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
     async def _delete_initial(
         self,
@@ -494,7 +510,7 @@ async def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -513,7 +529,6 @@ async def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -527,13 +542,13 @@ async def _delete_initial(
 
     _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
-    async def delete(
+    async def begin_delete(
         self,
         resource_group_name: str,
         cluster_name: str,
         database_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Deletes the database with the given name.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -543,12 +558,13 @@ async def delete(
         :param database_name: The name of the database in the Kusto cluster.
         :type database_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -557,13 +573,15 @@ async def delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -575,8 +593,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
     def list_principal(
         self,
@@ -601,9 +627,13 @@ def list_principal(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DatabasePrincipalListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_principal.metadata['url']  # type: ignore
@@ -618,15 +648,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.post(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.post(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
@@ -680,8 +706,8 @@ async def add_principal(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _database_principals_to_add = models.DatabasePrincipalListRequest(value=value)
-        api_version = "2020-06-14"
+        database_principals_to_add = models.DatabasePrincipalListRequest(value=value)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -703,9 +729,8 @@ async def add_principal(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_database_principals_to_add, 'DatabasePrincipalListRequest')
+        body_content = self._serialize.body(database_principals_to_add, 'DatabasePrincipalListRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -751,8 +776,8 @@ async def remove_principal(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _database_principals_to_remove = models.DatabasePrincipalListRequest(value=value)
-        api_version = "2020-06-14"
+        database_principals_to_remove = models.DatabasePrincipalListRequest(value=value)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -774,9 +799,8 @@ async def remove_principal(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_database_principals_to_remove, 'DatabasePrincipalListRequest')
+        body_content = self._serialize.body(database_principals_to_remove, 'DatabasePrincipalListRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_database_principal_assignment_operations_async.py b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_database_principal_assignment_operations_async.py
index 4a483658e04..b638a75b983 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_database_principal_assignment_operations_async.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_database_principal_assignment_operations_async.py
@@ -12,7 +12,7 @@
 from azure.core.exceptions import HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
 from azure.core.pipeline import PipelineResponse
 from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
-from azure.core.polling import AsyncNoPolling, AsyncPollingMethod, async_poller
+from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod
 from azure.mgmt.core.exceptions import ARMErrorFormat
 from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling
 
@@ -73,8 +73,8 @@ async def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _principal_assignment_name = models.DatabasePrincipalAssignmentCheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        principal_assignment_name = models.DatabasePrincipalAssignmentCheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -96,9 +96,8 @@ async def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_principal_assignment_name, 'DatabasePrincipalAssignmentCheckNameRequest')
+        body_content = self._serialize.body(principal_assignment_name, 'DatabasePrincipalAssignmentCheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -143,7 +142,7 @@ async def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DatabasePrincipalAssignment"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -164,7 +163,6 @@ async def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -197,8 +195,8 @@ async def _create_or_update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.DatabasePrincipalAssignment(principal_id=principal_id, role=role, tenant_id=tenant_id, principal_type=principal_type)
-        api_version = "2020-06-14"
+        parameters = models.DatabasePrincipalAssignment(principal_id=principal_id, role=role, tenant_id=tenant_id, principal_type=principal_type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -221,9 +219,8 @@ async def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'DatabasePrincipalAssignment')
+        body_content = self._serialize.body(parameters, 'DatabasePrincipalAssignment')
         body_content_kwargs['content'] = body_content
         request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -234,7 +231,6 @@ async def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('DatabasePrincipalAssignment', pipeline_response)
 
@@ -247,7 +243,7 @@ async def _create_or_update_initial(
         return deserialized
     _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
-    async def create_or_update(
+    async def begin_create_or_update(
         self,
         resource_group_name: str,
         cluster_name: str,
@@ -258,7 +254,7 @@ async def create_or_update(
         tenant_id: Optional[str] = None,
         principal_type: Optional[Union[str, "models.PrincipalType"]] = None,
         **kwargs
-    ) -> "models.DatabasePrincipalAssignment":
+    ) -> AsyncLROPoller["models.DatabasePrincipalAssignment"]:
         """Creates a Kusto cluster database principalAssignment.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -270,7 +266,7 @@ async def create_or_update(
         :param principal_assignment_name: The name of the Kusto principalAssignment.
         :type principal_assignment_name: str
         :param principal_id: The principal ID assigned to the database principal. It can be a user
-     email, application ID, or security group name.
+         email, application ID, or security group name.
         :type principal_id: str
         :param role: Database principal role.
         :type role: str or ~kusto_management_client.models.DatabasePrincipalRole
@@ -279,12 +275,13 @@ async def create_or_update(
         :param principal_type: Principal type.
         :type principal_type: str or ~kusto_management_client.models.PrincipalType
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: DatabasePrincipalAssignment, or the result of cls(response)
-        :rtype: ~kusto_management_client.models.DatabasePrincipalAssignment
+        :return: An instance of AsyncLROPoller that returns either DatabasePrincipalAssignment or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[~kusto_management_client.models.DatabasePrincipalAssignment]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -293,18 +290,20 @@ async def create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            principal_assignment_name=principal_assignment_name,
-            principal_id=principal_id,
-            role=role,
-            tenant_id=tenant_id,
-            principal_type=principal_type,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                principal_assignment_name=principal_assignment_name,
+                principal_id=principal_id,
+                role=role,
+                tenant_id=tenant_id,
+                principal_type=principal_type,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -319,8 +318,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
     async def _delete_initial(
         self,
@@ -333,7 +340,7 @@ async def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -353,7 +360,6 @@ async def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -367,14 +373,14 @@ async def _delete_initial(
 
     _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
-    async def delete(
+    async def begin_delete(
         self,
         resource_group_name: str,
         cluster_name: str,
         database_name: str,
         principal_assignment_name: str,
         **kwargs
-    ) -> None:
+    ) -> AsyncLROPoller[None]:
         """Deletes a Kusto principalAssignment.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -386,12 +392,13 @@ async def delete(
         :param principal_assignment_name: The name of the Kusto principalAssignment.
         :type principal_assignment_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
         :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
-        :return: None, or the result of cls(response)
-        :rtype: None
+        :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+        :rtype: ~azure.core.polling.AsyncLROPoller[None]
         :raises ~azure.core.exceptions.HttpResponseError:
         """
         polling = kwargs.pop('polling', True)  # type: Union[bool, AsyncPollingMethod]
@@ -400,14 +407,16 @@ async def delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = await self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            principal_assignment_name=principal_assignment_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = await self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                principal_assignment_name=principal_assignment_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -419,8 +428,16 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = AsyncARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = AsyncNoPolling()
         else: polling_method = polling
-        return await async_poller(self._client, raw_result, get_long_running_output, polling_method)
-    delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
+        if cont_token:
+            return AsyncLROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+    begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
     def list(
         self,
@@ -445,9 +462,13 @@ def list(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DatabasePrincipalAssignmentListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list.metadata['url']  # type: ignore
@@ -462,15 +483,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_operation_operations_async.py b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_operation_operations_async.py
index d8d07749184..58c61b55688 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_operation_operations_async.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/aio/operations_async/_operation_operations_async.py
@@ -55,9 +55,13 @@ def list(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.OperationListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list.metadata['url']  # type: ignore
@@ -65,15 +69,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         async def extract_data(pipeline_response):
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/models/__init__.py b/src/kusto/azext_kusto/vendored_sdks/kusto/models/__init__.py
index 3ab71bc3631..02927ce5b6a 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/models/__init__.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/models/__init__.py
@@ -129,6 +129,7 @@
     DatabasePrincipalRole,
     DatabasePrincipalType,
     DefaultPrincipalsModificationKind,
+    EngineType,
     EventGridDataFormat,
     EventHubDataFormat,
     IdentityType,
@@ -208,6 +209,7 @@
     'DatabasePrincipalRole',
     'DatabasePrincipalType',
     'DefaultPrincipalsModificationKind',
+    'EngineType',
     'EventGridDataFormat',
     'EventHubDataFormat',
     'IdentityType',
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/models/_kusto_management_client_enums.py b/src/kusto/azext_kusto/vendored_sdks/kusto/models/_kusto_management_client_enums.py
index c3c671d73ac..8efc82e774b 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/models/_kusto_management_client_enums.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/models/_kusto_management_client_enums.py
@@ -6,239 +6,269 @@
 # Changes may cause incorrect behavior and will be lost if the code is regenerated.
 # --------------------------------------------------------------------------
 
-from enum import Enum
-
-class AzureScaleType(str, Enum):
+from enum import Enum, EnumMeta
+from six import with_metaclass
+
+class _CaseInsensitiveEnumMeta(EnumMeta):
+    def __getitem__(self, name):
+        return super().__getitem__(name.upper())
+
+    def __getattr__(cls, name):
+        """Return the enum member matching `name`
+        We use __getattr__ instead of descriptors or inserting into the enum
+        class' __dict__ in order to support `name` and `value` being both
+        properties for enum members (which live in the class' __dict__) and
+        enum members themselves.
+        """
+        try:
+            return cls._member_map_[name.upper()]
+        except KeyError:
+            raise AttributeError(name)
+
+
+class AzureScaleType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """Scale type.
     """
 
-    automatic = "automatic"
-    manual = "manual"
-    none = "none"
+    AUTOMATIC = "automatic"
+    MANUAL = "manual"
+    NONE = "none"
 
-class AzureSkuName(str, Enum):
+class AzureSkuName(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """SKU name.
     """
 
-    standard_ds13_v2_1_tb_ps = "Standard_DS13_v2+1TB_PS"
-    standard_ds13_v2_2_tb_ps = "Standard_DS13_v2+2TB_PS"
-    standard_ds14_v2_3_tb_ps = "Standard_DS14_v2+3TB_PS"
-    standard_ds14_v2_4_tb_ps = "Standard_DS14_v2+4TB_PS"
-    standard_d13_v2 = "Standard_D13_v2"
-    standard_d14_v2 = "Standard_D14_v2"
-    standard_l8_s = "Standard_L8s"
-    standard_l16_s = "Standard_L16s"
-    standard_d11_v2 = "Standard_D11_v2"
-    standard_d12_v2 = "Standard_D12_v2"
-    standard_l4_s = "Standard_L4s"
-    dev_no_sla_standard_d11_v2 = "Dev(No SLA)_Standard_D11_v2"
-    standard_e2_a_v4 = "Standard_E2a_v4"
-    standard_e4_a_v4 = "Standard_E4a_v4"
-    standard_e8_a_v4 = "Standard_E8a_v4"
-    standard_e16_a_v4 = "Standard_E16a_v4"
-    standard_e8_as_v4_1_tb_ps = "Standard_E8as_v4+1TB_PS"
-    standard_e8_as_v4_2_tb_ps = "Standard_E8as_v4+2TB_PS"
-    standard_e16_as_v4_3_tb_ps = "Standard_E16as_v4+3TB_PS"
-    standard_e16_as_v4_4_tb_ps = "Standard_E16as_v4+4TB_PS"
-    dev_no_sla_standard_e2_a_v4 = "Dev(No SLA)_Standard_E2a_v4"
-
-class AzureSkuTier(str, Enum):
+    STANDARD_DS13_V2_1_TB_PS = "Standard_DS13_v2+1TB_PS"
+    STANDARD_DS13_V2_2_TB_PS = "Standard_DS13_v2+2TB_PS"
+    STANDARD_DS14_V2_3_TB_PS = "Standard_DS14_v2+3TB_PS"
+    STANDARD_DS14_V2_4_TB_PS = "Standard_DS14_v2+4TB_PS"
+    STANDARD_D13_V2 = "Standard_D13_v2"
+    STANDARD_D14_V2 = "Standard_D14_v2"
+    STANDARD_L8_S = "Standard_L8s"
+    STANDARD_L16_S = "Standard_L16s"
+    STANDARD_D11_V2 = "Standard_D11_v2"
+    STANDARD_D12_V2 = "Standard_D12_v2"
+    STANDARD_L4_S = "Standard_L4s"
+    DEV_NO_SLA_STANDARD_D11_V2 = "Dev(No SLA)_Standard_D11_v2"
+    STANDARD_E64_I_V3 = "Standard_E64i_v3"
+    STANDARD_E2_A_V4 = "Standard_E2a_v4"
+    STANDARD_E4_A_V4 = "Standard_E4a_v4"
+    STANDARD_E8_A_V4 = "Standard_E8a_v4"
+    STANDARD_E16_A_V4 = "Standard_E16a_v4"
+    STANDARD_E8_AS_V4_1_TB_PS = "Standard_E8as_v4+1TB_PS"
+    STANDARD_E8_AS_V4_2_TB_PS = "Standard_E8as_v4+2TB_PS"
+    STANDARD_E16_AS_V4_3_TB_PS = "Standard_E16as_v4+3TB_PS"
+    STANDARD_E16_AS_V4_4_TB_PS = "Standard_E16as_v4+4TB_PS"
+    DEV_NO_SLA_STANDARD_E2_A_V4 = "Dev(No SLA)_Standard_E2a_v4"
+
+class AzureSkuTier(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """SKU tier.
     """
 
-    basic = "Basic"
-    standard = "Standard"
+    BASIC = "Basic"
+    STANDARD = "Standard"
 
-class BlobStorageEventType(str, Enum):
+class BlobStorageEventType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The name of blob storage event type to process.
     """
 
-    microsoft_storage_blob_created = "Microsoft.Storage.BlobCreated"
-    microsoft_storage_blob_renamed = "Microsoft.Storage.BlobRenamed"
+    MICROSOFT_STORAGE_BLOB_CREATED = "Microsoft.Storage.BlobCreated"
+    MICROSOFT_STORAGE_BLOB_RENAMED = "Microsoft.Storage.BlobRenamed"
 
-class ClusterPrincipalRole(str, Enum):
+class ClusterPrincipalRole(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """Cluster principal role.
     """
 
-    all_databases_admin = "AllDatabasesAdmin"
-    all_databases_viewer = "AllDatabasesViewer"
+    ALL_DATABASES_ADMIN = "AllDatabasesAdmin"
+    ALL_DATABASES_VIEWER = "AllDatabasesViewer"
 
-class Compression(str, Enum):
+class Compression(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The compression type
     """
 
-    none = "None"
-    g_zip = "GZip"
+    NONE = "None"
+    G_ZIP = "GZip"
 
-class DatabasePrincipalRole(str, Enum):
+class DatabasePrincipalRole(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """Database principal role.
     """
 
-    admin = "Admin"
-    ingestor = "Ingestor"
-    monitor = "Monitor"
-    user = "User"
-    unrestricted_viewers = "UnrestrictedViewers"
-    viewer = "Viewer"
+    ADMIN = "Admin"
+    INGESTOR = "Ingestor"
+    MONITOR = "Monitor"
+    USER = "User"
+    UNRESTRICTED_VIEWERS = "UnrestrictedViewers"
+    VIEWER = "Viewer"
 
-class DatabasePrincipalType(str, Enum):
+class DatabasePrincipalType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """Database principal type.
     """
 
-    app = "App"
-    group = "Group"
-    user = "User"
+    APP = "App"
+    GROUP = "Group"
+    USER = "User"
 
-class DefaultPrincipalsModificationKind(str, Enum):
+class DefaultPrincipalsModificationKind(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The default principals modification kind
     """
 
-    union = "Union"
-    replace = "Replace"
-    none = "None"
+    UNION = "Union"
+    REPLACE = "Replace"
+    NONE = "None"
 
-class EventGridDataFormat(str, Enum):
-    """The data format of the message. Optionally the data format can be added to each message.
+class EngineType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
+    """The engine type
     """
 
-    multijson = "MULTIJSON"
-    json = "JSON"
-    csv = "CSV"
-    tsv = "TSV"
-    scsv = "SCSV"
-    sohsv = "SOHSV"
-    psv = "PSV"
-    txt = "TXT"
-    raw = "RAW"
-    singlejson = "SINGLEJSON"
-    avro = "AVRO"
-    tsve = "TSVE"
-    parquet = "PARQUET"
-    orc = "ORC"
-    apacheavro = "APACHEAVRO"
-    w3_clogfile = "W3CLOGFILE"
-
-class EventHubDataFormat(str, Enum):
+    V2 = "V2"
+    V3 = "V3"
+
+class EventGridDataFormat(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The data format of the message. Optionally the data format can be added to each message.
     """
 
-    multijson = "MULTIJSON"
-    json = "JSON"
-    csv = "CSV"
-    tsv = "TSV"
-    scsv = "SCSV"
-    sohsv = "SOHSV"
-    psv = "PSV"
-    txt = "TXT"
-    raw = "RAW"
-    singlejson = "SINGLEJSON"
-    avro = "AVRO"
-    tsve = "TSVE"
-    parquet = "PARQUET"
-    orc = "ORC"
-    apacheavro = "APACHEAVRO"
-    w3_clogfile = "W3CLOGFILE"
+    MULTIJSON = "MULTIJSON"
+    JSON = "JSON"
+    CSV = "CSV"
+    TSV = "TSV"
+    SCSV = "SCSV"
+    SOHSV = "SOHSV"
+    PSV = "PSV"
+    TXT = "TXT"
+    RAW = "RAW"
+    SINGLEJSON = "SINGLEJSON"
+    AVRO = "AVRO"
+    TSVE = "TSVE"
+    PARQUET = "PARQUET"
+    ORC = "ORC"
+    APACHEAVRO = "APACHEAVRO"
+    W3_CLOGFILE = "W3CLOGFILE"
+
+class EventHubDataFormat(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
+    """The data format of the message. Optionally the data format can be added to each message.
+    """
 
-class IdentityType(str, Enum):
-    """The identity type.
+    MULTIJSON = "MULTIJSON"
+    JSON = "JSON"
+    CSV = "CSV"
+    TSV = "TSV"
+    SCSV = "SCSV"
+    SOHSV = "SOHSV"
+    PSV = "PSV"
+    TXT = "TXT"
+    RAW = "RAW"
+    SINGLEJSON = "SINGLEJSON"
+    AVRO = "AVRO"
+    TSVE = "TSVE"
+    PARQUET = "PARQUET"
+    ORC = "ORC"
+    APACHEAVRO = "APACHEAVRO"
+    W3_CLOGFILE = "W3CLOGFILE"
+
+class IdentityType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
+    """The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes both an
+    implicitly created identity and a set of user-assigned identities. The type 'None' will remove
+    all identities.
     """
 
-    none = "None"
-    system_assigned = "SystemAssigned"
+    NONE = "None"
+    SYSTEM_ASSIGNED = "SystemAssigned"
+    USER_ASSIGNED = "UserAssigned"
+    SYSTEM_ASSIGNED_USER_ASSIGNED = "SystemAssigned, UserAssigned"
 
-class IotHubDataFormat(str, Enum):
+class IotHubDataFormat(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The data format of the message. Optionally the data format can be added to each message.
     """
 
-    multijson = "MULTIJSON"
-    json = "JSON"
-    csv = "CSV"
-    tsv = "TSV"
-    scsv = "SCSV"
-    sohsv = "SOHSV"
-    psv = "PSV"
-    txt = "TXT"
-    raw = "RAW"
-    singlejson = "SINGLEJSON"
-    avro = "AVRO"
-    tsve = "TSVE"
-    parquet = "PARQUET"
-    orc = "ORC"
-    apacheavro = "APACHEAVRO"
-    w3_clogfile = "W3CLOGFILE"
-
-class Kind(str, Enum):
+    MULTIJSON = "MULTIJSON"
+    JSON = "JSON"
+    CSV = "CSV"
+    TSV = "TSV"
+    SCSV = "SCSV"
+    SOHSV = "SOHSV"
+    PSV = "PSV"
+    TXT = "TXT"
+    RAW = "RAW"
+    SINGLEJSON = "SINGLEJSON"
+    AVRO = "AVRO"
+    TSVE = "TSVE"
+    PARQUET = "PARQUET"
+    ORC = "ORC"
+    APACHEAVRO = "APACHEAVRO"
+    W3_CLOGFILE = "W3CLOGFILE"
+
+class Kind(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """Kind of the database
     """
 
-    read_write = "ReadWrite"
-    read_only_following = "ReadOnlyFollowing"
-    event_hub = "EventHub"
-    event_grid = "EventGrid"
-    iot_hub = "IotHub"
+    READ_WRITE = "ReadWrite"
+    READ_ONLY_FOLLOWING = "ReadOnlyFollowing"
+    EVENT_HUB = "EventHub"
+    EVENT_GRID = "EventGrid"
+    IOT_HUB = "IotHub"
 
-class LanguageExtensionName(str, Enum):
+class LanguageExtensionName(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """Language extension that can run within KQL query.
     """
 
-    python = "PYTHON"
-    r = "R"
+    PYTHON = "PYTHON"
+    R = "R"
 
-class PrincipalsModificationKind(str, Enum):
+class PrincipalsModificationKind(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The principals modification kind of the database
     """
 
-    union = "Union"
-    replace = "Replace"
-    none = "None"
+    UNION = "Union"
+    REPLACE = "Replace"
+    NONE = "None"
 
-class PrincipalType(str, Enum):
+class PrincipalType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """Principal type.
     """
 
-    app = "App"
-    group = "Group"
-    user = "User"
+    APP = "App"
+    GROUP = "Group"
+    USER = "User"
 
-class ProvisioningState(str, Enum):
+class ProvisioningState(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The provisioned state of the resource.
     """
 
-    running = "Running"
-    creating = "Creating"
-    deleting = "Deleting"
-    succeeded = "Succeeded"
-    failed = "Failed"
-    moving = "Moving"
+    RUNNING = "Running"
+    CREATING = "Creating"
+    DELETING = "Deleting"
+    SUCCEEDED = "Succeeded"
+    FAILED = "Failed"
+    MOVING = "Moving"
 
-class Reason(str, Enum):
+class Reason(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """Message providing the reason why the given name is invalid.
     """
 
-    invalid = "Invalid"
-    already_exists = "AlreadyExists"
+    INVALID = "Invalid"
+    ALREADY_EXISTS = "AlreadyExists"
 
-class State(str, Enum):
+class State(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The state of the resource.
     """
 
-    creating = "Creating"
-    unavailable = "Unavailable"
-    running = "Running"
-    deleting = "Deleting"
-    deleted = "Deleted"
-    stopping = "Stopping"
-    stopped = "Stopped"
-    starting = "Starting"
-    updating = "Updating"
-
-class Type(str, Enum):
+    CREATING = "Creating"
+    UNAVAILABLE = "Unavailable"
+    RUNNING = "Running"
+    DELETING = "Deleting"
+    DELETED = "Deleted"
+    STOPPING = "Stopping"
+    STOPPED = "Stopped"
+    STARTING = "Starting"
+    UPDATING = "Updating"
+
+class Type(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
     """The type of resource, Microsoft.Kusto/clusters.
     """
 
-    microsoft_kusto_clusters = "Microsoft.Kusto/clusters"
-    microsoft_kusto_clusters_databases = "Microsoft.Kusto/clusters/databases"
-    microsoft_kusto_clusters_attached_database_configurations = "Microsoft.Kusto/clusters/attachedDatabaseConfigurations"
-    microsoft_kusto_clusters_principal_assignments = "Microsoft.Kusto/clusters/principalAssignments"
-    microsoft_kusto_clusters_databases_data_connections = "Microsoft.Kusto/clusters/databases/dataConnections"
-    microsoft_kusto_clusters_databases_principal_assignments = "Microsoft.Kusto/clusters/databases/principalAssignments"
+    MICROSOFT_KUSTO_CLUSTERS = "Microsoft.Kusto/clusters"
+    MICROSOFT_KUSTO_CLUSTERS_DATABASES = "Microsoft.Kusto/clusters/databases"
+    MICROSOFT_KUSTO_CLUSTERS_ATTACHED_DATABASE_CONFIGURATIONS = "Microsoft.Kusto/clusters/attachedDatabaseConfigurations"
+    MICROSOFT_KUSTO_CLUSTERS_PRINCIPAL_ASSIGNMENTS = "Microsoft.Kusto/clusters/principalAssignments"
+    MICROSOFT_KUSTO_CLUSTERS_DATABASES_DATA_CONNECTIONS = "Microsoft.Kusto/clusters/databases/dataConnections"
+    MICROSOFT_KUSTO_CLUSTERS_DATABASES_PRINCIPAL_ASSIGNMENTS = "Microsoft.Kusto/clusters/databases/principalAssignments"
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/models/_models.py b/src/kusto/azext_kusto/vendored_sdks/kusto/models/_models.py
index c3b64c97b95..88a7800e03b 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/models/_models.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/models/_models.py
@@ -207,10 +207,10 @@ class AzureSku(msrest.serialization.Model):
     :param name: Required. SKU name. Possible values include: "Standard_DS13_v2+1TB_PS",
      "Standard_DS13_v2+2TB_PS", "Standard_DS14_v2+3TB_PS", "Standard_DS14_v2+4TB_PS",
      "Standard_D13_v2", "Standard_D14_v2", "Standard_L8s", "Standard_L16s", "Standard_D11_v2",
-     "Standard_D12_v2", "Standard_L4s", "Dev(No SLA)_Standard_D11_v2", "Standard_E2a_v4",
-     "Standard_E4a_v4", "Standard_E8a_v4", "Standard_E16a_v4", "Standard_E8as_v4+1TB_PS",
-     "Standard_E8as_v4+2TB_PS", "Standard_E16as_v4+3TB_PS", "Standard_E16as_v4+4TB_PS", "Dev(No
-     SLA)_Standard_E2a_v4".
+     "Standard_D12_v2", "Standard_L4s", "Dev(No SLA)_Standard_D11_v2", "Standard_E64i_v3",
+     "Standard_E2a_v4", "Standard_E4a_v4", "Standard_E8a_v4", "Standard_E16a_v4",
+     "Standard_E8as_v4+1TB_PS", "Standard_E8as_v4+2TB_PS", "Standard_E16as_v4+3TB_PS",
+     "Standard_E16as_v4+4TB_PS", "Dev(No SLA)_Standard_E2a_v4".
     :type name: str or ~kusto_management_client.models.AzureSkuName
     :param capacity: The number of instances of the cluster.
     :type capacity: int
@@ -443,12 +443,16 @@ class Cluster(TrackedResource):
     :param enable_double_encryption: A boolean value that indicates if double encryption is
      enabled.
     :type enable_double_encryption: bool
+    :param engine_type: The engine type. Possible values include: "V2", "V3".
+    :type engine_type: str or ~kusto_management_client.models.EngineType
     :ivar principal_id: The principal ID of resource identity.
     :vartype principal_id: str
     :ivar tenant_id: The tenant ID of resource.
     :vartype tenant_id: str
-    :param type_identity_type: The identity type. Possible values include: "None",
-     "SystemAssigned".
+    :param type_identity_type: The type of managed identity used. The type 'SystemAssigned,
+     UserAssigned' includes both an implicitly created identity and a set of user-assigned
+     identities. The type 'None' will remove all identities. Possible values include: "None",
+     "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned".
     :type type_identity_type: str or ~kusto_management_client.models.IdentityType
     :param user_assigned_identities: The list of user identities associated with the Kusto cluster.
      The user identity dictionary key references will be ARM resource ids in the form:
@@ -495,6 +499,7 @@ class Cluster(TrackedResource):
         'enable_purge': {'key': 'properties.enablePurge', 'type': 'bool'},
         'language_extensions': {'key': 'properties.languageExtensions', 'type': 'LanguageExtensionsList'},
         'enable_double_encryption': {'key': 'properties.enableDoubleEncryption', 'type': 'bool'},
+        'engine_type': {'key': 'properties.engineType', 'type': 'str'},
         'principal_id': {'key': 'identity.principalId', 'type': 'str'},
         'tenant_id': {'key': 'identity.tenantId', 'type': 'str'},
         'type_identity_type': {'key': 'identity.type', 'type': 'str'},
@@ -522,6 +527,7 @@ def __init__(
         self.enable_purge = kwargs.get('enable_purge', False)
         self.language_extensions = None
         self.enable_double_encryption = kwargs.get('enable_double_encryption', False)
+        self.engine_type = kwargs.get('engine_type', None)
         self.principal_id = None
         self.tenant_id = None
         self.type_identity_type = kwargs.get('type_identity_type', None)
@@ -757,12 +763,16 @@ class ClusterUpdate(Resource):
     :param enable_double_encryption: A boolean value that indicates if double encryption is
      enabled.
     :type enable_double_encryption: bool
+    :param engine_type: The engine type. Possible values include: "V2", "V3".
+    :type engine_type: str or ~kusto_management_client.models.EngineType
     :ivar principal_id: The principal ID of resource identity.
     :vartype principal_id: str
     :ivar tenant_id: The tenant ID of resource.
     :vartype tenant_id: str
-    :param type_identity_type: The identity type. Possible values include: "None",
-     "SystemAssigned".
+    :param type_identity_type: The type of managed identity used. The type 'SystemAssigned,
+     UserAssigned' includes both an implicitly created identity and a set of user-assigned
+     identities. The type 'None' will remove all identities. Possible values include: "None",
+     "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned".
     :type type_identity_type: str or ~kusto_management_client.models.IdentityType
     :param user_assigned_identities: The list of user identities associated with the Kusto cluster.
      The user identity dictionary key references will be ARM resource ids in the form:
@@ -806,6 +816,7 @@ class ClusterUpdate(Resource):
         'enable_purge': {'key': 'properties.enablePurge', 'type': 'bool'},
         'language_extensions': {'key': 'properties.languageExtensions', 'type': 'LanguageExtensionsList'},
         'enable_double_encryption': {'key': 'properties.enableDoubleEncryption', 'type': 'bool'},
+        'engine_type': {'key': 'properties.engineType', 'type': 'str'},
         'principal_id': {'key': 'identity.principalId', 'type': 'str'},
         'tenant_id': {'key': 'identity.tenantId', 'type': 'str'},
         'type_identity_type': {'key': 'identity.type', 'type': 'str'},
@@ -834,6 +845,7 @@ def __init__(
         self.enable_purge = kwargs.get('enable_purge', False)
         self.language_extensions = None
         self.enable_double_encryption = kwargs.get('enable_double_encryption', False)
+        self.engine_type = kwargs.get('engine_type', None)
         self.principal_id = None
         self.tenant_id = None
         self.type_identity_type = kwargs.get('type_identity_type', None)
@@ -920,7 +932,7 @@ def __init__(
     ):
         super(Database, self).__init__(**kwargs)
         self.location = kwargs.get('location', None)
-        self.kind = 'Database'
+        self.kind = 'Database'  # type: str
 
 
 class DatabaseListResult(msrest.serialization.Model):
@@ -1228,7 +1240,7 @@ def __init__(
     ):
         super(DataConnection, self).__init__(**kwargs)
         self.location = kwargs.get('location', None)
-        self.kind = 'DataConnection'
+        self.kind = 'DataConnection'  # type: str
 
 
 class DataConnectionCheckNameRequest(msrest.serialization.Model):
@@ -1411,6 +1423,9 @@ class EventGridDataConnection(DataConnection):
     :param blob_storage_event_type: The name of blob storage event type to process. Possible values
      include: "Microsoft.Storage.BlobCreated", "Microsoft.Storage.BlobRenamed".
     :type blob_storage_event_type: str or ~kusto_management_client.models.BlobStorageEventType
+    :ivar provisioning_state: The provisioned state of the resource. Possible values include:
+     "Running", "Creating", "Deleting", "Succeeded", "Failed", "Moving".
+    :vartype provisioning_state: str or ~kusto_management_client.models.ProvisioningState
     """
 
     _validation = {
@@ -1418,6 +1433,7 @@ class EventGridDataConnection(DataConnection):
         'name': {'readonly': True},
         'type': {'readonly': True},
         'kind': {'required': True},
+        'provisioning_state': {'readonly': True},
     }
 
     _attribute_map = {
@@ -1434,6 +1450,7 @@ class EventGridDataConnection(DataConnection):
         'data_format': {'key': 'properties.dataFormat', 'type': 'str'},
         'ignore_first_record': {'key': 'properties.ignoreFirstRecord', 'type': 'bool'},
         'blob_storage_event_type': {'key': 'properties.blobStorageEventType', 'type': 'str'},
+        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
     }
 
     def __init__(
@@ -1441,7 +1458,7 @@ def __init__(
         **kwargs
     ):
         super(EventGridDataConnection, self).__init__(**kwargs)
-        self.kind = 'EventGrid'
+        self.kind = 'EventGrid'  # type: str
         self.storage_account_resource_id = kwargs.get('storage_account_resource_id', None)
         self.event_hub_resource_id = kwargs.get('event_hub_resource_id', None)
         self.consumer_group = kwargs.get('consumer_group', None)
@@ -1450,6 +1467,7 @@ def __init__(
         self.data_format = kwargs.get('data_format', None)
         self.ignore_first_record = kwargs.get('ignore_first_record', None)
         self.blob_storage_event_type = kwargs.get('blob_storage_event_type', None)
+        self.provisioning_state = None
 
 
 class EventHubDataConnection(DataConnection):
@@ -1493,6 +1511,9 @@ class EventHubDataConnection(DataConnection):
     :param compression: The event hub messages compression type. Possible values include: "None",
      "GZip".
     :type compression: str or ~kusto_management_client.models.Compression
+    :ivar provisioning_state: The provisioned state of the resource. Possible values include:
+     "Running", "Creating", "Deleting", "Succeeded", "Failed", "Moving".
+    :vartype provisioning_state: str or ~kusto_management_client.models.ProvisioningState
     """
 
     _validation = {
@@ -1500,6 +1521,7 @@ class EventHubDataConnection(DataConnection):
         'name': {'readonly': True},
         'type': {'readonly': True},
         'kind': {'required': True},
+        'provisioning_state': {'readonly': True},
     }
 
     _attribute_map = {
@@ -1515,6 +1537,7 @@ class EventHubDataConnection(DataConnection):
         'data_format': {'key': 'properties.dataFormat', 'type': 'str'},
         'event_system_properties': {'key': 'properties.eventSystemProperties', 'type': '[str]'},
         'compression': {'key': 'properties.compression', 'type': 'str'},
+        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
     }
 
     def __init__(
@@ -1522,7 +1545,7 @@ def __init__(
         **kwargs
     ):
         super(EventHubDataConnection, self).__init__(**kwargs)
-        self.kind = 'EventHub'
+        self.kind = 'EventHub'  # type: str
         self.event_hub_resource_id = kwargs.get('event_hub_resource_id', None)
         self.consumer_group = kwargs.get('consumer_group', None)
         self.table_name = kwargs.get('table_name', None)
@@ -1530,6 +1553,7 @@ def __init__(
         self.data_format = kwargs.get('data_format', None)
         self.event_system_properties = kwargs.get('event_system_properties', None)
         self.compression = kwargs.get('compression', None)
+        self.provisioning_state = None
 
 
 class FollowerDatabaseDefinition(msrest.serialization.Model):
@@ -1631,6 +1655,9 @@ class IotHubDataConnection(DataConnection):
     :type event_system_properties: list[str]
     :param shared_access_policy_name: The name of the share access policy.
     :type shared_access_policy_name: str
+    :ivar provisioning_state: The provisioned state of the resource. Possible values include:
+     "Running", "Creating", "Deleting", "Succeeded", "Failed", "Moving".
+    :vartype provisioning_state: str or ~kusto_management_client.models.ProvisioningState
     """
 
     _validation = {
@@ -1638,6 +1665,7 @@ class IotHubDataConnection(DataConnection):
         'name': {'readonly': True},
         'type': {'readonly': True},
         'kind': {'required': True},
+        'provisioning_state': {'readonly': True},
     }
 
     _attribute_map = {
@@ -1653,6 +1681,7 @@ class IotHubDataConnection(DataConnection):
         'data_format': {'key': 'properties.dataFormat', 'type': 'str'},
         'event_system_properties': {'key': 'properties.eventSystemProperties', 'type': '[str]'},
         'shared_access_policy_name': {'key': 'properties.sharedAccessPolicyName', 'type': 'str'},
+        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
     }
 
     def __init__(
@@ -1660,7 +1689,7 @@ def __init__(
         **kwargs
     ):
         super(IotHubDataConnection, self).__init__(**kwargs)
-        self.kind = 'IotHub'
+        self.kind = 'IotHub'  # type: str
         self.iot_hub_resource_id = kwargs.get('iot_hub_resource_id', None)
         self.consumer_group = kwargs.get('consumer_group', None)
         self.table_name = kwargs.get('table_name', None)
@@ -1668,6 +1697,7 @@ def __init__(
         self.data_format = kwargs.get('data_format', None)
         self.event_system_properties = kwargs.get('event_system_properties', None)
         self.shared_access_policy_name = kwargs.get('shared_access_policy_name', None)
+        self.provisioning_state = None
 
 
 class KeyVaultProperties(msrest.serialization.Model):
@@ -1677,15 +1707,16 @@ class KeyVaultProperties(msrest.serialization.Model):
 
     :param key_name: Required. The name of the key vault key.
     :type key_name: str
-    :param key_version: Required. The version of the key vault key.
+    :param key_version: The version of the key vault key.
     :type key_version: str
     :param key_vault_uri: Required. The Uri of the key vault.
     :type key_vault_uri: str
+    :param user_identity: The user assigned identity (ARM resource id) that has access to the key.
+    :type user_identity: str
     """
 
     _validation = {
         'key_name': {'required': True},
-        'key_version': {'required': True},
         'key_vault_uri': {'required': True},
     }
 
@@ -1693,6 +1724,7 @@ class KeyVaultProperties(msrest.serialization.Model):
         'key_name': {'key': 'keyName', 'type': 'str'},
         'key_version': {'key': 'keyVersion', 'type': 'str'},
         'key_vault_uri': {'key': 'keyVaultUri', 'type': 'str'},
+        'user_identity': {'key': 'userIdentity', 'type': 'str'},
     }
 
     def __init__(
@@ -1701,8 +1733,9 @@ def __init__(
     ):
         super(KeyVaultProperties, self).__init__(**kwargs)
         self.key_name = kwargs['key_name']
-        self.key_version = kwargs['key_version']
+        self.key_version = kwargs.get('key_version', None)
         self.key_vault_uri = kwargs['key_vault_uri']
+        self.user_identity = kwargs.get('user_identity', None)
 
 
 class LanguageExtension(msrest.serialization.Model):
@@ -1998,7 +2031,7 @@ def __init__(
         **kwargs
     ):
         super(ReadOnlyFollowingDatabase, self).__init__(**kwargs)
-        self.kind = 'ReadOnlyFollowing'
+        self.kind = 'ReadOnlyFollowing'  # type: str
         self.provisioning_state = None
         self.soft_delete_period = None
         self.hot_cache_period = kwargs.get('hot_cache_period', None)
@@ -2071,7 +2104,7 @@ def __init__(
         **kwargs
     ):
         super(ReadWriteDatabase, self).__init__(**kwargs)
-        self.kind = 'ReadWrite'
+        self.kind = 'ReadWrite'  # type: str
         self.provisioning_state = None
         self.soft_delete_period = kwargs.get('soft_delete_period', None)
         self.hot_cache_period = kwargs.get('hot_cache_period', None)
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/models/_models_py3.py b/src/kusto/azext_kusto/vendored_sdks/kusto/models/_models_py3.py
index 8088db1deaa..ff9f5298480 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/models/_models_py3.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/models/_models_py3.py
@@ -228,10 +228,10 @@ class AzureSku(msrest.serialization.Model):
     :param name: Required. SKU name. Possible values include: "Standard_DS13_v2+1TB_PS",
      "Standard_DS13_v2+2TB_PS", "Standard_DS14_v2+3TB_PS", "Standard_DS14_v2+4TB_PS",
      "Standard_D13_v2", "Standard_D14_v2", "Standard_L8s", "Standard_L16s", "Standard_D11_v2",
-     "Standard_D12_v2", "Standard_L4s", "Dev(No SLA)_Standard_D11_v2", "Standard_E2a_v4",
-     "Standard_E4a_v4", "Standard_E8a_v4", "Standard_E16a_v4", "Standard_E8as_v4+1TB_PS",
-     "Standard_E8as_v4+2TB_PS", "Standard_E16as_v4+3TB_PS", "Standard_E16as_v4+4TB_PS", "Dev(No
-     SLA)_Standard_E2a_v4".
+     "Standard_D12_v2", "Standard_L4s", "Dev(No SLA)_Standard_D11_v2", "Standard_E64i_v3",
+     "Standard_E2a_v4", "Standard_E4a_v4", "Standard_E8a_v4", "Standard_E16a_v4",
+     "Standard_E8as_v4+1TB_PS", "Standard_E8as_v4+2TB_PS", "Standard_E16as_v4+3TB_PS",
+     "Standard_E16as_v4+4TB_PS", "Dev(No SLA)_Standard_E2a_v4".
     :type name: str or ~kusto_management_client.models.AzureSkuName
     :param capacity: The number of instances of the cluster.
     :type capacity: int
@@ -484,12 +484,16 @@ class Cluster(TrackedResource):
     :param enable_double_encryption: A boolean value that indicates if double encryption is
      enabled.
     :type enable_double_encryption: bool
+    :param engine_type: The engine type. Possible values include: "V2", "V3".
+    :type engine_type: str or ~kusto_management_client.models.EngineType
     :ivar principal_id: The principal ID of resource identity.
     :vartype principal_id: str
     :ivar tenant_id: The tenant ID of resource.
     :vartype tenant_id: str
-    :param type_identity_type: The identity type. Possible values include: "None",
-     "SystemAssigned".
+    :param type_identity_type: The type of managed identity used. The type 'SystemAssigned,
+     UserAssigned' includes both an implicitly created identity and a set of user-assigned
+     identities. The type 'None' will remove all identities. Possible values include: "None",
+     "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned".
     :type type_identity_type: str or ~kusto_management_client.models.IdentityType
     :param user_assigned_identities: The list of user identities associated with the Kusto cluster.
      The user identity dictionary key references will be ARM resource ids in the form:
@@ -536,6 +540,7 @@ class Cluster(TrackedResource):
         'enable_purge': {'key': 'properties.enablePurge', 'type': 'bool'},
         'language_extensions': {'key': 'properties.languageExtensions', 'type': 'LanguageExtensionsList'},
         'enable_double_encryption': {'key': 'properties.enableDoubleEncryption', 'type': 'bool'},
+        'engine_type': {'key': 'properties.engineType', 'type': 'str'},
         'principal_id': {'key': 'identity.principalId', 'type': 'str'},
         'tenant_id': {'key': 'identity.tenantId', 'type': 'str'},
         'type_identity_type': {'key': 'identity.type', 'type': 'str'},
@@ -557,6 +562,7 @@ def __init__(
         key_vault_properties: Optional["KeyVaultProperties"] = None,
         enable_purge: Optional[bool] = False,
         enable_double_encryption: Optional[bool] = False,
+        engine_type: Optional[Union[str, "EngineType"]] = None,
         type_identity_type: Optional[Union[str, "IdentityType"]] = None,
         user_assigned_identities: Optional[Dict[str, "ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
         **kwargs
@@ -578,6 +584,7 @@ def __init__(
         self.enable_purge = enable_purge
         self.language_extensions = None
         self.enable_double_encryption = enable_double_encryption
+        self.engine_type = engine_type
         self.principal_id = None
         self.tenant_id = None
         self.type_identity_type = type_identity_type
@@ -828,12 +835,16 @@ class ClusterUpdate(Resource):
     :param enable_double_encryption: A boolean value that indicates if double encryption is
      enabled.
     :type enable_double_encryption: bool
+    :param engine_type: The engine type. Possible values include: "V2", "V3".
+    :type engine_type: str or ~kusto_management_client.models.EngineType
     :ivar principal_id: The principal ID of resource identity.
     :vartype principal_id: str
     :ivar tenant_id: The tenant ID of resource.
     :vartype tenant_id: str
-    :param type_identity_type: The identity type. Possible values include: "None",
-     "SystemAssigned".
+    :param type_identity_type: The type of managed identity used. The type 'SystemAssigned,
+     UserAssigned' includes both an implicitly created identity and a set of user-assigned
+     identities. The type 'None' will remove all identities. Possible values include: "None",
+     "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned".
     :type type_identity_type: str or ~kusto_management_client.models.IdentityType
     :param user_assigned_identities: The list of user identities associated with the Kusto cluster.
      The user identity dictionary key references will be ARM resource ids in the form:
@@ -877,6 +888,7 @@ class ClusterUpdate(Resource):
         'enable_purge': {'key': 'properties.enablePurge', 'type': 'bool'},
         'language_extensions': {'key': 'properties.languageExtensions', 'type': 'LanguageExtensionsList'},
         'enable_double_encryption': {'key': 'properties.enableDoubleEncryption', 'type': 'bool'},
+        'engine_type': {'key': 'properties.engineType', 'type': 'str'},
         'principal_id': {'key': 'identity.principalId', 'type': 'str'},
         'tenant_id': {'key': 'identity.tenantId', 'type': 'str'},
         'type_identity_type': {'key': 'identity.type', 'type': 'str'},
@@ -897,6 +909,7 @@ def __init__(
         key_vault_properties: Optional["KeyVaultProperties"] = None,
         enable_purge: Optional[bool] = False,
         enable_double_encryption: Optional[bool] = False,
+        engine_type: Optional[Union[str, "EngineType"]] = None,
         type_identity_type: Optional[Union[str, "IdentityType"]] = None,
         user_assigned_identities: Optional[Dict[str, "ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
         **kwargs
@@ -919,6 +932,7 @@ def __init__(
         self.enable_purge = enable_purge
         self.language_extensions = None
         self.enable_double_encryption = enable_double_encryption
+        self.engine_type = engine_type
         self.principal_id = None
         self.tenant_id = None
         self.type_identity_type = type_identity_type
@@ -1007,7 +1021,7 @@ def __init__(
     ):
         super(Database, self).__init__(**kwargs)
         self.location = location
-        self.kind: str = 'Database'
+        self.kind = 'Database'  # type: str
 
 
 class DatabaseListResult(msrest.serialization.Model):
@@ -1342,7 +1356,7 @@ def __init__(
     ):
         super(DataConnection, self).__init__(**kwargs)
         self.location = location
-        self.kind: str = 'DataConnection'
+        self.kind = 'DataConnection'  # type: str
 
 
 class DataConnectionCheckNameRequest(msrest.serialization.Model):
@@ -1539,6 +1553,9 @@ class EventGridDataConnection(DataConnection):
     :param blob_storage_event_type: The name of blob storage event type to process. Possible values
      include: "Microsoft.Storage.BlobCreated", "Microsoft.Storage.BlobRenamed".
     :type blob_storage_event_type: str or ~kusto_management_client.models.BlobStorageEventType
+    :ivar provisioning_state: The provisioned state of the resource. Possible values include:
+     "Running", "Creating", "Deleting", "Succeeded", "Failed", "Moving".
+    :vartype provisioning_state: str or ~kusto_management_client.models.ProvisioningState
     """
 
     _validation = {
@@ -1546,6 +1563,7 @@ class EventGridDataConnection(DataConnection):
         'name': {'readonly': True},
         'type': {'readonly': True},
         'kind': {'required': True},
+        'provisioning_state': {'readonly': True},
     }
 
     _attribute_map = {
@@ -1562,6 +1580,7 @@ class EventGridDataConnection(DataConnection):
         'data_format': {'key': 'properties.dataFormat', 'type': 'str'},
         'ignore_first_record': {'key': 'properties.ignoreFirstRecord', 'type': 'bool'},
         'blob_storage_event_type': {'key': 'properties.blobStorageEventType', 'type': 'str'},
+        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
     }
 
     def __init__(
@@ -1579,7 +1598,7 @@ def __init__(
         **kwargs
     ):
         super(EventGridDataConnection, self).__init__(location=location, **kwargs)
-        self.kind: str = 'EventGrid'
+        self.kind = 'EventGrid'  # type: str
         self.storage_account_resource_id = storage_account_resource_id
         self.event_hub_resource_id = event_hub_resource_id
         self.consumer_group = consumer_group
@@ -1588,6 +1607,7 @@ def __init__(
         self.data_format = data_format
         self.ignore_first_record = ignore_first_record
         self.blob_storage_event_type = blob_storage_event_type
+        self.provisioning_state = None
 
 
 class EventHubDataConnection(DataConnection):
@@ -1631,6 +1651,9 @@ class EventHubDataConnection(DataConnection):
     :param compression: The event hub messages compression type. Possible values include: "None",
      "GZip".
     :type compression: str or ~kusto_management_client.models.Compression
+    :ivar provisioning_state: The provisioned state of the resource. Possible values include:
+     "Running", "Creating", "Deleting", "Succeeded", "Failed", "Moving".
+    :vartype provisioning_state: str or ~kusto_management_client.models.ProvisioningState
     """
 
     _validation = {
@@ -1638,6 +1661,7 @@ class EventHubDataConnection(DataConnection):
         'name': {'readonly': True},
         'type': {'readonly': True},
         'kind': {'required': True},
+        'provisioning_state': {'readonly': True},
     }
 
     _attribute_map = {
@@ -1653,6 +1677,7 @@ class EventHubDataConnection(DataConnection):
         'data_format': {'key': 'properties.dataFormat', 'type': 'str'},
         'event_system_properties': {'key': 'properties.eventSystemProperties', 'type': '[str]'},
         'compression': {'key': 'properties.compression', 'type': 'str'},
+        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
     }
 
     def __init__(
@@ -1669,7 +1694,7 @@ def __init__(
         **kwargs
     ):
         super(EventHubDataConnection, self).__init__(location=location, **kwargs)
-        self.kind: str = 'EventHub'
+        self.kind = 'EventHub'  # type: str
         self.event_hub_resource_id = event_hub_resource_id
         self.consumer_group = consumer_group
         self.table_name = table_name
@@ -1677,6 +1702,7 @@ def __init__(
         self.data_format = data_format
         self.event_system_properties = event_system_properties
         self.compression = compression
+        self.provisioning_state = None
 
 
 class FollowerDatabaseDefinition(msrest.serialization.Model):
@@ -1783,6 +1809,9 @@ class IotHubDataConnection(DataConnection):
     :type event_system_properties: list[str]
     :param shared_access_policy_name: The name of the share access policy.
     :type shared_access_policy_name: str
+    :ivar provisioning_state: The provisioned state of the resource. Possible values include:
+     "Running", "Creating", "Deleting", "Succeeded", "Failed", "Moving".
+    :vartype provisioning_state: str or ~kusto_management_client.models.ProvisioningState
     """
 
     _validation = {
@@ -1790,6 +1819,7 @@ class IotHubDataConnection(DataConnection):
         'name': {'readonly': True},
         'type': {'readonly': True},
         'kind': {'required': True},
+        'provisioning_state': {'readonly': True},
     }
 
     _attribute_map = {
@@ -1805,6 +1835,7 @@ class IotHubDataConnection(DataConnection):
         'data_format': {'key': 'properties.dataFormat', 'type': 'str'},
         'event_system_properties': {'key': 'properties.eventSystemProperties', 'type': '[str]'},
         'shared_access_policy_name': {'key': 'properties.sharedAccessPolicyName', 'type': 'str'},
+        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
     }
 
     def __init__(
@@ -1821,7 +1852,7 @@ def __init__(
         **kwargs
     ):
         super(IotHubDataConnection, self).__init__(location=location, **kwargs)
-        self.kind: str = 'IotHub'
+        self.kind = 'IotHub'  # type: str
         self.iot_hub_resource_id = iot_hub_resource_id
         self.consumer_group = consumer_group
         self.table_name = table_name
@@ -1829,6 +1860,7 @@ def __init__(
         self.data_format = data_format
         self.event_system_properties = event_system_properties
         self.shared_access_policy_name = shared_access_policy_name
+        self.provisioning_state = None
 
 
 class KeyVaultProperties(msrest.serialization.Model):
@@ -1838,15 +1870,16 @@ class KeyVaultProperties(msrest.serialization.Model):
 
     :param key_name: Required. The name of the key vault key.
     :type key_name: str
-    :param key_version: Required. The version of the key vault key.
+    :param key_version: The version of the key vault key.
     :type key_version: str
     :param key_vault_uri: Required. The Uri of the key vault.
     :type key_vault_uri: str
+    :param user_identity: The user assigned identity (ARM resource id) that has access to the key.
+    :type user_identity: str
     """
 
     _validation = {
         'key_name': {'required': True},
-        'key_version': {'required': True},
         'key_vault_uri': {'required': True},
     }
 
@@ -1854,20 +1887,23 @@ class KeyVaultProperties(msrest.serialization.Model):
         'key_name': {'key': 'keyName', 'type': 'str'},
         'key_version': {'key': 'keyVersion', 'type': 'str'},
         'key_vault_uri': {'key': 'keyVaultUri', 'type': 'str'},
+        'user_identity': {'key': 'userIdentity', 'type': 'str'},
     }
 
     def __init__(
         self,
         *,
         key_name: str,
-        key_version: str,
         key_vault_uri: str,
+        key_version: Optional[str] = None,
+        user_identity: Optional[str] = None,
         **kwargs
     ):
         super(KeyVaultProperties, self).__init__(**kwargs)
         self.key_name = key_name
         self.key_version = key_version
         self.key_vault_uri = key_vault_uri
+        self.user_identity = user_identity
 
 
 class LanguageExtension(msrest.serialization.Model):
@@ -2190,7 +2226,7 @@ def __init__(
         **kwargs
     ):
         super(ReadOnlyFollowingDatabase, self).__init__(location=location, **kwargs)
-        self.kind: str = 'ReadOnlyFollowing'
+        self.kind = 'ReadOnlyFollowing'  # type: str
         self.provisioning_state = None
         self.soft_delete_period = None
         self.hot_cache_period = hot_cache_period
@@ -2267,7 +2303,7 @@ def __init__(
         **kwargs
     ):
         super(ReadWriteDatabase, self).__init__(location=location, **kwargs)
-        self.kind: str = 'ReadWrite'
+        self.kind = 'ReadWrite'  # type: str
         self.provisioning_state = None
         self.soft_delete_period = soft_delete_period
         self.hot_cache_period = hot_cache_period
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_attached_database_configuration_operations.py b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_attached_database_configuration_operations.py
index 403fd151411..91fe3f6c4b9 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_attached_database_configuration_operations.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_attached_database_configuration_operations.py
@@ -68,9 +68,13 @@ def list_by_cluster(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.AttachedDatabaseConfigurationListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_by_cluster.metadata['url']  # type: ignore
@@ -84,15 +88,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -143,7 +143,7 @@ def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.AttachedDatabaseConfiguration"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -163,7 +163,6 @@ def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -196,8 +195,8 @@ def _create_or_update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.AttachedDatabaseConfiguration(location=location, database_name=database_name, cluster_resource_id=cluster_resource_id, default_principals_modification_kind=default_principals_modification_kind)
-        api_version = "2020-06-14"
+        parameters = models.AttachedDatabaseConfiguration(location=location, database_name=database_name, cluster_resource_id=cluster_resource_id, default_principals_modification_kind=default_principals_modification_kind)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -219,9 +218,8 @@ def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'AttachedDatabaseConfiguration')
+        body_content = self._serialize.body(parameters, 'AttachedDatabaseConfiguration')
         body_content_kwargs['content'] = body_content
         request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -232,7 +230,6 @@ def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('AttachedDatabaseConfiguration', pipeline_response)
 
@@ -259,7 +256,7 @@ def begin_create_or_update(
         default_principals_modification_kind=None,  # type: Optional[Union[str, "models.DefaultPrincipalsModificationKind"]]
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.AttachedDatabaseConfiguration"]
         """Creates or updates an attached database configuration.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -271,14 +268,15 @@ def begin_create_or_update(
         :param location: Resource location.
         :type location: str
         :param database_name: The name of the database which you would like to attach, use * if you
-     want to follow all current and future databases.
+         want to follow all current and future databases.
         :type database_name: str
         :param cluster_resource_id: The resource id of the cluster where the databases you would like
-     to attach reside.
+         to attach reside.
         :type cluster_resource_id: str
         :param default_principals_modification_kind: The default principals modification kind.
         :type default_principals_modification_kind: str or ~kusto_management_client.models.DefaultPrincipalsModificationKind
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -293,17 +291,19 @@ def begin_create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            attached_database_configuration_name=attached_database_configuration_name,
-            location=location,
-            database_name=database_name,
-            cluster_resource_id=cluster_resource_id,
-            default_principals_modification_kind=default_principals_modification_kind,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                attached_database_configuration_name=attached_database_configuration_name,
+                location=location,
+                database_name=database_name,
+                cluster_resource_id=cluster_resource_id,
+                default_principals_modification_kind=default_principals_modification_kind,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -318,7 +318,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/attachedDatabaseConfigurations/{attachedDatabaseConfigurationName}'}  # type: ignore
 
     def _delete_initial(
@@ -332,7 +340,7 @@ def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -351,7 +359,6 @@ def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -372,7 +379,7 @@ def begin_delete(
         attached_database_configuration_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Deletes the attached database configuration with the given name.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -382,6 +389,7 @@ def begin_delete(
         :param attached_database_configuration_name: The name of the attached database configuration.
         :type attached_database_configuration_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -396,13 +404,15 @@ def begin_delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            attached_database_configuration_name=attached_database_configuration_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                attached_database_configuration_name=attached_database_configuration_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -414,5 +424,13 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/attachedDatabaseConfigurations/{attachedDatabaseConfigurationName}'}  # type: ignore
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_cluster_operations.py b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_cluster_operations.py
index 2d59f3994cf..526a1efd086 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_cluster_operations.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_cluster_operations.py
@@ -68,7 +68,7 @@ def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.Cluster"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -87,7 +87,6 @@ def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -111,8 +110,8 @@ def _create_or_update_initial(
         location,  # type: str
         sku,  # type: "models.AzureSku"
         tags=None,  # type: Optional[Dict[str, str]]
-        trusted_external_tenants=None,  # type: Optional[List["models.TrustedExternalTenant"]]
         zones=None,  # type: Optional[List[str]]
+        trusted_external_tenants=None,  # type: Optional[List["models.TrustedExternalTenant"]]
         optimized_autoscale=None,  # type: Optional["models.OptimizedAutoscale"]
         enable_disk_encryption=None,  # type: Optional[bool]
         enable_streaming_ingest=False,  # type: Optional[bool]
@@ -120,6 +119,7 @@ def _create_or_update_initial(
         key_vault_properties=None,  # type: Optional["models.KeyVaultProperties"]
         enable_purge=False,  # type: Optional[bool]
         enable_double_encryption=False,  # type: Optional[bool]
+        engine_type=None,  # type: Optional[Union[str, "models.EngineType"]]
         type=None,  # type: Optional[Union[str, "models.IdentityType"]]
         user_assigned_identities=None,  # type: Optional[Dict[str, "models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]]
         **kwargs  # type: Any
@@ -129,8 +129,8 @@ def _create_or_update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.Cluster(tags=tags, location=location, sku=sku, zones=zones, trusted_external_tenants=trusted_external_tenants, optimized_autoscale=optimized_autoscale, enable_disk_encryption=enable_disk_encryption, enable_streaming_ingest=enable_streaming_ingest, virtual_network_configuration=virtual_network_configuration, key_vault_properties=key_vault_properties, enable_purge=enable_purge, enable_double_encryption=enable_double_encryption, type_identity_type=type, user_assigned_identities=user_assigned_identities)
-        api_version = "2020-06-14"
+        parameters = models.Cluster(tags=tags, location=location, sku=sku, zones=zones, trusted_external_tenants=trusted_external_tenants, optimized_autoscale=optimized_autoscale, enable_disk_encryption=enable_disk_encryption, enable_streaming_ingest=enable_streaming_ingest, virtual_network_configuration=virtual_network_configuration, key_vault_properties=key_vault_properties, enable_purge=enable_purge, enable_double_encryption=enable_double_encryption, engine_type=engine_type, type_identity_type=type, user_assigned_identities=user_assigned_identities)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -151,9 +151,8 @@ def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'Cluster')
+        body_content = self._serialize.body(parameters, 'Cluster')
         body_content_kwargs['content'] = body_content
         request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -164,7 +163,6 @@ def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('Cluster', pipeline_response)
 
@@ -193,11 +191,12 @@ def begin_create_or_update(
         key_vault_properties=None,  # type: Optional["models.KeyVaultProperties"]
         enable_purge=False,  # type: Optional[bool]
         enable_double_encryption=False,  # type: Optional[bool]
+        engine_type=None,  # type: Optional[Union[str, "models.EngineType"]]
         type=None,  # type: Optional[Union[str, "models.IdentityType"]]
         user_assigned_identities=None,  # type: Optional[Dict[str, "models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]]
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.Cluster"]
         """Create or update a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -217,10 +216,10 @@ def begin_create_or_update(
         :param optimized_autoscale: Optimized auto scale definition.
         :type optimized_autoscale: ~kusto_management_client.models.OptimizedAutoscale
         :param enable_disk_encryption: A boolean value that indicates if the cluster's disks are
-     encrypted.
+         encrypted.
         :type enable_disk_encryption: bool
         :param enable_streaming_ingest: A boolean value that indicates if the streaming ingest is
-     enabled.
+         enabled.
         :type enable_streaming_ingest: bool
         :param virtual_network_configuration: Virtual network definition.
         :type virtual_network_configuration: ~kusto_management_client.models.VirtualNetworkConfiguration
@@ -229,15 +228,20 @@ def begin_create_or_update(
         :param enable_purge: A boolean value that indicates if the purge operations are enabled.
         :type enable_purge: bool
         :param enable_double_encryption: A boolean value that indicates if double encryption is
-     enabled.
+         enabled.
         :type enable_double_encryption: bool
-        :param type: The identity type.
+        :param engine_type: The engine type.
+        :type engine_type: str or ~kusto_management_client.models.EngineType
+        :param type: The type of managed identity used. The type 'SystemAssigned, UserAssigned'
+         includes both an implicitly created identity and a set of user-assigned identities. The type
+         'None' will remove all identities.
         :type type: str or ~kusto_management_client.models.IdentityType
         :param user_assigned_identities: The list of user identities associated with the Kusto cluster.
-     The user identity dictionary key references will be ARM resource ids in the form:
-     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
+         The user identity dictionary key references will be ARM resource ids in the form:
+         '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
         :type user_assigned_identities: dict[str, ~kusto_management_client.models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties]
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -252,26 +256,29 @@ def begin_create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            location=location,
-            sku=sku,
-            tags=tags,
-            zones=zones,
-            trusted_external_tenants=trusted_external_tenants,
-            optimized_autoscale=optimized_autoscale,
-            enable_disk_encryption=enable_disk_encryption,
-            enable_streaming_ingest=enable_streaming_ingest,
-            virtual_network_configuration=virtual_network_configuration,
-            key_vault_properties=key_vault_properties,
-            enable_purge=enable_purge,
-            enable_double_encryption=enable_double_encryption,
-            type=type,
-            user_assigned_identities=user_assigned_identities,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                location=location,
+                sku=sku,
+                tags=tags,
+                zones=zones,
+                trusted_external_tenants=trusted_external_tenants,
+                optimized_autoscale=optimized_autoscale,
+                enable_disk_encryption=enable_disk_encryption,
+                enable_streaming_ingest=enable_streaming_ingest,
+                virtual_network_configuration=virtual_network_configuration,
+                key_vault_properties=key_vault_properties,
+                enable_purge=enable_purge,
+                enable_double_encryption=enable_double_encryption,
+                engine_type=engine_type,
+                type=type,
+                user_assigned_identities=user_assigned_identities,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -286,7 +293,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
     def _update_initial(
@@ -304,6 +319,7 @@ def _update_initial(
         key_vault_properties=None,  # type: Optional["models.KeyVaultProperties"]
         enable_purge=False,  # type: Optional[bool]
         enable_double_encryption=False,  # type: Optional[bool]
+        engine_type=None,  # type: Optional[Union[str, "models.EngineType"]]
         type=None,  # type: Optional[Union[str, "models.IdentityType"]]
         user_assigned_identities=None,  # type: Optional[Dict[str, "models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]]
         **kwargs  # type: Any
@@ -313,8 +329,8 @@ def _update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.ClusterUpdate(tags=tags, location=location, sku=sku, trusted_external_tenants=trusted_external_tenants, optimized_autoscale=optimized_autoscale, enable_disk_encryption=enable_disk_encryption, enable_streaming_ingest=enable_streaming_ingest, virtual_network_configuration=virtual_network_configuration, key_vault_properties=key_vault_properties, enable_purge=enable_purge, enable_double_encryption=enable_double_encryption, type_identity_type=type, user_assigned_identities=user_assigned_identities)
-        api_version = "2020-06-14"
+        parameters = models.ClusterUpdate(tags=tags, location=location, sku=sku, trusted_external_tenants=trusted_external_tenants, optimized_autoscale=optimized_autoscale, enable_disk_encryption=enable_disk_encryption, enable_streaming_ingest=enable_streaming_ingest, virtual_network_configuration=virtual_network_configuration, key_vault_properties=key_vault_properties, enable_purge=enable_purge, enable_double_encryption=enable_double_encryption, engine_type=engine_type, type_identity_type=type, user_assigned_identities=user_assigned_identities)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -335,9 +351,8 @@ def _update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'ClusterUpdate')
+        body_content = self._serialize.body(parameters, 'ClusterUpdate')
         body_content_kwargs['content'] = body_content
         request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -348,7 +363,6 @@ def _update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('Cluster', pipeline_response)
 
@@ -379,11 +393,12 @@ def begin_update(
         key_vault_properties=None,  # type: Optional["models.KeyVaultProperties"]
         enable_purge=False,  # type: Optional[bool]
         enable_double_encryption=False,  # type: Optional[bool]
+        engine_type=None,  # type: Optional[Union[str, "models.EngineType"]]
         type=None,  # type: Optional[Union[str, "models.IdentityType"]]
         user_assigned_identities=None,  # type: Optional[Dict[str, "models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties"]]
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.Cluster"]
         """Update a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -401,10 +416,10 @@ def begin_update(
         :param optimized_autoscale: Optimized auto scale definition.
         :type optimized_autoscale: ~kusto_management_client.models.OptimizedAutoscale
         :param enable_disk_encryption: A boolean value that indicates if the cluster's disks are
-     encrypted.
+         encrypted.
         :type enable_disk_encryption: bool
         :param enable_streaming_ingest: A boolean value that indicates if the streaming ingest is
-     enabled.
+         enabled.
         :type enable_streaming_ingest: bool
         :param virtual_network_configuration: Virtual network definition.
         :type virtual_network_configuration: ~kusto_management_client.models.VirtualNetworkConfiguration
@@ -413,15 +428,20 @@ def begin_update(
         :param enable_purge: A boolean value that indicates if the purge operations are enabled.
         :type enable_purge: bool
         :param enable_double_encryption: A boolean value that indicates if double encryption is
-     enabled.
+         enabled.
         :type enable_double_encryption: bool
-        :param type: The identity type.
+        :param engine_type: The engine type.
+        :type engine_type: str or ~kusto_management_client.models.EngineType
+        :param type: The type of managed identity used. The type 'SystemAssigned, UserAssigned'
+         includes both an implicitly created identity and a set of user-assigned identities. The type
+         'None' will remove all identities.
         :type type: str or ~kusto_management_client.models.IdentityType
         :param user_assigned_identities: The list of user identities associated with the Kusto cluster.
-     The user identity dictionary key references will be ARM resource ids in the form:
-     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
+         The user identity dictionary key references will be ARM resource ids in the form:
+         '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
         :type user_assigned_identities: dict[str, ~kusto_management_client.models.ComponentsSgqdofSchemasIdentityPropertiesUserassignedidentitiesAdditionalproperties]
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -436,25 +456,28 @@ def begin_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            tags=tags,
-            location=location,
-            sku=sku,
-            trusted_external_tenants=trusted_external_tenants,
-            optimized_autoscale=optimized_autoscale,
-            enable_disk_encryption=enable_disk_encryption,
-            enable_streaming_ingest=enable_streaming_ingest,
-            virtual_network_configuration=virtual_network_configuration,
-            key_vault_properties=key_vault_properties,
-            enable_purge=enable_purge,
-            enable_double_encryption=enable_double_encryption,
-            type=type,
-            user_assigned_identities=user_assigned_identities,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                tags=tags,
+                location=location,
+                sku=sku,
+                trusted_external_tenants=trusted_external_tenants,
+                optimized_autoscale=optimized_autoscale,
+                enable_disk_encryption=enable_disk_encryption,
+                enable_streaming_ingest=enable_streaming_ingest,
+                virtual_network_configuration=virtual_network_configuration,
+                key_vault_properties=key_vault_properties,
+                enable_purge=enable_purge,
+                enable_double_encryption=enable_double_encryption,
+                engine_type=engine_type,
+                type=type,
+                user_assigned_identities=user_assigned_identities,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -469,7 +492,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
     def _delete_initial(
@@ -482,7 +513,7 @@ def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -500,7 +531,6 @@ def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -520,7 +550,7 @@ def begin_delete(
         cluster_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Deletes a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -528,6 +558,7 @@ def begin_delete(
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -542,12 +573,14 @@ def begin_delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -559,7 +592,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}'}  # type: ignore
 
     def _stop_initial(
@@ -572,7 +613,7 @@ def _stop_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._stop_initial.metadata['url']  # type: ignore
@@ -590,7 +631,6 @@ def _stop_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.post(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -610,7 +650,7 @@ def begin_stop(
         cluster_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Stops a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -618,6 +658,7 @@ def begin_stop(
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -632,12 +673,14 @@ def begin_stop(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._stop_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._stop_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -649,7 +692,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_stop.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/stop'}  # type: ignore
 
     def _start_initial(
@@ -662,7 +713,7 @@ def _start_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._start_initial.metadata['url']  # type: ignore
@@ -680,7 +731,6 @@ def _start_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.post(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -700,7 +750,7 @@ def begin_start(
         cluster_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Starts a Kusto cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -708,6 +758,7 @@ def begin_start(
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -722,12 +773,14 @@ def begin_start(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._start_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._start_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -739,7 +792,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_start.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/start'}  # type: ignore
 
     def list_follower_database(
@@ -749,7 +810,8 @@ def list_follower_database(
         **kwargs  # type: Any
     ):
         # type: (...) -> Iterable["models.FollowerDatabaseListResult"]
-        """Returns a list of databases that are owned by this cluster and were followed by another cluster.
+        """Returns a list of databases that are owned by this cluster and were followed by another
+        cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
         :type resource_group_name: str
@@ -763,9 +825,13 @@ def list_follower_database(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.FollowerDatabaseListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_follower_database.metadata['url']  # type: ignore
@@ -779,15 +845,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.post(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.post(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -827,8 +889,8 @@ def _detach_follower_database_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _follower_database_to_remove = models.FollowerDatabaseDefinition(cluster_resource_id=cluster_resource_id, attached_database_configuration_name=attached_database_configuration_name)
-        api_version = "2020-06-14"
+        follower_database_to_remove = models.FollowerDatabaseDefinition(cluster_resource_id=cluster_resource_id, attached_database_configuration_name=attached_database_configuration_name)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -848,9 +910,8 @@ def _detach_follower_database_initial(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_follower_database_to_remove, 'FollowerDatabaseDefinition')
+        body_content = self._serialize.body(follower_database_to_remove, 'FollowerDatabaseDefinition')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -874,7 +935,7 @@ def begin_detach_follower_database(
         attached_database_configuration_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Detaches all followers of a database owned by this cluster.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -882,12 +943,13 @@ def begin_detach_follower_database(
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :param cluster_resource_id: Resource id of the cluster that follows a database owned by this
-     cluster.
+         cluster.
         :type cluster_resource_id: str
         :param attached_database_configuration_name: Resource name of the attached database
-     configuration in the follower cluster.
+         configuration in the follower cluster.
         :type attached_database_configuration_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -902,14 +964,16 @@ def begin_detach_follower_database(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._detach_follower_database_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cluster_resource_id=cluster_resource_id,
-            attached_database_configuration_name=attached_database_configuration_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._detach_follower_database_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cluster_resource_id=cluster_resource_id,
+                attached_database_configuration_name=attached_database_configuration_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -921,7 +985,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_detach_follower_database.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/detachFollowerDatabases'}  # type: ignore
 
     def _diagnose_virtual_network_initial(
@@ -930,11 +1002,11 @@ def _diagnose_virtual_network_initial(
         cluster_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> "models.DiagnoseVirtualNetworkResult"
-        cls = kwargs.pop('cls', None)  # type: ClsType["models.DiagnoseVirtualNetworkResult"]
+        # type: (...) -> Optional["models.DiagnoseVirtualNetworkResult"]
+        cls = kwargs.pop('cls', None)  # type: ClsType[Optional["models.DiagnoseVirtualNetworkResult"]]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._diagnose_virtual_network_initial.metadata['url']  # type: ignore
@@ -953,7 +1025,6 @@ def _diagnose_virtual_network_initial(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.post(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -978,14 +1049,16 @@ def begin_diagnose_virtual_network(
         cluster_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
-        """Diagnoses network connectivity status for external resources on which the service is dependent on.
+        # type: (...) -> LROPoller["models.DiagnoseVirtualNetworkResult"]
+        """Diagnoses network connectivity status for external resources on which the service is dependent
+        on.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
         :type resource_group_name: str
         :param cluster_name: The name of the Kusto cluster.
         :type cluster_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -1000,12 +1073,14 @@ def begin_diagnose_virtual_network(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._diagnose_virtual_network_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._diagnose_virtual_network_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -1020,7 +1095,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'},  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_diagnose_virtual_network.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/diagnoseVirtualNetwork'}  # type: ignore
 
     def list_by_resource_group(
@@ -1041,9 +1124,13 @@ def list_by_resource_group(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ClusterListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_by_resource_group.metadata['url']  # type: ignore
@@ -1056,15 +1143,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -1106,9 +1189,13 @@ def list(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ClusterListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list.metadata['url']  # type: ignore
@@ -1120,15 +1207,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -1170,9 +1253,13 @@ def list_sku(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.SkuDescriptionList"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_sku.metadata['url']  # type: ignore
@@ -1184,15 +1271,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -1244,8 +1327,8 @@ def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _cluster_name = models.ClusterCheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        cluster_name = models.ClusterCheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -1265,9 +1348,8 @@ def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_cluster_name, 'ClusterCheckNameRequest')
+        body_content = self._serialize.body(cluster_name, 'ClusterCheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -1307,9 +1389,13 @@ def list_sku_by_resource(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ListResourceSkusResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_sku_by_resource.metadata['url']  # type: ignore
@@ -1323,15 +1409,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -1379,9 +1461,13 @@ def list_language_extension(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.LanguageExtensionsList"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_language_extension.metadata['url']  # type: ignore
@@ -1395,15 +1481,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.post(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.post(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -1442,8 +1524,8 @@ def _add_language_extension_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _language_extensions_to_add = models.LanguageExtensionsList(value=value)
-        api_version = "2020-06-14"
+        language_extensions_to_add = models.LanguageExtensionsList(value=value)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -1463,9 +1545,8 @@ def _add_language_extension_initial(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_language_extensions_to_add, 'LanguageExtensionsList')
+        body_content = self._serialize.body(language_extensions_to_add, 'LanguageExtensionsList')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -1488,7 +1569,7 @@ def begin_add_language_extension(
         value=None,  # type: Optional[List["models.LanguageExtension"]]
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Add a list of language extensions that can run within KQL queries.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -1498,6 +1579,7 @@ def begin_add_language_extension(
         :param value: The list of language extensions.
         :type value: list[~kusto_management_client.models.LanguageExtension]
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -1512,13 +1594,15 @@ def begin_add_language_extension(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._add_language_extension_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            value=value,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._add_language_extension_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                value=value,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -1530,7 +1614,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_add_language_extension.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/addLanguageExtensions'}  # type: ignore
 
     def _remove_language_extension_initial(
@@ -1545,8 +1637,8 @@ def _remove_language_extension_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _language_extensions_to_remove = models.LanguageExtensionsList(value=value)
-        api_version = "2020-06-14"
+        language_extensions_to_remove = models.LanguageExtensionsList(value=value)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -1566,9 +1658,8 @@ def _remove_language_extension_initial(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_language_extensions_to_remove, 'LanguageExtensionsList')
+        body_content = self._serialize.body(language_extensions_to_remove, 'LanguageExtensionsList')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -1591,7 +1682,7 @@ def begin_remove_language_extension(
         value=None,  # type: Optional[List["models.LanguageExtension"]]
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Remove a list of language extensions that can run within KQL queries.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -1601,6 +1692,7 @@ def begin_remove_language_extension(
         :param value: The list of language extensions.
         :type value: list[~kusto_management_client.models.LanguageExtension]
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -1615,13 +1707,15 @@ def begin_remove_language_extension(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._remove_language_extension_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            value=value,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._remove_language_extension_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                value=value,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -1633,5 +1727,13 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_remove_language_extension.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/removeLanguageExtensions'}  # type: ignore
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_cluster_principal_assignment_operations.py b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_cluster_principal_assignment_operations.py
index 78025b3f58f..f1b4b0f2f82 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_cluster_principal_assignment_operations.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_cluster_principal_assignment_operations.py
@@ -75,8 +75,8 @@ def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _principal_assignment_name = models.ClusterPrincipalAssignmentCheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        principal_assignment_name = models.ClusterPrincipalAssignmentCheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -97,9 +97,8 @@ def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_principal_assignment_name, 'ClusterPrincipalAssignmentCheckNameRequest')
+        body_content = self._serialize.body(principal_assignment_name, 'ClusterPrincipalAssignmentCheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -142,7 +141,7 @@ def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ClusterPrincipalAssignment"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -162,7 +161,6 @@ def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -195,8 +193,8 @@ def _create_or_update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.ClusterPrincipalAssignment(principal_id=principal_id, role=role, tenant_id=tenant_id, principal_type=principal_type)
-        api_version = "2020-06-14"
+        parameters = models.ClusterPrincipalAssignment(principal_id=principal_id, role=role, tenant_id=tenant_id, principal_type=principal_type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -218,9 +216,8 @@ def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'ClusterPrincipalAssignment')
+        body_content = self._serialize.body(parameters, 'ClusterPrincipalAssignment')
         body_content_kwargs['content'] = body_content
         request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -231,7 +228,6 @@ def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('ClusterPrincipalAssignment', pipeline_response)
 
@@ -255,7 +251,7 @@ def begin_create_or_update(
         principal_type=None,  # type: Optional[Union[str, "models.PrincipalType"]]
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.ClusterPrincipalAssignment"]
         """Create a Kusto cluster principalAssignment.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -265,7 +261,7 @@ def begin_create_or_update(
         :param principal_assignment_name: The name of the Kusto principalAssignment.
         :type principal_assignment_name: str
         :param principal_id: The principal ID assigned to the cluster principal. It can be a user
-     email, application ID, or security group name.
+         email, application ID, or security group name.
         :type principal_id: str
         :param role: Cluster principal role.
         :type role: str or ~kusto_management_client.models.ClusterPrincipalRole
@@ -274,6 +270,7 @@ def begin_create_or_update(
         :param principal_type: Principal type.
         :type principal_type: str or ~kusto_management_client.models.PrincipalType
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -288,17 +285,19 @@ def begin_create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            principal_assignment_name=principal_assignment_name,
-            principal_id=principal_id,
-            role=role,
-            tenant_id=tenant_id,
-            principal_type=principal_type,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                principal_assignment_name=principal_assignment_name,
+                principal_id=principal_id,
+                role=role,
+                tenant_id=tenant_id,
+                principal_type=principal_type,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -313,7 +312,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
     def _delete_initial(
@@ -327,7 +334,7 @@ def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -346,7 +353,6 @@ def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -367,7 +373,7 @@ def begin_delete(
         principal_assignment_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Deletes a Kusto cluster principalAssignment.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -377,6 +383,7 @@ def begin_delete(
         :param principal_assignment_name: The name of the Kusto principalAssignment.
         :type principal_assignment_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -391,13 +398,15 @@ def begin_delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            principal_assignment_name=principal_assignment_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                principal_assignment_name=principal_assignment_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -409,7 +418,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
     def list(
@@ -433,9 +450,13 @@ def list(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.ClusterPrincipalAssignmentListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list.metadata['url']  # type: ignore
@@ -449,15 +470,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_data_connection_operations.py b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_data_connection_operations.py
index d8ba89afeff..4c2fbb416aa 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_data_connection_operations.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_data_connection_operations.py
@@ -71,9 +71,13 @@ def list_by_database(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnectionListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_by_database.metadata['url']  # type: ignore
@@ -88,15 +92,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -132,13 +132,13 @@ def _data_connection_validation_initial(
         properties=None,  # type: Optional["models.DataConnection"]
         **kwargs  # type: Any
     ):
-        # type: (...) -> "models.DataConnectionValidationListResult"
-        cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnectionValidationListResult"]
+        # type: (...) -> Optional["models.DataConnectionValidationListResult"]
+        cls = kwargs.pop('cls', None)  # type: ClsType[Optional["models.DataConnectionValidationListResult"]]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.DataConnectionValidation(data_connection_name=data_connection_name, properties=properties)
-        api_version = "2020-06-14"
+        parameters = models.DataConnectionValidation(data_connection_name=data_connection_name, properties=properties)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -160,9 +160,8 @@ def _data_connection_validation_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'DataConnectionValidation')
+        body_content = self._serialize.body(parameters, 'DataConnectionValidation')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -192,7 +191,7 @@ def begin_data_connection_validation(
         properties=None,  # type: Optional["models.DataConnection"]
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.DataConnectionValidationListResult"]
         """Checks that the data connection parameters are valid.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -206,6 +205,7 @@ def begin_data_connection_validation(
         :param properties: The data connection properties to validate.
         :type properties: ~kusto_management_client.models.DataConnection
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -220,15 +220,17 @@ def begin_data_connection_validation(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._data_connection_validation_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            data_connection_name=data_connection_name,
-            properties=properties,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._data_connection_validation_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                data_connection_name=data_connection_name,
+                properties=properties,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -243,7 +245,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'location'},  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_data_connection_validation.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnectionValidation'}  # type: ignore
 
     def check_name_availability(
@@ -277,8 +287,8 @@ def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _data_connection_name = models.DataConnectionCheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        data_connection_name = models.DataConnectionCheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -300,9 +310,8 @@ def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_data_connection_name, 'DataConnectionCheckNameRequest')
+        body_content = self._serialize.body(data_connection_name, 'DataConnectionCheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -348,7 +357,7 @@ def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnection"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -369,7 +378,6 @@ def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -399,7 +407,7 @@ def _create_or_update_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnection"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -422,7 +430,6 @@ def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
         body_content = self._serialize.body(parameters, 'DataConnection')
         body_content_kwargs['content'] = body_content
@@ -435,7 +442,6 @@ def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('DataConnection', pipeline_response)
 
@@ -460,7 +466,7 @@ def begin_create_or_update(
         parameters,  # type: "models.DataConnection"
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.DataConnection"]
         """Creates or updates a data connection.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -474,6 +480,7 @@ def begin_create_or_update(
         :param parameters: The data connection parameters supplied to the CreateOrUpdate operation.
         :type parameters: ~kusto_management_client.models.DataConnection
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -488,15 +495,17 @@ def begin_create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            data_connection_name=data_connection_name,
-            parameters=parameters,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                data_connection_name=data_connection_name,
+                parameters=parameters,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -511,7 +520,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
 
     def _update_initial(
@@ -527,7 +544,7 @@ def _update_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DataConnection"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -550,7 +567,6 @@ def _update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
         body_content = self._serialize.body(parameters, 'DataConnection')
         body_content_kwargs['content'] = body_content
@@ -563,7 +579,6 @@ def _update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('DataConnection', pipeline_response)
 
@@ -588,7 +603,7 @@ def begin_update(
         parameters,  # type: "models.DataConnection"
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.DataConnection"]
         """Updates a data connection.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -602,6 +617,7 @@ def begin_update(
         :param parameters: The data connection parameters supplied to the Update operation.
         :type parameters: ~kusto_management_client.models.DataConnection
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -616,15 +632,17 @@ def begin_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            data_connection_name=data_connection_name,
-            parameters=parameters,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                data_connection_name=data_connection_name,
+                parameters=parameters,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -639,7 +657,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
 
     def _delete_initial(
@@ -654,7 +680,7 @@ def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -674,7 +700,6 @@ def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -696,7 +721,7 @@ def begin_delete(
         data_connection_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Deletes the data connection with the given name.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -708,6 +733,7 @@ def begin_delete(
         :param data_connection_name: The name of the data connection.
         :type data_connection_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -722,14 +748,16 @@ def begin_delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            data_connection_name=data_connection_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                data_connection_name=data_connection_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -741,5 +769,13 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}'}  # type: ignore
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_database_operations.py b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_database_operations.py
index 848c2c3b5e8..07f3bfc88fa 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_database_operations.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_database_operations.py
@@ -75,8 +75,8 @@ def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _resource_name = models.CheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        resource_name = models.CheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -97,9 +97,8 @@ def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_resource_name, 'CheckNameRequest')
+        body_content = self._serialize.body(resource_name, 'CheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -139,9 +138,13 @@ def list_by_cluster(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DatabaseListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_by_cluster.metadata['url']  # type: ignore
@@ -155,15 +158,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -214,7 +213,7 @@ def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.Database"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -234,7 +233,6 @@ def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -263,7 +261,7 @@ def _create_or_update_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.Database"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -285,7 +283,6 @@ def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
         body_content = self._serialize.body(parameters, 'Database')
         body_content_kwargs['content'] = body_content
@@ -298,7 +295,6 @@ def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('Database', pipeline_response)
 
@@ -322,7 +318,7 @@ def begin_create_or_update(
         parameters,  # type: "models.Database"
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.Database"]
         """Creates or updates a database.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -334,6 +330,7 @@ def begin_create_or_update(
         :param parameters: The database parameters supplied to the CreateOrUpdate operation.
         :type parameters: ~kusto_management_client.models.Database
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -348,14 +345,16 @@ def begin_create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            parameters=parameters,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                parameters=parameters,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -370,7 +369,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
     def _update_initial(
@@ -385,7 +392,7 @@ def _update_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.Database"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -407,7 +414,6 @@ def _update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
         body_content = self._serialize.body(parameters, 'Database')
         body_content_kwargs['content'] = body_content
@@ -420,7 +426,6 @@ def _update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('Database', pipeline_response)
 
@@ -444,7 +449,7 @@ def begin_update(
         parameters,  # type: "models.Database"
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.Database"]
         """Updates a database.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -456,6 +461,7 @@ def begin_update(
         :param parameters: The database parameters supplied to the Update operation.
         :type parameters: ~kusto_management_client.models.Database
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -470,14 +476,16 @@ def begin_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            parameters=parameters,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                parameters=parameters,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -492,7 +500,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
     def _delete_initial(
@@ -506,7 +522,7 @@ def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -525,7 +541,6 @@ def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -546,7 +561,7 @@ def begin_delete(
         database_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Deletes the database with the given name.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -556,6 +571,7 @@ def begin_delete(
         :param database_name: The name of the database in the Kusto cluster.
         :type database_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -570,13 +586,15 @@ def begin_delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -588,7 +606,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}'}  # type: ignore
 
     def list_principal(
@@ -615,9 +641,13 @@ def list_principal(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DatabasePrincipalListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list_principal.metadata['url']  # type: ignore
@@ -632,15 +662,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.post(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.post(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
@@ -695,8 +721,8 @@ def add_principal(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _database_principals_to_add = models.DatabasePrincipalListRequest(value=value)
-        api_version = "2020-06-14"
+        database_principals_to_add = models.DatabasePrincipalListRequest(value=value)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -718,9 +744,8 @@ def add_principal(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_database_principals_to_add, 'DatabasePrincipalListRequest')
+        body_content = self._serialize.body(database_principals_to_add, 'DatabasePrincipalListRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -767,8 +792,8 @@ def remove_principal(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _database_principals_to_remove = models.DatabasePrincipalListRequest(value=value)
-        api_version = "2020-06-14"
+        database_principals_to_remove = models.DatabasePrincipalListRequest(value=value)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -790,9 +815,8 @@ def remove_principal(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_database_principals_to_remove, 'DatabasePrincipalListRequest')
+        body_content = self._serialize.body(database_principals_to_remove, 'DatabasePrincipalListRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_database_principal_assignment_operations.py b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_database_principal_assignment_operations.py
index 724c19b1cc8..86e2aab5646 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_database_principal_assignment_operations.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_database_principal_assignment_operations.py
@@ -78,8 +78,8 @@ def check_name_availability(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _principal_assignment_name = models.DatabasePrincipalAssignmentCheckNameRequest(name=name, type=type)
-        api_version = "2020-06-14"
+        principal_assignment_name = models.DatabasePrincipalAssignmentCheckNameRequest(name=name, type=type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -101,9 +101,8 @@ def check_name_availability(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_principal_assignment_name, 'DatabasePrincipalAssignmentCheckNameRequest')
+        body_content = self._serialize.body(principal_assignment_name, 'DatabasePrincipalAssignmentCheckNameRequest')
         body_content_kwargs['content'] = body_content
         request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -149,7 +148,7 @@ def get(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DatabasePrincipalAssignment"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self.get.metadata['url']  # type: ignore
@@ -170,7 +169,6 @@ def get(
         header_parameters = {}  # type: Dict[str, Any]
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         request = self._client.get(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -204,8 +202,8 @@ def _create_or_update_initial(
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
 
-        _parameters = models.DatabasePrincipalAssignment(principal_id=principal_id, role=role, tenant_id=tenant_id, principal_type=principal_type)
-        api_version = "2020-06-14"
+        parameters = models.DatabasePrincipalAssignment(principal_id=principal_id, role=role, tenant_id=tenant_id, principal_type=principal_type)
+        api_version = "2020-09-18"
         content_type = kwargs.pop("content_type", "application/json")
 
         # Construct URL
@@ -228,9 +226,8 @@ def _create_or_update_initial(
         header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
         header_parameters['Accept'] = 'application/json'
 
-        # Construct and send request
         body_content_kwargs = {}  # type: Dict[str, Any]
-        body_content = self._serialize.body(_parameters, 'DatabasePrincipalAssignment')
+        body_content = self._serialize.body(parameters, 'DatabasePrincipalAssignment')
         body_content_kwargs['content'] = body_content
         request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
 
@@ -241,7 +238,6 @@ def _create_or_update_initial(
             map_error(status_code=response.status_code, response=response, error_map=error_map)
             raise HttpResponseError(response=response, error_format=ARMErrorFormat)
 
-        deserialized = None
         if response.status_code == 200:
             deserialized = self._deserialize('DatabasePrincipalAssignment', pipeline_response)
 
@@ -266,7 +262,7 @@ def begin_create_or_update(
         principal_type=None,  # type: Optional[Union[str, "models.PrincipalType"]]
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller["models.DatabasePrincipalAssignment"]
         """Creates a Kusto cluster database principalAssignment.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -278,7 +274,7 @@ def begin_create_or_update(
         :param principal_assignment_name: The name of the Kusto principalAssignment.
         :type principal_assignment_name: str
         :param principal_id: The principal ID assigned to the database principal. It can be a user
-     email, application ID, or security group name.
+         email, application ID, or security group name.
         :type principal_id: str
         :param role: Database principal role.
         :type role: str or ~kusto_management_client.models.DatabasePrincipalRole
@@ -287,6 +283,7 @@ def begin_create_or_update(
         :param principal_type: Principal type.
         :type principal_type: str or ~kusto_management_client.models.PrincipalType
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -301,18 +298,20 @@ def begin_create_or_update(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._create_or_update_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            principal_assignment_name=principal_assignment_name,
-            principal_id=principal_id,
-            role=role,
-            tenant_id=tenant_id,
-            principal_type=principal_type,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._create_or_update_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                principal_assignment_name=principal_assignment_name,
+                principal_id=principal_id,
+                role=role,
+                tenant_id=tenant_id,
+                principal_type=principal_type,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -327,7 +326,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
     def _delete_initial(
@@ -342,7 +349,7 @@ def _delete_initial(
         cls = kwargs.pop('cls', None)  # type: ClsType[None]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         # Construct URL
         url = self._delete_initial.metadata['url']  # type: ignore
@@ -362,7 +369,6 @@ def _delete_initial(
         # Construct headers
         header_parameters = {}  # type: Dict[str, Any]
 
-        # Construct and send request
         request = self._client.delete(url, query_parameters, header_parameters)
         pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
         response = pipeline_response.http_response
@@ -384,7 +390,7 @@ def begin_delete(
         principal_assignment_name,  # type: str
         **kwargs  # type: Any
     ):
-        # type: (...) -> LROPoller
+        # type: (...) -> LROPoller[None]
         """Deletes a Kusto principalAssignment.
 
         :param resource_group_name: The name of the resource group containing the Kusto cluster.
@@ -396,6 +402,7 @@ def begin_delete(
         :param principal_assignment_name: The name of the Kusto principalAssignment.
         :type principal_assignment_name: str
         :keyword callable cls: A custom type or function that will be passed the direct response
+        :keyword str continuation_token: A continuation token to restart a poller from a saved state.
         :keyword polling: True for ARMPolling, False for no polling, or a
          polling object for personal polling strategy
         :paramtype polling: bool or ~azure.core.polling.PollingMethod
@@ -410,14 +417,16 @@ def begin_delete(
             'polling_interval',
             self._config.polling_interval
         )
-        raw_result = self._delete_initial(
-            resource_group_name=resource_group_name,
-            cluster_name=cluster_name,
-            database_name=database_name,
-            principal_assignment_name=principal_assignment_name,
-            cls=lambda x,y,z: x,
-            **kwargs
-        )
+        cont_token = kwargs.pop('continuation_token', None)  # type: Optional[str]
+        if cont_token is None:
+            raw_result = self._delete_initial(
+                resource_group_name=resource_group_name,
+                cluster_name=cluster_name,
+                database_name=database_name,
+                principal_assignment_name=principal_assignment_name,
+                cls=lambda x,y,z: x,
+                **kwargs
+            )
 
         kwargs.pop('error_map', None)
         kwargs.pop('content_type', None)
@@ -429,7 +438,15 @@ def get_long_running_output(pipeline_response):
         if polling is True: polling_method = ARMPolling(lro_delay,  **kwargs)
         elif polling is False: polling_method = NoPolling()
         else: polling_method = polling
-        return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+        if cont_token:
+            return LROPoller.from_continuation_token(
+                polling_method=polling_method,
+                continuation_token=cont_token,
+                client=self._client,
+                deserialization_callback=get_long_running_output
+            )
+        else:
+            return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
     begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/principalAssignments/{principalAssignmentName}'}  # type: ignore
 
     def list(
@@ -456,9 +473,13 @@ def list(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.DatabasePrincipalAssignmentListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list.metadata['url']  # type: ignore
@@ -473,15 +494,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_operation_operations.py b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_operation_operations.py
index 6a0f95858b9..1f2df08ad51 100644
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_operation_operations.py
+++ b/src/kusto/azext_kusto/vendored_sdks/kusto/operations/_operation_operations.py
@@ -60,9 +60,13 @@ def list(
         cls = kwargs.pop('cls', None)  # type: ClsType["models.OperationListResult"]
         error_map = {404: ResourceNotFoundError, 409: ResourceExistsError}
         error_map.update(kwargs.pop('error_map', {}))
-        api_version = "2020-06-14"
+        api_version = "2020-09-18"
 
         def prepare_request(next_link=None):
+            # Construct headers
+            header_parameters = {}  # type: Dict[str, Any]
+            header_parameters['Accept'] = 'application/json'
+
             if not next_link:
                 # Construct URL
                 url = self.list.metadata['url']  # type: ignore
@@ -70,15 +74,11 @@ def prepare_request(next_link=None):
                 query_parameters = {}  # type: Dict[str, Any]
                 query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
 
+                request = self._client.get(url, query_parameters, header_parameters)
             else:
                 url = next_link
                 query_parameters = {}  # type: Dict[str, Any]
-            # Construct headers
-            header_parameters = {}  # type: Dict[str, Any]
-            header_parameters['Accept'] = 'application/json'
-
-            # Construct and send request
-            request = self._client.get(url, query_parameters, header_parameters)
+                request = self._client.get(url, query_parameters, header_parameters)
             return request
 
         def extract_data(pipeline_response):
diff --git a/src/kusto/azext_kusto/vendored_sdks/kusto/setup.py b/src/kusto/azext_kusto/vendored_sdks/kusto/setup.py
deleted file mode 100644
index 6f2ab0c5bff..00000000000
--- a/src/kusto/azext_kusto/vendored_sdks/kusto/setup.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# coding=utf-8
-# --------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for license information.
-# Code generated by Microsoft (R) AutoRest Code Generator.
-# Changes may cause incorrect behavior and will be lost if the code is regenerated.
-# --------------------------------------------------------------------------
-# coding: utf-8
-
-from setuptools import setup, find_packages
-
-NAME = "kustomanagementclient"
-VERSION = "0.1.0"
-
-# To install the library, run the following
-#
-# python setup.py install
-#
-# prerequisite: setuptools
-# http://pypi.python.org/pypi/setuptools
-
-REQUIRES = ["msrest>=0.6.0", "azure-core<2.0.0,>=1.2.0"]
-
-setup(
-    name=NAME,
-    version=VERSION,
-    description="KustoManagementClient",
-    author_email="",
-    url="",
-    keywords=["Swagger", "KustoManagementClient"],
-    install_requires=REQUIRES,
-    packages=find_packages(),
-    include_package_data=True,
-    long_description="""\
-    The Azure Kusto management API provides a RESTful set of web services that interact with Azure Kusto services to manage your clusters and databases. The API enables you to create, update, and delete clusters and databases.
-    """
-)
diff --git a/src/kusto/report.md b/src/kusto/report.md
index cc0809d3d39..fb495c8d4ef 100644
--- a/src/kusto/report.md
+++ b/src/kusto/report.md
@@ -1,576 +1,903 @@
-# Azure CLI Module Creation Report
-
-### kusto attached-database-configuration create
-
-create a kusto attached-database-configuration.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--attached-database-configuration-name**|string|The name of the attached database configuration.|attached_database_configuration_name|
-|**--location**|string|Resource location.|location|
-|**--database-name**|string|The name of the database which you would like to attach, use * if you want to follow all current and future databases.|database_name|
-|**--cluster-resource-id**|string|The resource id of the cluster where the databases you would like to attach reside.|cluster_resource_id|
-|**--default-principals-modification-kind**|choice|The default principals modification kind|default_principals_modification_kind|
-### kusto attached-database-configuration delete
-
-delete a kusto attached-database-configuration.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--attached-database-configuration-name**|string|The name of the attached database configuration.|attached_database_configuration_name|
-### kusto attached-database-configuration list
-
-list a kusto attached-database-configuration.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto attached-database-configuration show
-
-show a kusto attached-database-configuration.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--attached-database-configuration-name**|string|The name of the attached database configuration.|attached_database_configuration_name|
-### kusto attached-database-configuration update
-
-create a kusto attached-database-configuration.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--attached-database-configuration-name**|string|The name of the attached database configuration.|attached_database_configuration_name|
-|**--location**|string|Resource location.|location|
-|**--database-name**|string|The name of the database which you would like to attach, use * if you want to follow all current and future databases.|database_name|
-|**--cluster-resource-id**|string|The resource id of the cluster where the databases you would like to attach reside.|cluster_resource_id|
-|**--default-principals-modification-kind**|choice|The default principals modification kind|default_principals_modification_kind|
-### kusto cluster add-language-extension
-
-add-language-extension a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--value**|array|The list of language extensions.|value|
-### kusto cluster create
-
-create a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--location**|string|The geo-location where the resource lives|location|
-|**--sku**|object|The SKU of the cluster.|sku|
-|**--tags**|dictionary|Resource tags.|tags|
-|**--zones**|array|The availability zones of the cluster.|zones|
-|**--trusted-external-tenants**|array|The cluster's external tenants.|trusted_external_tenants|
-|**--optimized-autoscale**|object|Optimized auto scale definition.|optimized_autoscale|
-|**--enable-disk-encryption**|boolean|A boolean value that indicates if the cluster's disks are encrypted.|enable_disk_encryption|
-|**--enable-streaming-ingest**|boolean|A boolean value that indicates if the streaming ingest is enabled.|enable_streaming_ingest|
-|**--virtual-network-configuration**|object|Virtual network definition.|virtual_network_configuration|
-|**--key-vault-properties**|object|KeyVault properties for the cluster encryption.|key_vault_properties|
-|**--enable-purge**|boolean|A boolean value that indicates if the purge operations are enabled.|enable_purge|
-|**--enable-double-encryption**|boolean|A boolean value that indicates if double encryption is enabled.|enable_double_encryption|
-|**--identity-type**|sealed-choice|The identity type.|type_identity_type|
-|**--identity-user-assigned-identities**|dictionary|The list of user identities associated with the Kusto cluster. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.|user_assigned_identities|
-### kusto cluster delete
-
-delete a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster detach-follower-database
-
-detach-follower-database a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--cluster-resource-id**|string|Resource id of the cluster that follows a database owned by this cluster.|cluster_resource_id|
-|**--attached-database-configuration-name**|string|Resource name of the attached database configuration in the follower cluster.|attached_database_configuration_name|
-### kusto cluster diagnose-virtual-network
-
-diagnose-virtual-network a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster list
-
-list a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-### kusto cluster list-follower-database
-
-list-follower-database a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster list-language-extension
-
-list-language-extension a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster list-sku
-
-list-sku a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster remove-language-extension
-
-remove-language-extension a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--value**|array|The list of language extensions.|value|
-### kusto cluster show
-
-show a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster start
-
-start a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster stop
-
-stop a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster update
-
-update a kusto cluster.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--tags**|dictionary|Resource tags.|tags|
-|**--location**|string|Resource location.|location|
-|**--sku**|object|The SKU of the cluster.|sku|
-|**--trusted-external-tenants**|array|The cluster's external tenants.|trusted_external_tenants|
-|**--optimized-autoscale**|object|Optimized auto scale definition.|optimized_autoscale|
-|**--enable-disk-encryption**|boolean|A boolean value that indicates if the cluster's disks are encrypted.|enable_disk_encryption|
-|**--enable-streaming-ingest**|boolean|A boolean value that indicates if the streaming ingest is enabled.|enable_streaming_ingest|
-|**--virtual-network-configuration**|object|Virtual network definition.|virtual_network_configuration|
-|**--key-vault-properties**|object|KeyVault properties for the cluster encryption.|key_vault_properties|
-|**--enable-purge**|boolean|A boolean value that indicates if the purge operations are enabled.|enable_purge|
-|**--enable-double-encryption**|boolean|A boolean value that indicates if double encryption is enabled.|enable_double_encryption|
-|**--identity-type**|sealed-choice|The identity type.|type_identity_type|
-|**--identity-user-assigned-identities**|dictionary|The list of user identities associated with the Kusto cluster. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.|user_assigned_identities|
-### kusto cluster-principal-assignment create
-
-create a kusto cluster-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|
-|**--principal-id**|string|The principal ID assigned to the cluster principal. It can be a user email, application ID, or security group name.|principal_id|
-|**--role**|choice|Cluster principal role.|role|
-|**--tenant-id**|string|The tenant id of the principal|tenant_id|
-|**--principal-type**|choice|Principal type.|principal_type|
-### kusto cluster-principal-assignment delete
-
-delete a kusto cluster-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|
-### kusto cluster-principal-assignment list
-
-list a kusto cluster-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto cluster-principal-assignment show
-
-show a kusto cluster-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|
-### kusto cluster-principal-assignment update
-
-create a kusto cluster-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|
-|**--principal-id**|string|The principal ID assigned to the cluster principal. It can be a user email, application ID, or security group name.|principal_id|
-|**--role**|choice|Cluster principal role.|role|
-|**--tenant-id**|string|The tenant id of the principal|tenant_id|
-|**--principal-type**|choice|Principal type.|principal_type|
-### kusto data-connection delete
-
-delete a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-### kusto data-connection event-grid create
-
-event-grid create a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|event_grid_location|
-|**--storage-account-resource-id**|string|The resource ID of the storage account where the data resides.|event_grid_storage_account_resource_id|
-|**--event-hub-resource-id**|string|The resource ID where the event grid is configured to send events.|event_grid_event_hub_resource_id|
-|**--consumer-group**|string|The event hub consumer group.|event_grid_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_grid_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_grid_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_grid_data_format|
-|**--ignore-first-record**|boolean|A Boolean value that, if set to true, indicates that ingestion should ignore the first record of every file|event_grid_ignore_first_record|
-|**--blob-storage-event-type**|choice|The name of blob storage event type to process.|event_grid_blob_storage_event_type|
-### kusto data-connection event-grid data-connection-validation
-
-event-grid data-connection-validation a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|event_grid_location|
-|**--storage-account-resource-id**|string|The resource ID of the storage account where the data resides.|event_grid_storage_account_resource_id|
-|**--event-hub-resource-id**|string|The resource ID where the event grid is configured to send events.|event_grid_event_hub_resource_id|
-|**--consumer-group**|string|The event hub consumer group.|event_grid_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_grid_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_grid_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_grid_data_format|
-|**--ignore-first-record**|boolean|A Boolean value that, if set to true, indicates that ingestion should ignore the first record of every file|event_grid_ignore_first_record|
-|**--blob-storage-event-type**|choice|The name of blob storage event type to process.|event_grid_blob_storage_event_type|
-### kusto data-connection event-grid update
-
-event-grid update a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|event_grid_location|
-|**--storage-account-resource-id**|string|The resource ID of the storage account where the data resides.|event_grid_storage_account_resource_id|
-|**--event-hub-resource-id**|string|The resource ID where the event grid is configured to send events.|event_grid_event_hub_resource_id|
-|**--consumer-group**|string|The event hub consumer group.|event_grid_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_grid_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_grid_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_grid_data_format|
-|**--ignore-first-record**|boolean|A Boolean value that, if set to true, indicates that ingestion should ignore the first record of every file|event_grid_ignore_first_record|
-|**--blob-storage-event-type**|choice|The name of blob storage event type to process.|event_grid_blob_storage_event_type|
-### kusto data-connection event-hub create
-
-event-hub create a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|event_hub_location|
-|**--event-hub-resource-id**|string|The resource ID of the event hub to be used to create a data connection.|event_hub_event_hub_resource_id|
-|**--consumer-group**|string|The event hub consumer group.|event_hub_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_hub_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_hub_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_hub_data_format|
-|**--event-system-properties**|array|System properties of the event hub|event_hub_event_system_properties|
-|**--compression**|choice|The event hub messages compression type|event_hub_compression|
-### kusto data-connection event-hub data-connection-validation
-
-event-hub data-connection-validation a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|event_hub_location|
-|**--event-hub-resource-id**|string|The resource ID of the event hub to be used to create a data connection.|event_hub_event_hub_resource_id|
-|**--consumer-group**|string|The event hub consumer group.|event_hub_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_hub_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_hub_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_hub_data_format|
-|**--event-system-properties**|array|System properties of the event hub|event_hub_event_system_properties|
-|**--compression**|choice|The event hub messages compression type|event_hub_compression|
-### kusto data-connection event-hub update
-
-event-hub update a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|event_hub_location|
-|**--event-hub-resource-id**|string|The resource ID of the event hub to be used to create a data connection.|event_hub_event_hub_resource_id|
-|**--consumer-group**|string|The event hub consumer group.|event_hub_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_hub_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_hub_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_hub_data_format|
-|**--event-system-properties**|array|System properties of the event hub|event_hub_event_system_properties|
-|**--compression**|choice|The event hub messages compression type|event_hub_compression|
-### kusto data-connection iot-hub create
-
-iot-hub create a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|iot_hub_location|
-|**--iot-hub-resource-id**|string|The resource ID of the Iot hub to be used to create a data connection.|iot_hub_iot_hub_resource_id|
-|**--consumer-group**|string|The iot hub consumer group.|iot_hub_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|iot_hub_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|iot_hub_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|iot_hub_data_format|
-|**--event-system-properties**|array|System properties of the iot hub|iot_hub_event_system_properties|
-|**--shared-access-policy-name**|string|The name of the share access policy|iot_hub_shared_access_policy_name|
-### kusto data-connection iot-hub data-connection-validation
-
-iot-hub data-connection-validation a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|iot_hub_location|
-|**--iot-hub-resource-id**|string|The resource ID of the Iot hub to be used to create a data connection.|iot_hub_iot_hub_resource_id|
-|**--consumer-group**|string|The iot hub consumer group.|iot_hub_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|iot_hub_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|iot_hub_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|iot_hub_data_format|
-|**--event-system-properties**|array|System properties of the iot hub|iot_hub_event_system_properties|
-|**--shared-access-policy-name**|string|The name of the share access policy|iot_hub_shared_access_policy_name|
-### kusto data-connection iot-hub update
-
-iot-hub update a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-|**--location**|string|Resource location.|iot_hub_location|
-|**--iot-hub-resource-id**|string|The resource ID of the Iot hub to be used to create a data connection.|iot_hub_iot_hub_resource_id|
-|**--consumer-group**|string|The iot hub consumer group.|iot_hub_consumer_group|
-|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|iot_hub_table_name|
-|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|iot_hub_mapping_rule_name|
-|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|iot_hub_data_format|
-|**--event-system-properties**|array|System properties of the iot hub|iot_hub_event_system_properties|
-|**--shared-access-policy-name**|string|The name of the share access policy|iot_hub_shared_access_policy_name|
-### kusto data-connection list
-
-list a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-### kusto data-connection show
-
-show a kusto data-connection.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--data-connection-name**|string|The name of the data connection.|data_connection_name|
-### kusto database add-principal
-
-add-principal a kusto database.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--value**|array|The list of Kusto database principals.|value|
-### kusto database create
-
-create a kusto database.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--read-write-database**|object|Class representing a read write database.|read_write_database|
-|**--read-only-following-database**|object|Class representing a read only following database.|read_only_following_database|
-### kusto database delete
-
-delete a kusto database.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-### kusto database list
-
-list a kusto database.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-### kusto database list-principal
-
-list-principal a kusto database.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-### kusto database remove-principal
-
-remove-principal a kusto database.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--value**|array|The list of Kusto database principals.|value|
-### kusto database show
-
-show a kusto database.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-### kusto database update
-
-update a kusto database.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--read-write-database**|object|Class representing a read write database.|read_write_database|
-|**--read-only-following-database**|object|Class representing a read only following database.|read_only_following_database|
-### kusto database-principal-assignment create
-
-create a kusto database-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|
-|**--principal-id**|string|The principal ID assigned to the database principal. It can be a user email, application ID, or security group name.|principal_id|
-|**--role**|choice|Database principal role.|role|
-|**--tenant-id**|string|The tenant id of the principal|tenant_id|
-|**--principal-type**|choice|Principal type.|principal_type|
-### kusto database-principal-assignment delete
-
-delete a kusto database-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|
-### kusto database-principal-assignment list
-
-list a kusto database-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-### kusto database-principal-assignment show
-
-show a kusto database-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|
-### kusto database-principal-assignment update
-
-create a kusto database-principal-assignment.
-
-|Option|Type|Description|Path (SDK)|Path (swagger)|
-|------|----|-----------|----------|--------------|
-|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|
-|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|
-|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|
-|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|
-|**--principal-id**|string|The principal ID assigned to the database principal. It can be a user email, application ID, or security group name.|principal_id|
-|**--role**|choice|Database principal role.|role|
-|**--tenant-id**|string|The tenant id of the principal|tenant_id|
-|**--principal-type**|choice|Principal type.|principal_type|
\ No newline at end of file
+# Azure CLI Module Creation Report
+
+## EXTENSION
+|CLI Extension|Command Groups|
+|---------|------------|
+|az kusto|[groups](#CommandGroups)
+
+## GROUPS
+### <a name="CommandGroups">Command groups in `az kusto` extension </a>
+|CLI Command Group|Group Swagger name|Commands|
+|---------|------------|--------|
+|az kusto cluster|Clusters|[commands](#CommandsInClusters)|
+|az kusto cluster-principal-assignment|ClusterPrincipalAssignments|[commands](#CommandsInClusterPrincipalAssignments)|
+|az kusto database|Databases|[commands](#CommandsInDatabases)|
+|az kusto database-principal-assignment|DatabasePrincipalAssignments|[commands](#CommandsInDatabasePrincipalAssignments)|
+|az kusto attached-database-configuration|AttachedDatabaseConfigurations|[commands](#CommandsInAttachedDatabaseConfigurations)|
+|az kusto data-connection|DataConnections|[commands](#CommandsInDataConnections)|
+
+## COMMANDS
+### <a name="CommandsInAttachedDatabaseConfigurations">Commands in `az kusto attached-database-configuration` group</a>
+|CLI Command|Operation Swagger name|Parameters|Examples|
+|---------|------------|--------|-----------|
+|[az kusto attached-database-configuration list](#AttachedDatabaseConfigurationsListByCluster)|ListByCluster|[Parameters](#ParametersAttachedDatabaseConfigurationsListByCluster)|[Example](#ExamplesAttachedDatabaseConfigurationsListByCluster)|
+|[az kusto attached-database-configuration show](#AttachedDatabaseConfigurationsGet)|Get|[Parameters](#ParametersAttachedDatabaseConfigurationsGet)|[Example](#ExamplesAttachedDatabaseConfigurationsGet)|
+|[az kusto attached-database-configuration create](#AttachedDatabaseConfigurationsCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersAttachedDatabaseConfigurationsCreateOrUpdate#Create)|[Example](#ExamplesAttachedDatabaseConfigurationsCreateOrUpdate#Create)|
+|[az kusto attached-database-configuration update](#AttachedDatabaseConfigurationsCreateOrUpdate#Update)|CreateOrUpdate#Update|[Parameters](#ParametersAttachedDatabaseConfigurationsCreateOrUpdate#Update)|Not Found|
+|[az kusto attached-database-configuration delete](#AttachedDatabaseConfigurationsDelete)|Delete|[Parameters](#ParametersAttachedDatabaseConfigurationsDelete)|[Example](#ExamplesAttachedDatabaseConfigurationsDelete)|
+
+### <a name="CommandsInClusters">Commands in `az kusto cluster` group</a>
+|CLI Command|Operation Swagger name|Parameters|Examples|
+|---------|------------|--------|-----------|
+|[az kusto cluster list](#ClustersListByResourceGroup)|ListByResourceGroup|[Parameters](#ParametersClustersListByResourceGroup)|[Example](#ExamplesClustersListByResourceGroup)|
+|[az kusto cluster list](#ClustersList)|List|[Parameters](#ParametersClustersList)|[Example](#ExamplesClustersList)|
+|[az kusto cluster show](#ClustersGet)|Get|[Parameters](#ParametersClustersGet)|[Example](#ExamplesClustersGet)|
+|[az kusto cluster create](#ClustersCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersClustersCreateOrUpdate#Create)|[Example](#ExamplesClustersCreateOrUpdate#Create)|
+|[az kusto cluster update](#ClustersUpdate)|Update|[Parameters](#ParametersClustersUpdate)|[Example](#ExamplesClustersUpdate)|
+|[az kusto cluster delete](#ClustersDelete)|Delete|[Parameters](#ParametersClustersDelete)|[Example](#ExamplesClustersDelete)|
+|[az kusto cluster add-language-extension](#ClustersAddLanguageExtensions)|AddLanguageExtensions|[Parameters](#ParametersClustersAddLanguageExtensions)|[Example](#ExamplesClustersAddLanguageExtensions)|
+|[az kusto cluster detach-follower-database](#ClustersDetachFollowerDatabases)|DetachFollowerDatabases|[Parameters](#ParametersClustersDetachFollowerDatabases)|[Example](#ExamplesClustersDetachFollowerDatabases)|
+|[az kusto cluster diagnose-virtual-network](#ClustersDiagnoseVirtualNetwork)|DiagnoseVirtualNetwork|[Parameters](#ParametersClustersDiagnoseVirtualNetwork)|[Example](#ExamplesClustersDiagnoseVirtualNetwork)|
+|[az kusto cluster list-follower-database](#ClustersListFollowerDatabases)|ListFollowerDatabases|[Parameters](#ParametersClustersListFollowerDatabases)|[Example](#ExamplesClustersListFollowerDatabases)|
+|[az kusto cluster list-language-extension](#ClustersListLanguageExtensions)|ListLanguageExtensions|[Parameters](#ParametersClustersListLanguageExtensions)|[Example](#ExamplesClustersListLanguageExtensions)|
+|[az kusto cluster list-sku](#ClustersListSkusByResource)|ListSkusByResource|[Parameters](#ParametersClustersListSkusByResource)|[Example](#ExamplesClustersListSkusByResource)|
+|[az kusto cluster list-sku](#ClustersListSkus)|ListSkus|[Parameters](#ParametersClustersListSkus)|[Example](#ExamplesClustersListSkus)|
+|[az kusto cluster remove-language-extension](#ClustersRemoveLanguageExtensions)|RemoveLanguageExtensions|[Parameters](#ParametersClustersRemoveLanguageExtensions)|[Example](#ExamplesClustersRemoveLanguageExtensions)|
+|[az kusto cluster start](#ClustersStart)|Start|[Parameters](#ParametersClustersStart)|[Example](#ExamplesClustersStart)|
+|[az kusto cluster stop](#ClustersStop)|Stop|[Parameters](#ParametersClustersStop)|[Example](#ExamplesClustersStop)|
+
+### <a name="CommandsInClusterPrincipalAssignments">Commands in `az kusto cluster-principal-assignment` group</a>
+|CLI Command|Operation Swagger name|Parameters|Examples|
+|---------|------------|--------|-----------|
+|[az kusto cluster-principal-assignment list](#ClusterPrincipalAssignmentsList)|List|[Parameters](#ParametersClusterPrincipalAssignmentsList)|[Example](#ExamplesClusterPrincipalAssignmentsList)|
+|[az kusto cluster-principal-assignment show](#ClusterPrincipalAssignmentsGet)|Get|[Parameters](#ParametersClusterPrincipalAssignmentsGet)|[Example](#ExamplesClusterPrincipalAssignmentsGet)|
+|[az kusto cluster-principal-assignment create](#ClusterPrincipalAssignmentsCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersClusterPrincipalAssignmentsCreateOrUpdate#Create)|[Example](#ExamplesClusterPrincipalAssignmentsCreateOrUpdate#Create)|
+|[az kusto cluster-principal-assignment update](#ClusterPrincipalAssignmentsCreateOrUpdate#Update)|CreateOrUpdate#Update|[Parameters](#ParametersClusterPrincipalAssignmentsCreateOrUpdate#Update)|Not Found|
+|[az kusto cluster-principal-assignment delete](#ClusterPrincipalAssignmentsDelete)|Delete|[Parameters](#ParametersClusterPrincipalAssignmentsDelete)|[Example](#ExamplesClusterPrincipalAssignmentsDelete)|
+
+### <a name="CommandsInDataConnections">Commands in `az kusto data-connection` group</a>
+|CLI Command|Operation Swagger name|Parameters|Examples|
+|---------|------------|--------|-----------|
+|[az kusto data-connection list](#DataConnectionsListByDatabase)|ListByDatabase|[Parameters](#ParametersDataConnectionsListByDatabase)|[Example](#ExamplesDataConnectionsListByDatabase)|
+|[az kusto data-connection show](#DataConnectionsGet)|Get|[Parameters](#ParametersDataConnectionsGet)|[Example](#ExamplesDataConnectionsGet)|
+|[az kusto data-connection event-grid create](#DataConnectionsCreateOrUpdate#Create#EventGrid)|CreateOrUpdate#Create#EventGrid|[Parameters](#ParametersDataConnectionsCreateOrUpdate#Create#EventGrid)|Not Found|
+|[az kusto data-connection event-hub create](#DataConnectionsCreateOrUpdate#Create#EventHub)|CreateOrUpdate#Create#EventHub|[Parameters](#ParametersDataConnectionsCreateOrUpdate#Create#EventHub)|[Example](#ExamplesDataConnectionsCreateOrUpdate#Create#EventHub)|
+|[az kusto data-connection iot-hub create](#DataConnectionsCreateOrUpdate#Create#IotHub)|CreateOrUpdate#Create#IotHub|[Parameters](#ParametersDataConnectionsCreateOrUpdate#Create#IotHub)|Not Found|
+|[az kusto data-connection event-grid update](#DataConnectionsUpdate#EventGrid)|Update#EventGrid|[Parameters](#ParametersDataConnectionsUpdate#EventGrid)|Not Found|
+|[az kusto data-connection event-hub update](#DataConnectionsUpdate#EventHub)|Update#EventHub|[Parameters](#ParametersDataConnectionsUpdate#EventHub)|[Example](#ExamplesDataConnectionsUpdate#EventHub)|
+|[az kusto data-connection iot-hub update](#DataConnectionsUpdate#IotHub)|Update#IotHub|[Parameters](#ParametersDataConnectionsUpdate#IotHub)|Not Found|
+|[az kusto data-connection delete](#DataConnectionsDelete)|Delete|[Parameters](#ParametersDataConnectionsDelete)|[Example](#ExamplesDataConnectionsDelete)|
+|[az kusto data-connection event-grid data-connection-validation](#DataConnectionsdataConnectionValidation#EventGrid)|dataConnectionValidation#EventGrid|[Parameters](#ParametersDataConnectionsdataConnectionValidation#EventGrid)|Not Found|
+|[az kusto data-connection event-hub data-connection-validation](#DataConnectionsdataConnectionValidation#EventHub)|dataConnectionValidation#EventHub|[Parameters](#ParametersDataConnectionsdataConnectionValidation#EventHub)|[Example](#ExamplesDataConnectionsdataConnectionValidation#EventHub)|
+|[az kusto data-connection iot-hub data-connection-validation](#DataConnectionsdataConnectionValidation#IotHub)|dataConnectionValidation#IotHub|[Parameters](#ParametersDataConnectionsdataConnectionValidation#IotHub)|Not Found|
+
+### <a name="CommandsInDatabases">Commands in `az kusto database` group</a>
+|CLI Command|Operation Swagger name|Parameters|Examples|
+|---------|------------|--------|-----------|
+|[az kusto database list](#DatabasesListByCluster)|ListByCluster|[Parameters](#ParametersDatabasesListByCluster)|[Example](#ExamplesDatabasesListByCluster)|
+|[az kusto database show](#DatabasesGet)|Get|[Parameters](#ParametersDatabasesGet)|[Example](#ExamplesDatabasesGet)|
+|[az kusto database create](#DatabasesCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersDatabasesCreateOrUpdate#Create)|[Example](#ExamplesDatabasesCreateOrUpdate#Create)|
+|[az kusto database update](#DatabasesUpdate)|Update|[Parameters](#ParametersDatabasesUpdate)|[Example](#ExamplesDatabasesUpdate)|
+|[az kusto database delete](#DatabasesDelete)|Delete|[Parameters](#ParametersDatabasesDelete)|[Example](#ExamplesDatabasesDelete)|
+|[az kusto database add-principal](#DatabasesAddPrincipals)|AddPrincipals|[Parameters](#ParametersDatabasesAddPrincipals)|[Example](#ExamplesDatabasesAddPrincipals)|
+|[az kusto database list-principal](#DatabasesListPrincipals)|ListPrincipals|[Parameters](#ParametersDatabasesListPrincipals)|[Example](#ExamplesDatabasesListPrincipals)|
+|[az kusto database remove-principal](#DatabasesRemovePrincipals)|RemovePrincipals|[Parameters](#ParametersDatabasesRemovePrincipals)|[Example](#ExamplesDatabasesRemovePrincipals)|
+
+### <a name="CommandsInDatabasePrincipalAssignments">Commands in `az kusto database-principal-assignment` group</a>
+|CLI Command|Operation Swagger name|Parameters|Examples|
+|---------|------------|--------|-----------|
+|[az kusto database-principal-assignment list](#DatabasePrincipalAssignmentsList)|List|[Parameters](#ParametersDatabasePrincipalAssignmentsList)|[Example](#ExamplesDatabasePrincipalAssignmentsList)|
+|[az kusto database-principal-assignment show](#DatabasePrincipalAssignmentsGet)|Get|[Parameters](#ParametersDatabasePrincipalAssignmentsGet)|[Example](#ExamplesDatabasePrincipalAssignmentsGet)|
+|[az kusto database-principal-assignment create](#DatabasePrincipalAssignmentsCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersDatabasePrincipalAssignmentsCreateOrUpdate#Create)|[Example](#ExamplesDatabasePrincipalAssignmentsCreateOrUpdate#Create)|
+|[az kusto database-principal-assignment update](#DatabasePrincipalAssignmentsCreateOrUpdate#Update)|CreateOrUpdate#Update|[Parameters](#ParametersDatabasePrincipalAssignmentsCreateOrUpdate#Update)|Not Found|
+|[az kusto database-principal-assignment delete](#DatabasePrincipalAssignmentsDelete)|Delete|[Parameters](#ParametersDatabasePrincipalAssignmentsDelete)|[Example](#ExamplesDatabasePrincipalAssignmentsDelete)|
+
+
+## COMMAND DETAILS
+
+### group `az kusto attached-database-configuration`
+#### <a name="AttachedDatabaseConfigurationsListByCluster">Command `az kusto attached-database-configuration list`</a>
+
+##### <a name="ExamplesAttachedDatabaseConfigurationsListByCluster">Example</a>
+```
+az kusto attached-database-configuration list --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersAttachedDatabaseConfigurationsListByCluster">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="AttachedDatabaseConfigurationsGet">Command `az kusto attached-database-configuration show`</a>
+
+##### <a name="ExamplesAttachedDatabaseConfigurationsGet">Example</a>
+```
+az kusto attached-database-configuration show --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersAttachedDatabaseConfigurationsGet">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--attached-database-configuration-name**|string|The name of the attached database configuration.|attached_database_configuration_name|attachedDatabaseConfigurationName|
+
+#### <a name="AttachedDatabaseConfigurationsCreateOrUpdate#Create">Command `az kusto attached-database-configuration create`</a>
+
+##### <a name="ExamplesAttachedDatabaseConfigurationsCreateOrUpdate#Create">Example</a>
+```
+az kusto attached-database-configuration create --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --location "westus" --cluster-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/re\
+sourceGroups/kustorptest/providers/Microsoft.Kusto/Clusters/KustoClusterLeader" --database-name "kustodatabase" \
+--default-principals-modification-kind "Union" --resource-group "kustorptest"
+```
+##### <a name="ParametersAttachedDatabaseConfigurationsCreateOrUpdate#Create">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--attached-database-configuration-name**|string|The name of the attached database configuration.|attached_database_configuration_name|attachedDatabaseConfigurationName|
+|**--location**|string|Resource location.|location|location|
+|**--database-name**|string|The name of the database which you would like to attach, use * if you want to follow all current and future databases.|database_name|databaseName|
+|**--cluster-resource-id**|string|The resource id of the cluster where the databases you would like to attach reside.|cluster_resource_id|clusterResourceId|
+|**--default-principals-modification-kind**|choice|The default principals modification kind|default_principals_modification_kind|defaultPrincipalsModificationKind|
+
+#### <a name="AttachedDatabaseConfigurationsCreateOrUpdate#Update">Command `az kusto attached-database-configuration update`</a>
+
+##### <a name="ParametersAttachedDatabaseConfigurationsCreateOrUpdate#Update">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--attached-database-configuration-name**|string|The name of the attached database configuration.|attached_database_configuration_name|attachedDatabaseConfigurationName|
+|**--location**|string|Resource location.|location|location|
+|**--database-name**|string|The name of the database which you would like to attach, use * if you want to follow all current and future databases.|database_name|databaseName|
+|**--cluster-resource-id**|string|The resource id of the cluster where the databases you would like to attach reside.|cluster_resource_id|clusterResourceId|
+|**--default-principals-modification-kind**|choice|The default principals modification kind|default_principals_modification_kind|defaultPrincipalsModificationKind|
+
+#### <a name="AttachedDatabaseConfigurationsDelete">Command `az kusto attached-database-configuration delete`</a>
+
+##### <a name="ExamplesAttachedDatabaseConfigurationsDelete">Example</a>
+```
+az kusto attached-database-configuration delete --name "attachedDatabaseConfigurations1" --cluster-name \
+"kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersAttachedDatabaseConfigurationsDelete">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--attached-database-configuration-name**|string|The name of the attached database configuration.|attached_database_configuration_name|attachedDatabaseConfigurationName|
+
+### group `az kusto cluster`
+#### <a name="ClustersListByResourceGroup">Command `az kusto cluster list`</a>
+
+##### <a name="ExamplesClustersListByResourceGroup">Example</a>
+```
+az kusto cluster list --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersListByResourceGroup">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+
+#### <a name="ClustersList">Command `az kusto cluster list`</a>
+
+##### <a name="ExamplesClustersList">Example</a>
+```
+az kusto cluster list
+```
+##### <a name="ParametersClustersList">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+#### <a name="ClustersGet">Command `az kusto cluster show`</a>
+
+##### <a name="ExamplesClustersGet">Example</a>
+```
+az kusto cluster show --name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersGet">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="ClustersCreateOrUpdate#Create">Command `az kusto cluster create`</a>
+
+##### <a name="ExamplesClustersCreateOrUpdate#Create">Example</a>
+```
+az kusto cluster create --name "kustoclusterrptest4" --identity-type "SystemAssigned" --location "westus" \
+--enable-double-encryption false --enable-purge true --enable-streaming-ingest true --sku name="Standard_L8s" \
+capacity=2 tier="Standard" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersCreateOrUpdate#Create">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--location**|string|The geo-location where the resource lives|location|location|
+|**--sku**|object|The SKU of the cluster.|sku|sku|
+|**--tags**|dictionary|Resource tags.|tags|tags|
+|**--zones**|array|The availability zones of the cluster.|zones|zones|
+|**--trusted-external-tenants**|array|The cluster's external tenants.|trusted_external_tenants|trustedExternalTenants|
+|**--optimized-autoscale**|object|Optimized auto scale definition.|optimized_autoscale|optimizedAutoscale|
+|**--enable-disk-encryption**|boolean|A boolean value that indicates if the cluster's disks are encrypted.|enable_disk_encryption|enableDiskEncryption|
+|**--enable-streaming-ingest**|boolean|A boolean value that indicates if the streaming ingest is enabled.|enable_streaming_ingest|enableStreamingIngest|
+|**--virtual-network-configuration**|object|Virtual network definition.|virtual_network_configuration|virtualNetworkConfiguration|
+|**--key-vault-properties**|object|KeyVault properties for the cluster encryption.|key_vault_properties|keyVaultProperties|
+|**--enable-purge**|boolean|A boolean value that indicates if the purge operations are enabled.|enable_purge|enablePurge|
+|**--enable-double-encryption**|boolean|A boolean value that indicates if double encryption is enabled.|enable_double_encryption|enableDoubleEncryption|
+|**--engine-type**|choice|The engine type|engine_type|engineType|
+|**--identity-type**|choice|The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user-assigned identities. The type 'None' will remove all identities.|type|type|
+|**--identity-user-assigned-identities**|dictionary|The list of user identities associated with the Kusto cluster. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.|user_assigned_identities|userAssignedIdentities|
+
+#### <a name="ClustersUpdate">Command `az kusto cluster update`</a>
+
+##### <a name="ExamplesClustersUpdate">Example</a>
+```
+az kusto cluster update --name "kustoclusterrptest4" --identity-type "SystemAssigned" --location "westus" \
+--enable-purge true --enable-streaming-ingest true --engine-type "V2" --key-vault-properties key-name="keyName" \
+key-vault-uri="https://dummy.keyvault.com" key-version="keyVersion" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersUpdate">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--tags**|dictionary|Resource tags.|tags|tags|
+|**--location**|string|Resource location.|location|location|
+|**--sku**|object|The SKU of the cluster.|sku|sku|
+|**--trusted-external-tenants**|array|The cluster's external tenants.|trusted_external_tenants|trustedExternalTenants|
+|**--optimized-autoscale**|object|Optimized auto scale definition.|optimized_autoscale|optimizedAutoscale|
+|**--enable-disk-encryption**|boolean|A boolean value that indicates if the cluster's disks are encrypted.|enable_disk_encryption|enableDiskEncryption|
+|**--enable-streaming-ingest**|boolean|A boolean value that indicates if the streaming ingest is enabled.|enable_streaming_ingest|enableStreamingIngest|
+|**--virtual-network-configuration**|object|Virtual network definition.|virtual_network_configuration|virtualNetworkConfiguration|
+|**--key-vault-properties**|object|KeyVault properties for the cluster encryption.|key_vault_properties|keyVaultProperties|
+|**--enable-purge**|boolean|A boolean value that indicates if the purge operations are enabled.|enable_purge|enablePurge|
+|**--enable-double-encryption**|boolean|A boolean value that indicates if double encryption is enabled.|enable_double_encryption|enableDoubleEncryption|
+|**--engine-type**|choice|The engine type|engine_type|engineType|
+|**--identity-type**|choice|The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user-assigned identities. The type 'None' will remove all identities.|type|type|
+|**--identity-user-assigned-identities**|dictionary|The list of user identities associated with the Kusto cluster. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.|user_assigned_identities|userAssignedIdentities|
+
+#### <a name="ClustersDelete">Command `az kusto cluster delete`</a>
+
+##### <a name="ExamplesClustersDelete">Example</a>
+```
+az kusto cluster delete --name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersDelete">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="ClustersAddLanguageExtensions">Command `az kusto cluster add-language-extension`</a>
+
+##### <a name="ExamplesClustersAddLanguageExtensions">Example</a>
+```
+az kusto cluster add-language-extension --name "kustoclusterrptest4" --value language-extension-name="PYTHON" --value \
+language-extension-name="R" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersAddLanguageExtensions">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--value**|array|The list of language extensions.|value|value|
+
+#### <a name="ClustersDetachFollowerDatabases">Command `az kusto cluster detach-follower-database`</a>
+
+##### <a name="ExamplesClustersDetachFollowerDatabases">Example</a>
+```
+az kusto cluster detach-follower-database --name "kustoclusterrptest4" --attached-database-configuration-name \
+"myAttachedDatabaseConfiguration" --cluster-resource-id "/subscriptions/12345678-1234-1234-1234-123456789098/resourceGr\
+oups/kustorptest/providers/Microsoft.Kusto/clusters/leader4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersDetachFollowerDatabases">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--cluster-resource-id**|string|Resource id of the cluster that follows a database owned by this cluster.|cluster_resource_id|clusterResourceId|
+|**--attached-database-configuration-name**|string|Resource name of the attached database configuration in the follower cluster.|attached_database_configuration_name|attachedDatabaseConfigurationName|
+
+#### <a name="ClustersDiagnoseVirtualNetwork">Command `az kusto cluster diagnose-virtual-network`</a>
+
+##### <a name="ExamplesClustersDiagnoseVirtualNetwork">Example</a>
+```
+az kusto cluster diagnose-virtual-network --name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersDiagnoseVirtualNetwork">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="ClustersListFollowerDatabases">Command `az kusto cluster list-follower-database`</a>
+
+##### <a name="ExamplesClustersListFollowerDatabases">Example</a>
+```
+az kusto cluster list-follower-database --name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersListFollowerDatabases">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="ClustersListLanguageExtensions">Command `az kusto cluster list-language-extension`</a>
+
+##### <a name="ExamplesClustersListLanguageExtensions">Example</a>
+```
+az kusto cluster list-language-extension --name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersListLanguageExtensions">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="ClustersListSkusByResource">Command `az kusto cluster list-sku`</a>
+
+##### <a name="ExamplesClustersListSkusByResource">Example</a>
+```
+az kusto cluster list-sku --name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersListSkusByResource">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="ClustersListSkus">Command `az kusto cluster list-sku`</a>
+
+##### <a name="ExamplesClustersListSkus">Example</a>
+```
+az kusto cluster list-sku
+```
+##### <a name="ParametersClustersListSkus">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+#### <a name="ClustersRemoveLanguageExtensions">Command `az kusto cluster remove-language-extension`</a>
+
+##### <a name="ExamplesClustersRemoveLanguageExtensions">Example</a>
+```
+az kusto cluster remove-language-extension --name "kustoclusterrptest4" --value language-extension-name="PYTHON" \
+--value language-extension-name="R" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersRemoveLanguageExtensions">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--value**|array|The list of language extensions.|value|value|
+
+#### <a name="ClustersStart">Command `az kusto cluster start`</a>
+
+##### <a name="ExamplesClustersStart">Example</a>
+```
+az kusto cluster start --name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersStart">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="ClustersStop">Command `az kusto cluster stop`</a>
+
+##### <a name="ExamplesClustersStop">Example</a>
+```
+az kusto cluster stop --name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClustersStop">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+### group `az kusto cluster-principal-assignment`
+#### <a name="ClusterPrincipalAssignmentsList">Command `az kusto cluster-principal-assignment list`</a>
+
+##### <a name="ExamplesClusterPrincipalAssignmentsList">Example</a>
+```
+az kusto cluster-principal-assignment list --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersClusterPrincipalAssignmentsList">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="ClusterPrincipalAssignmentsGet">Command `az kusto cluster-principal-assignment show`</a>
+
+##### <a name="ExamplesClusterPrincipalAssignmentsGet">Example</a>
+```
+az kusto cluster-principal-assignment show --cluster-name "kustoclusterrptest4" --principal-assignment-name \
+"kustoprincipal1" --resource-group "kustorptest"
+```
+##### <a name="ParametersClusterPrincipalAssignmentsGet">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|principalAssignmentName|
+
+#### <a name="ClusterPrincipalAssignmentsCreateOrUpdate#Create">Command `az kusto cluster-principal-assignment create`</a>
+
+##### <a name="ExamplesClusterPrincipalAssignmentsCreateOrUpdate#Create">Example</a>
+```
+az kusto cluster-principal-assignment create --cluster-name "kustoclusterrptest4" --principal-id \
+"87654321-1234-1234-1234-123456789123" --principal-type "App" --role "AllDatabasesAdmin" --tenant-id \
+"12345678-1234-1234-1234-123456789123" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+```
+##### <a name="ParametersClusterPrincipalAssignmentsCreateOrUpdate#Create">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|principalAssignmentName|
+|**--principal-id**|string|The principal ID assigned to the cluster principal. It can be a user email, application ID, or security group name.|principal_id|principalId|
+|**--role**|choice|Cluster principal role.|role|role|
+|**--tenant-id**|string|The tenant id of the principal|tenant_id|tenantId|
+|**--principal-type**|choice|Principal type.|principal_type|principalType|
+
+#### <a name="ClusterPrincipalAssignmentsCreateOrUpdate#Update">Command `az kusto cluster-principal-assignment update`</a>
+
+##### <a name="ParametersClusterPrincipalAssignmentsCreateOrUpdate#Update">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|principalAssignmentName|
+|**--principal-id**|string|The principal ID assigned to the cluster principal. It can be a user email, application ID, or security group name.|principal_id|principalId|
+|**--role**|choice|Cluster principal role.|role|role|
+|**--tenant-id**|string|The tenant id of the principal|tenant_id|tenantId|
+|**--principal-type**|choice|Principal type.|principal_type|principalType|
+
+#### <a name="ClusterPrincipalAssignmentsDelete">Command `az kusto cluster-principal-assignment delete`</a>
+
+##### <a name="ExamplesClusterPrincipalAssignmentsDelete">Example</a>
+```
+az kusto cluster-principal-assignment delete --cluster-name "kustoclusterrptest4" --principal-assignment-name \
+"kustoprincipal1" --resource-group "kustorptest"
+```
+##### <a name="ParametersClusterPrincipalAssignmentsDelete">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|principalAssignmentName|
+
+### group `az kusto data-connection`
+#### <a name="DataConnectionsListByDatabase">Command `az kusto data-connection list`</a>
+
+##### <a name="ExamplesDataConnectionsListByDatabase">Example</a>
+```
+az kusto data-connection list --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --resource-group \
+"kustorptest"
+```
+##### <a name="ParametersDataConnectionsListByDatabase">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+
+#### <a name="DataConnectionsGet">Command `az kusto data-connection show`</a>
+
+##### <a name="ExamplesDataConnectionsGet">Example</a>
+```
+az kusto data-connection show --cluster-name "kustoclusterrptest4" --name "DataConnections8" --database-name \
+"KustoDatabase8" --resource-group "kustorptest"
+```
+##### <a name="ParametersDataConnectionsGet">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+
+#### <a name="DataConnectionsCreateOrUpdate#Create#EventGrid">Command `az kusto data-connection event-grid create`</a>
+
+##### <a name="ParametersDataConnectionsCreateOrUpdate#Create#EventGrid">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|event_grid_location|location|
+|**--storage-account-resource-id**|string|The resource ID of the storage account where the data resides.|event_grid_storage_account_resource_id|storageAccountResourceId|
+|**--event-hub-resource-id**|string|The resource ID where the event grid is configured to send events.|event_grid_event_hub_resource_id|eventHubResourceId|
+|**--consumer-group**|string|The event hub consumer group.|event_grid_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_grid_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_grid_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_grid_data_format|dataFormat|
+|**--ignore-first-record**|boolean|A Boolean value that, if set to true, indicates that ingestion should ignore the first record of every file|event_grid_ignore_first_record|ignoreFirstRecord|
+|**--blob-storage-event-type**|choice|The name of blob storage event type to process.|event_grid_blob_storage_event_type|blobStorageEventType|
+
+#### <a name="DataConnectionsCreateOrUpdate#Create#EventHub">Command `az kusto data-connection event-hub create`</a>
+
+##### <a name="ExamplesDataConnectionsCreateOrUpdate#Create#EventHub">Example</a>
+```
+az kusto data-connection event-hub create --cluster-name "kustoclusterrptest4" --name "DataConnections8" \
+--database-name "KustoDatabase8" --location "westus" --consumer-group "testConsumerGroup1" --event-hub-resource-id \
+"/subscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Microsoft.EventHub/namespaces\
+/eventhubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
+```
+##### <a name="ParametersDataConnectionsCreateOrUpdate#Create#EventHub">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|event_hub_location|location|
+|**--event-hub-resource-id**|string|The resource ID of the event hub to be used to create a data connection.|event_hub_event_hub_resource_id|eventHubResourceId|
+|**--consumer-group**|string|The event hub consumer group.|event_hub_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_hub_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_hub_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_hub_data_format|dataFormat|
+|**--event-system-properties**|array|System properties of the event hub|event_hub_event_system_properties|eventSystemProperties|
+|**--compression**|choice|The event hub messages compression type|event_hub_compression|compression|
+
+#### <a name="DataConnectionsCreateOrUpdate#Create#IotHub">Command `az kusto data-connection iot-hub create`</a>
+
+##### <a name="ParametersDataConnectionsCreateOrUpdate#Create#IotHub">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|iot_hub_location|location|
+|**--iot-hub-resource-id**|string|The resource ID of the Iot hub to be used to create a data connection.|iot_hub_iot_hub_resource_id|iotHubResourceId|
+|**--consumer-group**|string|The iot hub consumer group.|iot_hub_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|iot_hub_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|iot_hub_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|iot_hub_data_format|dataFormat|
+|**--event-system-properties**|array|System properties of the iot hub|iot_hub_event_system_properties|eventSystemProperties|
+|**--shared-access-policy-name**|string|The name of the share access policy|iot_hub_shared_access_policy_name|sharedAccessPolicyName|
+
+#### <a name="DataConnectionsUpdate#EventGrid">Command `az kusto data-connection event-grid update`</a>
+
+##### <a name="ParametersDataConnectionsUpdate#EventGrid">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|event_grid_location|location|
+|**--storage-account-resource-id**|string|The resource ID of the storage account where the data resides.|event_grid_storage_account_resource_id|storageAccountResourceId|
+|**--event-hub-resource-id**|string|The resource ID where the event grid is configured to send events.|event_grid_event_hub_resource_id|eventHubResourceId|
+|**--consumer-group**|string|The event hub consumer group.|event_grid_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_grid_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_grid_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_grid_data_format|dataFormat|
+|**--ignore-first-record**|boolean|A Boolean value that, if set to true, indicates that ingestion should ignore the first record of every file|event_grid_ignore_first_record|ignoreFirstRecord|
+|**--blob-storage-event-type**|choice|The name of blob storage event type to process.|event_grid_blob_storage_event_type|blobStorageEventType|
+
+#### <a name="DataConnectionsUpdate#EventHub">Command `az kusto data-connection event-hub update`</a>
+
+##### <a name="ExamplesDataConnectionsUpdate#EventHub">Example</a>
+```
+az kusto data-connection event-hub update --cluster-name "kustoclusterrptest4" --name "DataConnections8" \
+--database-name "KustoDatabase8" --location "westus" --consumer-group "testConsumerGroup1" --event-hub-resource-id \
+"/subscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Microsoft.EventHub/namespaces\
+/eventhubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
+```
+##### <a name="ParametersDataConnectionsUpdate#EventHub">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|event_hub_location|location|
+|**--event-hub-resource-id**|string|The resource ID of the event hub to be used to create a data connection.|event_hub_event_hub_resource_id|eventHubResourceId|
+|**--consumer-group**|string|The event hub consumer group.|event_hub_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_hub_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_hub_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_hub_data_format|dataFormat|
+|**--event-system-properties**|array|System properties of the event hub|event_hub_event_system_properties|eventSystemProperties|
+|**--compression**|choice|The event hub messages compression type|event_hub_compression|compression|
+
+#### <a name="DataConnectionsUpdate#IotHub">Command `az kusto data-connection iot-hub update`</a>
+
+##### <a name="ParametersDataConnectionsUpdate#IotHub">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|iot_hub_location|location|
+|**--iot-hub-resource-id**|string|The resource ID of the Iot hub to be used to create a data connection.|iot_hub_iot_hub_resource_id|iotHubResourceId|
+|**--consumer-group**|string|The iot hub consumer group.|iot_hub_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|iot_hub_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|iot_hub_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|iot_hub_data_format|dataFormat|
+|**--event-system-properties**|array|System properties of the iot hub|iot_hub_event_system_properties|eventSystemProperties|
+|**--shared-access-policy-name**|string|The name of the share access policy|iot_hub_shared_access_policy_name|sharedAccessPolicyName|
+
+#### <a name="DataConnectionsDelete">Command `az kusto data-connection delete`</a>
+
+##### <a name="ExamplesDataConnectionsDelete">Example</a>
+```
+az kusto data-connection delete --cluster-name "kustoclusterrptest4" --name "kustoeventhubconnection1" --database-name \
+"KustoDatabase8" --resource-group "kustorptest"
+```
+##### <a name="ParametersDataConnectionsDelete">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+
+#### <a name="DataConnectionsdataConnectionValidation#EventGrid">Command `az kusto data-connection event-grid data-connection-validation`</a>
+
+##### <a name="ParametersDataConnectionsdataConnectionValidation#EventGrid">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|event_grid_location|location|
+|**--storage-account-resource-id**|string|The resource ID of the storage account where the data resides.|event_grid_storage_account_resource_id|storageAccountResourceId|
+|**--event-hub-resource-id**|string|The resource ID where the event grid is configured to send events.|event_grid_event_hub_resource_id|eventHubResourceId|
+|**--consumer-group**|string|The event hub consumer group.|event_grid_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_grid_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_grid_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_grid_data_format|dataFormat|
+|**--ignore-first-record**|boolean|A Boolean value that, if set to true, indicates that ingestion should ignore the first record of every file|event_grid_ignore_first_record|ignoreFirstRecord|
+|**--blob-storage-event-type**|choice|The name of blob storage event type to process.|event_grid_blob_storage_event_type|blobStorageEventType|
+
+#### <a name="DataConnectionsdataConnectionValidation#EventHub">Command `az kusto data-connection event-hub data-connection-validation`</a>
+
+##### <a name="ExamplesDataConnectionsdataConnectionValidation#EventHub">Example</a>
+```
+az kusto data-connection event-hub data-connection-validation --cluster-name "kustoclusterrptest4" --database-name \
+"KustoDatabase8" --name "DataConnections8" --consumer-group "testConsumerGroup1" --event-hub-resource-id \
+"/subscriptions/12345678-1234-1234-1234-123456789098/resourceGroups/kustorptest/providers/Microsoft.EventHub/namespaces\
+/eventhubTestns1/eventhubs/eventhubTest1" --resource-group "kustorptest"
+```
+##### <a name="ParametersDataConnectionsdataConnectionValidation#EventHub">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|event_hub_location|location|
+|**--event-hub-resource-id**|string|The resource ID of the event hub to be used to create a data connection.|event_hub_event_hub_resource_id|eventHubResourceId|
+|**--consumer-group**|string|The event hub consumer group.|event_hub_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|event_hub_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|event_hub_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|event_hub_data_format|dataFormat|
+|**--event-system-properties**|array|System properties of the event hub|event_hub_event_system_properties|eventSystemProperties|
+|**--compression**|choice|The event hub messages compression type|event_hub_compression|compression|
+
+#### <a name="DataConnectionsdataConnectionValidation#IotHub">Command `az kusto data-connection iot-hub data-connection-validation`</a>
+
+##### <a name="ParametersDataConnectionsdataConnectionValidation#IotHub">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--data-connection-name**|string|The name of the data connection.|data_connection_name|dataConnectionName|
+|**--location**|string|Resource location.|iot_hub_location|location|
+|**--iot-hub-resource-id**|string|The resource ID of the Iot hub to be used to create a data connection.|iot_hub_iot_hub_resource_id|iotHubResourceId|
+|**--consumer-group**|string|The iot hub consumer group.|iot_hub_consumer_group|consumerGroup|
+|**--table-name**|string|The table where the data should be ingested. Optionally the table information can be added to each message.|iot_hub_table_name|tableName|
+|**--mapping-rule-name**|string|The mapping rule to be used to ingest the data. Optionally the mapping information can be added to each message.|iot_hub_mapping_rule_name|mappingRuleName|
+|**--data-format**|choice|The data format of the message. Optionally the data format can be added to each message.|iot_hub_data_format|dataFormat|
+|**--event-system-properties**|array|System properties of the iot hub|iot_hub_event_system_properties|eventSystemProperties|
+|**--shared-access-policy-name**|string|The name of the share access policy|iot_hub_shared_access_policy_name|sharedAccessPolicyName|
+
+### group `az kusto database`
+#### <a name="DatabasesListByCluster">Command `az kusto database list`</a>
+
+##### <a name="ExamplesDatabasesListByCluster">Example</a>
+```
+az kusto database list --cluster-name "kustoclusterrptest4" --resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasesListByCluster">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+
+#### <a name="DatabasesGet">Command `az kusto database show`</a>
+
+##### <a name="ExamplesDatabasesGet">Example</a>
+```
+az kusto database show --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --resource-group \
+"kustorptest"
+```
+##### <a name="ParametersDatabasesGet">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+
+#### <a name="DatabasesCreateOrUpdate#Create">Command `az kusto database create`</a>
+
+##### <a name="ExamplesDatabasesCreateOrUpdate#Create">Example</a>
+```
+az kusto database create --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --parameters \
+"{\\"location\\":\\"westus\\",\\"properties\\":{\\"softDeletePeriod\\":\\"P1D\\"}}" --resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasesCreateOrUpdate#Create">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--read-write-database**|object|Class representing a read write database.|read_write_database|ReadWriteDatabase|
+|**--read-only-following-database**|object|Class representing a read only following database.|read_only_following_database|ReadOnlyFollowingDatabase|
+
+#### <a name="DatabasesUpdate">Command `az kusto database update`</a>
+
+##### <a name="ExamplesDatabasesUpdate">Example</a>
+```
+az kusto database update --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --parameters \
+"{\\"properties\\":{\\"softDeletePeriod\\":\\"P1D\\"}}" --resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasesUpdate">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--read-write-database**|object|Class representing a read write database.|read_write_database|ReadWriteDatabase|
+|**--read-only-following-database**|object|Class representing a read only following database.|read_only_following_database|ReadOnlyFollowingDatabase|
+
+#### <a name="DatabasesDelete">Command `az kusto database delete`</a>
+
+##### <a name="ExamplesDatabasesDelete">Example</a>
+```
+az kusto database delete --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --resource-group \
+"kustorptest"
+```
+##### <a name="ParametersDatabasesDelete">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+
+#### <a name="DatabasesAddPrincipals">Command `az kusto database add-principal`</a>
+
+##### <a name="ExamplesDatabasesAddPrincipals">Example</a>
+```
+az kusto database add-principal --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --value \
+name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser=some_guid" role="Admin" --value \
+name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup=some_guid" role="Viewer" --value \
+name="SomeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp=some_guid_app_id" role="Admin" \
+--resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasesAddPrincipals">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--value**|array|The list of Kusto database principals.|value|value|
+
+#### <a name="DatabasesListPrincipals">Command `az kusto database list-principal`</a>
+
+##### <a name="ExamplesDatabasesListPrincipals">Example</a>
+```
+az kusto database list-principal --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" \
+--resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasesListPrincipals">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+
+#### <a name="DatabasesRemovePrincipals">Command `az kusto database remove-principal`</a>
+
+##### <a name="ExamplesDatabasesRemovePrincipals">Example</a>
+```
+az kusto database remove-principal --cluster-name "kustoclusterrptest4" --database-name "KustoDatabase8" --value \
+name="Some User" type="User" app-id="" email="user@microsoft.com" fqn="aaduser=some_guid" role="Admin" --value \
+name="Kusto" type="Group" app-id="" email="kusto@microsoft.com" fqn="aadgroup=some_guid" role="Viewer" --value \
+name="SomeApp" type="App" app-id="some_guid_app_id" email="" fqn="aadapp=some_guid_app_id" role="Admin" \
+--resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasesRemovePrincipals">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--value**|array|The list of Kusto database principals.|value|value|
+
+### group `az kusto database-principal-assignment`
+#### <a name="DatabasePrincipalAssignmentsList">Command `az kusto database-principal-assignment list`</a>
+
+##### <a name="ExamplesDatabasePrincipalAssignmentsList">Example</a>
+```
+az kusto database-principal-assignment list --cluster-name "kustoclusterrptest4" --database-name "Kustodatabase8" \
+--resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasePrincipalAssignmentsList">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+
+#### <a name="DatabasePrincipalAssignmentsGet">Command `az kusto database-principal-assignment show`</a>
+
+##### <a name="ExamplesDatabasePrincipalAssignmentsGet">Example</a>
+```
+az kusto database-principal-assignment show --cluster-name "kustoclusterrptest4" --database-name "Kustodatabase8" \
+--principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasePrincipalAssignmentsGet">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|principalAssignmentName|
+
+#### <a name="DatabasePrincipalAssignmentsCreateOrUpdate#Create">Command `az kusto database-principal-assignment create`</a>
+
+##### <a name="ExamplesDatabasePrincipalAssignmentsCreateOrUpdate#Create">Example</a>
+```
+az kusto database-principal-assignment create --cluster-name "kustoclusterrptest4" --database-name "Kustodatabase8" \
+--principal-id "87654321-1234-1234-1234-123456789123" --principal-type "App" --role "Admin" --tenant-id \
+"12345678-1234-1234-1234-123456789123" --principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasePrincipalAssignmentsCreateOrUpdate#Create">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|principalAssignmentName|
+|**--principal-id**|string|The principal ID assigned to the database principal. It can be a user email, application ID, or security group name.|principal_id|principalId|
+|**--role**|choice|Database principal role.|role|role|
+|**--tenant-id**|string|The tenant id of the principal|tenant_id|tenantId|
+|**--principal-type**|choice|Principal type.|principal_type|principalType|
+
+#### <a name="DatabasePrincipalAssignmentsCreateOrUpdate#Update">Command `az kusto database-principal-assignment update`</a>
+
+##### <a name="ParametersDatabasePrincipalAssignmentsCreateOrUpdate#Update">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|principalAssignmentName|
+|**--principal-id**|string|The principal ID assigned to the database principal. It can be a user email, application ID, or security group name.|principal_id|principalId|
+|**--role**|choice|Database principal role.|role|role|
+|**--tenant-id**|string|The tenant id of the principal|tenant_id|tenantId|
+|**--principal-type**|choice|Principal type.|principal_type|principalType|
+
+#### <a name="DatabasePrincipalAssignmentsDelete">Command `az kusto database-principal-assignment delete`</a>
+
+##### <a name="ExamplesDatabasePrincipalAssignmentsDelete">Example</a>
+```
+az kusto database-principal-assignment delete --cluster-name "kustoclusterrptest4" --database-name "Kustodatabase8" \
+--principal-assignment-name "kustoprincipal1" --resource-group "kustorptest"
+```
+##### <a name="ParametersDatabasePrincipalAssignmentsDelete">Parameters</a> 
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group containing the Kusto cluster.|resource_group_name|resourceGroupName|
+|**--cluster-name**|string|The name of the Kusto cluster.|cluster_name|clusterName|
+|**--database-name**|string|The name of the database in the Kusto cluster.|database_name|databaseName|
+|**--principal-assignment-name**|string|The name of the Kusto principalAssignment.|principal_assignment_name|principalAssignmentName|
diff --git a/src/kusto/setup.py b/src/kusto/setup.py
index d4a08f04021..9f4a85de1fb 100644
--- a/src/kusto/setup.py
+++ b/src/kusto/setup.py
@@ -1,57 +1,58 @@
-#!/usr/bin/env python
-
-# --------------------------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for license information.
-# --------------------------------------------------------------------------------------------
-
-
-from codecs import open
-from setuptools import setup, find_packages
-
-# HISTORY.rst entry.
-VERSION = '0.1.1'
-try:
-    from .manual.version import VERSION
-except ImportError:
-    pass
-
-# The full list of classifiers is available at
-# https://pypi.python.org/pypi?%3Aaction=list_classifiers
-CLASSIFIERS = [
-    'Development Status :: 4 - Beta',
-    'Intended Audience :: Developers',
-    'Intended Audience :: System Administrators',
-    'Programming Language :: Python',
-    'Programming Language :: Python :: 3',
-    'Programming Language :: Python :: 3.6',
-    'Programming Language :: Python :: 3.7',
-    'Programming Language :: Python :: 3.8',
-    'License :: OSI Approved :: MIT License',
-]
-
-DEPENDENCIES = []
-try:
-    from .manual.dependency import DEPENDENCIES
-except ImportError:
-    pass
-
-with open('README.md', 'r', encoding='utf-8') as f:
-    README = f.read()
-with open('HISTORY.rst', 'r', encoding='utf-8') as f:
-    HISTORY = f.read()
-
-setup(
-    name='kusto',
-    version=VERSION,
-    description='Microsoft Azure Command-Line Tools KustoManagementClient Extension',
-    author='Microsoft Corporation',
-    author_email='azpycli@microsoft.com',
-    url='https://github.com/Azure/azure-cli-extensions/tree/master/src/kusto',
-    long_description=README + '\n\n' + HISTORY,
-    license='MIT',
-    classifiers=CLASSIFIERS,
-    packages=find_packages(),
-    install_requires=DEPENDENCIES,
-    package_data={'azext_kusto': ['azext_metadata.json']},
-)
+#!/usr/bin/env python
+
+# --------------------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# --------------------------------------------------------------------------------------------
+
+
+from codecs import open
+from setuptools import setup, find_packages
+
+# HISTORY.rst entry.
+VERSION = '0.1.0'
+try:
+    from azext_kusto.manual.version import VERSION
+except ImportError:
+    pass
+
+# The full list of classifiers is available at
+# https://pypi.python.org/pypi?%3Aaction=list_classifiers
+CLASSIFIERS = [
+    'Development Status :: 4 - Beta',
+    'Intended Audience :: Developers',
+    'Intended Audience :: System Administrators',
+    'Programming Language :: Python',
+    'Programming Language :: Python :: 3',
+    'Programming Language :: Python :: 3.6',
+    'Programming Language :: Python :: 3.7',
+    'Programming Language :: Python :: 3.8',
+    'License :: OSI Approved :: MIT License',
+]
+
+DEPENDENCIES = []
+
+try:
+    from azext_kusto.manual.dependency import DEPENDENCIES
+except ImportError:
+    pass
+
+with open('README.md', 'r', encoding='utf-8') as f:
+    README = f.read()
+with open('HISTORY.rst', 'r', encoding='utf-8') as f:
+    HISTORY = f.read()
+
+setup(
+    name='kusto',
+    version=VERSION,
+    description='Microsoft Azure Command-Line Tools KustoManagementClient Extension',
+    author='Microsoft Corporation',
+    author_email='azpycli@microsoft.com',
+    url='https://github.com/Azure/azure-cli-extensions/tree/master/src/kusto',
+    long_description=README + '\n\n' + HISTORY,
+    license='MIT',
+    classifiers=CLASSIFIERS,
+    packages=find_packages(),
+    install_requires=DEPENDENCIES,
+    package_data={'azext_kusto': ['azext_metadata.json']},
+)