diff --git a/specification/vmware/Microsoft.AVS/client.tsp b/specification/vmware/Microsoft.AVS/client.tsp
new file mode 100644
index 000000000000..0eaf8e4d0d64
--- /dev/null
+++ b/specification/vmware/Microsoft.AVS/client.tsp
@@ -0,0 +1,86 @@
+import "@azure-tools/typespec-client-generator-core";
+import "@azure-tools/typespec-azure-resource-manager";
+
+import "./main.tsp";
+
+using Azure.ClientGenerator.Core;
+using Microsoft.AVS;
+
+// client
+@@clientName(Microsoft.AVS, "Avs", "java");
+
+// flatten
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(Azure.ResourceManager.TrackedResource.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(Azure.ResourceManager.Foundations.ResourceUpdateModel.properties
+);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(Azure.ResourceManager.ProxyResource.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(Azure.ResourceManager.Foundations.ProxyResourceUpdateModel.properties
+);
+
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(PrivateCloudUpdate.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(ClusterUpdate.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(WorkloadNetworkSegmentUpdate.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(WorkloadNetworkDhcpUpdate.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(WorkloadNetworkPortMirroringUpdate.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(WorkloadNetworkVMGroupUpdate.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(WorkloadNetworkDnsServiceUpdate.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(WorkloadNetworkDnsZoneUpdate.properties);
+#suppress "deprecated" "property flatten for SDK backward compatibility"
+@@flattenProperty(PlacementPolicyUpdate.properties);
+
+// operation
+@@friendlyName(Addons.list, "list");
+@@friendlyName(PlacementPolicies.list, "list");
+@@friendlyName(VirtualMachines.list, "list");
+@@friendlyName(HcxEnterpriseSites.list, "list");
+@@friendlyName(ScriptExecutions.list, "list");
+@@friendlyName(ScriptPackages.list, "list");
+@@friendlyName(Datastores.list, "list");
+@@friendlyName(Clusters.list, "list");
+@@friendlyName(ScriptCmdlets.list, "list");
+@@friendlyName(Authorizations.list, "list");
+@@friendlyName(CloudLinks.list, "list");
+@@friendlyName(GlobalReachConnections.list, "list");
+@@friendlyName(WorkloadNetworks.list, "list");
+
+// model
+@@clientName(Azure.ResourceManager.Foundations.SystemAssignedServiceIdentity,
+  "PrivateCloudIdentity"
+);
+@@clientName(Azure.ResourceManager.Foundations.SystemAssignedServiceIdentityType,
+  "ResourceIdentityType"
+);
+
+@@clientName(VmVmPlacementPolicyProperties, "VmPlacementPolicyProperties");
+@@clientName(WorkloadNetworkPublicIP, "WorkloadNetworkPublicIp", "java");
+@@clientName(WorkloadNetworkPublicIPProvisioningState,
+  "WorkloadNetworkPublicIpProvisioningState",
+  "java"
+);
+
+// property
+@@clientName(Circuit.expressRouteID, "expressRouteId", "java");
+@@clientName(Circuit.expressRoutePrivatePeeringID,
+  "expressRoutePrivatePeeringId",
+  "java"
+);
+@@clientName(WorkloadNetworkPublicIPProperties,
+  "WorkloadNetworkPublicIpProperties",
+  "java"
+);
+@@clientName(WorkloadNetworkPublicIPProperties.publicIPBlock,
+  "publicIpBlock",
+  "java"
+);
diff --git a/specification/vmware/Microsoft.AVS/routes.tsp b/specification/vmware/Microsoft.AVS/routes.tsp
index 8a490e1c769f..3494742b74dd 100644
--- a/specification/vmware/Microsoft.AVS/routes.tsp
+++ b/specification/vmware/Microsoft.AVS/routes.tsp
@@ -279,26 +279,23 @@ interface WorkloadNetworks {
   #suppress "@azure-tools/typespec-azure-core/no-operation-id" "Can not change existing operationId."
   @operationId("WorkloadNetworks_List")
   list is ArmResourceListByParent<WorkloadNetwork>;
-}
 
-@armResourceOperations
-interface WorkloadNetworkSegments {
   #suppress "@azure-tools/typespec-azure-core/no-operation-id" "Can not change existing operationId."
   @operationId("WorkloadNetworks_ListSegments")
-  list is ArmResourceListByParent<WorkloadNetworkSegment>;
+  listSegments is ArmResourceListByParent<WorkloadNetworkSegment>;
 
   #suppress "@azure-tools/typespec-azure-core/no-operation-id" "Can not change existing operationId."
   @operationId("WorkloadNetworks_GetSegment")
-  get is ArmResourceRead<WorkloadNetworkSegment>;
+  getSegment is ArmResourceRead<WorkloadNetworkSegment>;
 
   #suppress "@azure-tools/typespec-azure-core/no-operation-id" "Can not change existing operationId."
   @operationId("WorkloadNetworks_CreateSegments")
-  create is ArmResourceCreateOrUpdateAsync<WorkloadNetworkSegment>;
+  createSegments is ArmResourceCreateOrUpdateAsync<WorkloadNetworkSegment>;
 
   #suppress "@azure-tools/typespec-azure-core/no-operation-id" "Can not change existing operationId."
   @operationId("WorkloadNetworks_UpdateSegments")
   @parameterVisibility
-  update is ArmCustomPatchAsync<
+  updateSegments is ArmCustomPatchAsync<
     WorkloadNetworkSegment,
     WorkloadNetworkSegmentUpdate
   >;
@@ -310,27 +307,27 @@ interface WorkloadNetworkSegments {
   deleteSegment is ArmResourceDeleteAsync<WorkloadNetworkSegment>;
 }
 
-@@encodedName(WorkloadNetworkSegments.create::parameters.resource,
+@@encodedName(WorkloadNetworks.createSegments::parameters.resource,
   "application/json",
   "workloadNetworkSegment"
 );
-@@clientName(WorkloadNetworkSegments.create::parameters.resource,
+@@clientName(WorkloadNetworks.createSegments::parameters.resource,
   "workloadNetworkSegment"
 );
-@@OpenAPI.extension(WorkloadNetworkSegments.create::parameters.resource,
+@@OpenAPI.extension(WorkloadNetworks.createSegments::parameters.resource,
   "x-ms-client-name",
   "workloadNetworkSegment"
 );
 
-@@encodedName(WorkloadNetworkSegments.update::parameters.properties,
+@@encodedName(WorkloadNetworks.updateSegments::parameters.properties,
   "application/json",
   "workloadNetworkSegment"
 );
-@@clientName(WorkloadNetworkSegments.update::parameters.properties,
+@@clientName(WorkloadNetworks.updateSegments::parameters.properties,
   "application/json",
   "workloadNetworkSegment"
 );
-@@OpenAPI.extension(WorkloadNetworkSegments.update::parameters.properties,
+@@OpenAPI.extension(WorkloadNetworks.updateSegments::parameters.properties,
   "x-ms-client-name",
   "workloadNetworkSegment"
 );
diff --git a/specification/vmware/Microsoft.AVS/tspconfig.yaml b/specification/vmware/Microsoft.AVS/tspconfig.yaml
index 310703263db8..61361f4c641f 100644
--- a/specification/vmware/Microsoft.AVS/tspconfig.yaml
+++ b/specification/vmware/Microsoft.AVS/tspconfig.yaml
@@ -1,6 +1,6 @@
 parameters:
   "service-dir":
-    default: "sdk/vmware"
+    default: "sdk/avs"
   "service-directory-name":
     default: "vmware"
 emit: ["@azure-tools/typespec-autorest"]
@@ -15,3 +15,13 @@ options:
     output-file: "{azure-resource-provider-folder}/{service-name}/{version-status}/{version}/vmware.json"
     omit-unreachable-types: true
     use-read-only-status-schema: true
+  "@azure-tools/typespec-python":
+    package-dir: "azure-mgmt-avs"
+    package-name: "{package-dir}"
+    flavor: azure
+  "@azure-tools/typespec-java":
+    package-dir: "azure-resourcemanager-avs"
+    flavor: azure
+    namespace: "com.azure.resourcemanager.avs"
+    service-name: "Avs"
+    examples-directory: "examples"
diff --git a/specification/vmware/resource-manager/Microsoft.AVS/stable/2023-09-01/vmware.json b/specification/vmware/resource-manager/Microsoft.AVS/stable/2023-09-01/vmware.json
index 7df2413fac30..ed8cfcad9163 100644
--- a/specification/vmware/resource-manager/Microsoft.AVS/stable/2023-09-01/vmware.json
+++ b/specification/vmware/resource-manager/Microsoft.AVS/stable/2023-09-01/vmware.json
@@ -66,9 +66,6 @@
     {
       "name": "WorkloadNetworks"
     },
-    {
-      "name": "WorkloadNetworkSegments"
-    },
     {
       "name": "WorkloadNetworkGateways"
     },
@@ -5754,7 +5751,7 @@
       "get": {
         "operationId": "WorkloadNetworks_ListSegments",
         "tags": [
-          "WorkloadNetworkSegments"
+          "WorkloadNetworks"
         ],
         "description": "List WorkloadNetworkSegment resources by WorkloadNetwork",
         "parameters": [
@@ -5804,7 +5801,7 @@
       "get": {
         "operationId": "WorkloadNetworks_GetSegment",
         "tags": [
-          "WorkloadNetworkSegments"
+          "WorkloadNetworks"
         ],
         "description": "Get a WorkloadNetworkSegment",
         "parameters": [
@@ -5857,7 +5854,7 @@
       "put": {
         "operationId": "WorkloadNetworks_CreateSegments",
         "tags": [
-          "WorkloadNetworkSegments"
+          "WorkloadNetworks"
         ],
         "description": "Create a WorkloadNetworkSegment",
         "parameters": [
@@ -5937,7 +5934,7 @@
       "patch": {
         "operationId": "WorkloadNetworks_UpdateSegments",
         "tags": [
-          "WorkloadNetworkSegments"
+          "WorkloadNetworks"
         ],
         "description": "Update a WorkloadNetworkSegment",
         "parameters": [
@@ -6018,7 +6015,7 @@
       "delete": {
         "operationId": "WorkloadNetworks_DeleteSegment",
         "tags": [
-          "WorkloadNetworkSegments"
+          "WorkloadNetworks"
         ],
         "description": "Delete a WorkloadNetworkSegment",
         "parameters": [