diff --git a/sdk/labservices/azure-resourcemanager-labservices/CHANGELOG.md b/sdk/labservices/azure-resourcemanager-labservices/CHANGELOG.md
index 2f20902d274e..4b725a76746a 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/CHANGELOG.md
+++ b/sdk/labservices/azure-resourcemanager-labservices/CHANGELOG.md
@@ -1,7 +1,8 @@
 # Release History
 
-## 1.0.0-beta.2 (Unreleased)
+## 1.0.0-beta.1 (2022-01-13)
 
+- Azure Resource Manager LabServices client library for Java. This package contains Microsoft Azure SDK for LabServices Management SDK. REST API for managing Azure Lab Services images. Package tag package-preview-2021-11. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
 
 ## 1.0.0-beta.1 (2021-04-22)
 
diff --git a/sdk/labservices/azure-resourcemanager-labservices/README.md b/sdk/labservices/azure-resourcemanager-labservices/README.md
index db7667367c8b..54e4970422aa 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/README.md
+++ b/sdk/labservices/azure-resourcemanager-labservices/README.md
@@ -1,8 +1,8 @@
-# Azure Resource Manager ManagedLabs client library for Java
+# Azure Resource Manager LabServices client library for Java
 
-Azure Resource Manager ManagedLabs client library for Java.
+Azure Resource Manager LabServices client library for Java.
 
-This package contains Microsoft Azure SDK for ManagedLabs Management SDK. The Managed Labs Client. Package tag package-2018-10. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
+This package contains Microsoft Azure SDK for LabServices Management SDK. REST API for managing Azure Lab Services images. Package tag package-preview-2021-11. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt).
 
 ## We'd love to hear your feedback
 
@@ -32,7 +32,7 @@ Various documentation is available to help you get started
 
     com.azure.resourcemanager
     azure-resourcemanager-labservices
-    1.0.0-beta.1
+    1.0.0-beta.2
 
 ```
 [//]: # ({x-version-update-end})
@@ -60,7 +60,7 @@ AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
 TokenCredential credential = new DefaultAzureCredentialBuilder()
     .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint())
     .build();
-ManagedLabsManager manager = ManagedLabsManager
+LabServicesManager manager = LabServicesManager
     .authenticate(credential, profile);
 ```
 
@@ -74,6 +74,9 @@ See [API design][design] for general introduction on design and key concepts on
 
 ## Examples
 
+[Code snippets and samples](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/labservices/azure-resourcemanager-labservices/SAMPLE.md)
+
+
 ## Troubleshooting
 
 ## Next steps
diff --git a/sdk/labservices/azure-resourcemanager-labservices/SAMPLE.md b/sdk/labservices/azure-resourcemanager-labservices/SAMPLE.md
new file mode 100644
index 000000000000..c46de5140a0a
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/SAMPLE.md
@@ -0,0 +1,1118 @@
+# Code snippets and samples
+
+
+## Images
+
+- [CreateOrUpdate](#images_createorupdate)
+- [Get](#images_get)
+- [ListByLabPlan](#images_listbylabplan)
+- [Update](#images_update)
+
+## LabPlans
+
+- [CreateOrUpdate](#labplans_createorupdate)
+- [Delete](#labplans_delete)
+- [GetByResourceGroup](#labplans_getbyresourcegroup)
+- [List](#labplans_list)
+- [ListByResourceGroup](#labplans_listbyresourcegroup)
+- [SaveImage](#labplans_saveimage)
+- [Update](#labplans_update)
+
+## Labs
+
+- [CreateOrUpdate](#labs_createorupdate)
+- [Delete](#labs_delete)
+- [GetByResourceGroup](#labs_getbyresourcegroup)
+- [List](#labs_list)
+- [ListByResourceGroup](#labs_listbyresourcegroup)
+- [Publish](#labs_publish)
+- [SyncGroup](#labs_syncgroup)
+- [Update](#labs_update)
+
+## OperationResults
+
+- [Get](#operationresults_get)
+
+## Operations
+
+- [List](#operations_list)
+
+## Schedules
+
+- [CreateOrUpdate](#schedules_createorupdate)
+- [Delete](#schedules_delete)
+- [Get](#schedules_get)
+- [ListByLab](#schedules_listbylab)
+- [Update](#schedules_update)
+
+## Skus
+
+- [List](#skus_list)
+
+## Usages
+
+- [ListByLocation](#usages_listbylocation)
+
+## Users
+
+- [CreateOrUpdate](#users_createorupdate)
+- [Delete](#users_delete)
+- [Get](#users_get)
+- [Invite](#users_invite)
+- [ListByLab](#users_listbylab)
+- [Update](#users_update)
+
+## VirtualMachines
+
+- [Get](#virtualmachines_get)
+- [ListByLab](#virtualmachines_listbylab)
+- [Redeploy](#virtualmachines_redeploy)
+- [Reimage](#virtualmachines_reimage)
+- [ResetPassword](#virtualmachines_resetpassword)
+- [Start](#virtualmachines_start)
+- [Stop](#virtualmachines_stop)
+### Images_CreateOrUpdate
+
+```java
+import com.azure.resourcemanager.labservices.models.EnableState;
+
+/** Samples for Images CreateOrUpdate. */
+public final class ImagesCreateOrUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Images/putImage.json
+     */
+    /**
+     * Sample code: putImage.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void putImage(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager
+            .images()
+            .define("image1")
+            .withExistingLabPlan("testrg123", "testlabplan")
+            .withEnabledState(EnableState.ENABLED)
+            .create();
+    }
+}
+```
+
+### Images_Get
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Images Get. */
+public final class ImagesGetSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Images/getImage.json
+     */
+    /**
+     * Sample code: getImage.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void getImage(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.images().getWithResponse("testrg123", "testlabplan", "image1", Context.NONE);
+    }
+}
+```
+
+### Images_ListByLabPlan
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Images ListByLabPlan. */
+public final class ImagesListByLabPlanSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Images/listImages.json
+     */
+    /**
+     * Sample code: listImages.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listImages(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.images().listByLabPlan("testrg123", "testlabplan", null, Context.NONE);
+    }
+}
+```
+
+### Images_Update
+
+```java
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.models.EnableState;
+import com.azure.resourcemanager.labservices.models.Image;
+
+/** Samples for Images Update. */
+public final class ImagesUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Images/patchImage.json
+     */
+    /**
+     * Sample code: patchImage.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void patchImage(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        Image resource =
+            manager.images().getWithResponse("testrg123", "testlabplan", "image1", Context.NONE).getValue();
+        resource.update().withEnabledState(EnableState.ENABLED).apply();
+    }
+}
+```
+
+### LabPlans_CreateOrUpdate
+
+```java
+import com.azure.resourcemanager.labservices.models.AutoShutdownProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionType;
+import com.azure.resourcemanager.labservices.models.EnableState;
+import com.azure.resourcemanager.labservices.models.LabPlanNetworkProfile;
+import com.azure.resourcemanager.labservices.models.ShutdownOnIdleMode;
+import com.azure.resourcemanager.labservices.models.SupportInfo;
+import java.time.Duration;
+
+/** Samples for LabPlans CreateOrUpdate. */
+public final class LabPlansCreateOrUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/LabPlans/putLabPlan.json
+     */
+    /**
+     * Sample code: putLabPlan.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void putLabPlan(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager
+            .labPlans()
+            .define("testlabplan")
+            .withRegion("westus")
+            .withExistingResourceGroup("testrg123")
+            .withDefaultConnectionProfile(
+                new ConnectionProfile()
+                    .withWebSshAccess(ConnectionType.NONE)
+                    .withWebRdpAccess(ConnectionType.NONE)
+                    .withClientSshAccess(ConnectionType.PUBLIC)
+                    .withClientRdpAccess(ConnectionType.PUBLIC))
+            .withDefaultAutoShutdownProfile(
+                new AutoShutdownProfile()
+                    .withShutdownOnDisconnect(EnableState.ENABLED)
+                    .withShutdownWhenNotConnected(EnableState.ENABLED)
+                    .withShutdownOnIdle(ShutdownOnIdleMode.USER_ABSENCE)
+                    .withDisconnectDelay(Duration.parse("00:05"))
+                    .withNoConnectDelay(Duration.parse("01:00"))
+                    .withIdleDelay(Duration.parse("01:00")))
+            .withDefaultNetworkProfile(
+                new LabPlanNetworkProfile()
+                    .withSubnetId(
+                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"))
+            .withSharedGalleryId(
+                "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Compute/galleries/testsig")
+            .withSupportInfo(
+                new SupportInfo()
+                    .withUrl("help.contoso.com")
+                    .withEmail("help@contoso.com")
+                    .withPhone("+1-202-555-0123")
+                    .withInstructions("Contact support for help."))
+            .create();
+    }
+}
+```
+
+### LabPlans_Delete
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for LabPlans Delete. */
+public final class LabPlansDeleteSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/LabPlans/deleteLabPlan.json
+     */
+    /**
+     * Sample code: deleteLabPlan.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void deleteLabPlan(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labPlans().delete("testrg123", "testlabplan", Context.NONE);
+    }
+}
+```
+
+### LabPlans_GetByResourceGroup
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for LabPlans GetByResourceGroup. */
+public final class LabPlansGetByResourceGroupSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/LabPlans/getLabPlan.json
+     */
+    /**
+     * Sample code: getLabPlan.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void getLabPlan(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labPlans().getByResourceGroupWithResponse("testrg123", "testlabplan", Context.NONE);
+    }
+}
+```
+
+### LabPlans_List
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for LabPlans List. */
+public final class LabPlansListSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/LabPlans/listLabPlans.json
+     */
+    /**
+     * Sample code: listLabPlans.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listLabPlans(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labPlans().list(null, Context.NONE);
+    }
+}
+```
+
+### LabPlans_ListByResourceGroup
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for LabPlans ListByResourceGroup. */
+public final class LabPlansListByResourceGroupSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/LabPlans/listResourceGroupLabPlans.json
+     */
+    /**
+     * Sample code: listResourceGroupLabPlans.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listResourceGroupLabPlans(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labPlans().listByResourceGroup("testrg123", Context.NONE);
+    }
+}
+```
+
+### LabPlans_SaveImage
+
+```java
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.models.SaveImageBody;
+
+/** Samples for LabPlans SaveImage. */
+public final class LabPlansSaveImageSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/LabPlans/saveImageVirtualMachine.json
+     */
+    /**
+     * Sample code: saveImageVirtualMachine.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void saveImageVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager
+            .labPlans()
+            .saveImage(
+                "testrg123",
+                "testlabplan",
+                new SaveImageBody()
+                    .withName("Test Image")
+                    .withLabVirtualMachineId(
+                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.LabServices/labs/testlab/virtualMachines/template"),
+                Context.NONE);
+    }
+}
+```
+
+### LabPlans_Update
+
+```java
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionType;
+import com.azure.resourcemanager.labservices.models.LabPlan;
+
+/** Samples for LabPlans Update. */
+public final class LabPlansUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/LabPlans/patchLabPlan.json
+     */
+    /**
+     * Sample code: patchLabPlan.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void patchLabPlan(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        LabPlan resource =
+            manager.labPlans().getByResourceGroupWithResponse("testrg123", "testlabplan", Context.NONE).getValue();
+        resource
+            .update()
+            .withDefaultConnectionProfile(
+                new ConnectionProfile()
+                    .withWebSshAccess(ConnectionType.NONE)
+                    .withWebRdpAccess(ConnectionType.NONE)
+                    .withClientSshAccess(ConnectionType.PUBLIC)
+                    .withClientRdpAccess(ConnectionType.PUBLIC))
+            .apply();
+    }
+}
+```
+
+### Labs_CreateOrUpdate
+
+```java
+import com.azure.resourcemanager.labservices.models.AutoShutdownProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionType;
+import com.azure.resourcemanager.labservices.models.CreateOption;
+import com.azure.resourcemanager.labservices.models.Credentials;
+import com.azure.resourcemanager.labservices.models.EnableState;
+import com.azure.resourcemanager.labservices.models.ImageReference;
+import com.azure.resourcemanager.labservices.models.LabNetworkProfile;
+import com.azure.resourcemanager.labservices.models.SecurityProfile;
+import com.azure.resourcemanager.labservices.models.ShutdownOnIdleMode;
+import com.azure.resourcemanager.labservices.models.Sku;
+import com.azure.resourcemanager.labservices.models.VirtualMachineAdditionalCapabilities;
+import com.azure.resourcemanager.labservices.models.VirtualMachineProfile;
+import java.time.Duration;
+
+/** Samples for Labs CreateOrUpdate. */
+public final class LabsCreateOrUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Labs/putLab.json
+     */
+    /**
+     * Sample code: putLab.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void putLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager
+            .labs()
+            .define("testlab")
+            .withRegion("westus")
+            .withExistingResourceGroup("testrg123")
+            .withNetworkProfile(
+                new LabNetworkProfile()
+                    .withSubnetId(
+                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"))
+            .withAutoShutdownProfile(
+                new AutoShutdownProfile()
+                    .withShutdownOnDisconnect(EnableState.ENABLED)
+                    .withShutdownWhenNotConnected(EnableState.ENABLED)
+                    .withShutdownOnIdle(ShutdownOnIdleMode.USER_ABSENCE)
+                    .withDisconnectDelay(Duration.parse("00:05"))
+                    .withNoConnectDelay(Duration.parse("01:00"))
+                    .withIdleDelay(Duration.parse("01:00")))
+            .withConnectionProfile(
+                new ConnectionProfile()
+                    .withWebSshAccess(ConnectionType.NONE)
+                    .withWebRdpAccess(ConnectionType.NONE)
+                    .withClientSshAccess(ConnectionType.PUBLIC)
+                    .withClientRdpAccess(ConnectionType.PUBLIC))
+            .withVirtualMachineProfile(
+                new VirtualMachineProfile()
+                    .withCreateOption(CreateOption.TEMPLATE_VM)
+                    .withImageReference(
+                        new ImageReference()
+                            .withOffer("WindowsServer")
+                            .withPublisher("Microsoft")
+                            .withSku("2019-Datacenter")
+                            .withVersion("2019.0.20190410"))
+                    .withSku(new Sku().withName("Medium"))
+                    .withAdditionalCapabilities(
+                        new VirtualMachineAdditionalCapabilities().withInstallGpuDrivers(EnableState.DISABLED))
+                    .withUsageQuota(Duration.parse("10:00"))
+                    .withUseSharedPassword(EnableState.DISABLED)
+                    .withAdminUser(new Credentials().withUsername("test-user")))
+            .withSecurityProfile(new SecurityProfile().withOpenAccess(EnableState.DISABLED))
+            .withLabPlanId(
+                "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.LabServices/labPlans/testlabplan")
+            .withTitle("Test Lab")
+            .withDescription("This is a test lab.")
+            .create();
+    }
+}
+```
+
+### Labs_Delete
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Labs Delete. */
+public final class LabsDeleteSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Labs/deleteLab.json
+     */
+    /**
+     * Sample code: deleteLab.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void deleteLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labs().delete("testrg123", "testlab", Context.NONE);
+    }
+}
+```
+
+### Labs_GetByResourceGroup
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Labs GetByResourceGroup. */
+public final class LabsGetByResourceGroupSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Labs/getLab.json
+     */
+    /**
+     * Sample code: getLab.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void getLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labs().getByResourceGroupWithResponse("testrg123", "testlab", Context.NONE);
+    }
+}
+```
+
+### Labs_List
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Labs List. */
+public final class LabsListSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Labs/listLabs.json
+     */
+    /**
+     * Sample code: listLabs.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listLabs(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labs().list(null, Context.NONE);
+    }
+}
+```
+
+### Labs_ListByResourceGroup
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Labs ListByResourceGroup. */
+public final class LabsListByResourceGroupSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Labs/listResourceGroupLabs.json
+     */
+    /**
+     * Sample code: listResourceGroupLabs.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listResourceGroupLabs(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labs().listByResourceGroup("testrg123", Context.NONE);
+    }
+}
+```
+
+### Labs_Publish
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Labs Publish. */
+public final class LabsPublishSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Labs/publishLab.json
+     */
+    /**
+     * Sample code: publishLab.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void publishLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labs().publish("testrg123", "testlab", Context.NONE);
+    }
+}
+```
+
+### Labs_SyncGroup
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Labs SyncGroup. */
+public final class LabsSyncGroupSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Labs/syncLab.json
+     */
+    /**
+     * Sample code: syncLab.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void syncLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.labs().syncGroup("testrg123", "testlab", Context.NONE);
+    }
+}
+```
+
+### Labs_Update
+
+```java
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.models.EnableState;
+import com.azure.resourcemanager.labservices.models.Lab;
+import com.azure.resourcemanager.labservices.models.SecurityProfile;
+
+/** Samples for Labs Update. */
+public final class LabsUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Labs/patchLab.json
+     */
+    /**
+     * Sample code: patchLab.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void patchLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        Lab resource = manager.labs().getByResourceGroupWithResponse("testrg123", "testlab", Context.NONE).getValue();
+        resource.update().withSecurityProfile(new SecurityProfile().withOpenAccess(EnableState.ENABLED)).apply();
+    }
+}
+```
+
+### OperationResults_Get
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for OperationResults Get. */
+public final class OperationResultsGetSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/OperationResults/getOperationResult.json
+     */
+    /**
+     * Sample code: getOperationResult.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void getOperationResult(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.operationResults().getWithResponse("a64149d8-84cb-4566-ab8e-b4ee1a074174", Context.NONE);
+    }
+}
+```
+
+### Operations_List
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Operations List. */
+public final class OperationsListSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/LabServices/listOperations.json
+     */
+    /**
+     * Sample code: listOperations.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listOperations(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.operations().list(Context.NONE);
+    }
+}
+```
+
+### Schedules_CreateOrUpdate
+
+```java
+import com.azure.resourcemanager.labservices.models.RecurrenceFrequency;
+import com.azure.resourcemanager.labservices.models.RecurrencePattern;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+
+/** Samples for Schedules CreateOrUpdate. */
+public final class SchedulesCreateOrUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Schedules/putSchedule.json
+     */
+    /**
+     * Sample code: putSchedule.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void putSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager
+            .schedules()
+            .define("schedule1")
+            .withExistingLab("testrg123", "testlab")
+            .withStartAt(OffsetDateTime.parse("2020-05-26T12:00:00Z"))
+            .withStopAt(OffsetDateTime.parse("2020-05-26T18:00:00Z"))
+            .withRecurrencePattern(
+                new RecurrencePattern()
+                    .withFrequency(RecurrenceFrequency.DAILY)
+                    .withInterval(2)
+                    .withExpirationDate(LocalDate.parse("2020-08-14")))
+            .withTimeZoneId("America/Los_Angeles")
+            .withNotes("Schedule 1 for students")
+            .create();
+    }
+}
+```
+
+### Schedules_Delete
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Schedules Delete. */
+public final class SchedulesDeleteSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Schedules/deleteSchedule.json
+     */
+    /**
+     * Sample code: deleteSchedule.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void deleteSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.schedules().delete("testrg123", "testlab", "schedule1", Context.NONE);
+    }
+}
+```
+
+### Schedules_Get
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Schedules Get. */
+public final class SchedulesGetSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Schedules/getSchedule.json
+     */
+    /**
+     * Sample code: getSchedule.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void getSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.schedules().getWithResponse("testrg123", "testlab", "schedule1", Context.NONE);
+    }
+}
+```
+
+### Schedules_ListByLab
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Schedules ListByLab. */
+public final class SchedulesListByLabSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Schedules/listSchedule.json
+     */
+    /**
+     * Sample code: getListSchedule.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void getListSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.schedules().listByLab("testrg123", "testlab", null, Context.NONE);
+    }
+}
+```
+
+### Schedules_Update
+
+```java
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.models.RecurrenceFrequency;
+import com.azure.resourcemanager.labservices.models.RecurrencePattern;
+import com.azure.resourcemanager.labservices.models.Schedule;
+import java.time.LocalDate;
+
+/** Samples for Schedules Update. */
+public final class SchedulesUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Schedules/patchSchedule.json
+     */
+    /**
+     * Sample code: patchSchedule.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void patchSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        Schedule resource =
+            manager.schedules().getWithResponse("testrg123", "testlab", "schedule1", Context.NONE).getValue();
+        resource
+            .update()
+            .withRecurrencePattern(
+                new RecurrencePattern()
+                    .withFrequency(RecurrenceFrequency.DAILY)
+                    .withInterval(2)
+                    .withExpirationDate(LocalDate.parse("2020-08-14")))
+            .apply();
+    }
+}
+```
+
+### Skus_List
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Skus List. */
+public final class SkusListSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Skus/listSkus.json
+     */
+    /**
+     * Sample code: listSkus.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listSkus(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.skus().list(null, Context.NONE);
+    }
+}
+```
+
+### Usages_ListByLocation
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Usages ListByLocation. */
+public final class UsagesListByLocationSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Usages/getUsages.json
+     */
+    /**
+     * Sample code: listUsages.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listUsages(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.usages().listByLocation("westus2", null, Context.NONE);
+    }
+}
+```
+
+### Users_CreateOrUpdate
+
+```java
+import java.time.Duration;
+
+/** Samples for Users CreateOrUpdate. */
+public final class UsersCreateOrUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Users/putUser.json
+     */
+    /**
+     * Sample code: putUser.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void putUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager
+            .users()
+            .define("testuser")
+            .withExistingLab("testrg123", "testlab")
+            .withEmail("testuser@contoso.com")
+            .withAdditionalUsageQuota(Duration.parse("20:00"))
+            .create();
+    }
+}
+```
+
+### Users_Delete
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Users Delete. */
+public final class UsersDeleteSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Users/deleteUser.json
+     */
+    /**
+     * Sample code: deleteUser.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void deleteUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.users().delete("testrg123", "testlab", "testuser", Context.NONE);
+    }
+}
+```
+
+### Users_Get
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Users Get. */
+public final class UsersGetSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Users/getUser.json
+     */
+    /**
+     * Sample code: getUser.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void getUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.users().getWithResponse("testrg123", "testlab", "testuser", Context.NONE);
+    }
+}
+```
+
+### Users_Invite
+
+```java
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.models.InviteBody;
+
+/** Samples for Users Invite. */
+public final class UsersInviteSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Users/inviteUser.json
+     */
+    /**
+     * Sample code: inviteUser.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void inviteUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager
+            .users()
+            .invite(
+                "testrg123",
+                "testlab",
+                "testuser",
+                new InviteBody().withText("Invitation to lab testlab"),
+                Context.NONE);
+    }
+}
+```
+
+### Users_ListByLab
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for Users ListByLab. */
+public final class UsersListByLabSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Users/listUser.json
+     */
+    /**
+     * Sample code: listUser.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.users().listByLab("testrg123", "testlab", null, Context.NONE);
+    }
+}
+```
+
+### Users_Update
+
+```java
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.models.User;
+import java.time.Duration;
+
+/** Samples for Users Update. */
+public final class UsersUpdateSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/Users/patchUser.json
+     */
+    /**
+     * Sample code: patchUser.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void patchUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        User resource = manager.users().getWithResponse("testrg123", "testlab", "testuser", Context.NONE).getValue();
+        resource.update().withAdditionalUsageQuota(Duration.parse("20:00")).apply();
+    }
+}
+```
+
+### VirtualMachines_Get
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for VirtualMachines Get. */
+public final class VirtualMachinesGetSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/VirtualMachines/getVirtualMachine.json
+     */
+    /**
+     * Sample code: getVirtualMachine.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void getVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.virtualMachines().getWithResponse("testrg123", "testlab", "template", Context.NONE);
+    }
+}
+```
+
+### VirtualMachines_ListByLab
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for VirtualMachines ListByLab. */
+public final class VirtualMachinesListByLabSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/VirtualMachines/listVirtualMachine.json
+     */
+    /**
+     * Sample code: listVirtualMachine.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void listVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.virtualMachines().listByLab("testrg123", "testlab", null, Context.NONE);
+    }
+}
+```
+
+### VirtualMachines_Redeploy
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for VirtualMachines Redeploy. */
+public final class VirtualMachinesRedeploySamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/VirtualMachines/redeployVirtualMachine.json
+     */
+    /**
+     * Sample code: redeployVirtualMachine.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void redeployVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.virtualMachines().redeploy("testrg123", "testlab", "template", Context.NONE);
+    }
+}
+```
+
+### VirtualMachines_Reimage
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for VirtualMachines Reimage. */
+public final class VirtualMachinesReimageSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/VirtualMachines/reimageVirtualMachine.json
+     */
+    /**
+     * Sample code: reimageVirtualMachine.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void reimageVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.virtualMachines().reimage("testrg123", "testlab", "template", Context.NONE);
+    }
+}
+```
+
+### VirtualMachines_ResetPassword
+
+```java
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.models.ResetPasswordBody;
+
+/** Samples for VirtualMachines ResetPassword. */
+public final class VirtualMachinesResetPasswordSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/VirtualMachines/resetPasswordVirtualMachine.json
+     */
+    /**
+     * Sample code: resetPasswordVirtualMachine.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void resetPasswordVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager
+            .virtualMachines()
+            .resetPassword(
+                "testrg123",
+                "testlab",
+                "template",
+                new ResetPasswordBody().withUsername("example-username").withPassword("example-password"),
+                Context.NONE);
+    }
+}
+```
+
+### VirtualMachines_Start
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for VirtualMachines Start. */
+public final class VirtualMachinesStartSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/VirtualMachines/startVirtualMachine.json
+     */
+    /**
+     * Sample code: startVirtualMachine.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void startVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.virtualMachines().start("testrg123", "testlab", "template", Context.NONE);
+    }
+}
+```
+
+### VirtualMachines_Stop
+
+```java
+import com.azure.core.util.Context;
+
+/** Samples for VirtualMachines Stop. */
+public final class VirtualMachinesStopSamples {
+    /*
+     * x-ms-original-file: specification/labservices/resource-manager/Microsoft.LabServices/preview/2021-11-15-preview/examples/VirtualMachines/stopVirtualMachine.json
+     */
+    /**
+     * Sample code: stopVirtualMachine.
+     *
+     * @param manager Entry point to LabServicesManager.
+     */
+    public static void stopVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
+        manager.virtualMachines().stop("testrg123", "testlab", "template", Context.NONE);
+    }
+}
+```
+
diff --git a/sdk/labservices/azure-resourcemanager-labservices/pom.xml b/sdk/labservices/azure-resourcemanager-labservices/pom.xml
index 550e9d00d3a5..0795af844fb0 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/pom.xml
+++ b/sdk/labservices/azure-resourcemanager-labservices/pom.xml
@@ -1,58 +1,81 @@
 
-    4.0.0
-    
-        com.azure
-        azure-client-sdk-parent
-        1.7.0 
-        ../../parents/azure-client-sdk-parent
-    
+  4.0.0
+  
+    com.azure
+    azure-client-sdk-parent
+    1.7.0 
+    ../../parents/azure-client-sdk-parent
+  
 
-    com.azure.resourcemanager
-    azure-resourcemanager-labservices
-    1.0.0-beta.2 
-    jar
+  com.azure.resourcemanager
+  azure-resourcemanager-labservices
+  1.0.0-beta.2 
+  jar
 
-    Microsoft Azure SDK for ManagedLabs Management
-    This package contains Microsoft Azure SDK for ManagedLabs Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. The Managed Labs Client. Package tag package-2018-10.
-    https://github.com/Azure/azure-sdk-for-java
+  Microsoft Azure SDK for LabServices Management
+  This package contains Microsoft Azure SDK for LabServices Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. REST API for managing Azure Lab Services images. Package tag package-preview-2021-11.
+  https://github.com/Azure/azure-sdk-for-java
 
-    
-        
-            The MIT License (MIT)
-            http://opensource.org/licenses/MIT
-            repo
-        
-    
+  
+    
+      The MIT License (MIT)
+      http://opensource.org/licenses/MIT
+      repo
+    
+  
 
-    
-        https://github.com/Azure/azure-sdk-for-java
-        scm:git:git@github.com:Azure/azure-sdk-for-java.git
-        scm:git:git@github.com:Azure/azure-sdk-for-java.git
-        HEAD
-    
-    
-        
-            microsoft
-            Microsoft
-        
-    
-    
-        UTF-8
-        true
+  
+    https://github.com/Azure/azure-sdk-for-java
+    scm:git:git@github.com:Azure/azure-sdk-for-java.git
+    scm:git:git@github.com:Azure/azure-sdk-for-java.git
+    HEAD
+  
+  
+    
+      microsoft
+      Microsoft
+    
+  
+  
+    UTF-8
+    true
     false
     
     
-    
-    
-        
-            com.azure
-            azure-core
-            1.24.1 
-        
-        
-            com.azure
-            azure-core-management
-            1.5.1 
-        
-    
+  
+  
+    
+      com.azure
+      azure-core
+      1.24.1 
+    
+    
+      com.azure
+      azure-core-management
+      1.5.1 
+    
+  
+  
+    
+      
+        org.revapi
+        revapi-maven-plugin
+        0.14.6 
+        
+          
+            
+              - 
+                java.method.addedToInterface+
+- 
+                true
+                .*+                com\.azure\.resourcemanager(\.[^.]+)+\.fluent(\.[^.]+)*
+
+            
+          
+        
+      
+    
+  
 
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/ManagedLabsManager.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/LabServicesManager.java
similarity index 61%
rename from sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/ManagedLabsManager.java
rename to sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/LabServicesManager.java
index f33e4b7da8c1..6efd5607dbdf 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/ManagedLabsManager.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/LabServicesManager.java
@@ -8,8 +8,8 @@
 import com.azure.core.http.HttpClient;
 import com.azure.core.http.HttpPipeline;
 import com.azure.core.http.HttpPipelineBuilder;
+import com.azure.core.http.HttpPipelinePosition;
 import com.azure.core.http.policy.AddDatePolicy;
-import com.azure.core.http.policy.BearerTokenAuthenticationPolicy;
 import com.azure.core.http.policy.HttpLogOptions;
 import com.azure.core.http.policy.HttpLoggingPolicy;
 import com.azure.core.http.policy.HttpPipelinePolicy;
@@ -17,62 +17,68 @@
 import com.azure.core.http.policy.RequestIdPolicy;
 import com.azure.core.http.policy.RetryPolicy;
 import com.azure.core.http.policy.UserAgentPolicy;
+import com.azure.core.management.http.policy.ArmChallengeAuthenticationPolicy;
 import com.azure.core.management.profile.AzureProfile;
 import com.azure.core.util.Configuration;
 import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.fluent.ManagedLabsClient;
-import com.azure.resourcemanager.labservices.implementation.EnvironmentSettingsImpl;
-import com.azure.resourcemanager.labservices.implementation.EnvironmentsImpl;
-import com.azure.resourcemanager.labservices.implementation.GalleryImagesImpl;
-import com.azure.resourcemanager.labservices.implementation.GlobalUsersImpl;
-import com.azure.resourcemanager.labservices.implementation.LabAccountsImpl;
+import com.azure.resourcemanager.labservices.fluent.LabServicesClient;
+import com.azure.resourcemanager.labservices.implementation.ImagesImpl;
+import com.azure.resourcemanager.labservices.implementation.LabPlansImpl;
+import com.azure.resourcemanager.labservices.implementation.LabServicesClientBuilder;
 import com.azure.resourcemanager.labservices.implementation.LabsImpl;
-import com.azure.resourcemanager.labservices.implementation.ManagedLabsClientBuilder;
+import com.azure.resourcemanager.labservices.implementation.OperationResultsImpl;
 import com.azure.resourcemanager.labservices.implementation.OperationsImpl;
-import com.azure.resourcemanager.labservices.implementation.ProviderOperationsImpl;
+import com.azure.resourcemanager.labservices.implementation.SchedulesImpl;
+import com.azure.resourcemanager.labservices.implementation.SkusImpl;
+import com.azure.resourcemanager.labservices.implementation.UsagesImpl;
 import com.azure.resourcemanager.labservices.implementation.UsersImpl;
-import com.azure.resourcemanager.labservices.models.EnvironmentSettings;
-import com.azure.resourcemanager.labservices.models.Environments;
-import com.azure.resourcemanager.labservices.models.GalleryImages;
-import com.azure.resourcemanager.labservices.models.GlobalUsers;
-import com.azure.resourcemanager.labservices.models.LabAccounts;
+import com.azure.resourcemanager.labservices.implementation.VirtualMachinesImpl;
+import com.azure.resourcemanager.labservices.models.Images;
+import com.azure.resourcemanager.labservices.models.LabPlans;
 import com.azure.resourcemanager.labservices.models.Labs;
+import com.azure.resourcemanager.labservices.models.OperationResults;
 import com.azure.resourcemanager.labservices.models.Operations;
-import com.azure.resourcemanager.labservices.models.ProviderOperations;
+import com.azure.resourcemanager.labservices.models.Schedules;
+import com.azure.resourcemanager.labservices.models.Skus;
+import com.azure.resourcemanager.labservices.models.Usages;
 import com.azure.resourcemanager.labservices.models.Users;
+import com.azure.resourcemanager.labservices.models.VirtualMachines;
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
-/** Entry point to ManagedLabsManager. The Managed Labs Client. */
-public final class ManagedLabsManager {
-    private ProviderOperations providerOperations;
+/** Entry point to LabServicesManager. REST API for managing Azure Lab Services images. */
+public final class LabServicesManager {
+    private Images images;
 
-    private GlobalUsers globalUsers;
-
-    private LabAccounts labAccounts;
+    private LabPlans labPlans;
 
     private Operations operations;
 
-    private GalleryImages galleryImages;
-
     private Labs labs;
 
-    private EnvironmentSettings environmentSettings;
+    private OperationResults operationResults;
 
-    private Environments environments;
+    private Schedules schedules;
 
     private Users users;
 
-    private final ManagedLabsClient clientObject;
+    private VirtualMachines virtualMachines;
+
+    private Usages usages;
+
+    private Skus skus;
 
-    private ManagedLabsManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) {
+    private final LabServicesClient clientObject;
+
+    private LabServicesManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) {
         Objects.requireNonNull(httpPipeline, "'httpPipeline' cannot be null.");
         Objects.requireNonNull(profile, "'profile' cannot be null.");
         this.clientObject =
-            new ManagedLabsClientBuilder()
+            new LabServicesClientBuilder()
                 .pipeline(httpPipeline)
                 .endpoint(profile.getEnvironment().getResourceManagerEndpoint())
                 .subscriptionId(profile.getSubscriptionId())
@@ -81,25 +87,25 @@ private ManagedLabsManager(HttpPipeline httpPipeline, AzureProfile profile, Dura
     }
 
     /**
-     * Creates an instance of ManagedLabs service API entry point.
+     * Creates an instance of LabServices service API entry point.
      *
      * @param credential the credential to use.
      * @param profile the Azure profile for client.
-     * @return the ManagedLabs service API instance.
+     * @return the LabServices service API instance.
      */
-    public static ManagedLabsManager authenticate(TokenCredential credential, AzureProfile profile) {
+    public static LabServicesManager authenticate(TokenCredential credential, AzureProfile profile) {
         Objects.requireNonNull(credential, "'credential' cannot be null.");
         Objects.requireNonNull(profile, "'profile' cannot be null.");
         return configure().authenticate(credential, profile);
     }
 
     /**
-     * Gets a Configurable instance that can be used to create ManagedLabsManager with optional configuration.
+     * Gets a Configurable instance that can be used to create LabServicesManager with optional configuration.
      *
      * @return the Configurable instance allowing configurations.
      */
     public static Configurable configure() {
-        return new ManagedLabsManager.Configurable();
+        return new LabServicesManager.Configurable();
     }
 
     /** The Configurable allowing configurations to be set. */
@@ -109,6 +115,7 @@ public static final class Configurable {
         private HttpClient httpClient;
         private HttpLogOptions httpLogOptions;
         private final List policies = new ArrayList<>();
+        private final List scopes = new ArrayList<>();
         private RetryPolicy retryPolicy;
         private Duration defaultPollInterval;
 
@@ -148,6 +155,17 @@ public Configurable withPolicy(HttpPipelinePolicy policy) {
             return this;
         }
 
+        /**
+         * Adds the scope to permission sets.
+         *
+         * @param scope the scope.
+         * @return the configurable object itself.
+         */
+        public Configurable withScope(String scope) {
+            this.scopes.add(Objects.requireNonNull(scope, "'scope' cannot be null."));
+            return this;
+        }
+
         /**
          * Sets the retry policy to the HTTP pipeline.
          *
@@ -174,13 +192,13 @@ public Configurable withDefaultPollInterval(Duration defaultPollInterval) {
         }
 
         /**
-         * Creates an instance of ManagedLabs service API entry point.
+         * Creates an instance of LabServices service API entry point.
          *
          * @param credential the credential to use.
          * @param profile the Azure profile for client.
-         * @return the ManagedLabs service API instance.
+         * @return the LabServices service API instance.
          */
-        public ManagedLabsManager authenticate(TokenCredential credential, AzureProfile profile) {
+        public LabServicesManager authenticate(TokenCredential credential, AzureProfile profile) {
             Objects.requireNonNull(credential, "'credential' cannot be null.");
             Objects.requireNonNull(profile, "'profile' cannot be null.");
 
@@ -204,20 +222,33 @@ public ManagedLabsManager authenticate(TokenCredential credential, AzureProfile
                 userAgentBuilder.append(" (auto-generated)");
             }
 
+            if (scopes.isEmpty()) {
+                scopes.add(profile.getEnvironment().getManagementEndpoint() + "/.default");
+            }
             if (retryPolicy == null) {
                 retryPolicy = new RetryPolicy("Retry-After", ChronoUnit.SECONDS);
             }
             List policies = new ArrayList<>();
             policies.add(new UserAgentPolicy(userAgentBuilder.toString()));
             policies.add(new RequestIdPolicy());
+            policies
+                .addAll(
+                    this
+                        .policies
+                        .stream()
+                        .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL)
+                        .collect(Collectors.toList()));
             HttpPolicyProviders.addBeforeRetryPolicies(policies);
             policies.add(retryPolicy);
             policies.add(new AddDatePolicy());
+            policies.add(new ArmChallengeAuthenticationPolicy(credential, scopes.toArray(new String[0])));
             policies
-                .add(
-                    new BearerTokenAuthenticationPolicy(
-                        credential, profile.getEnvironment().getManagementEndpoint() + "/.default"));
-            policies.addAll(this.policies);
+                .addAll(
+                    this
+                        .policies
+                        .stream()
+                        .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY)
+                        .collect(Collectors.toList()));
             HttpPolicyProviders.addAfterRetryPolicies(policies);
             policies.add(new HttpLoggingPolicy(httpLogOptions));
             HttpPipeline httpPipeline =
@@ -225,32 +256,24 @@ public ManagedLabsManager authenticate(TokenCredential credential, AzureProfile
                     .httpClient(httpClient)
                     .policies(policies.toArray(new HttpPipelinePolicy[0]))
                     .build();
-            return new ManagedLabsManager(httpPipeline, profile, defaultPollInterval);
+            return new LabServicesManager(httpPipeline, profile, defaultPollInterval);
         }
     }
 
-    /** @return Resource collection API of ProviderOperations. */
-    public ProviderOperations providerOperations() {
-        if (this.providerOperations == null) {
-            this.providerOperations = new ProviderOperationsImpl(clientObject.getProviderOperations(), this);
+    /** @return Resource collection API of Images. */
+    public Images images() {
+        if (this.images == null) {
+            this.images = new ImagesImpl(clientObject.getImages(), this);
         }
-        return providerOperations;
+        return images;
     }
 
-    /** @return Resource collection API of GlobalUsers. */
-    public GlobalUsers globalUsers() {
-        if (this.globalUsers == null) {
-            this.globalUsers = new GlobalUsersImpl(clientObject.getGlobalUsers(), this);
+    /** @return Resource collection API of LabPlans. */
+    public LabPlans labPlans() {
+        if (this.labPlans == null) {
+            this.labPlans = new LabPlansImpl(clientObject.getLabPlans(), this);
         }
-        return globalUsers;
-    }
-
-    /** @return Resource collection API of LabAccounts. */
-    public LabAccounts labAccounts() {
-        if (this.labAccounts == null) {
-            this.labAccounts = new LabAccountsImpl(clientObject.getLabAccounts(), this);
-        }
-        return labAccounts;
+        return labPlans;
     }
 
     /** @return Resource collection API of Operations. */
@@ -261,14 +284,6 @@ public Operations operations() {
         return operations;
     }
 
-    /** @return Resource collection API of GalleryImages. */
-    public GalleryImages galleryImages() {
-        if (this.galleryImages == null) {
-            this.galleryImages = new GalleryImagesImpl(clientObject.getGalleryImages(), this);
-        }
-        return galleryImages;
-    }
-
     /** @return Resource collection API of Labs. */
     public Labs labs() {
         if (this.labs == null) {
@@ -277,20 +292,20 @@ public Labs labs() {
         return labs;
     }
 
-    /** @return Resource collection API of EnvironmentSettings. */
-    public EnvironmentSettings environmentSettings() {
-        if (this.environmentSettings == null) {
-            this.environmentSettings = new EnvironmentSettingsImpl(clientObject.getEnvironmentSettings(), this);
+    /** @return Resource collection API of OperationResults. */
+    public OperationResults operationResults() {
+        if (this.operationResults == null) {
+            this.operationResults = new OperationResultsImpl(clientObject.getOperationResults(), this);
         }
-        return environmentSettings;
+        return operationResults;
     }
 
-    /** @return Resource collection API of Environments. */
-    public Environments environments() {
-        if (this.environments == null) {
-            this.environments = new EnvironmentsImpl(clientObject.getEnvironments(), this);
+    /** @return Resource collection API of Schedules. */
+    public Schedules schedules() {
+        if (this.schedules == null) {
+            this.schedules = new SchedulesImpl(clientObject.getSchedules(), this);
         }
-        return environments;
+        return schedules;
     }
 
     /** @return Resource collection API of Users. */
@@ -301,11 +316,35 @@ public Users users() {
         return users;
     }
 
+    /** @return Resource collection API of VirtualMachines. */
+    public VirtualMachines virtualMachines() {
+        if (this.virtualMachines == null) {
+            this.virtualMachines = new VirtualMachinesImpl(clientObject.getVirtualMachines(), this);
+        }
+        return virtualMachines;
+    }
+
+    /** @return Resource collection API of Usages. */
+    public Usages usages() {
+        if (this.usages == null) {
+            this.usages = new UsagesImpl(clientObject.getUsages(), this);
+        }
+        return usages;
+    }
+
+    /** @return Resource collection API of Skus. */
+    public Skus skus() {
+        if (this.skus == null) {
+            this.skus = new SkusImpl(clientObject.getSkus(), this);
+        }
+        return skus;
+    }
+
     /**
-     * @return Wrapped service client ManagedLabsClient providing direct access to the underlying auto-generated API
+     * @return Wrapped service client LabServicesClient providing direct access to the underlying auto-generated API
      *     implementation, based on Azure REST API.
      */
-    public ManagedLabsClient serviceClient() {
+    public LabServicesClient serviceClient() {
         return this.clientObject;
     }
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/EnvironmentSettingsClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/EnvironmentSettingsClient.java
deleted file mode 100644
index d066982a631e..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/EnvironmentSettingsClient.java
+++ /dev/null
@@ -1,530 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent;
-
-import com.azure.core.annotation.ReturnType;
-import com.azure.core.annotation.ServiceMethod;
-import com.azure.core.http.rest.PagedIterable;
-import com.azure.core.http.rest.Response;
-import com.azure.core.management.polling.PollResult;
-import com.azure.core.util.Context;
-import com.azure.core.util.polling.SyncPoller;
-import com.azure.resourcemanager.labservices.fluent.models.EnvironmentSettingInner;
-import com.azure.resourcemanager.labservices.models.EnvironmentSettingFragment;
-import com.azure.resourcemanager.labservices.models.PublishPayload;
-
-/** An instance of this class provides access to all the operations defined in EnvironmentSettingsClient. */
-public interface EnvironmentSettingsClient {
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(String resourceGroupName, String labAccountName, String labName);
-
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby,
-        Context context);
-
-    /**
-     * Get environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment setting.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    EnvironmentSettingInner get(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * Get environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment setting.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String expand,
-        Context context);
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, EnvironmentSettingInner> beginCreateOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting);
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, EnvironmentSettingInner> beginCreateOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting,
-        Context context);
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    EnvironmentSettingInner createOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting);
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    EnvironmentSettingInner createOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting,
-        Context context);
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context);
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context);
-
-    /**
-     * Modify properties of environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    EnvironmentSettingInner update(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingFragment environmentSetting);
-
-    /**
-     * Modify properties of environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response updateWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingFragment environmentSetting,
-        Context context);
-
-    /**
-     * Claims a random environment for a user in an environment settings.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void claimAny(String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * Claims a random environment for a user in an environment settings.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response claimAnyWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context);
-
-    /**
-     * Provisions/deprovisions required resources for an environment setting based on current state of the
-     * lab/environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param publishPayload Payload for Publish operation on EnvironmentSetting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void publish(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        PublishPayload publishPayload);
-
-    /**
-     * Provisions/deprovisions required resources for an environment setting based on current state of the
-     * lab/environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param publishPayload Payload for Publish operation on EnvironmentSetting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response publishWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        PublishPayload publishPayload,
-        Context context);
-
-    /**
-     * Starts a template by starting all resources inside the template. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStart(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * Starts a template by starting all resources inside the template. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStart(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context);
-
-    /**
-     * Starts a template by starting all resources inside the template. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void start(String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * Starts a template by starting all resources inside the template. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void start(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context);
-
-    /**
-     * Starts a template by starting all resources inside the template. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStop(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * Starts a template by starting all resources inside the template. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStop(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context);
-
-    /**
-     * Starts a template by starting all resources inside the template. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void stop(String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * Starts a template by starting all resources inside the template. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void stop(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context);
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/EnvironmentsClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/EnvironmentsClient.java
deleted file mode 100644
index fa07348cf32b..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/EnvironmentsClient.java
+++ /dev/null
@@ -1,609 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent;
-
-import com.azure.core.annotation.ReturnType;
-import com.azure.core.annotation.ServiceMethod;
-import com.azure.core.http.rest.PagedIterable;
-import com.azure.core.http.rest.Response;
-import com.azure.core.management.polling.PollResult;
-import com.azure.core.util.Context;
-import com.azure.core.util.polling.SyncPoller;
-import com.azure.resourcemanager.labservices.fluent.models.EnvironmentInner;
-import com.azure.resourcemanager.labservices.models.EnvironmentFragment;
-import com.azure.resourcemanager.labservices.models.ResetPasswordPayload;
-
-/** An instance of this class provides access to all the operations defined in EnvironmentsClient. */
-public interface EnvironmentsClient {
-    /**
-     * List environments in a given environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName);
-
-    /**
-     * List environments in a given environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param expand Specify the $expand query. Example: 'properties($expand=networkInterface)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby,
-        Context context);
-
-    /**
-     * Get environment.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    EnvironmentInner get(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName);
-
-    /**
-     * Get environment.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param expand Specify the $expand query. Example: 'properties($expand=networkInterface)'.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        String expand,
-        Context context);
-
-    /**
-     * Create or replace an existing Environment.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param environment Represents an environment instance.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents an environment instance.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    EnvironmentInner createOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        EnvironmentInner environment);
-
-    /**
-     * Create or replace an existing Environment.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param environment Represents an environment instance.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents an environment instance.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response createOrUpdateWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        EnvironmentInner environment,
-        Context context);
-
-    /**
-     * Delete environment. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName);
-
-    /**
-     * Delete environment. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        Context context);
-
-    /**
-     * Delete environment. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName);
-
-    /**
-     * Delete environment. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        Context context);
-
-    /**
-     * Modify properties of environments.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param environment Represents an environment instance.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents an environment instance.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    EnvironmentInner update(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        EnvironmentFragment environment);
-
-    /**
-     * Modify properties of environments.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param environment Represents an environment instance.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents an environment instance.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response updateWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        EnvironmentFragment environment,
-        Context context);
-
-    /**
-     * Claims the environment and assigns it to the user.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void claim(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName);
-
-    /**
-     * Claims the environment and assigns it to the user.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response claimWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        Context context);
-
-    /**
-     * Resets the user password on an environment This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param resetPasswordPayload Represents the payload for resetting passwords.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginResetPassword(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        ResetPasswordPayload resetPasswordPayload);
-
-    /**
-     * Resets the user password on an environment This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param resetPasswordPayload Represents the payload for resetting passwords.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginResetPassword(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        ResetPasswordPayload resetPasswordPayload,
-        Context context);
-
-    /**
-     * Resets the user password on an environment This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param resetPasswordPayload Represents the payload for resetting passwords.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void resetPassword(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        ResetPasswordPayload resetPasswordPayload);
-
-    /**
-     * Resets the user password on an environment This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param resetPasswordPayload Represents the payload for resetting passwords.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void resetPassword(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        ResetPasswordPayload resetPasswordPayload,
-        Context context);
-
-    /**
-     * Starts an environment by starting all resources inside the environment. This operation can take a while to
-     * complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStart(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName);
-
-    /**
-     * Starts an environment by starting all resources inside the environment. This operation can take a while to
-     * complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStart(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        Context context);
-
-    /**
-     * Starts an environment by starting all resources inside the environment. This operation can take a while to
-     * complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void start(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName);
-
-    /**
-     * Starts an environment by starting all resources inside the environment. This operation can take a while to
-     * complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void start(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        Context context);
-
-    /**
-     * Stops an environment by stopping all resources inside the environment This operation can take a while to
-     * complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStop(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName);
-
-    /**
-     * Stops an environment by stopping all resources inside the environment This operation can take a while to
-     * complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStop(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        Context context);
-
-    /**
-     * Stops an environment by stopping all resources inside the environment This operation can take a while to
-     * complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void stop(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName);
-
-    /**
-     * Stops an environment by stopping all resources inside the environment This operation can take a while to
-     * complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentName The name of the environment.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void stop(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String environmentName,
-        Context context);
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/GalleryImagesClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/GalleryImagesClient.java
deleted file mode 100644
index d83fe8ce94c8..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/GalleryImagesClient.java
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent;
-
-import com.azure.core.annotation.ReturnType;
-import com.azure.core.annotation.ServiceMethod;
-import com.azure.core.http.rest.PagedIterable;
-import com.azure.core.http.rest.Response;
-import com.azure.core.util.Context;
-import com.azure.resourcemanager.labservices.fluent.models.GalleryImageInner;
-import com.azure.resourcemanager.labservices.models.GalleryImageFragment;
-
-/** An instance of this class provides access to all the operations defined in GalleryImagesClient. */
-public interface GalleryImagesClient {
-    /**
-     * List gallery images in a given lab account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(String resourceGroupName, String labAccountName);
-
-    /**
-     * List gallery images in a given lab account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param expand Specify the $expand query. Example: 'properties($select=author)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(
-        String resourceGroupName,
-        String labAccountName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby,
-        Context context);
-
-    /**
-     * Get gallery image.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param galleryImageName The name of the gallery Image.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return gallery image.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    GalleryImageInner get(String resourceGroupName, String labAccountName, String galleryImageName);
-
-    /**
-     * Get gallery image.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param galleryImageName The name of the gallery Image.
-     * @param expand Specify the $expand query. Example: 'properties($select=author)'.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return gallery image.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getWithResponse(
-        String resourceGroupName, String labAccountName, String galleryImageName, String expand, Context context);
-
-    /**
-     * Create or replace an existing Gallery Image.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param galleryImageName The name of the gallery Image.
-     * @param galleryImage Represents an image from the Azure Marketplace.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents an image from the Azure Marketplace.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    GalleryImageInner createOrUpdate(
-        String resourceGroupName, String labAccountName, String galleryImageName, GalleryImageInner galleryImage);
-
-    /**
-     * Create or replace an existing Gallery Image.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param galleryImageName The name of the gallery Image.
-     * @param galleryImage Represents an image from the Azure Marketplace.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents an image from the Azure Marketplace.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response createOrUpdateWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String galleryImageName,
-        GalleryImageInner galleryImage,
-        Context context);
-
-    /**
-     * Delete gallery image.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param galleryImageName The name of the gallery Image.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(String resourceGroupName, String labAccountName, String galleryImageName);
-
-    /**
-     * Delete gallery image.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param galleryImageName The name of the gallery Image.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response deleteWithResponse(
-        String resourceGroupName, String labAccountName, String galleryImageName, Context context);
-
-    /**
-     * Modify properties of gallery images.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param galleryImageName The name of the gallery Image.
-     * @param galleryImage Represents an image from the Azure Marketplace.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents an image from the Azure Marketplace.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    GalleryImageInner update(
-        String resourceGroupName, String labAccountName, String galleryImageName, GalleryImageFragment galleryImage);
-
-    /**
-     * Modify properties of gallery images.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param galleryImageName The name of the gallery Image.
-     * @param galleryImage Represents an image from the Azure Marketplace.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents an image from the Azure Marketplace.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response updateWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String galleryImageName,
-        GalleryImageFragment galleryImage,
-        Context context);
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/GlobalUsersClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/GlobalUsersClient.java
deleted file mode 100644
index dfdf2b560642..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/GlobalUsersClient.java
+++ /dev/null
@@ -1,404 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent;
-
-import com.azure.core.annotation.ReturnType;
-import com.azure.core.annotation.ServiceMethod;
-import com.azure.core.http.rest.Response;
-import com.azure.core.management.polling.PollResult;
-import com.azure.core.util.Context;
-import com.azure.core.util.polling.SyncPoller;
-import com.azure.resourcemanager.labservices.fluent.models.GetEnvironmentResponseInner;
-import com.azure.resourcemanager.labservices.fluent.models.GetPersonalPreferencesResponseInner;
-import com.azure.resourcemanager.labservices.fluent.models.ListEnvironmentsResponseInner;
-import com.azure.resourcemanager.labservices.fluent.models.ListLabsResponseInner;
-import com.azure.resourcemanager.labservices.fluent.models.OperationBatchStatusResponseInner;
-import com.azure.resourcemanager.labservices.fluent.models.OperationStatusResponseInner;
-import com.azure.resourcemanager.labservices.models.EnvironmentOperationsPayload;
-import com.azure.resourcemanager.labservices.models.ListEnvironmentsPayload;
-import com.azure.resourcemanager.labservices.models.OperationBatchStatusPayload;
-import com.azure.resourcemanager.labservices.models.OperationStatusPayload;
-import com.azure.resourcemanager.labservices.models.PersonalPreferencesOperationsPayload;
-import com.azure.resourcemanager.labservices.models.RegisterPayload;
-import com.azure.resourcemanager.labservices.models.ResetPasswordPayload;
-
-/** An instance of this class provides access to all the operations defined in GlobalUsersClient. */
-public interface GlobalUsersClient {
-    /**
-     * Gets the virtual machine details.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the virtual machine details.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    GetEnvironmentResponseInner getEnvironment(
-        String username, EnvironmentOperationsPayload environmentOperationsPayload);
-
-    /**
-     * Gets the virtual machine details.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @param expand Specify the $expand query. Example: 'properties($expand=environment)'.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the virtual machine details.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getEnvironmentWithResponse(
-        String username, EnvironmentOperationsPayload environmentOperationsPayload, String expand, Context context);
-
-    /**
-     * Get batch operation status.
-     *
-     * @param username The name of the user.
-     * @param operationBatchStatusPayload Payload to get the status of an operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return batch operation status.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    OperationBatchStatusResponseInner getOperationBatchStatus(
-        String username, OperationBatchStatusPayload operationBatchStatusPayload);
-
-    /**
-     * Get batch operation status.
-     *
-     * @param username The name of the user.
-     * @param operationBatchStatusPayload Payload to get the status of an operation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return batch operation status.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getOperationBatchStatusWithResponse(
-        String username, OperationBatchStatusPayload operationBatchStatusPayload, Context context);
-
-    /**
-     * Gets the status of long running operation.
-     *
-     * @param username The name of the user.
-     * @param operationStatusPayload Payload to get the status of an operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the status of long running operation.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    OperationStatusResponseInner getOperationStatus(String username, OperationStatusPayload operationStatusPayload);
-
-    /**
-     * Gets the status of long running operation.
-     *
-     * @param username The name of the user.
-     * @param operationStatusPayload Payload to get the status of an operation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the status of long running operation.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getOperationStatusWithResponse(
-        String username, OperationStatusPayload operationStatusPayload, Context context);
-
-    /**
-     * Get personal preferences for a user.
-     *
-     * @param username The name of the user.
-     * @param personalPreferencesOperationsPayload Represents payload for any Environment operations like get, start,
-     *     stop, connect.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return personal preferences for a user.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    GetPersonalPreferencesResponseInner getPersonalPreferences(
-        String username, PersonalPreferencesOperationsPayload personalPreferencesOperationsPayload);
-
-    /**
-     * Get personal preferences for a user.
-     *
-     * @param username The name of the user.
-     * @param personalPreferencesOperationsPayload Represents payload for any Environment operations like get, start,
-     *     stop, connect.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return personal preferences for a user.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getPersonalPreferencesWithResponse(
-        String username, PersonalPreferencesOperationsPayload personalPreferencesOperationsPayload, Context context);
-
-    /**
-     * List Environments for the user.
-     *
-     * @param username The name of the user.
-     * @param listEnvironmentsPayload Represents the payload to list environments owned by a user.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents the list of environments owned by a user.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    ListEnvironmentsResponseInner listEnvironments(String username, ListEnvironmentsPayload listEnvironmentsPayload);
-
-    /**
-     * List Environments for the user.
-     *
-     * @param username The name of the user.
-     * @param listEnvironmentsPayload Represents the payload to list environments owned by a user.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents the list of environments owned by a user.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response listEnvironmentsWithResponse(
-        String username, ListEnvironmentsPayload listEnvironmentsPayload, Context context);
-
-    /**
-     * List labs for the user.
-     *
-     * @param username The name of the user.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return lists the labs owned by a user.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    ListLabsResponseInner listLabs(String username);
-
-    /**
-     * List labs for the user.
-     *
-     * @param username The name of the user.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return lists the labs owned by a user.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response listLabsWithResponse(String username, Context context);
-
-    /**
-     * Register a user to a managed lab.
-     *
-     * @param username The name of the user.
-     * @param registerPayload Represents payload for Register action.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void register(String username, RegisterPayload registerPayload);
-
-    /**
-     * Register a user to a managed lab.
-     *
-     * @param username The name of the user.
-     * @param registerPayload Represents payload for Register action.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response registerWithResponse(String username, RegisterPayload registerPayload, Context context);
-
-    /**
-     * Resets the user password on an environment This operation can take a while to complete.
-     *
-     * @param username The name of the user.
-     * @param resetPasswordPayload Represents the payload for resetting passwords.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginResetPassword(String username, ResetPasswordPayload resetPasswordPayload);
-
-    /**
-     * Resets the user password on an environment This operation can take a while to complete.
-     *
-     * @param username The name of the user.
-     * @param resetPasswordPayload Represents the payload for resetting passwords.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginResetPassword(
-        String username, ResetPasswordPayload resetPasswordPayload, Context context);
-
-    /**
-     * Resets the user password on an environment This operation can take a while to complete.
-     *
-     * @param username The name of the user.
-     * @param resetPasswordPayload Represents the payload for resetting passwords.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void resetPassword(String username, ResetPasswordPayload resetPasswordPayload);
-
-    /**
-     * Resets the user password on an environment This operation can take a while to complete.
-     *
-     * @param username The name of the user.
-     * @param resetPasswordPayload Represents the payload for resetting passwords.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void resetPassword(String username, ResetPasswordPayload resetPasswordPayload, Context context);
-
-    /**
-     * Starts an environment by starting all resources inside the environment. This operation can take a while to
-     * complete.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStartEnvironment(
-        String username, EnvironmentOperationsPayload environmentOperationsPayload);
-
-    /**
-     * Starts an environment by starting all resources inside the environment. This operation can take a while to
-     * complete.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStartEnvironment(
-        String username, EnvironmentOperationsPayload environmentOperationsPayload, Context context);
-
-    /**
-     * Starts an environment by starting all resources inside the environment. This operation can take a while to
-     * complete.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void startEnvironment(String username, EnvironmentOperationsPayload environmentOperationsPayload);
-
-    /**
-     * Starts an environment by starting all resources inside the environment. This operation can take a while to
-     * complete.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void startEnvironment(String username, EnvironmentOperationsPayload environmentOperationsPayload, Context context);
-
-    /**
-     * Stops an environment by stopping all resources inside the environment This operation can take a while to
-     * complete.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStopEnvironment(
-        String username, EnvironmentOperationsPayload environmentOperationsPayload);
-
-    /**
-     * Stops an environment by stopping all resources inside the environment This operation can take a while to
-     * complete.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginStopEnvironment(
-        String username, EnvironmentOperationsPayload environmentOperationsPayload, Context context);
-
-    /**
-     * Stops an environment by stopping all resources inside the environment This operation can take a while to
-     * complete.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void stopEnvironment(String username, EnvironmentOperationsPayload environmentOperationsPayload);
-
-    /**
-     * Stops an environment by stopping all resources inside the environment This operation can take a while to
-     * complete.
-     *
-     * @param username The name of the user.
-     * @param environmentOperationsPayload Represents payload for any Environment operations like get, start, stop,
-     *     connect.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void stopEnvironment(String username, EnvironmentOperationsPayload environmentOperationsPayload, Context context);
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ImagesClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ImagesClient.java
new file mode 100644
index 000000000000..138b59b9d54e
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ImagesClient.java
@@ -0,0 +1,147 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.fluent.models.ImageInner;
+import com.azure.resourcemanager.labservices.models.ImageUpdate;
+
+/** An instance of this class provides access to all the operations defined in ImagesClient. */
+public interface ImagesClient {
+    /**
+     * Gets all images from galleries attached to a lab plan.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return all images from galleries attached to a lab plan.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByLabPlan(String resourceGroupName, String labPlanName);
+
+    /**
+     * Gets all images from galleries attached to a lab plan.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param filter The filter to apply to the operation.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return all images from galleries attached to a lab plan.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByLabPlan(
+        String resourceGroupName, String labPlanName, String filter, Context context);
+
+    /**
+     * Gets an image resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param imageName The image name.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return an image resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ImageInner get(String resourceGroupName, String labPlanName, String imageName);
+
+    /**
+     * Gets an image resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param imageName The image name.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return an image resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response getWithResponse(
+        String resourceGroupName, String labPlanName, String imageName, Context context);
+
+    /**
+     * Updates an image resource via PUT. Creating new resources via PUT will not function.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param imageName The image name.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab services virtual machine image.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ImageInner createOrUpdate(String resourceGroupName, String labPlanName, String imageName, ImageInner body);
+
+    /**
+     * Updates an image resource via PUT. Creating new resources via PUT will not function.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param imageName The image name.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab services virtual machine image.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response createOrUpdateWithResponse(
+        String resourceGroupName, String labPlanName, String imageName, ImageInner body, Context context);
+
+    /**
+     * Updates an image resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param imageName The image name.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab services virtual machine image.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ImageInner update(String resourceGroupName, String labPlanName, String imageName, ImageUpdate body);
+
+    /**
+     * Updates an image resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param imageName The image name.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab services virtual machine image.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response updateWithResponse(
+        String resourceGroupName, String labPlanName, String imageName, ImageUpdate body, Context context);
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabAccountsClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabAccountsClient.java
deleted file mode 100644
index 3a2111adae27..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabAccountsClient.java
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent;
-
-import com.azure.core.annotation.ReturnType;
-import com.azure.core.annotation.ServiceMethod;
-import com.azure.core.http.rest.PagedIterable;
-import com.azure.core.http.rest.Response;
-import com.azure.core.management.polling.PollResult;
-import com.azure.core.util.Context;
-import com.azure.core.util.polling.SyncPoller;
-import com.azure.resourcemanager.labservices.fluent.models.GetRegionalAvailabilityResponseInner;
-import com.azure.resourcemanager.labservices.fluent.models.LabAccountInner;
-import com.azure.resourcemanager.labservices.models.CreateLabProperties;
-import com.azure.resourcemanager.labservices.models.LabAccountFragment;
-
-/** An instance of this class provides access to all the operations defined in LabAccountsClient. */
-public interface LabAccountsClient {
-    /**
-     * List lab accounts in a subscription.
-     *
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list();
-
-    /**
-     * List lab accounts in a subscription.
-     *
-     * @param expand Specify the $expand query. Example: 'properties($expand=sizeConfiguration)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(String expand, String filter, Integer top, String orderby, Context context);
-
-    /**
-     * List lab accounts in a resource group.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable listByResourceGroup(String resourceGroupName);
-
-    /**
-     * List lab accounts in a resource group.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param expand Specify the $expand query. Example: 'properties($expand=sizeConfiguration)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable listByResourceGroup(
-        String resourceGroupName, String expand, String filter, Integer top, String orderby, Context context);
-
-    /**
-     * Get lab account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return lab account.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    LabAccountInner getByResourceGroup(String resourceGroupName, String labAccountName);
-
-    /**
-     * Get lab account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param expand Specify the $expand query. Example: 'properties($expand=sizeConfiguration)'.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return lab account.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getByResourceGroupWithResponse(
-        String resourceGroupName, String labAccountName, String expand, Context context);
-
-    /**
-     * Create or replace an existing Lab Account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labAccount Represents a lab account.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents a lab account.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    LabAccountInner createOrUpdate(String resourceGroupName, String labAccountName, LabAccountInner labAccount);
-
-    /**
-     * Create or replace an existing Lab Account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labAccount Represents a lab account.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents a lab account.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response createOrUpdateWithResponse(
-        String resourceGroupName, String labAccountName, LabAccountInner labAccount, Context context);
-
-    /**
-     * Delete lab account. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(String resourceGroupName, String labAccountName);
-
-    /**
-     * Delete lab account. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(String resourceGroupName, String labAccountName, Context context);
-
-    /**
-     * Delete lab account. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(String resourceGroupName, String labAccountName);
-
-    /**
-     * Delete lab account. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(String resourceGroupName, String labAccountName, Context context);
-
-    /**
-     * Modify properties of lab accounts.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labAccount Represents a lab account.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents a lab account.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    LabAccountInner update(String resourceGroupName, String labAccountName, LabAccountFragment labAccount);
-
-    /**
-     * Modify properties of lab accounts.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labAccount Represents a lab account.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents a lab account.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response updateWithResponse(
-        String resourceGroupName, String labAccountName, LabAccountFragment labAccount, Context context);
-
-    /**
-     * Create a lab in a lab account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param createLabProperties Properties for creating a managed lab and a default environment setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    void createLab(String resourceGroupName, String labAccountName, CreateLabProperties createLabProperties);
-
-    /**
-     * Create a lab in a lab account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param createLabProperties Properties for creating a managed lab and a default environment setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response createLabWithResponse(
-        String resourceGroupName, String labAccountName, CreateLabProperties createLabProperties, Context context);
-
-    /**
-     * Get regional availability information for each size category configured under a lab account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return regional availability information for each size category configured under a lab account.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    GetRegionalAvailabilityResponseInner getRegionalAvailability(String resourceGroupName, String labAccountName);
-
-    /**
-     * Get regional availability information for each size category configured under a lab account.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return regional availability information for each size category configured under a lab account.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getRegionalAvailabilityWithResponse(
-        String resourceGroupName, String labAccountName, Context context);
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabPlansClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabPlansClient.java
new file mode 100644
index 000000000000..504f72d9980b
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabPlansClient.java
@@ -0,0 +1,346 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.labservices.fluent.models.LabPlanInner;
+import com.azure.resourcemanager.labservices.models.LabPlanUpdate;
+import com.azure.resourcemanager.labservices.models.SaveImageBody;
+
+/** An instance of this class provides access to all the operations defined in LabPlansClient. */
+public interface LabPlansClient {
+    /**
+     * Returns a list of all lab plans within a subscription.
+     *
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return paged list of lab plans.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list();
+
+    /**
+     * Returns a list of all lab plans within a subscription.
+     *
+     * @param filter The filter to apply to the operation.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return paged list of lab plans.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list(String filter, Context context);
+
+    /**
+     * Returns a list of all lab plans for a subscription and resource group.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return paged list of lab plans.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByResourceGroup(String resourceGroupName);
+
+    /**
+     * Returns a list of all lab plans for a subscription and resource group.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return paged list of lab plans.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByResourceGroup(String resourceGroupName, Context context);
+
+    /**
+     * Retrieves the properties of a Lab Plan.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    LabPlanInner getByResourceGroup(String resourceGroupName, String labPlanName);
+
+    /**
+     * Retrieves the properties of a Lab Plan.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response getByResourceGroupWithResponse(
+        String resourceGroupName, String labPlanName, Context context);
+
+    /**
+     * Operation to create or update a Lab Plan resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, LabPlanInner> beginCreateOrUpdate(
+        String resourceGroupName, String labPlanName, LabPlanInner body);
+
+    /**
+     * Operation to create or update a Lab Plan resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, LabPlanInner> beginCreateOrUpdate(
+        String resourceGroupName, String labPlanName, LabPlanInner body, Context context);
+
+    /**
+     * Operation to create or update a Lab Plan resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    LabPlanInner createOrUpdate(String resourceGroupName, String labPlanName, LabPlanInner body);
+
+    /**
+     * Operation to create or update a Lab Plan resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    LabPlanInner createOrUpdate(String resourceGroupName, String labPlanName, LabPlanInner body, Context context);
+
+    /**
+     * Operation to update a Lab Plan resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, LabPlanInner> beginUpdate(
+        String resourceGroupName, String labPlanName, LabPlanUpdate body);
+
+    /**
+     * Operation to update a Lab Plan resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, LabPlanInner> beginUpdate(
+        String resourceGroupName, String labPlanName, LabPlanUpdate body, Context context);
+
+    /**
+     * Operation to update a Lab Plan resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    LabPlanInner update(String resourceGroupName, String labPlanName, LabPlanUpdate body);
+
+    /**
+     * Operation to update a Lab Plan resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return lab Plans act as a permission container for creating labs via labs.azure.com.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    LabPlanInner update(String resourceGroupName, String labPlanName, LabPlanUpdate body, Context context);
+
+    /**
+     * Operation to delete a Lab Plan resource. Deleting a lab plan does not delete labs associated with a lab plan, nor
+     * does it delete shared images added to a gallery via the lab plan permission container.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginDelete(String resourceGroupName, String labPlanName);
+
+    /**
+     * Operation to delete a Lab Plan resource. Deleting a lab plan does not delete labs associated with a lab plan, nor
+     * does it delete shared images added to a gallery via the lab plan permission container.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginDelete(String resourceGroupName, String labPlanName, Context context);
+
+    /**
+     * Operation to delete a Lab Plan resource. Deleting a lab plan does not delete labs associated with a lab plan, nor
+     * does it delete shared images added to a gallery via the lab plan permission container.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void delete(String resourceGroupName, String labPlanName);
+
+    /**
+     * Operation to delete a Lab Plan resource. Deleting a lab plan does not delete labs associated with a lab plan, nor
+     * does it delete shared images added to a gallery via the lab plan permission container.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void delete(String resourceGroupName, String labPlanName, Context context);
+
+    /**
+     * Saves an image from a lab VM to the attached shared image gallery.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginSaveImage(String resourceGroupName, String labPlanName, SaveImageBody body);
+
+    /**
+     * Saves an image from a lab VM to the attached shared image gallery.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginSaveImage(
+        String resourceGroupName, String labPlanName, SaveImageBody body, Context context);
+
+    /**
+     * Saves an image from a lab VM to the attached shared image gallery.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void saveImage(String resourceGroupName, String labPlanName, SaveImageBody body);
+
+    /**
+     * Saves an image from a lab VM to the attached shared image gallery.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labPlanName The name of the lab plan that uniquely identifies it within containing resource group. Used in
+     *     resource URIs and in UI.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void saveImage(String resourceGroupName, String labPlanName, SaveImageBody body, Context context);
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ManagedLabsClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabServicesClient.java
similarity index 57%
rename from sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ManagedLabsClient.java
rename to sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabServicesClient.java
index c79ae9f6d3a5..2e975aa8468e 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ManagedLabsClient.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabServicesClient.java
@@ -7,10 +7,10 @@
 import com.azure.core.http.HttpPipeline;
 import java.time.Duration;
 
-/** The interface for ManagedLabsClient class. */
-public interface ManagedLabsClient {
+/** The interface for LabServicesClient class. */
+public interface LabServicesClient {
     /**
-     * Gets The subscription ID.
+     * Gets The ID of the target subscription.
      *
      * @return the subscriptionId value.
      */
@@ -45,25 +45,18 @@ public interface ManagedLabsClient {
     Duration getDefaultPollInterval();
 
     /**
-     * Gets the ProviderOperationsClient object to access its operations.
+     * Gets the ImagesClient object to access its operations.
      *
-     * @return the ProviderOperationsClient object.
+     * @return the ImagesClient object.
      */
-    ProviderOperationsClient getProviderOperations();
+    ImagesClient getImages();
 
     /**
-     * Gets the GlobalUsersClient object to access its operations.
+     * Gets the LabPlansClient object to access its operations.
      *
-     * @return the GlobalUsersClient object.
+     * @return the LabPlansClient object.
      */
-    GlobalUsersClient getGlobalUsers();
-
-    /**
-     * Gets the LabAccountsClient object to access its operations.
-     *
-     * @return the LabAccountsClient object.
-     */
-    LabAccountsClient getLabAccounts();
+    LabPlansClient getLabPlans();
 
     /**
      * Gets the OperationsClient object to access its operations.
@@ -72,13 +65,6 @@ public interface ManagedLabsClient {
      */
     OperationsClient getOperations();
 
-    /**
-     * Gets the GalleryImagesClient object to access its operations.
-     *
-     * @return the GalleryImagesClient object.
-     */
-    GalleryImagesClient getGalleryImages();
-
     /**
      * Gets the LabsClient object to access its operations.
      *
@@ -87,18 +73,18 @@ public interface ManagedLabsClient {
     LabsClient getLabs();
 
     /**
-     * Gets the EnvironmentSettingsClient object to access its operations.
+     * Gets the OperationResultsClient object to access its operations.
      *
-     * @return the EnvironmentSettingsClient object.
+     * @return the OperationResultsClient object.
      */
-    EnvironmentSettingsClient getEnvironmentSettings();
+    OperationResultsClient getOperationResults();
 
     /**
-     * Gets the EnvironmentsClient object to access its operations.
+     * Gets the SchedulesClient object to access its operations.
      *
-     * @return the EnvironmentsClient object.
+     * @return the SchedulesClient object.
      */
-    EnvironmentsClient getEnvironments();
+    SchedulesClient getSchedules();
 
     /**
      * Gets the UsersClient object to access its operations.
@@ -106,4 +92,25 @@ public interface ManagedLabsClient {
      * @return the UsersClient object.
      */
     UsersClient getUsers();
+
+    /**
+     * Gets the VirtualMachinesClient object to access its operations.
+     *
+     * @return the VirtualMachinesClient object.
+     */
+    VirtualMachinesClient getVirtualMachines();
+
+    /**
+     * Gets the UsagesClient object to access its operations.
+     *
+     * @return the UsagesClient object.
+     */
+    UsagesClient getUsages();
+
+    /**
+     * Gets the SkusClient object to access its operations.
+     *
+     * @return the SkusClient object.
+     */
+    SkusClient getSkus();
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabsClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabsClient.java
index 05fae4c04f04..968cab9d7867 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabsClient.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/LabsClient.java
@@ -12,262 +12,379 @@
 import com.azure.core.util.Context;
 import com.azure.core.util.polling.SyncPoller;
 import com.azure.resourcemanager.labservices.fluent.models.LabInner;
-import com.azure.resourcemanager.labservices.models.AddUsersPayload;
-import com.azure.resourcemanager.labservices.models.LabFragment;
+import com.azure.resourcemanager.labservices.models.LabUpdate;
 
 /** An instance of this class provides access to all the operations defined in LabsClient. */
 public interface LabsClient {
     /**
-     * List labs in a given lab account.
+     * Returns a list of all labs for a subscription.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
+     * @return paged list of labs.
      */
     @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(String resourceGroupName, String labAccountName);
+    PagedIterable list();
 
     /**
-     * List labs in a given lab account.
+     * Returns a list of all labs for a subscription.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param expand Specify the $expand query. Example: 'properties($select=maxUsersInLab)'.
      * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
+     * @return paged list of labs.
      */
     @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(
-        String resourceGroupName,
-        String labAccountName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby,
-        Context context);
+    PagedIterable list(String filter, Context context);
 
     /**
-     * Get lab.
+     * Returns a list of all labs in a resource group.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return lab.
+     * @return paged list of labs.
      */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    LabInner get(String resourceGroupName, String labAccountName, String labName);
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByResourceGroup(String resourceGroupName);
 
     /**
-     * Get lab.
+     * Returns a list of all labs in a resource group.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param expand Specify the $expand query. Example: 'properties($select=maxUsersInLab)'.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return lab.
+     * @return paged list of labs.
      */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getWithResponse(
-        String resourceGroupName, String labAccountName, String labName, String expand, Context context);
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByResourceGroup(String resourceGroupName, Context context);
 
     /**
-     * Create or replace an existing Lab.
+     * Returns the properties of a lab resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param lab Represents a lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents a lab.
+     * @return the lab resource.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    LabInner createOrUpdate(String resourceGroupName, String labAccountName, String labName, LabInner lab);
+    LabInner getByResourceGroup(String resourceGroupName, String labName);
 
     /**
-     * Create or replace an existing Lab.
+     * Returns the properties of a lab resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param lab Represents a lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents a lab.
+     * @return the lab resource.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    Response createOrUpdateWithResponse(
-        String resourceGroupName, String labAccountName, String labName, LabInner lab, Context context);
+    Response getByResourceGroupWithResponse(String resourceGroupName, String labName, Context context);
 
     /**
-     * Delete lab. This operation can take a while to complete.
+     * Operation to create or update a lab resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param body The request body.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
+     * @return the lab resource.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, LabInner> beginCreateOrUpdate(
+        String resourceGroupName, String labName, LabInner body);
+
+    /**
+     * Operation to create or update a lab resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the lab resource.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, LabInner> beginCreateOrUpdate(
+        String resourceGroupName, String labName, LabInner body, Context context);
+
+    /**
+     * Operation to create or update a lab resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the lab resource.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(String resourceGroupName, String labAccountName, String labName);
+    LabInner createOrUpdate(String resourceGroupName, String labName, LabInner body);
 
     /**
-     * Delete lab. This operation can take a while to complete.
+     * Operation to create or update a lab resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param body The request body.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
+     * @return the lab resource.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(
-        String resourceGroupName, String labAccountName, String labName, Context context);
+    LabInner createOrUpdate(String resourceGroupName, String labName, LabInner body, Context context);
 
     /**
-     * Delete lab. This operation can take a while to complete.
+     * Operation to update a lab resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param body The request body.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the lab resource.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, LabInner> beginUpdate(String resourceGroupName, String labName, LabUpdate body);
+
+    /**
+     * Operation to update a lab resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the lab resource.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, LabInner> beginUpdate(
+        String resourceGroupName, String labName, LabUpdate body, Context context);
+
+    /**
+     * Operation to update a lab resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the lab resource.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(String resourceGroupName, String labAccountName, String labName);
+    LabInner update(String resourceGroupName, String labName, LabUpdate body);
 
     /**
-     * Delete lab. This operation can take a while to complete.
+     * Operation to update a lab resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param body The request body.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the lab resource.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(String resourceGroupName, String labAccountName, String labName, Context context);
+    LabInner update(String resourceGroupName, String labName, LabUpdate body, Context context);
+
+    /**
+     * Operation to delete a lab resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginDelete(String resourceGroupName, String labName);
 
     /**
-     * Modify properties of labs.
+     * Operation to delete a lab resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param lab Represents a lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginDelete(String resourceGroupName, String labName, Context context);
+
+    /**
+     * Operation to delete a lab resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents a lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    LabInner update(String resourceGroupName, String labAccountName, String labName, LabFragment lab);
+    void delete(String resourceGroupName, String labName);
 
     /**
-     * Modify properties of labs.
+     * Operation to delete a lab resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param lab Represents a lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents a lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    Response updateWithResponse(
-        String resourceGroupName, String labAccountName, String labName, LabFragment lab, Context context);
+    void delete(String resourceGroupName, String labName, Context context);
+
+    /**
+     * Publish or re-publish a lab. This will create or update all lab resources, such as virtual machines.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginPublish(String resourceGroupName, String labName);
+
+    /**
+     * Publish or re-publish a lab. This will create or update all lab resources, such as virtual machines.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginPublish(String resourceGroupName, String labName, Context context);
 
     /**
-     * Add users to a lab.
+     * Publish or re-publish a lab. This will create or update all lab resources, such as virtual machines.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param addUsersPayload Payload for Add Users operation on a Lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    void addUsers(String resourceGroupName, String labAccountName, String labName, AddUsersPayload addUsersPayload);
+    void publish(String resourceGroupName, String labName);
 
     /**
-     * Add users to a lab.
+     * Publish or re-publish a lab. This will create or update all lab resources, such as virtual machines.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param addUsersPayload Payload for Add Users operation on a Lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    Response addUsersWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        AddUsersPayload addUsersPayload,
-        Context context);
+    void publish(String resourceGroupName, String labName, Context context);
+
+    /**
+     * Action used to manually kick off an AAD group sync job.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginSyncGroup(String resourceGroupName, String labName);
+
+    /**
+     * Action used to manually kick off an AAD group sync job.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginSyncGroup(String resourceGroupName, String labName, Context context);
 
     /**
-     * Register to managed lab.
+     * Action used to manually kick off an AAD group sync job.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    void register(String resourceGroupName, String labAccountName, String labName);
+    void syncGroup(String resourceGroupName, String labName);
 
     /**
-     * Register to managed lab.
+     * Action used to manually kick off an AAD group sync job.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    Response registerWithResponse(
-        String resourceGroupName, String labAccountName, String labName, Context context);
+    void syncGroup(String resourceGroupName, String labName, Context context);
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/OperationResultsClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/OperationResultsClient.java
new file mode 100644
index 000000000000..1f7fd1d36a1e
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/OperationResultsClient.java
@@ -0,0 +1,39 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.Response;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.fluent.models.OperationResultInner;
+
+/** An instance of this class provides access to all the operations defined in OperationResultsClient. */
+public interface OperationResultsClient {
+    /**
+     * Returns an azure operation result.
+     *
+     * @param operationResultId The operation result ID / name.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a long running operation result.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    OperationResultInner get(String operationResultId);
+
+    /**
+     * Returns an azure operation result.
+     *
+     * @param operationResultId The operation result ID / name.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a long running operation result.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response getWithResponse(String operationResultId, Context context);
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/OperationsClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/OperationsClient.java
index 4a4b634df9b5..e37b1ec85596 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/OperationsClient.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/OperationsClient.java
@@ -6,36 +6,31 @@
 
 import com.azure.core.annotation.ReturnType;
 import com.azure.core.annotation.ServiceMethod;
-import com.azure.core.http.rest.Response;
+import com.azure.core.http.rest.PagedIterable;
 import com.azure.core.util.Context;
-import com.azure.resourcemanager.labservices.fluent.models.OperationResultInner;
+import com.azure.resourcemanager.labservices.fluent.models.OperationInner;
 
 /** An instance of this class provides access to all the operations defined in OperationsClient. */
 public interface OperationsClient {
     /**
-     * Get operation.
+     * Returns a list of all operations.
      *
-     * @param locationName The name of the location.
-     * @param operationName The name of the operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return operation.
+     * @return a list of REST API operations supported by an Azure Resource Provider.
      */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    OperationResultInner get(String locationName, String operationName);
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list();
 
     /**
-     * Get operation.
+     * Returns a list of all operations.
      *
-     * @param locationName The name of the location.
-     * @param operationName The name of the operation.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return operation.
+     * @return a list of REST API operations supported by an Azure Resource Provider.
      */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getWithResponse(String locationName, String operationName, Context context);
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable list(Context context);
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/SchedulesClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/SchedulesClient.java
new file mode 100644
index 000000000000..6186ca78eccc
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/SchedulesClient.java
@@ -0,0 +1,219 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.labservices.fluent.models.ScheduleInner;
+import com.azure.resourcemanager.labservices.models.ScheduleUpdate;
+
+/** An instance of this class provides access to all the operations defined in SchedulesClient. */
+public interface SchedulesClient {
+    /**
+     * Returns a list of all schedules for a lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return paged list of schedules.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByLab(String resourceGroupName, String labName);
+
+    /**
+     * Returns a list of all schedules for a lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param filter The filter to apply to the operation.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return paged list of schedules.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByLab(String resourceGroupName, String labName, String filter, Context context);
+
+    /**
+     * Returns the properties of a lab Schedule.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return schedule for automatically turning virtual machines in a lab on and off at specified times.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ScheduleInner get(String resourceGroupName, String labName, String scheduleName);
+
+    /**
+     * Returns the properties of a lab Schedule.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return schedule for automatically turning virtual machines in a lab on and off at specified times.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response getWithResponse(
+        String resourceGroupName, String labName, String scheduleName, Context context);
+
+    /**
+     * Operation to create or update a lab schedule.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return schedule for automatically turning virtual machines in a lab on and off at specified times.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ScheduleInner createOrUpdate(String resourceGroupName, String labName, String scheduleName, ScheduleInner body);
+
+    /**
+     * Operation to create or update a lab schedule.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return schedule for automatically turning virtual machines in a lab on and off at specified times.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response createOrUpdateWithResponse(
+        String resourceGroupName, String labName, String scheduleName, ScheduleInner body, Context context);
+
+    /**
+     * Operation to update a lab schedule.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return schedule for automatically turning virtual machines in a lab on and off at specified times.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    ScheduleInner update(String resourceGroupName, String labName, String scheduleName, ScheduleUpdate body);
+
+    /**
+     * Operation to update a lab schedule.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return schedule for automatically turning virtual machines in a lab on and off at specified times.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response updateWithResponse(
+        String resourceGroupName, String labName, String scheduleName, ScheduleUpdate body, Context context);
+
+    /**
+     * Operation to delete a schedule resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginDelete(String resourceGroupName, String labName, String scheduleName);
+
+    /**
+     * Operation to delete a schedule resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginDelete(
+        String resourceGroupName, String labName, String scheduleName, Context context);
+
+    /**
+     * Operation to delete a schedule resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void delete(String resourceGroupName, String labName, String scheduleName);
+
+    /**
+     * Operation to delete a schedule resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param scheduleName The name of the schedule that uniquely identifies it within containing lab. Used in resource
+     *     URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void delete(String resourceGroupName, String labName, String scheduleName, Context context);
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ProviderOperationsClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/SkusClient.java
similarity index 68%
rename from sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ProviderOperationsClient.java
rename to sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/SkusClient.java
index bada5d64c797..4d9138c2d824 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/ProviderOperationsClient.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/SkusClient.java
@@ -8,29 +8,30 @@
 import com.azure.core.annotation.ServiceMethod;
 import com.azure.core.http.rest.PagedIterable;
 import com.azure.core.util.Context;
-import com.azure.resourcemanager.labservices.fluent.models.OperationMetadataInner;
+import com.azure.resourcemanager.labservices.fluent.models.LabServicesSkuInner;
 
-/** An instance of this class provides access to all the operations defined in ProviderOperationsClient. */
-public interface ProviderOperationsClient {
+/** An instance of this class provides access to all the operations defined in SkusClient. */
+public interface SkusClient {
     /**
-     * Result of the request to list REST API operations.
+     * Returns a list of all the Azure Lab Services resource SKUs.
      *
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return result of the request to list REST API operations.
+     * @return paged list of lab services skus.
      */
     @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list();
+    PagedIterable list();
 
     /**
-     * Result of the request to list REST API operations.
+     * Returns a list of all the Azure Lab Services resource SKUs.
      *
+     * @param filter The filter to apply to the operation.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return result of the request to list REST API operations.
+     * @return paged list of lab services skus.
      */
     @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(Context context);
+    PagedIterable list(String filter, Context context);
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/UsagesClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/UsagesClient.java
new file mode 100644
index 000000000000..ffd2c7787ebb
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/UsagesClient.java
@@ -0,0 +1,40 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.util.Context;
+import com.azure.resourcemanager.labservices.fluent.models.UsageInner;
+
+/** An instance of this class provides access to all the operations defined in UsagesClient. */
+public interface UsagesClient {
+    /**
+     * Returns list of usage per SKU family for the specified subscription in the specified region.
+     *
+     * @param location The location name.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return list of Core Usages.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByLocation(String location);
+
+    /**
+     * Returns list of usage per SKU family for the specified subscription in the specified region.
+     *
+     * @param location The location name.
+     * @param filter The filter to apply to the operation.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return list of Core Usages.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByLocation(String location, String filter, Context context);
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/UsersClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/UsersClient.java
index 67fb01d644a3..0cf7fa14d415 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/UsersClient.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/UsersClient.java
@@ -12,228 +12,333 @@
 import com.azure.core.util.Context;
 import com.azure.core.util.polling.SyncPoller;
 import com.azure.resourcemanager.labservices.fluent.models.UserInner;
-import com.azure.resourcemanager.labservices.models.UserFragment;
+import com.azure.resourcemanager.labservices.models.InviteBody;
+import com.azure.resourcemanager.labservices.models.UserUpdate;
 
 /** An instance of this class provides access to all the operations defined in UsersClient. */
 public interface UsersClient {
     /**
-     * List users in a given lab.
+     * Returns a list of all users for a lab.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
+     * @return paged list of users.
      */
     @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(String resourceGroupName, String labAccountName, String labName);
+    PagedIterable listByLab(String resourceGroupName, String labName);
 
     /**
-     * List users in a given lab.
+     * Returns a list of all users for a lab.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param expand Specify the $expand query. Example: 'properties($select=email)'.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
      * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
+     * @return paged list of users.
      */
     @ServiceMethod(returns = ReturnType.COLLECTION)
-    PagedIterable list(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby,
-        Context context);
+    PagedIterable listByLab(String resourceGroupName, String labName, String filter, Context context);
 
     /**
-     * Get user.
+     * Returns the properties of a lab user.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return user.
+     * @return user of a lab that can register for and use virtual machines within the lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    UserInner get(String resourceGroupName, String labAccountName, String labName, String username);
+    UserInner get(String resourceGroupName, String labName, String username);
 
     /**
-     * Get user.
+     * Returns the properties of a lab user.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
-     * @param expand Specify the $expand query. Example: 'properties($select=email)'.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return user.
+     * @return user of a lab that can register for and use virtual machines within the lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    Response getWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String username,
-        String expand,
-        Context context);
+    Response getWithResponse(String resourceGroupName, String labName, String username, Context context);
 
     /**
-     * Create or replace an existing User.
+     * Operation to create or update a lab user.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
-     * @param user The User registered to a lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the User registered to a lab.
+     * @return user of a lab that can register for and use virtual machines within the lab.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, UserInner> beginCreateOrUpdate(
+        String resourceGroupName, String labName, String username, UserInner body);
+
+    /**
+     * Operation to create or update a lab user.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return user of a lab that can register for and use virtual machines within the lab.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, UserInner> beginCreateOrUpdate(
+        String resourceGroupName, String labName, String username, UserInner body, Context context);
+
+    /**
+     * Operation to create or update a lab user.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return user of a lab that can register for and use virtual machines within the lab.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    UserInner createOrUpdate(String resourceGroupName, String labName, String username, UserInner body);
+
+    /**
+     * Operation to create or update a lab user.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return user of a lab that can register for and use virtual machines within the lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     UserInner createOrUpdate(
-        String resourceGroupName, String labAccountName, String labName, String username, UserInner user);
+        String resourceGroupName, String labName, String username, UserInner body, Context context);
 
     /**
-     * Create or replace an existing User.
+     * Operation to update a lab user.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
-     * @param user The User registered to a lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return user of a lab that can register for and use virtual machines within the lab.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, UserInner> beginUpdate(
+        String resourceGroupName, String labName, String username, UserUpdate body);
+
+    /**
+     * Operation to update a lab user.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the User registered to a lab.
+     * @return user of a lab that can register for and use virtual machines within the lab.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, UserInner> beginUpdate(
+        String resourceGroupName, String labName, String username, UserUpdate body, Context context);
+
+    /**
+     * Operation to update a lab user.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return user of a lab that can register for and use virtual machines within the lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    Response createOrUpdateWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String username,
-        UserInner user,
-        Context context);
+    UserInner update(String resourceGroupName, String labName, String username, UserUpdate body);
 
     /**
-     * Delete user. This operation can take a while to complete.
+     * Operation to update a lab user.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
+     * @return user of a lab that can register for and use virtual machines within the lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    SyncPoller, Void> beginDelete(
-        String resourceGroupName, String labAccountName, String labName, String username);
+    UserInner update(String resourceGroupName, String labName, String username, UserUpdate body, Context context);
 
     /**
-     * Delete user. This operation can take a while to complete.
+     * Operation to delete a user resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginDelete(String resourceGroupName, String labName, String username);
+
+    /**
+     * Operation to delete a user resource.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
      * @return the completion.
      */
-    @ServiceMethod(returns = ReturnType.SINGLE)
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
     SyncPoller, Void> beginDelete(
-        String resourceGroupName, String labAccountName, String labName, String username, Context context);
+        String resourceGroupName, String labName, String username, Context context);
 
     /**
-     * Delete user. This operation can take a while to complete.
+     * Operation to delete a user resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(String resourceGroupName, String labAccountName, String labName, String username);
+    void delete(String resourceGroupName, String labName, String username);
 
     /**
-     * Delete user. This operation can take a while to complete.
+     * Operation to delete a user resource.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    void delete(String resourceGroupName, String labAccountName, String labName, String username, Context context);
+    void delete(String resourceGroupName, String labName, String username, Context context);
+
+    /**
+     * Operation to invite a user to a lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginInvite(
+        String resourceGroupName, String labName, String username, InviteBody body);
+
+    /**
+     * Operation to invite a user to a lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginInvite(
+        String resourceGroupName, String labName, String username, InviteBody body, Context context);
 
     /**
-     * Modify properties of users.
+     * Operation to invite a user to a lab.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
-     * @param user The User registered to a lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the User registered to a lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    UserInner update(
-        String resourceGroupName, String labAccountName, String labName, String username, UserFragment user);
+    void invite(String resourceGroupName, String labName, String username, InviteBody body);
 
     /**
-     * Modify properties of users.
+     * Operation to invite a user to a lab.
      *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param username The name of the user.
-     * @param user The User registered to a lab.
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param username The name of the user that uniquely identifies it within containing lab. Used in resource URIs.
+     * @param body The request body.
      * @param context The context to associate with this operation.
      * @throws IllegalArgumentException thrown if parameters fail the validation.
      * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
      * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the User registered to a lab.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    Response updateWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String username,
-        UserFragment user,
-        Context context);
+    void invite(String resourceGroupName, String labName, String username, InviteBody body, Context context);
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/VirtualMachinesClient.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/VirtualMachinesClient.java
new file mode 100644
index 000000000000..ebd81324ecbc
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/VirtualMachinesClient.java
@@ -0,0 +1,420 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent;
+
+import com.azure.core.annotation.ReturnType;
+import com.azure.core.annotation.ServiceMethod;
+import com.azure.core.http.rest.PagedIterable;
+import com.azure.core.http.rest.Response;
+import com.azure.core.management.polling.PollResult;
+import com.azure.core.util.Context;
+import com.azure.core.util.polling.SyncPoller;
+import com.azure.resourcemanager.labservices.fluent.models.VirtualMachineInner;
+import com.azure.resourcemanager.labservices.models.ResetPasswordBody;
+
+/** An instance of this class provides access to all the operations defined in VirtualMachinesClient. */
+public interface VirtualMachinesClient {
+    /**
+     * Returns a list of all virtual machines for a lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return paged list of lab services virtual machines.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByLab(String resourceGroupName, String labName);
+
+    /**
+     * Returns a list of all virtual machines for a lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param filter The filter to apply to the operation.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return paged list of lab services virtual machines.
+     */
+    @ServiceMethod(returns = ReturnType.COLLECTION)
+    PagedIterable listByLab(
+        String resourceGroupName, String labName, String filter, Context context);
+
+    /**
+     * Returns the properties for a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a lab virtual machine resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    VirtualMachineInner get(String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Returns the properties for a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return a lab virtual machine resource.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    Response getWithResponse(
+        String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Action to start a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginStart(String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Action to start a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginStart(
+        String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Action to start a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void start(String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Action to start a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void start(String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Action to stop a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginStop(String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Action to stop a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginStop(
+        String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Action to stop a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void stop(String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Action to stop a lab virtual machine.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void stop(String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Re-image a lab virtual machine. The virtual machine will be deleted and recreated using the latest published
+     * snapshot of the reference environment of the lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginReimage(
+        String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Re-image a lab virtual machine. The virtual machine will be deleted and recreated using the latest published
+     * snapshot of the reference environment of the lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginReimage(
+        String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Re-image a lab virtual machine. The virtual machine will be deleted and recreated using the latest published
+     * snapshot of the reference environment of the lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void reimage(String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Re-image a lab virtual machine. The virtual machine will be deleted and recreated using the latest published
+     * snapshot of the reference environment of the lab.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void reimage(String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Action to redeploy a lab virtual machine to a different compute node. For troubleshooting connectivity.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginRedeploy(
+        String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Action to redeploy a lab virtual machine to a different compute node. For troubleshooting connectivity.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginRedeploy(
+        String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Action to redeploy a lab virtual machine to a different compute node. For troubleshooting connectivity.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void redeploy(String resourceGroupName, String labName, String virtualMachineName);
+
+    /**
+     * Action to redeploy a lab virtual machine to a different compute node. For troubleshooting connectivity.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void redeploy(String resourceGroupName, String labName, String virtualMachineName, Context context);
+
+    /**
+     * Resets a lab virtual machine password.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginResetPassword(
+        String resourceGroupName, String labName, String virtualMachineName, ResetPasswordBody body);
+
+    /**
+     * Resets a lab virtual machine password.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     * @return the completion.
+     */
+    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
+    SyncPoller, Void> beginResetPassword(
+        String resourceGroupName, String labName, String virtualMachineName, ResetPasswordBody body, Context context);
+
+    /**
+     * Resets a lab virtual machine password.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param body The request body.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void resetPassword(String resourceGroupName, String labName, String virtualMachineName, ResetPasswordBody body);
+
+    /**
+     * Resets a lab virtual machine password.
+     *
+     * @param resourceGroupName The name of the resource group. The name is case insensitive.
+     * @param labName The name of the lab that uniquely identifies it within containing lab account. Used in resource
+     *     URIs.
+     * @param virtualMachineName The ID of the virtual machine that uniquely identifies it within the containing lab.
+     *     Used in resource URIs.
+     * @param body The request body.
+     * @param context The context to associate with this operation.
+     * @throws IllegalArgumentException thrown if parameters fail the validation.
+     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
+     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
+     */
+    @ServiceMethod(returns = ReturnType.SINGLE)
+    void resetPassword(
+        String resourceGroupName, String labName, String virtualMachineName, ResetPasswordBody body, Context context);
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/EnvironmentInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/EnvironmentInner.java
deleted file mode 100644
index dc8c63cebbc0..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/EnvironmentInner.java
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
-import com.azure.core.management.Resource;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.LatestOperationResult;
-import com.azure.resourcemanager.labservices.models.NetworkInterface;
-import com.azure.resourcemanager.labservices.models.ResourceSet;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.time.Duration;
-import java.time.OffsetDateTime;
-import java.util.Map;
-
-/** Represents an environment instance. */
-@JsonFlatten
-@Fluent
-public class EnvironmentInner extends Resource {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(EnvironmentInner.class);
-
-    /*
-     * The set of a VM and the setting id it was created for
-     */
-    @JsonProperty(value = "properties.resourceSets")
-    private ResourceSet resourceSets;
-
-    /*
-     * The AAD object Id of the user who has claimed the environment
-     */
-    @JsonProperty(value = "properties.claimedByUserObjectId", access = JsonProperty.Access.WRITE_ONLY)
-    private String claimedByUserObjectId;
-
-    /*
-     * The user principal Id of the user who has claimed the environment
-     */
-    @JsonProperty(value = "properties.claimedByUserPrincipalId", access = JsonProperty.Access.WRITE_ONLY)
-    private String claimedByUserPrincipalId;
-
-    /*
-     * The name or email address of the user who has claimed the environment
-     */
-    @JsonProperty(value = "properties.claimedByUserName", access = JsonProperty.Access.WRITE_ONLY)
-    private String claimedByUsername;
-
-    /*
-     * Is the environment claimed or not
-     */
-    @JsonProperty(value = "properties.isClaimed", access = JsonProperty.Access.WRITE_ONLY)
-    private Boolean isClaimed;
-
-    /*
-     * Last known power state of the environment
-     */
-    @JsonProperty(value = "properties.lastKnownPowerState", access = JsonProperty.Access.WRITE_ONLY)
-    private String lastKnownPowerState;
-
-    /*
-     * Network details of the environment
-     */
-    @JsonProperty(value = "properties.networkInterface", access = JsonProperty.Access.WRITE_ONLY)
-    private NetworkInterface networkInterface;
-
-    /*
-     * How long the environment has been used by a lab user
-     */
-    @JsonProperty(value = "properties.totalUsage", access = JsonProperty.Access.WRITE_ONLY)
-    private Duration totalUsage;
-
-    /*
-     * When the password was last reset on the environment.
-     */
-    @JsonProperty(value = "properties.passwordLastReset", access = JsonProperty.Access.WRITE_ONLY)
-    private OffsetDateTime passwordLastReset;
-
-    /*
-     * The provisioning status of the resource.
-     */
-    @JsonProperty(value = "properties.provisioningState")
-    private String provisioningState;
-
-    /*
-     * The unique immutable identifier of a resource (Guid).
-     */
-    @JsonProperty(value = "properties.uniqueIdentifier")
-    private String uniqueIdentifier;
-
-    /*
-     * The details of the latest operation. ex: status, error
-     */
-    @JsonProperty(value = "properties.latestOperationResult", access = JsonProperty.Access.WRITE_ONLY)
-    private LatestOperationResult latestOperationResult;
-
-    /**
-     * Get the resourceSets property: The set of a VM and the setting id it was created for.
-     *
-     * @return the resourceSets value.
-     */
-    public ResourceSet resourceSets() {
-        return this.resourceSets;
-    }
-
-    /**
-     * Set the resourceSets property: The set of a VM and the setting id it was created for.
-     *
-     * @param resourceSets the resourceSets value to set.
-     * @return the EnvironmentInner object itself.
-     */
-    public EnvironmentInner withResourceSets(ResourceSet resourceSets) {
-        this.resourceSets = resourceSets;
-        return this;
-    }
-
-    /**
-     * Get the claimedByUserObjectId property: The AAD object Id of the user who has claimed the environment.
-     *
-     * @return the claimedByUserObjectId value.
-     */
-    public String claimedByUserObjectId() {
-        return this.claimedByUserObjectId;
-    }
-
-    /**
-     * Get the claimedByUserPrincipalId property: The user principal Id of the user who has claimed the environment.
-     *
-     * @return the claimedByUserPrincipalId value.
-     */
-    public String claimedByUserPrincipalId() {
-        return this.claimedByUserPrincipalId;
-    }
-
-    /**
-     * Get the claimedByUsername property: The name or email address of the user who has claimed the environment.
-     *
-     * @return the claimedByUsername value.
-     */
-    public String claimedByUsername() {
-        return this.claimedByUsername;
-    }
-
-    /**
-     * Get the isClaimed property: Is the environment claimed or not.
-     *
-     * @return the isClaimed value.
-     */
-    public Boolean isClaimed() {
-        return this.isClaimed;
-    }
-
-    /**
-     * Get the lastKnownPowerState property: Last known power state of the environment.
-     *
-     * @return the lastKnownPowerState value.
-     */
-    public String lastKnownPowerState() {
-        return this.lastKnownPowerState;
-    }
-
-    /**
-     * Get the networkInterface property: Network details of the environment.
-     *
-     * @return the networkInterface value.
-     */
-    public NetworkInterface networkInterface() {
-        return this.networkInterface;
-    }
-
-    /**
-     * Get the totalUsage property: How long the environment has been used by a lab user.
-     *
-     * @return the totalUsage value.
-     */
-    public Duration totalUsage() {
-        return this.totalUsage;
-    }
-
-    /**
-     * Get the passwordLastReset property: When the password was last reset on the environment.
-     *
-     * @return the passwordLastReset value.
-     */
-    public OffsetDateTime passwordLastReset() {
-        return this.passwordLastReset;
-    }
-
-    /**
-     * Get the provisioningState property: The provisioning status of the resource.
-     *
-     * @return the provisioningState value.
-     */
-    public String provisioningState() {
-        return this.provisioningState;
-    }
-
-    /**
-     * Set the provisioningState property: The provisioning status of the resource.
-     *
-     * @param provisioningState the provisioningState value to set.
-     * @return the EnvironmentInner object itself.
-     */
-    public EnvironmentInner withProvisioningState(String provisioningState) {
-        this.provisioningState = provisioningState;
-        return this;
-    }
-
-    /**
-     * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
-     *
-     * @return the uniqueIdentifier value.
-     */
-    public String uniqueIdentifier() {
-        return this.uniqueIdentifier;
-    }
-
-    /**
-     * Set the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
-     *
-     * @param uniqueIdentifier the uniqueIdentifier value to set.
-     * @return the EnvironmentInner object itself.
-     */
-    public EnvironmentInner withUniqueIdentifier(String uniqueIdentifier) {
-        this.uniqueIdentifier = uniqueIdentifier;
-        return this;
-    }
-
-    /**
-     * Get the latestOperationResult property: The details of the latest operation. ex: status, error.
-     *
-     * @return the latestOperationResult value.
-     */
-    public LatestOperationResult latestOperationResult() {
-        return this.latestOperationResult;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public EnvironmentInner withLocation(String location) {
-        super.withLocation(location);
-        return this;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public EnvironmentInner withTags(Map tags) {
-        super.withTags(tags);
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (resourceSets() != null) {
-            resourceSets().validate();
-        }
-        if (networkInterface() != null) {
-            networkInterface().validate();
-        }
-        if (latestOperationResult() != null) {
-            latestOperationResult().validate();
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/EnvironmentSettingInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/EnvironmentSettingInner.java
deleted file mode 100644
index 2e7b0db59a64..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/EnvironmentSettingInner.java
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
-import com.azure.core.management.Resource;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.ConfigurationState;
-import com.azure.resourcemanager.labservices.models.LatestOperationResult;
-import com.azure.resourcemanager.labservices.models.PublishingState;
-import com.azure.resourcemanager.labservices.models.ResourceSettings;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.time.OffsetDateTime;
-import java.util.Map;
-
-/** Represents settings of an environment, from which environment instances would be created. */
-@JsonFlatten
-@Fluent
-public class EnvironmentSettingInner extends Resource {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(EnvironmentSettingInner.class);
-
-    /*
-     * Describes the readiness of this environment setting
-     */
-    @JsonProperty(value = "properties.publishingState", access = JsonProperty.Access.WRITE_ONLY)
-    private PublishingState publishingState;
-
-    /*
-     * Describes the user's progress in configuring their environment setting
-     */
-    @JsonProperty(value = "properties.configurationState")
-    private ConfigurationState configurationState;
-
-    /*
-     * Describes the environment and its resource settings
-     */
-    @JsonProperty(value = "properties.description")
-    private String description;
-
-    /*
-     * Brief title describing the environment and its resource settings
-     */
-    @JsonProperty(value = "properties.title")
-    private String title;
-
-    /*
-     * The resource specific settings
-     */
-    @JsonProperty(value = "properties.resourceSettings")
-    private ResourceSettings resourceSettings;
-
-    /*
-     * Time when the template VM was last changed.
-     */
-    @JsonProperty(value = "properties.lastChanged", access = JsonProperty.Access.WRITE_ONLY)
-    private OffsetDateTime lastChanged;
-
-    /*
-     * Time when the template VM was last sent for publishing.
-     */
-    @JsonProperty(value = "properties.lastPublished", access = JsonProperty.Access.WRITE_ONLY)
-    private OffsetDateTime lastPublished;
-
-    /*
-     * The provisioning status of the resource.
-     */
-    @JsonProperty(value = "properties.provisioningState")
-    private String provisioningState;
-
-    /*
-     * The unique immutable identifier of a resource (Guid).
-     */
-    @JsonProperty(value = "properties.uniqueIdentifier")
-    private String uniqueIdentifier;
-
-    /*
-     * The details of the latest operation. ex: status, error
-     */
-    @JsonProperty(value = "properties.latestOperationResult", access = JsonProperty.Access.WRITE_ONLY)
-    private LatestOperationResult latestOperationResult;
-
-    /**
-     * Get the publishingState property: Describes the readiness of this environment setting.
-     *
-     * @return the publishingState value.
-     */
-    public PublishingState publishingState() {
-        return this.publishingState;
-    }
-
-    /**
-     * Get the configurationState property: Describes the user's progress in configuring their environment setting.
-     *
-     * @return the configurationState value.
-     */
-    public ConfigurationState configurationState() {
-        return this.configurationState;
-    }
-
-    /**
-     * Set the configurationState property: Describes the user's progress in configuring their environment setting.
-     *
-     * @param configurationState the configurationState value to set.
-     * @return the EnvironmentSettingInner object itself.
-     */
-    public EnvironmentSettingInner withConfigurationState(ConfigurationState configurationState) {
-        this.configurationState = configurationState;
-        return this;
-    }
-
-    /**
-     * Get the description property: Describes the environment and its resource settings.
-     *
-     * @return the description value.
-     */
-    public String description() {
-        return this.description;
-    }
-
-    /**
-     * Set the description property: Describes the environment and its resource settings.
-     *
-     * @param description the description value to set.
-     * @return the EnvironmentSettingInner object itself.
-     */
-    public EnvironmentSettingInner withDescription(String description) {
-        this.description = description;
-        return this;
-    }
-
-    /**
-     * Get the title property: Brief title describing the environment and its resource settings.
-     *
-     * @return the title value.
-     */
-    public String title() {
-        return this.title;
-    }
-
-    /**
-     * Set the title property: Brief title describing the environment and its resource settings.
-     *
-     * @param title the title value to set.
-     * @return the EnvironmentSettingInner object itself.
-     */
-    public EnvironmentSettingInner withTitle(String title) {
-        this.title = title;
-        return this;
-    }
-
-    /**
-     * Get the resourceSettings property: The resource specific settings.
-     *
-     * @return the resourceSettings value.
-     */
-    public ResourceSettings resourceSettings() {
-        return this.resourceSettings;
-    }
-
-    /**
-     * Set the resourceSettings property: The resource specific settings.
-     *
-     * @param resourceSettings the resourceSettings value to set.
-     * @return the EnvironmentSettingInner object itself.
-     */
-    public EnvironmentSettingInner withResourceSettings(ResourceSettings resourceSettings) {
-        this.resourceSettings = resourceSettings;
-        return this;
-    }
-
-    /**
-     * Get the lastChanged property: Time when the template VM was last changed.
-     *
-     * @return the lastChanged value.
-     */
-    public OffsetDateTime lastChanged() {
-        return this.lastChanged;
-    }
-
-    /**
-     * Get the lastPublished property: Time when the template VM was last sent for publishing.
-     *
-     * @return the lastPublished value.
-     */
-    public OffsetDateTime lastPublished() {
-        return this.lastPublished;
-    }
-
-    /**
-     * Get the provisioningState property: The provisioning status of the resource.
-     *
-     * @return the provisioningState value.
-     */
-    public String provisioningState() {
-        return this.provisioningState;
-    }
-
-    /**
-     * Set the provisioningState property: The provisioning status of the resource.
-     *
-     * @param provisioningState the provisioningState value to set.
-     * @return the EnvironmentSettingInner object itself.
-     */
-    public EnvironmentSettingInner withProvisioningState(String provisioningState) {
-        this.provisioningState = provisioningState;
-        return this;
-    }
-
-    /**
-     * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
-     *
-     * @return the uniqueIdentifier value.
-     */
-    public String uniqueIdentifier() {
-        return this.uniqueIdentifier;
-    }
-
-    /**
-     * Set the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
-     *
-     * @param uniqueIdentifier the uniqueIdentifier value to set.
-     * @return the EnvironmentSettingInner object itself.
-     */
-    public EnvironmentSettingInner withUniqueIdentifier(String uniqueIdentifier) {
-        this.uniqueIdentifier = uniqueIdentifier;
-        return this;
-    }
-
-    /**
-     * Get the latestOperationResult property: The details of the latest operation. ex: status, error.
-     *
-     * @return the latestOperationResult value.
-     */
-    public LatestOperationResult latestOperationResult() {
-        return this.latestOperationResult;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public EnvironmentSettingInner withLocation(String location) {
-        super.withLocation(location);
-        return this;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public EnvironmentSettingInner withTags(Map tags) {
-        super.withTags(tags);
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (resourceSettings() != null) {
-            resourceSettings().validate();
-        }
-        if (latestOperationResult() != null) {
-            latestOperationResult().validate();
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GalleryImageInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GalleryImageInner.java
deleted file mode 100644
index 2430b363c566..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GalleryImageInner.java
+++ /dev/null
@@ -1,286 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
-import com.azure.core.management.Resource;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.GalleryImageReference;
-import com.azure.resourcemanager.labservices.models.LatestOperationResult;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.time.OffsetDateTime;
-import java.util.Map;
-
-/** Represents an image from the Azure Marketplace. */
-@JsonFlatten
-@Fluent
-public class GalleryImageInner extends Resource {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(GalleryImageInner.class);
-
-    /*
-     * The author of the gallery image.
-     */
-    @JsonProperty(value = "properties.author", access = JsonProperty.Access.WRITE_ONLY)
-    private String author;
-
-    /*
-     * The creation date of the gallery image.
-     */
-    @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
-    private OffsetDateTime createdDate;
-
-    /*
-     * The description of the gallery image.
-     */
-    @JsonProperty(value = "properties.description", access = JsonProperty.Access.WRITE_ONLY)
-    private String description;
-
-    /*
-     * The image reference of the gallery image.
-     */
-    @JsonProperty(value = "properties.imageReference", access = JsonProperty.Access.WRITE_ONLY)
-    private GalleryImageReference imageReference;
-
-    /*
-     * The icon of the gallery image.
-     */
-    @JsonProperty(value = "properties.icon", access = JsonProperty.Access.WRITE_ONLY)
-    private String icon;
-
-    /*
-     * Indicates whether this gallery image is enabled.
-     */
-    @JsonProperty(value = "properties.isEnabled")
-    private Boolean isEnabled;
-
-    /*
-     * Indicates whether this gallery has been overridden for this lab account
-     */
-    @JsonProperty(value = "properties.isOverride")
-    private Boolean isOverride;
-
-    /*
-     * The third party plan that applies to this image
-     */
-    @JsonProperty(value = "properties.planId", access = JsonProperty.Access.WRITE_ONLY)
-    private String planId;
-
-    /*
-     * Indicates if the plan has been authorized for programmatic deployment.
-     */
-    @JsonProperty(value = "properties.isPlanAuthorized")
-    private Boolean isPlanAuthorized;
-
-    /*
-     * The provisioning status of the resource.
-     */
-    @JsonProperty(value = "properties.provisioningState")
-    private String provisioningState;
-
-    /*
-     * The unique immutable identifier of a resource (Guid).
-     */
-    @JsonProperty(value = "properties.uniqueIdentifier")
-    private String uniqueIdentifier;
-
-    /*
-     * The details of the latest operation. ex: status, error
-     */
-    @JsonProperty(value = "properties.latestOperationResult", access = JsonProperty.Access.WRITE_ONLY)
-    private LatestOperationResult latestOperationResult;
-
-    /**
-     * Get the author property: The author of the gallery image.
-     *
-     * @return the author value.
-     */
-    public String author() {
-        return this.author;
-    }
-
-    /**
-     * Get the createdDate property: The creation date of the gallery image.
-     *
-     * @return the createdDate value.
-     */
-    public OffsetDateTime createdDate() {
-        return this.createdDate;
-    }
-
-    /**
-     * Get the description property: The description of the gallery image.
-     *
-     * @return the description value.
-     */
-    public String description() {
-        return this.description;
-    }
-
-    /**
-     * Get the imageReference property: The image reference of the gallery image.
-     *
-     * @return the imageReference value.
-     */
-    public GalleryImageReference imageReference() {
-        return this.imageReference;
-    }
-
-    /**
-     * Get the icon property: The icon of the gallery image.
-     *
-     * @return the icon value.
-     */
-    public String icon() {
-        return this.icon;
-    }
-
-    /**
-     * Get the isEnabled property: Indicates whether this gallery image is enabled.
-     *
-     * @return the isEnabled value.
-     */
-    public Boolean isEnabled() {
-        return this.isEnabled;
-    }
-
-    /**
-     * Set the isEnabled property: Indicates whether this gallery image is enabled.
-     *
-     * @param isEnabled the isEnabled value to set.
-     * @return the GalleryImageInner object itself.
-     */
-    public GalleryImageInner withIsEnabled(Boolean isEnabled) {
-        this.isEnabled = isEnabled;
-        return this;
-    }
-
-    /**
-     * Get the isOverride property: Indicates whether this gallery has been overridden for this lab account.
-     *
-     * @return the isOverride value.
-     */
-    public Boolean isOverride() {
-        return this.isOverride;
-    }
-
-    /**
-     * Set the isOverride property: Indicates whether this gallery has been overridden for this lab account.
-     *
-     * @param isOverride the isOverride value to set.
-     * @return the GalleryImageInner object itself.
-     */
-    public GalleryImageInner withIsOverride(Boolean isOverride) {
-        this.isOverride = isOverride;
-        return this;
-    }
-
-    /**
-     * Get the planId property: The third party plan that applies to this image.
-     *
-     * @return the planId value.
-     */
-    public String planId() {
-        return this.planId;
-    }
-
-    /**
-     * Get the isPlanAuthorized property: Indicates if the plan has been authorized for programmatic deployment.
-     *
-     * @return the isPlanAuthorized value.
-     */
-    public Boolean isPlanAuthorized() {
-        return this.isPlanAuthorized;
-    }
-
-    /**
-     * Set the isPlanAuthorized property: Indicates if the plan has been authorized for programmatic deployment.
-     *
-     * @param isPlanAuthorized the isPlanAuthorized value to set.
-     * @return the GalleryImageInner object itself.
-     */
-    public GalleryImageInner withIsPlanAuthorized(Boolean isPlanAuthorized) {
-        this.isPlanAuthorized = isPlanAuthorized;
-        return this;
-    }
-
-    /**
-     * Get the provisioningState property: The provisioning status of the resource.
-     *
-     * @return the provisioningState value.
-     */
-    public String provisioningState() {
-        return this.provisioningState;
-    }
-
-    /**
-     * Set the provisioningState property: The provisioning status of the resource.
-     *
-     * @param provisioningState the provisioningState value to set.
-     * @return the GalleryImageInner object itself.
-     */
-    public GalleryImageInner withProvisioningState(String provisioningState) {
-        this.provisioningState = provisioningState;
-        return this;
-    }
-
-    /**
-     * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
-     *
-     * @return the uniqueIdentifier value.
-     */
-    public String uniqueIdentifier() {
-        return this.uniqueIdentifier;
-    }
-
-    /**
-     * Set the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
-     *
-     * @param uniqueIdentifier the uniqueIdentifier value to set.
-     * @return the GalleryImageInner object itself.
-     */
-    public GalleryImageInner withUniqueIdentifier(String uniqueIdentifier) {
-        this.uniqueIdentifier = uniqueIdentifier;
-        return this;
-    }
-
-    /**
-     * Get the latestOperationResult property: The details of the latest operation. ex: status, error.
-     *
-     * @return the latestOperationResult value.
-     */
-    public LatestOperationResult latestOperationResult() {
-        return this.latestOperationResult;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public GalleryImageInner withLocation(String location) {
-        super.withLocation(location);
-        return this;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public GalleryImageInner withTags(Map tags) {
-        super.withTags(tags);
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (imageReference() != null) {
-            imageReference().validate();
-        }
-        if (latestOperationResult() != null) {
-            latestOperationResult().validate();
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetEnvironmentResponseInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetEnvironmentResponseInner.java
deleted file mode 100644
index 28789ba5f085..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetEnvironmentResponseInner.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Immutable;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.EnvironmentDetails;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/** Represents the environments details. */
-@Immutable
-public final class GetEnvironmentResponseInner {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(GetEnvironmentResponseInner.class);
-
-    /*
-     * Details of the environment
-     */
-    @JsonProperty(value = "environment", access = JsonProperty.Access.WRITE_ONLY)
-    private EnvironmentDetails environment;
-
-    /**
-     * Get the environment property: Details of the environment.
-     *
-     * @return the environment value.
-     */
-    public EnvironmentDetails environment() {
-        return this.environment;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (environment() != null) {
-            environment().validate();
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetPersonalPreferencesResponseInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetPersonalPreferencesResponseInner.java
deleted file mode 100644
index b9fab2fc1405..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetPersonalPreferencesResponseInner.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.util.logging.ClientLogger;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.List;
-
-/** Represents the PersonalPreferences for the user. */
-@Fluent
-public final class GetPersonalPreferencesResponseInner {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(GetPersonalPreferencesResponseInner.class);
-
-    /*
-     * Id to be used by the cache orchestrator
-     */
-    @JsonProperty(value = "id")
-    private String id;
-
-    /*
-     * Array of favorite lab resource ids
-     */
-    @JsonProperty(value = "favoriteLabResourceIds")
-    private List favoriteLabResourceIds;
-
-    /**
-     * Get the id property: Id to be used by the cache orchestrator.
-     *
-     * @return the id value.
-     */
-    public String id() {
-        return this.id;
-    }
-
-    /**
-     * Set the id property: Id to be used by the cache orchestrator.
-     *
-     * @param id the id value to set.
-     * @return the GetPersonalPreferencesResponseInner object itself.
-     */
-    public GetPersonalPreferencesResponseInner withId(String id) {
-        this.id = id;
-        return this;
-    }
-
-    /**
-     * Get the favoriteLabResourceIds property: Array of favorite lab resource ids.
-     *
-     * @return the favoriteLabResourceIds value.
-     */
-    public List favoriteLabResourceIds() {
-        return this.favoriteLabResourceIds;
-    }
-
-    /**
-     * Set the favoriteLabResourceIds property: Array of favorite lab resource ids.
-     *
-     * @param favoriteLabResourceIds the favoriteLabResourceIds value to set.
-     * @return the GetPersonalPreferencesResponseInner object itself.
-     */
-    public GetPersonalPreferencesResponseInner withFavoriteLabResourceIds(List favoriteLabResourceIds) {
-        this.favoriteLabResourceIds = favoriteLabResourceIds;
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetRegionalAvailabilityResponseInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetRegionalAvailabilityResponseInner.java
deleted file mode 100644
index 2335fa78ff39..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/GetRegionalAvailabilityResponseInner.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.RegionalAvailability;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.List;
-
-/** The response model from the GetRegionalAvailability action. */
-@Fluent
-public final class GetRegionalAvailabilityResponseInner {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(GetRegionalAvailabilityResponseInner.class);
-
-    /*
-     * Availability information for different size categories per region
-     */
-    @JsonProperty(value = "regionalAvailability")
-    private List regionalAvailability;
-
-    /**
-     * Get the regionalAvailability property: Availability information for different size categories per region.
-     *
-     * @return the regionalAvailability value.
-     */
-    public List regionalAvailability() {
-        return this.regionalAvailability;
-    }
-
-    /**
-     * Set the regionalAvailability property: Availability information for different size categories per region.
-     *
-     * @param regionalAvailability the regionalAvailability value to set.
-     * @return the GetRegionalAvailabilityResponseInner object itself.
-     */
-    public GetRegionalAvailabilityResponseInner withRegionalAvailability(
-        List regionalAvailability) {
-        this.regionalAvailability = regionalAvailability;
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (regionalAvailability() != null) {
-            regionalAvailability().forEach(e -> e.validate());
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageInner.java
new file mode 100644
index 000000000000..163cd14ea210
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageInner.java
@@ -0,0 +1,240 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.management.SystemData;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.EnableState;
+import com.azure.resourcemanager.labservices.models.OsState;
+import com.azure.resourcemanager.labservices.models.OsType;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Lab services virtual machine image. */
+@Fluent
+public final class ImageInner extends ProxyResource {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(ImageInner.class);
+
+    /*
+     * Metadata pertaining to creation and last modification of the image.
+     */
+    @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+    private SystemData systemData;
+
+    /*
+     * Image resource properties
+     */
+    @JsonProperty(value = "properties", required = true)
+    private ImageProperties innerProperties = new ImageProperties();
+
+    /**
+     * Get the systemData property: Metadata pertaining to creation and last modification of the image.
+     *
+     * @return the systemData value.
+     */
+    public SystemData systemData() {
+        return this.systemData;
+    }
+
+    /**
+     * Get the innerProperties property: Image resource properties.
+     *
+     * @return the innerProperties value.
+     */
+    private ImageProperties innerProperties() {
+        return this.innerProperties;
+    }
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the image.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+    }
+
+    /**
+     * Get the displayName property: The image display name.
+     *
+     * @return the displayName value.
+     */
+    public String displayName() {
+        return this.innerProperties() == null ? null : this.innerProperties().displayName();
+    }
+
+    /**
+     * Get the description property: A description of the image.
+     *
+     * @return the description value.
+     */
+    public String description() {
+        return this.innerProperties() == null ? null : this.innerProperties().description();
+    }
+
+    /**
+     * Get the iconUrl property: URL of the image icon.
+     *
+     * @return the iconUrl value.
+     */
+    public String iconUrl() {
+        return this.innerProperties() == null ? null : this.innerProperties().iconUrl();
+    }
+
+    /**
+     * Get the author property: The image author.
+     *
+     * @return the author value.
+     */
+    public String author() {
+        return this.innerProperties() == null ? null : this.innerProperties().author();
+    }
+
+    /**
+     * Get the osType property: The OS Type of the image.
+     *
+     * @return the osType value.
+     */
+    public OsType osType() {
+        return this.innerProperties() == null ? null : this.innerProperties().osType();
+    }
+
+    /**
+     * Get the plan property: The ID of marketplace plan associated with the image (optional).
+     *
+     * @return the plan value.
+     */
+    public String plan() {
+        return this.innerProperties() == null ? null : this.innerProperties().plan();
+    }
+
+    /**
+     * Get the termsStatus property: The status of image terms of use (enabled = accepted, disabled = not accepted).
+     *
+     * @return the termsStatus value.
+     */
+    public EnableState termsStatus() {
+        return this.innerProperties() == null ? null : this.innerProperties().termsStatus();
+    }
+
+    /**
+     * Get the offer property: The ID of an offer associated with the image.
+     *
+     * @return the offer value.
+     */
+    public String offer() {
+        return this.innerProperties() == null ? null : this.innerProperties().offer();
+    }
+
+    /**
+     * Get the publisher property: The ID of the publisher of the image.
+     *
+     * @return the publisher value.
+     */
+    public String publisher() {
+        return this.innerProperties() == null ? null : this.innerProperties().publisher();
+    }
+
+    /**
+     * Get the sku property: The image SKU.
+     *
+     * @return the sku value.
+     */
+    public String sku() {
+        return this.innerProperties() == null ? null : this.innerProperties().sku();
+    }
+
+    /**
+     * Get the version property: The image version.
+     *
+     * @return the version value.
+     */
+    public String version() {
+        return this.innerProperties() == null ? null : this.innerProperties().version();
+    }
+
+    /**
+     * Get the sharedGalleryId property: The ID for the image in the shared gallery.
+     *
+     * @return the sharedGalleryId value.
+     */
+    public String sharedGalleryId() {
+        return this.innerProperties() == null ? null : this.innerProperties().sharedGalleryId();
+    }
+
+    /**
+     * Get the availableRegions property: The available regions of the image in the shared gallery.
+     *
+     * @return the availableRegions value.
+     */
+    public List availableRegions() {
+        return this.innerProperties() == null ? null : this.innerProperties().availableRegions();
+    }
+
+    /**
+     * Set the availableRegions property: The available regions of the image in the shared gallery.
+     *
+     * @param availableRegions the availableRegions value to set.
+     * @return the ImageInner object itself.
+     */
+    public ImageInner withAvailableRegions(List availableRegions) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new ImageProperties();
+        }
+        this.innerProperties().withAvailableRegions(availableRegions);
+        return this;
+    }
+
+    /**
+     * Get the osState property: The OS State of the image.
+     *
+     * @return the osState value.
+     */
+    public OsState osState() {
+        return this.innerProperties() == null ? null : this.innerProperties().osState();
+    }
+
+    /**
+     * Get the enabledState property: Is the image enabled.
+     *
+     * @return the enabledState value.
+     */
+    public EnableState enabledState() {
+        return this.innerProperties() == null ? null : this.innerProperties().enabledState();
+    }
+
+    /**
+     * Set the enabledState property: Is the image enabled.
+     *
+     * @param enabledState the enabledState value to set.
+     * @return the ImageInner object itself.
+     */
+    public ImageInner withEnabledState(EnableState enabledState) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new ImageProperties();
+        }
+        this.innerProperties().withEnabledState(enabledState);
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (innerProperties() == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException("Missing required property innerProperties in model ImageInner"));
+        } else {
+            innerProperties().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageProperties.java
new file mode 100644
index 000000000000..b22b947568c4
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageProperties.java
@@ -0,0 +1,275 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.EnableState;
+import com.azure.resourcemanager.labservices.models.OsState;
+import com.azure.resourcemanager.labservices.models.OsType;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Properties of an image resource. */
+@Fluent
+public final class ImageProperties extends ImageUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(ImageProperties.class);
+
+    /*
+     * Current provisioning state of the image.
+     */
+    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+    private ProvisioningState provisioningState;
+
+    /*
+     * The image display name.
+     */
+    @JsonProperty(value = "displayName", access = JsonProperty.Access.WRITE_ONLY)
+    private String displayName;
+
+    /*
+     * A description of the image.
+     */
+    @JsonProperty(value = "description", access = JsonProperty.Access.WRITE_ONLY)
+    private String description;
+
+    /*
+     * URL of the image icon.
+     */
+    @JsonProperty(value = "iconUrl", access = JsonProperty.Access.WRITE_ONLY)
+    private String iconUrl;
+
+    /*
+     * The image author.
+     */
+    @JsonProperty(value = "author", access = JsonProperty.Access.WRITE_ONLY)
+    private String author;
+
+    /*
+     * The OS Type of the image.
+     */
+    @JsonProperty(value = "osType", access = JsonProperty.Access.WRITE_ONLY)
+    private OsType osType;
+
+    /*
+     * The ID of marketplace plan associated with the image (optional).
+     */
+    @JsonProperty(value = "plan", access = JsonProperty.Access.WRITE_ONLY)
+    private String plan;
+
+    /*
+     * The status of image terms of use (enabled = accepted, disabled = not
+     * accepted).
+     */
+    @JsonProperty(value = "termsStatus", access = JsonProperty.Access.WRITE_ONLY)
+    private EnableState termsStatus;
+
+    /*
+     * The ID of an offer associated with the image.
+     */
+    @JsonProperty(value = "offer", access = JsonProperty.Access.WRITE_ONLY)
+    private String offer;
+
+    /*
+     * The ID of the publisher of the image.
+     */
+    @JsonProperty(value = "publisher", access = JsonProperty.Access.WRITE_ONLY)
+    private String publisher;
+
+    /*
+     * The image SKU.
+     */
+    @JsonProperty(value = "sku", access = JsonProperty.Access.WRITE_ONLY)
+    private String sku;
+
+    /*
+     * The image version.
+     */
+    @JsonProperty(value = "version", access = JsonProperty.Access.WRITE_ONLY)
+    private String version;
+
+    /*
+     * The ID for the image in the shared gallery.
+     */
+    @JsonProperty(value = "sharedGalleryId", access = JsonProperty.Access.WRITE_ONLY)
+    private String sharedGalleryId;
+
+    /*
+     * The available regions of the image in the shared gallery.
+     */
+    @JsonProperty(value = "availableRegions")
+    private List availableRegions;
+
+    /*
+     * The OS State of the image.
+     */
+    @JsonProperty(value = "osState", access = JsonProperty.Access.WRITE_ONLY)
+    private OsState osState;
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the image.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.provisioningState;
+    }
+
+    /**
+     * Get the displayName property: The image display name.
+     *
+     * @return the displayName value.
+     */
+    public String displayName() {
+        return this.displayName;
+    }
+
+    /**
+     * Get the description property: A description of the image.
+     *
+     * @return the description value.
+     */
+    public String description() {
+        return this.description;
+    }
+
+    /**
+     * Get the iconUrl property: URL of the image icon.
+     *
+     * @return the iconUrl value.
+     */
+    public String iconUrl() {
+        return this.iconUrl;
+    }
+
+    /**
+     * Get the author property: The image author.
+     *
+     * @return the author value.
+     */
+    public String author() {
+        return this.author;
+    }
+
+    /**
+     * Get the osType property: The OS Type of the image.
+     *
+     * @return the osType value.
+     */
+    public OsType osType() {
+        return this.osType;
+    }
+
+    /**
+     * Get the plan property: The ID of marketplace plan associated with the image (optional).
+     *
+     * @return the plan value.
+     */
+    public String plan() {
+        return this.plan;
+    }
+
+    /**
+     * Get the termsStatus property: The status of image terms of use (enabled = accepted, disabled = not accepted).
+     *
+     * @return the termsStatus value.
+     */
+    public EnableState termsStatus() {
+        return this.termsStatus;
+    }
+
+    /**
+     * Get the offer property: The ID of an offer associated with the image.
+     *
+     * @return the offer value.
+     */
+    public String offer() {
+        return this.offer;
+    }
+
+    /**
+     * Get the publisher property: The ID of the publisher of the image.
+     *
+     * @return the publisher value.
+     */
+    public String publisher() {
+        return this.publisher;
+    }
+
+    /**
+     * Get the sku property: The image SKU.
+     *
+     * @return the sku value.
+     */
+    public String sku() {
+        return this.sku;
+    }
+
+    /**
+     * Get the version property: The image version.
+     *
+     * @return the version value.
+     */
+    public String version() {
+        return this.version;
+    }
+
+    /**
+     * Get the sharedGalleryId property: The ID for the image in the shared gallery.
+     *
+     * @return the sharedGalleryId value.
+     */
+    public String sharedGalleryId() {
+        return this.sharedGalleryId;
+    }
+
+    /**
+     * Get the availableRegions property: The available regions of the image in the shared gallery.
+     *
+     * @return the availableRegions value.
+     */
+    public List availableRegions() {
+        return this.availableRegions;
+    }
+
+    /**
+     * Set the availableRegions property: The available regions of the image in the shared gallery.
+     *
+     * @param availableRegions the availableRegions value to set.
+     * @return the ImageProperties object itself.
+     */
+    public ImageProperties withAvailableRegions(List availableRegions) {
+        this.availableRegions = availableRegions;
+        return this;
+    }
+
+    /**
+     * Get the osState property: The OS State of the image.
+     *
+     * @return the osState value.
+     */
+    public OsState osState() {
+        return this.osState;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ImageProperties withEnabledState(EnableState enabledState) {
+        super.withEnabledState(enabledState);
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    @Override
+    public void validate() {
+        super.validate();
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageUpdateProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageUpdateProperties.java
new file mode 100644
index 000000000000..2abbb7c65a1b
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ImageUpdateProperties.java
@@ -0,0 +1,51 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.EnableState;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Properties of an image resource update. */
+@Fluent
+public class ImageUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(ImageUpdateProperties.class);
+
+    /*
+     * Is the image enabled
+     */
+    @JsonProperty(value = "enabledState")
+    private EnableState enabledState;
+
+    /**
+     * Get the enabledState property: Is the image enabled.
+     *
+     * @return the enabledState value.
+     */
+    public EnableState enabledState() {
+        return this.enabledState;
+    }
+
+    /**
+     * Set the enabledState property: Is the image enabled.
+     *
+     * @param enabledState the enabledState value to set.
+     * @return the ImageUpdateProperties object itself.
+     */
+    public ImageUpdateProperties withEnabledState(EnableState enabledState) {
+        this.enabledState = enabledState;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabAccountInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabAccountInner.java
deleted file mode 100644
index 9c34f94743a5..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabAccountInner.java
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
-import com.azure.core.management.Resource;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.LatestOperationResult;
-import com.azure.resourcemanager.labservices.models.SizeConfigurationProperties;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.Map;
-
-/** Represents a lab account. */
-@JsonFlatten
-@Fluent
-public class LabAccountInner extends Resource {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(LabAccountInner.class);
-
-    /*
-     * Represents the size configuration under the lab account
-     */
-    @JsonProperty(value = "properties.sizeConfiguration", access = JsonProperty.Access.WRITE_ONLY)
-    private SizeConfigurationProperties sizeConfiguration;
-
-    /*
-     * Represents if region selection is enabled
-     */
-    @JsonProperty(value = "properties.enabledRegionSelection")
-    private Boolean enabledRegionSelection;
-
-    /*
-     * The provisioning status of the resource.
-     */
-    @JsonProperty(value = "properties.provisioningState")
-    private String provisioningState;
-
-    /*
-     * The unique immutable identifier of a resource (Guid).
-     */
-    @JsonProperty(value = "properties.uniqueIdentifier")
-    private String uniqueIdentifier;
-
-    /*
-     * The details of the latest operation. ex: status, error
-     */
-    @JsonProperty(value = "properties.latestOperationResult", access = JsonProperty.Access.WRITE_ONLY)
-    private LatestOperationResult latestOperationResult;
-
-    /**
-     * Get the sizeConfiguration property: Represents the size configuration under the lab account.
-     *
-     * @return the sizeConfiguration value.
-     */
-    public SizeConfigurationProperties sizeConfiguration() {
-        return this.sizeConfiguration;
-    }
-
-    /**
-     * Get the enabledRegionSelection property: Represents if region selection is enabled.
-     *
-     * @return the enabledRegionSelection value.
-     */
-    public Boolean enabledRegionSelection() {
-        return this.enabledRegionSelection;
-    }
-
-    /**
-     * Set the enabledRegionSelection property: Represents if region selection is enabled.
-     *
-     * @param enabledRegionSelection the enabledRegionSelection value to set.
-     * @return the LabAccountInner object itself.
-     */
-    public LabAccountInner withEnabledRegionSelection(Boolean enabledRegionSelection) {
-        this.enabledRegionSelection = enabledRegionSelection;
-        return this;
-    }
-
-    /**
-     * Get the provisioningState property: The provisioning status of the resource.
-     *
-     * @return the provisioningState value.
-     */
-    public String provisioningState() {
-        return this.provisioningState;
-    }
-
-    /**
-     * Set the provisioningState property: The provisioning status of the resource.
-     *
-     * @param provisioningState the provisioningState value to set.
-     * @return the LabAccountInner object itself.
-     */
-    public LabAccountInner withProvisioningState(String provisioningState) {
-        this.provisioningState = provisioningState;
-        return this;
-    }
-
-    /**
-     * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
-     *
-     * @return the uniqueIdentifier value.
-     */
-    public String uniqueIdentifier() {
-        return this.uniqueIdentifier;
-    }
-
-    /**
-     * Set the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
-     *
-     * @param uniqueIdentifier the uniqueIdentifier value to set.
-     * @return the LabAccountInner object itself.
-     */
-    public LabAccountInner withUniqueIdentifier(String uniqueIdentifier) {
-        this.uniqueIdentifier = uniqueIdentifier;
-        return this;
-    }
-
-    /**
-     * Get the latestOperationResult property: The details of the latest operation. ex: status, error.
-     *
-     * @return the latestOperationResult value.
-     */
-    public LatestOperationResult latestOperationResult() {
-        return this.latestOperationResult;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public LabAccountInner withLocation(String location) {
-        super.withLocation(location);
-        return this;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public LabAccountInner withTags(Map tags) {
-        super.withTags(tags);
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (sizeConfiguration() != null) {
-            sizeConfiguration().validate();
-        }
-        if (latestOperationResult() != null) {
-            latestOperationResult().validate();
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabInner.java
index 2a9583295228..7a1883ad2563 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabInner.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabInner.java
@@ -5,255 +5,302 @@
 package com.azure.resourcemanager.labservices.fluent.models;
 
 import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
 import com.azure.core.management.Resource;
+import com.azure.core.management.SystemData;
 import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.LabUserAccessMode;
-import com.azure.resourcemanager.labservices.models.LatestOperationResult;
+import com.azure.resourcemanager.labservices.models.AutoShutdownProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.LabNetworkProfile;
+import com.azure.resourcemanager.labservices.models.LabState;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.RosterProfile;
+import com.azure.resourcemanager.labservices.models.SecurityProfile;
+import com.azure.resourcemanager.labservices.models.VirtualMachineProfile;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import java.time.Duration;
-import java.time.OffsetDateTime;
 import java.util.Map;
 
-/** Represents a lab. */
-@JsonFlatten
+/** The lab resource. */
 @Fluent
-public class LabInner extends Resource {
+public final class LabInner extends Resource {
     @JsonIgnore private final ClientLogger logger = new ClientLogger(LabInner.class);
 
     /*
-     * Maximum number of users allowed in the lab.
+     * Metadata pertaining to creation and last modification of the lab.
      */
-    @JsonProperty(value = "properties.maxUsersInLab")
-    private Integer maxUsersInLab;
+    @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+    private SystemData systemData;
 
     /*
-     * Maximum value MaxUsersInLab can be set to, as specified by the service
+     * Lab resource properties
      */
-    @JsonProperty(value = "properties.userQuota", access = JsonProperty.Access.WRITE_ONLY)
-    private Integer userQuota;
+    @JsonProperty(value = "properties", required = true)
+    private LabProperties innerProperties = new LabProperties();
 
-    /*
-     * Invitation code that users can use to join a lab.
-     */
-    @JsonProperty(value = "properties.invitationCode", access = JsonProperty.Access.WRITE_ONLY)
-    private String invitationCode;
-
-    /*
-     * Object id of the user that created the lab.
-     */
-    @JsonProperty(value = "properties.createdByObjectId", access = JsonProperty.Access.WRITE_ONLY)
-    private String createdByObjectId;
-
-    /*
-     * Maximum duration a user can use an environment for in the lab.
-     */
-    @JsonProperty(value = "properties.usageQuota")
-    private Duration usageQuota;
-
-    /*
-     * Lab user access mode (open to all vs. restricted to those listed on the
-     * lab).
-     */
-    @JsonProperty(value = "properties.userAccessMode")
-    private LabUserAccessMode userAccessMode;
-
-    /*
-     * Lab creator name
+    /**
+     * Get the systemData property: Metadata pertaining to creation and last modification of the lab.
+     *
+     * @return the systemData value.
      */
-    @JsonProperty(value = "properties.createdByUserPrincipalName", access = JsonProperty.Access.WRITE_ONLY)
-    private String createdByUserPrincipalName;
+    public SystemData systemData() {
+        return this.systemData;
+    }
 
-    /*
-     * Creation date for the lab
+    /**
+     * Get the innerProperties property: Lab resource properties.
+     *
+     * @return the innerProperties value.
      */
-    @JsonProperty(value = "properties.createdDate", access = JsonProperty.Access.WRITE_ONLY)
-    private OffsetDateTime createdDate;
+    private LabProperties innerProperties() {
+        return this.innerProperties;
+    }
 
-    /*
-     * The provisioning status of the resource.
-     */
-    @JsonProperty(value = "properties.provisioningState")
-    private String provisioningState;
+    /** {@inheritDoc} */
+    @Override
+    public LabInner withLocation(String location) {
+        super.withLocation(location);
+        return this;
+    }
 
-    /*
-     * The unique immutable identifier of a resource (Guid).
-     */
-    @JsonProperty(value = "properties.uniqueIdentifier")
-    private String uniqueIdentifier;
+    /** {@inheritDoc} */
+    @Override
+    public LabInner withTags(Map tags) {
+        super.withTags(tags);
+        return this;
+    }
 
-    /*
-     * The details of the latest operation. ex: status, error
+    /**
+     * Get the provisioningState property: Current provisioning state of the lab.
+     *
+     * @return the provisioningState value.
      */
-    @JsonProperty(value = "properties.latestOperationResult", access = JsonProperty.Access.WRITE_ONLY)
-    private LatestOperationResult latestOperationResult;
+    public ProvisioningState provisioningState() {
+        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+    }
 
     /**
-     * Get the maxUsersInLab property: Maximum number of users allowed in the lab.
+     * Get the networkProfile property: The network profile for the lab, typically applied via a lab plan. This profile
+     * cannot be modified once a lab has been created.
      *
-     * @return the maxUsersInLab value.
+     * @return the networkProfile value.
      */
-    public Integer maxUsersInLab() {
-        return this.maxUsersInLab;
+    public LabNetworkProfile networkProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().networkProfile();
     }
 
     /**
-     * Set the maxUsersInLab property: Maximum number of users allowed in the lab.
+     * Set the networkProfile property: The network profile for the lab, typically applied via a lab plan. This profile
+     * cannot be modified once a lab has been created.
      *
-     * @param maxUsersInLab the maxUsersInLab value to set.
+     * @param networkProfile the networkProfile value to set.
      * @return the LabInner object itself.
      */
-    public LabInner withMaxUsersInLab(Integer maxUsersInLab) {
-        this.maxUsersInLab = maxUsersInLab;
+    public LabInner withNetworkProfile(LabNetworkProfile networkProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withNetworkProfile(networkProfile);
         return this;
     }
 
     /**
-     * Get the userQuota property: Maximum value MaxUsersInLab can be set to, as specified by the service.
+     * Get the state property: The lab state.
      *
-     * @return the userQuota value.
+     * @return the state value.
      */
-    public Integer userQuota() {
-        return this.userQuota;
+    public LabState state() {
+        return this.innerProperties() == null ? null : this.innerProperties().state();
     }
 
     /**
-     * Get the invitationCode property: Invitation code that users can use to join a lab.
+     * Get the autoShutdownProfile property: The resource auto shutdown configuration for the lab. This controls whether
+     * actions are taken on resources that are sitting idle.
      *
-     * @return the invitationCode value.
+     * @return the autoShutdownProfile value.
      */
-    public String invitationCode() {
-        return this.invitationCode;
+    public AutoShutdownProfile autoShutdownProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().autoShutdownProfile();
     }
 
     /**
-     * Get the createdByObjectId property: Object id of the user that created the lab.
+     * Set the autoShutdownProfile property: The resource auto shutdown configuration for the lab. This controls whether
+     * actions are taken on resources that are sitting idle.
      *
-     * @return the createdByObjectId value.
+     * @param autoShutdownProfile the autoShutdownProfile value to set.
+     * @return the LabInner object itself.
      */
-    public String createdByObjectId() {
-        return this.createdByObjectId;
+    public LabInner withAutoShutdownProfile(AutoShutdownProfile autoShutdownProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withAutoShutdownProfile(autoShutdownProfile);
+        return this;
     }
 
     /**
-     * Get the usageQuota property: Maximum duration a user can use an environment for in the lab.
+     * Get the connectionProfile property: The connection profile for the lab. This controls settings such as web access
+     * to lab resources or whether RDP or SSH ports are open.
      *
-     * @return the usageQuota value.
+     * @return the connectionProfile value.
      */
-    public Duration usageQuota() {
-        return this.usageQuota;
+    public ConnectionProfile connectionProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().connectionProfile();
     }
 
     /**
-     * Set the usageQuota property: Maximum duration a user can use an environment for in the lab.
+     * Set the connectionProfile property: The connection profile for the lab. This controls settings such as web access
+     * to lab resources or whether RDP or SSH ports are open.
      *
-     * @param usageQuota the usageQuota value to set.
+     * @param connectionProfile the connectionProfile value to set.
      * @return the LabInner object itself.
      */
-    public LabInner withUsageQuota(Duration usageQuota) {
-        this.usageQuota = usageQuota;
+    public LabInner withConnectionProfile(ConnectionProfile connectionProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withConnectionProfile(connectionProfile);
         return this;
     }
 
     /**
-     * Get the userAccessMode property: Lab user access mode (open to all vs. restricted to those listed on the lab).
+     * Get the virtualMachineProfile property: The profile used for creating lab virtual machines.
      *
-     * @return the userAccessMode value.
+     * @return the virtualMachineProfile value.
      */
-    public LabUserAccessMode userAccessMode() {
-        return this.userAccessMode;
+    public VirtualMachineProfile virtualMachineProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().virtualMachineProfile();
     }
 
     /**
-     * Set the userAccessMode property: Lab user access mode (open to all vs. restricted to those listed on the lab).
+     * Set the virtualMachineProfile property: The profile used for creating lab virtual machines.
      *
-     * @param userAccessMode the userAccessMode value to set.
+     * @param virtualMachineProfile the virtualMachineProfile value to set.
      * @return the LabInner object itself.
      */
-    public LabInner withUserAccessMode(LabUserAccessMode userAccessMode) {
-        this.userAccessMode = userAccessMode;
+    public LabInner withVirtualMachineProfile(VirtualMachineProfile virtualMachineProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withVirtualMachineProfile(virtualMachineProfile);
         return this;
     }
 
     /**
-     * Get the createdByUserPrincipalName property: Lab creator name.
+     * Get the securityProfile property: The lab security profile.
      *
-     * @return the createdByUserPrincipalName value.
+     * @return the securityProfile value.
      */
-    public String createdByUserPrincipalName() {
-        return this.createdByUserPrincipalName;
+    public SecurityProfile securityProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().securityProfile();
     }
 
     /**
-     * Get the createdDate property: Creation date for the lab.
+     * Set the securityProfile property: The lab security profile.
      *
-     * @return the createdDate value.
+     * @param securityProfile the securityProfile value to set.
+     * @return the LabInner object itself.
      */
-    public OffsetDateTime createdDate() {
-        return this.createdDate;
+    public LabInner withSecurityProfile(SecurityProfile securityProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withSecurityProfile(securityProfile);
+        return this;
     }
 
     /**
-     * Get the provisioningState property: The provisioning status of the resource.
+     * Get the rosterProfile property: The lab user list management profile.
      *
-     * @return the provisioningState value.
+     * @return the rosterProfile value.
      */
-    public String provisioningState() {
-        return this.provisioningState;
+    public RosterProfile rosterProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().rosterProfile();
     }
 
     /**
-     * Set the provisioningState property: The provisioning status of the resource.
+     * Set the rosterProfile property: The lab user list management profile.
      *
-     * @param provisioningState the provisioningState value to set.
+     * @param rosterProfile the rosterProfile value to set.
      * @return the LabInner object itself.
      */
-    public LabInner withProvisioningState(String provisioningState) {
-        this.provisioningState = provisioningState;
+    public LabInner withRosterProfile(RosterProfile rosterProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withRosterProfile(rosterProfile);
         return this;
     }
 
     /**
-     * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+     * Get the labPlanId property: The ID of the lab plan. Used during resource creation to provide defaults and acts as
+     * a permission container when creating a lab via labs.azure.com. Setting a labPlanId on an existing lab provides
+     * organization..
      *
-     * @return the uniqueIdentifier value.
+     * @return the labPlanId value.
      */
-    public String uniqueIdentifier() {
-        return this.uniqueIdentifier;
+    public String labPlanId() {
+        return this.innerProperties() == null ? null : this.innerProperties().labPlanId();
     }
 
     /**
-     * Set the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+     * Set the labPlanId property: The ID of the lab plan. Used during resource creation to provide defaults and acts as
+     * a permission container when creating a lab via labs.azure.com. Setting a labPlanId on an existing lab provides
+     * organization..
      *
-     * @param uniqueIdentifier the uniqueIdentifier value to set.
+     * @param labPlanId the labPlanId value to set.
      * @return the LabInner object itself.
      */
-    public LabInner withUniqueIdentifier(String uniqueIdentifier) {
-        this.uniqueIdentifier = uniqueIdentifier;
+    public LabInner withLabPlanId(String labPlanId) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withLabPlanId(labPlanId);
         return this;
     }
 
     /**
-     * Get the latestOperationResult property: The details of the latest operation. ex: status, error.
+     * Get the title property: The title of the lab.
      *
-     * @return the latestOperationResult value.
+     * @return the title value.
      */
-    public LatestOperationResult latestOperationResult() {
-        return this.latestOperationResult;
+    public String title() {
+        return this.innerProperties() == null ? null : this.innerProperties().title();
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public LabInner withLocation(String location) {
-        super.withLocation(location);
+    /**
+     * Set the title property: The title of the lab.
+     *
+     * @param title the title value to set.
+     * @return the LabInner object itself.
+     */
+    public LabInner withTitle(String title) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withTitle(title);
         return this;
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public LabInner withTags(Map tags) {
-        super.withTags(tags);
+    /**
+     * Get the description property: The description of the lab.
+     *
+     * @return the description value.
+     */
+    public String description() {
+        return this.innerProperties() == null ? null : this.innerProperties().description();
+    }
+
+    /**
+     * Set the description property: The description of the lab.
+     *
+     * @param description the description value to set.
+     * @return the LabInner object itself.
+     */
+    public LabInner withDescription(String description) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabProperties();
+        }
+        this.innerProperties().withDescription(description);
         return this;
     }
 
@@ -263,8 +310,12 @@ public LabInner withTags(Map tags) {
      * @throws IllegalArgumentException thrown if the instance is not valid.
      */
     public void validate() {
-        if (latestOperationResult() != null) {
-            latestOperationResult().validate();
+        if (innerProperties() == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException("Missing required property innerProperties in model LabInner"));
+        } else {
+            innerProperties().validate();
         }
     }
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanInner.java
new file mode 100644
index 000000000000..d2173a69a536
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanInner.java
@@ -0,0 +1,271 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.Resource;
+import com.azure.core.management.SystemData;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.AutoShutdownProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.LabPlanNetworkProfile;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.SupportInfo;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Lab Plans act as a permission container for creating labs via labs.azure.com. Additionally, they can provide a set of
+ * default configurations that will apply at the time of creating a lab, but these defaults can still be overwritten.
+ */
+@Fluent
+public final class LabPlanInner extends Resource {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LabPlanInner.class);
+
+    /*
+     * Metadata pertaining to creation and last modification of the lab plan.
+     */
+    @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+    private SystemData systemData;
+
+    /*
+     * Lab plan resource properties
+     */
+    @JsonProperty(value = "properties", required = true)
+    private LabPlanProperties innerProperties = new LabPlanProperties();
+
+    /**
+     * Get the systemData property: Metadata pertaining to creation and last modification of the lab plan.
+     *
+     * @return the systemData value.
+     */
+    public SystemData systemData() {
+        return this.systemData;
+    }
+
+    /**
+     * Get the innerProperties property: Lab plan resource properties.
+     *
+     * @return the innerProperties value.
+     */
+    private LabPlanProperties innerProperties() {
+        return this.innerProperties;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanInner withLocation(String location) {
+        super.withLocation(location);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanInner withTags(Map tags) {
+        super.withTags(tags);
+        return this;
+    }
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the lab plan.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+    }
+
+    /**
+     * Get the defaultConnectionProfile property: The default lab connection profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     *
+     * @return the defaultConnectionProfile value.
+     */
+    public ConnectionProfile defaultConnectionProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().defaultConnectionProfile();
+    }
+
+    /**
+     * Set the defaultConnectionProfile property: The default lab connection profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     *
+     * @param defaultConnectionProfile the defaultConnectionProfile value to set.
+     * @return the LabPlanInner object itself.
+     */
+    public LabPlanInner withDefaultConnectionProfile(ConnectionProfile defaultConnectionProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabPlanProperties();
+        }
+        this.innerProperties().withDefaultConnectionProfile(defaultConnectionProfile);
+        return this;
+    }
+
+    /**
+     * Get the defaultAutoShutdownProfile property: The default lab shutdown profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     *
+     * @return the defaultAutoShutdownProfile value.
+     */
+    public AutoShutdownProfile defaultAutoShutdownProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().defaultAutoShutdownProfile();
+    }
+
+    /**
+     * Set the defaultAutoShutdownProfile property: The default lab shutdown profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     *
+     * @param defaultAutoShutdownProfile the defaultAutoShutdownProfile value to set.
+     * @return the LabPlanInner object itself.
+     */
+    public LabPlanInner withDefaultAutoShutdownProfile(AutoShutdownProfile defaultAutoShutdownProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabPlanProperties();
+        }
+        this.innerProperties().withDefaultAutoShutdownProfile(defaultAutoShutdownProfile);
+        return this;
+    }
+
+    /**
+     * Get the defaultNetworkProfile property: The lab plan network profile. To enforce lab network policies they must
+     * be defined here and cannot be changed when there are existing labs associated with this lab plan.
+     *
+     * @return the defaultNetworkProfile value.
+     */
+    public LabPlanNetworkProfile defaultNetworkProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().defaultNetworkProfile();
+    }
+
+    /**
+     * Set the defaultNetworkProfile property: The lab plan network profile. To enforce lab network policies they must
+     * be defined here and cannot be changed when there are existing labs associated with this lab plan.
+     *
+     * @param defaultNetworkProfile the defaultNetworkProfile value to set.
+     * @return the LabPlanInner object itself.
+     */
+    public LabPlanInner withDefaultNetworkProfile(LabPlanNetworkProfile defaultNetworkProfile) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabPlanProperties();
+        }
+        this.innerProperties().withDefaultNetworkProfile(defaultNetworkProfile);
+        return this;
+    }
+
+    /**
+     * Get the allowedRegions property: The allowed regions for the lab creator to use when creating labs using this lab
+     * plan.
+     *
+     * @return the allowedRegions value.
+     */
+    public List allowedRegions() {
+        return this.innerProperties() == null ? null : this.innerProperties().allowedRegions();
+    }
+
+    /**
+     * Set the allowedRegions property: The allowed regions for the lab creator to use when creating labs using this lab
+     * plan.
+     *
+     * @param allowedRegions the allowedRegions value to set.
+     * @return the LabPlanInner object itself.
+     */
+    public LabPlanInner withAllowedRegions(List allowedRegions) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabPlanProperties();
+        }
+        this.innerProperties().withAllowedRegions(allowedRegions);
+        return this;
+    }
+
+    /**
+     * Get the sharedGalleryId property: Resource ID of the Shared Image Gallery attached to this lab plan. When saving
+     * a lab template virtual machine image it will be persisted in this gallery. Shared images from the gallery can be
+     * made available to use when creating new labs.
+     *
+     * @return the sharedGalleryId value.
+     */
+    public String sharedGalleryId() {
+        return this.innerProperties() == null ? null : this.innerProperties().sharedGalleryId();
+    }
+
+    /**
+     * Set the sharedGalleryId property: Resource ID of the Shared Image Gallery attached to this lab plan. When saving
+     * a lab template virtual machine image it will be persisted in this gallery. Shared images from the gallery can be
+     * made available to use when creating new labs.
+     *
+     * @param sharedGalleryId the sharedGalleryId value to set.
+     * @return the LabPlanInner object itself.
+     */
+    public LabPlanInner withSharedGalleryId(String sharedGalleryId) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabPlanProperties();
+        }
+        this.innerProperties().withSharedGalleryId(sharedGalleryId);
+        return this;
+    }
+
+    /**
+     * Get the supportInfo property: Support contact information and instructions for users of the lab plan. This
+     * information is displayed to lab owners and virtual machine users for all labs in the lab plan.
+     *
+     * @return the supportInfo value.
+     */
+    public SupportInfo supportInfo() {
+        return this.innerProperties() == null ? null : this.innerProperties().supportInfo();
+    }
+
+    /**
+     * Set the supportInfo property: Support contact information and instructions for users of the lab plan. This
+     * information is displayed to lab owners and virtual machine users for all labs in the lab plan.
+     *
+     * @param supportInfo the supportInfo value to set.
+     * @return the LabPlanInner object itself.
+     */
+    public LabPlanInner withSupportInfo(SupportInfo supportInfo) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabPlanProperties();
+        }
+        this.innerProperties().withSupportInfo(supportInfo);
+        return this;
+    }
+
+    /**
+     * Get the linkedLmsInstance property: Base Url of the lms instance this lab plan can link lab rosters against.
+     *
+     * @return the linkedLmsInstance value.
+     */
+    public String linkedLmsInstance() {
+        return this.innerProperties() == null ? null : this.innerProperties().linkedLmsInstance();
+    }
+
+    /**
+     * Set the linkedLmsInstance property: Base Url of the lms instance this lab plan can link lab rosters against.
+     *
+     * @param linkedLmsInstance the linkedLmsInstance value to set.
+     * @return the LabPlanInner object itself.
+     */
+    public LabPlanInner withLinkedLmsInstance(String linkedLmsInstance) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new LabPlanProperties();
+        }
+        this.innerProperties().withLinkedLmsInstance(linkedLmsInstance);
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (innerProperties() == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException("Missing required property innerProperties in model LabPlanInner"));
+        } else {
+            innerProperties().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanProperties.java
new file mode 100644
index 000000000000..838570cc5465
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanProperties.java
@@ -0,0 +1,96 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.AutoShutdownProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.LabPlanNetworkProfile;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.SupportInfo;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Lab plan resource properties. */
+@Fluent
+public final class LabPlanProperties extends LabPlanUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LabPlanProperties.class);
+
+    /*
+     * Current provisioning state of the lab plan.
+     */
+    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+    private ProvisioningState provisioningState;
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the lab plan.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.provisioningState;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanProperties withDefaultConnectionProfile(ConnectionProfile defaultConnectionProfile) {
+        super.withDefaultConnectionProfile(defaultConnectionProfile);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanProperties withDefaultAutoShutdownProfile(AutoShutdownProfile defaultAutoShutdownProfile) {
+        super.withDefaultAutoShutdownProfile(defaultAutoShutdownProfile);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanProperties withDefaultNetworkProfile(LabPlanNetworkProfile defaultNetworkProfile) {
+        super.withDefaultNetworkProfile(defaultNetworkProfile);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanProperties withAllowedRegions(List allowedRegions) {
+        super.withAllowedRegions(allowedRegions);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanProperties withSharedGalleryId(String sharedGalleryId) {
+        super.withSharedGalleryId(sharedGalleryId);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanProperties withSupportInfo(SupportInfo supportInfo) {
+        super.withSupportInfo(supportInfo);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabPlanProperties withLinkedLmsInstance(String linkedLmsInstance) {
+        super.withLinkedLmsInstance(linkedLmsInstance);
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    @Override
+    public void validate() {
+        super.validate();
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanUpdateProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanUpdateProperties.java
new file mode 100644
index 000000000000..1518ebb7c997
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabPlanUpdateProperties.java
@@ -0,0 +1,247 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.AutoShutdownProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.LabPlanNetworkProfile;
+import com.azure.resourcemanager.labservices.models.SupportInfo;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Lab plan resource properties for updates. */
+@Fluent
+public class LabPlanUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LabPlanUpdateProperties.class);
+
+    /*
+     * The default lab connection profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     */
+    @JsonProperty(value = "defaultConnectionProfile")
+    private ConnectionProfile defaultConnectionProfile;
+
+    /*
+     * The default lab shutdown profile. This can be changed on a lab resource
+     * and only provides a default profile.
+     */
+    @JsonProperty(value = "defaultAutoShutdownProfile")
+    private AutoShutdownProfile defaultAutoShutdownProfile;
+
+    /*
+     * The lab plan network profile. To enforce lab network policies they must
+     * be defined here and cannot be changed when there are existing labs
+     * associated with this lab plan.
+     */
+    @JsonProperty(value = "defaultNetworkProfile")
+    private LabPlanNetworkProfile defaultNetworkProfile;
+
+    /*
+     * The allowed regions for the lab creator to use when creating labs using
+     * this lab plan.
+     */
+    @JsonProperty(value = "allowedRegions")
+    private List allowedRegions;
+
+    /*
+     * Resource ID of the Shared Image Gallery attached to this lab plan. When
+     * saving a lab template virtual machine image it will be persisted in this
+     * gallery. Shared images from the gallery can be made available to use
+     * when creating new labs.
+     */
+    @JsonProperty(value = "sharedGalleryId")
+    private String sharedGalleryId;
+
+    /*
+     * Support contact information and instructions for users of the lab plan.
+     * This information is displayed to lab owners and virtual machine users
+     * for all labs in the lab plan.
+     */
+    @JsonProperty(value = "supportInfo")
+    private SupportInfo supportInfo;
+
+    /*
+     * Base Url of the lms instance this lab plan can link lab rosters against.
+     */
+    @JsonProperty(value = "linkedLmsInstance")
+    private String linkedLmsInstance;
+
+    /**
+     * Get the defaultConnectionProfile property: The default lab connection profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     *
+     * @return the defaultConnectionProfile value.
+     */
+    public ConnectionProfile defaultConnectionProfile() {
+        return this.defaultConnectionProfile;
+    }
+
+    /**
+     * Set the defaultConnectionProfile property: The default lab connection profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     *
+     * @param defaultConnectionProfile the defaultConnectionProfile value to set.
+     * @return the LabPlanUpdateProperties object itself.
+     */
+    public LabPlanUpdateProperties withDefaultConnectionProfile(ConnectionProfile defaultConnectionProfile) {
+        this.defaultConnectionProfile = defaultConnectionProfile;
+        return this;
+    }
+
+    /**
+     * Get the defaultAutoShutdownProfile property: The default lab shutdown profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     *
+     * @return the defaultAutoShutdownProfile value.
+     */
+    public AutoShutdownProfile defaultAutoShutdownProfile() {
+        return this.defaultAutoShutdownProfile;
+    }
+
+    /**
+     * Set the defaultAutoShutdownProfile property: The default lab shutdown profile. This can be changed on a lab
+     * resource and only provides a default profile.
+     *
+     * @param defaultAutoShutdownProfile the defaultAutoShutdownProfile value to set.
+     * @return the LabPlanUpdateProperties object itself.
+     */
+    public LabPlanUpdateProperties withDefaultAutoShutdownProfile(AutoShutdownProfile defaultAutoShutdownProfile) {
+        this.defaultAutoShutdownProfile = defaultAutoShutdownProfile;
+        return this;
+    }
+
+    /**
+     * Get the defaultNetworkProfile property: The lab plan network profile. To enforce lab network policies they must
+     * be defined here and cannot be changed when there are existing labs associated with this lab plan.
+     *
+     * @return the defaultNetworkProfile value.
+     */
+    public LabPlanNetworkProfile defaultNetworkProfile() {
+        return this.defaultNetworkProfile;
+    }
+
+    /**
+     * Set the defaultNetworkProfile property: The lab plan network profile. To enforce lab network policies they must
+     * be defined here and cannot be changed when there are existing labs associated with this lab plan.
+     *
+     * @param defaultNetworkProfile the defaultNetworkProfile value to set.
+     * @return the LabPlanUpdateProperties object itself.
+     */
+    public LabPlanUpdateProperties withDefaultNetworkProfile(LabPlanNetworkProfile defaultNetworkProfile) {
+        this.defaultNetworkProfile = defaultNetworkProfile;
+        return this;
+    }
+
+    /**
+     * Get the allowedRegions property: The allowed regions for the lab creator to use when creating labs using this lab
+     * plan.
+     *
+     * @return the allowedRegions value.
+     */
+    public List allowedRegions() {
+        return this.allowedRegions;
+    }
+
+    /**
+     * Set the allowedRegions property: The allowed regions for the lab creator to use when creating labs using this lab
+     * plan.
+     *
+     * @param allowedRegions the allowedRegions value to set.
+     * @return the LabPlanUpdateProperties object itself.
+     */
+    public LabPlanUpdateProperties withAllowedRegions(List allowedRegions) {
+        this.allowedRegions = allowedRegions;
+        return this;
+    }
+
+    /**
+     * Get the sharedGalleryId property: Resource ID of the Shared Image Gallery attached to this lab plan. When saving
+     * a lab template virtual machine image it will be persisted in this gallery. Shared images from the gallery can be
+     * made available to use when creating new labs.
+     *
+     * @return the sharedGalleryId value.
+     */
+    public String sharedGalleryId() {
+        return this.sharedGalleryId;
+    }
+
+    /**
+     * Set the sharedGalleryId property: Resource ID of the Shared Image Gallery attached to this lab plan. When saving
+     * a lab template virtual machine image it will be persisted in this gallery. Shared images from the gallery can be
+     * made available to use when creating new labs.
+     *
+     * @param sharedGalleryId the sharedGalleryId value to set.
+     * @return the LabPlanUpdateProperties object itself.
+     */
+    public LabPlanUpdateProperties withSharedGalleryId(String sharedGalleryId) {
+        this.sharedGalleryId = sharedGalleryId;
+        return this;
+    }
+
+    /**
+     * Get the supportInfo property: Support contact information and instructions for users of the lab plan. This
+     * information is displayed to lab owners and virtual machine users for all labs in the lab plan.
+     *
+     * @return the supportInfo value.
+     */
+    public SupportInfo supportInfo() {
+        return this.supportInfo;
+    }
+
+    /**
+     * Set the supportInfo property: Support contact information and instructions for users of the lab plan. This
+     * information is displayed to lab owners and virtual machine users for all labs in the lab plan.
+     *
+     * @param supportInfo the supportInfo value to set.
+     * @return the LabPlanUpdateProperties object itself.
+     */
+    public LabPlanUpdateProperties withSupportInfo(SupportInfo supportInfo) {
+        this.supportInfo = supportInfo;
+        return this;
+    }
+
+    /**
+     * Get the linkedLmsInstance property: Base Url of the lms instance this lab plan can link lab rosters against.
+     *
+     * @return the linkedLmsInstance value.
+     */
+    public String linkedLmsInstance() {
+        return this.linkedLmsInstance;
+    }
+
+    /**
+     * Set the linkedLmsInstance property: Base Url of the lms instance this lab plan can link lab rosters against.
+     *
+     * @param linkedLmsInstance the linkedLmsInstance value to set.
+     * @return the LabPlanUpdateProperties object itself.
+     */
+    public LabPlanUpdateProperties withLinkedLmsInstance(String linkedLmsInstance) {
+        this.linkedLmsInstance = linkedLmsInstance;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (defaultConnectionProfile() != null) {
+            defaultConnectionProfile().validate();
+        }
+        if (defaultAutoShutdownProfile() != null) {
+            defaultAutoShutdownProfile().validate();
+        }
+        if (defaultNetworkProfile() != null) {
+            defaultNetworkProfile().validate();
+        }
+        if (supportInfo() != null) {
+            supportInfo().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabProperties.java
new file mode 100644
index 000000000000..c081d888fb97
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabProperties.java
@@ -0,0 +1,152 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.AutoShutdownProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.LabNetworkProfile;
+import com.azure.resourcemanager.labservices.models.LabState;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.RosterProfile;
+import com.azure.resourcemanager.labservices.models.SecurityProfile;
+import com.azure.resourcemanager.labservices.models.VirtualMachineProfile;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Properties of a lab resource. */
+@Fluent
+public final class LabProperties extends LabUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LabProperties.class);
+
+    /*
+     * Current provisioning state of the lab.
+     */
+    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+    private ProvisioningState provisioningState;
+
+    /*
+     * The network profile for the lab, typically applied via a lab plan. This
+     * profile cannot be modified once a lab has been created.
+     */
+    @JsonProperty(value = "networkProfile")
+    private LabNetworkProfile networkProfile;
+
+    /*
+     * The lab state.
+     */
+    @JsonProperty(value = "state", access = JsonProperty.Access.WRITE_ONLY)
+    private LabState state;
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the lab.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.provisioningState;
+    }
+
+    /**
+     * Get the networkProfile property: The network profile for the lab, typically applied via a lab plan. This profile
+     * cannot be modified once a lab has been created.
+     *
+     * @return the networkProfile value.
+     */
+    public LabNetworkProfile networkProfile() {
+        return this.networkProfile;
+    }
+
+    /**
+     * Set the networkProfile property: The network profile for the lab, typically applied via a lab plan. This profile
+     * cannot be modified once a lab has been created.
+     *
+     * @param networkProfile the networkProfile value to set.
+     * @return the LabProperties object itself.
+     */
+    public LabProperties withNetworkProfile(LabNetworkProfile networkProfile) {
+        this.networkProfile = networkProfile;
+        return this;
+    }
+
+    /**
+     * Get the state property: The lab state.
+     *
+     * @return the state value.
+     */
+    public LabState state() {
+        return this.state;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabProperties withAutoShutdownProfile(AutoShutdownProfile autoShutdownProfile) {
+        super.withAutoShutdownProfile(autoShutdownProfile);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabProperties withConnectionProfile(ConnectionProfile connectionProfile) {
+        super.withConnectionProfile(connectionProfile);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabProperties withVirtualMachineProfile(VirtualMachineProfile virtualMachineProfile) {
+        super.withVirtualMachineProfile(virtualMachineProfile);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabProperties withSecurityProfile(SecurityProfile securityProfile) {
+        super.withSecurityProfile(securityProfile);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabProperties withRosterProfile(RosterProfile rosterProfile) {
+        super.withRosterProfile(rosterProfile);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabProperties withLabPlanId(String labPlanId) {
+        super.withLabPlanId(labPlanId);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabProperties withTitle(String title) {
+        super.withTitle(title);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public LabProperties withDescription(String description) {
+        super.withDescription(description);
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    @Override
+    public void validate() {
+        super.validate();
+        if (networkProfile() != null) {
+            networkProfile().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabServicesSkuInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabServicesSkuInner.java
new file mode 100644
index 000000000000..a3c61eb421f3
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabServicesSkuInner.java
@@ -0,0 +1,203 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.LabServicesSkuCapabilities;
+import com.azure.resourcemanager.labservices.models.LabServicesSkuCapacity;
+import com.azure.resourcemanager.labservices.models.LabServicesSkuCost;
+import com.azure.resourcemanager.labservices.models.LabServicesSkuRestrictions;
+import com.azure.resourcemanager.labservices.models.LabServicesSkuTier;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+/** Azure Lab Services resource SKUs. */
+@Fluent
+public final class LabServicesSkuInner {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LabServicesSkuInner.class);
+
+    /*
+     * The lab services resource type.
+     */
+    @JsonProperty(value = "resourceType", access = JsonProperty.Access.WRITE_ONLY)
+    private String resourceType;
+
+    /*
+     * The name of the SKU.
+     */
+    @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+    private String name;
+
+    /*
+     * The tier of the SKU.
+     */
+    @JsonProperty(value = "tier", access = JsonProperty.Access.WRITE_ONLY)
+    private LabServicesSkuTier tier;
+
+    /*
+     * The SKU size.
+     */
+    @JsonProperty(value = "size", access = JsonProperty.Access.WRITE_ONLY)
+    private String size;
+
+    /*
+     * The family of the SKU.
+     */
+    @JsonProperty(value = "family", access = JsonProperty.Access.WRITE_ONLY)
+    private String family;
+
+    /*
+     * The scale out/in options of the SKU.
+     */
+    @JsonProperty(value = "capacity")
+    private LabServicesSkuCapacity capacity;
+
+    /*
+     * The capabilities of the SKU.
+     */
+    @JsonProperty(value = "capabilities", access = JsonProperty.Access.WRITE_ONLY)
+    private List capabilities;
+
+    /*
+     * List of locations that are available for a size.
+     */
+    @JsonProperty(value = "locations", access = JsonProperty.Access.WRITE_ONLY)
+    private List locations;
+
+    /*
+     * Metadata for retrieving price info of a lab services SKUs.
+     */
+    @JsonProperty(value = "costs", access = JsonProperty.Access.WRITE_ONLY)
+    private List costs;
+
+    /*
+     * Restrictions of a lab services SKUs.
+     */
+    @JsonProperty(value = "restrictions", access = JsonProperty.Access.WRITE_ONLY)
+    private List restrictions;
+
+    /**
+     * Get the resourceType property: The lab services resource type.
+     *
+     * @return the resourceType value.
+     */
+    public String resourceType() {
+        return this.resourceType;
+    }
+
+    /**
+     * Get the name property: The name of the SKU.
+     *
+     * @return the name value.
+     */
+    public String name() {
+        return this.name;
+    }
+
+    /**
+     * Get the tier property: The tier of the SKU.
+     *
+     * @return the tier value.
+     */
+    public LabServicesSkuTier tier() {
+        return this.tier;
+    }
+
+    /**
+     * Get the size property: The SKU size.
+     *
+     * @return the size value.
+     */
+    public String size() {
+        return this.size;
+    }
+
+    /**
+     * Get the family property: The family of the SKU.
+     *
+     * @return the family value.
+     */
+    public String family() {
+        return this.family;
+    }
+
+    /**
+     * Get the capacity property: The scale out/in options of the SKU.
+     *
+     * @return the capacity value.
+     */
+    public LabServicesSkuCapacity capacity() {
+        return this.capacity;
+    }
+
+    /**
+     * Set the capacity property: The scale out/in options of the SKU.
+     *
+     * @param capacity the capacity value to set.
+     * @return the LabServicesSkuInner object itself.
+     */
+    public LabServicesSkuInner withCapacity(LabServicesSkuCapacity capacity) {
+        this.capacity = capacity;
+        return this;
+    }
+
+    /**
+     * Get the capabilities property: The capabilities of the SKU.
+     *
+     * @return the capabilities value.
+     */
+    public List capabilities() {
+        return this.capabilities;
+    }
+
+    /**
+     * Get the locations property: List of locations that are available for a size.
+     *
+     * @return the locations value.
+     */
+    public List locations() {
+        return this.locations;
+    }
+
+    /**
+     * Get the costs property: Metadata for retrieving price info of a lab services SKUs.
+     *
+     * @return the costs value.
+     */
+    public List costs() {
+        return this.costs;
+    }
+
+    /**
+     * Get the restrictions property: Restrictions of a lab services SKUs.
+     *
+     * @return the restrictions value.
+     */
+    public List restrictions() {
+        return this.restrictions;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (capacity() != null) {
+            capacity().validate();
+        }
+        if (capabilities() != null) {
+            capabilities().forEach(e -> e.validate());
+        }
+        if (costs() != null) {
+            costs().forEach(e -> e.validate());
+        }
+        if (restrictions() != null) {
+            restrictions().forEach(e -> e.validate());
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabUpdateProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabUpdateProperties.java
new file mode 100644
index 000000000000..57e9626b758a
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/LabUpdateProperties.java
@@ -0,0 +1,265 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.AutoShutdownProfile;
+import com.azure.resourcemanager.labservices.models.ConnectionProfile;
+import com.azure.resourcemanager.labservices.models.RosterProfile;
+import com.azure.resourcemanager.labservices.models.SecurityProfile;
+import com.azure.resourcemanager.labservices.models.VirtualMachineProfile;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Properties of a lab resource used for updates. */
+@Fluent
+public class LabUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(LabUpdateProperties.class);
+
+    /*
+     * The resource auto shutdown configuration for the lab. This controls
+     * whether actions are taken on resources that are sitting idle.
+     */
+    @JsonProperty(value = "autoShutdownProfile")
+    private AutoShutdownProfile autoShutdownProfile;
+
+    /*
+     * The connection profile for the lab. This controls settings such as web
+     * access to lab resources or whether RDP or SSH ports are open.
+     */
+    @JsonProperty(value = "connectionProfile")
+    private ConnectionProfile connectionProfile;
+
+    /*
+     * The profile used for creating lab virtual machines.
+     */
+    @JsonProperty(value = "virtualMachineProfile")
+    private VirtualMachineProfile virtualMachineProfile;
+
+    /*
+     * The lab security profile.
+     */
+    @JsonProperty(value = "securityProfile")
+    private SecurityProfile securityProfile;
+
+    /*
+     * The lab user list management profile.
+     */
+    @JsonProperty(value = "rosterProfile")
+    private RosterProfile rosterProfile;
+
+    /*
+     * The ID of the lab plan. Used during resource creation to provide
+     * defaults and acts as a permission container when creating a lab via
+     * labs.azure.com. Setting a labPlanId on an existing lab provides
+     * organization..
+     */
+    @JsonProperty(value = "labPlanId")
+    private String labPlanId;
+
+    /*
+     * The title of the lab.
+     */
+    @JsonProperty(value = "title")
+    private String title;
+
+    /*
+     * The description of the lab.
+     */
+    @JsonProperty(value = "description")
+    private String description;
+
+    /**
+     * Get the autoShutdownProfile property: The resource auto shutdown configuration for the lab. This controls whether
+     * actions are taken on resources that are sitting idle.
+     *
+     * @return the autoShutdownProfile value.
+     */
+    public AutoShutdownProfile autoShutdownProfile() {
+        return this.autoShutdownProfile;
+    }
+
+    /**
+     * Set the autoShutdownProfile property: The resource auto shutdown configuration for the lab. This controls whether
+     * actions are taken on resources that are sitting idle.
+     *
+     * @param autoShutdownProfile the autoShutdownProfile value to set.
+     * @return the LabUpdateProperties object itself.
+     */
+    public LabUpdateProperties withAutoShutdownProfile(AutoShutdownProfile autoShutdownProfile) {
+        this.autoShutdownProfile = autoShutdownProfile;
+        return this;
+    }
+
+    /**
+     * Get the connectionProfile property: The connection profile for the lab. This controls settings such as web access
+     * to lab resources or whether RDP or SSH ports are open.
+     *
+     * @return the connectionProfile value.
+     */
+    public ConnectionProfile connectionProfile() {
+        return this.connectionProfile;
+    }
+
+    /**
+     * Set the connectionProfile property: The connection profile for the lab. This controls settings such as web access
+     * to lab resources or whether RDP or SSH ports are open.
+     *
+     * @param connectionProfile the connectionProfile value to set.
+     * @return the LabUpdateProperties object itself.
+     */
+    public LabUpdateProperties withConnectionProfile(ConnectionProfile connectionProfile) {
+        this.connectionProfile = connectionProfile;
+        return this;
+    }
+
+    /**
+     * Get the virtualMachineProfile property: The profile used for creating lab virtual machines.
+     *
+     * @return the virtualMachineProfile value.
+     */
+    public VirtualMachineProfile virtualMachineProfile() {
+        return this.virtualMachineProfile;
+    }
+
+    /**
+     * Set the virtualMachineProfile property: The profile used for creating lab virtual machines.
+     *
+     * @param virtualMachineProfile the virtualMachineProfile value to set.
+     * @return the LabUpdateProperties object itself.
+     */
+    public LabUpdateProperties withVirtualMachineProfile(VirtualMachineProfile virtualMachineProfile) {
+        this.virtualMachineProfile = virtualMachineProfile;
+        return this;
+    }
+
+    /**
+     * Get the securityProfile property: The lab security profile.
+     *
+     * @return the securityProfile value.
+     */
+    public SecurityProfile securityProfile() {
+        return this.securityProfile;
+    }
+
+    /**
+     * Set the securityProfile property: The lab security profile.
+     *
+     * @param securityProfile the securityProfile value to set.
+     * @return the LabUpdateProperties object itself.
+     */
+    public LabUpdateProperties withSecurityProfile(SecurityProfile securityProfile) {
+        this.securityProfile = securityProfile;
+        return this;
+    }
+
+    /**
+     * Get the rosterProfile property: The lab user list management profile.
+     *
+     * @return the rosterProfile value.
+     */
+    public RosterProfile rosterProfile() {
+        return this.rosterProfile;
+    }
+
+    /**
+     * Set the rosterProfile property: The lab user list management profile.
+     *
+     * @param rosterProfile the rosterProfile value to set.
+     * @return the LabUpdateProperties object itself.
+     */
+    public LabUpdateProperties withRosterProfile(RosterProfile rosterProfile) {
+        this.rosterProfile = rosterProfile;
+        return this;
+    }
+
+    /**
+     * Get the labPlanId property: The ID of the lab plan. Used during resource creation to provide defaults and acts as
+     * a permission container when creating a lab via labs.azure.com. Setting a labPlanId on an existing lab provides
+     * organization..
+     *
+     * @return the labPlanId value.
+     */
+    public String labPlanId() {
+        return this.labPlanId;
+    }
+
+    /**
+     * Set the labPlanId property: The ID of the lab plan. Used during resource creation to provide defaults and acts as
+     * a permission container when creating a lab via labs.azure.com. Setting a labPlanId on an existing lab provides
+     * organization..
+     *
+     * @param labPlanId the labPlanId value to set.
+     * @return the LabUpdateProperties object itself.
+     */
+    public LabUpdateProperties withLabPlanId(String labPlanId) {
+        this.labPlanId = labPlanId;
+        return this;
+    }
+
+    /**
+     * Get the title property: The title of the lab.
+     *
+     * @return the title value.
+     */
+    public String title() {
+        return this.title;
+    }
+
+    /**
+     * Set the title property: The title of the lab.
+     *
+     * @param title the title value to set.
+     * @return the LabUpdateProperties object itself.
+     */
+    public LabUpdateProperties withTitle(String title) {
+        this.title = title;
+        return this;
+    }
+
+    /**
+     * Get the description property: The description of the lab.
+     *
+     * @return the description value.
+     */
+    public String description() {
+        return this.description;
+    }
+
+    /**
+     * Set the description property: The description of the lab.
+     *
+     * @param description the description value to set.
+     * @return the LabUpdateProperties object itself.
+     */
+    public LabUpdateProperties withDescription(String description) {
+        this.description = description;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (autoShutdownProfile() != null) {
+            autoShutdownProfile().validate();
+        }
+        if (connectionProfile() != null) {
+            connectionProfile().validate();
+        }
+        if (virtualMachineProfile() != null) {
+            virtualMachineProfile().validate();
+        }
+        if (securityProfile() != null) {
+            securityProfile().validate();
+        }
+        if (rosterProfile() != null) {
+            rosterProfile().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ListEnvironmentsResponseInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ListEnvironmentsResponseInner.java
deleted file mode 100644
index d3961b1e8f43..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ListEnvironmentsResponseInner.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.EnvironmentDetails;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.List;
-
-/** Represents the list of environments owned by a user. */
-@Fluent
-public final class ListEnvironmentsResponseInner {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(ListEnvironmentsResponseInner.class);
-
-    /*
-     * List of all the environments
-     */
-    @JsonProperty(value = "environments")
-    private List environments;
-
-    /**
-     * Get the environments property: List of all the environments.
-     *
-     * @return the environments value.
-     */
-    public List environments() {
-        return this.environments;
-    }
-
-    /**
-     * Set the environments property: List of all the environments.
-     *
-     * @param environments the environments value to set.
-     * @return the ListEnvironmentsResponseInner object itself.
-     */
-    public ListEnvironmentsResponseInner withEnvironments(List environments) {
-        this.environments = environments;
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (environments() != null) {
-            environments().forEach(e -> e.validate());
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ListLabsResponseInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ListLabsResponseInner.java
deleted file mode 100644
index ed1bc3a07f99..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ListLabsResponseInner.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.LabDetails;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.List;
-
-/** Lists the labs owned by a user. */
-@Fluent
-public final class ListLabsResponseInner {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(ListLabsResponseInner.class);
-
-    /*
-     * List of all the labs
-     */
-    @JsonProperty(value = "labs")
-    private List labs;
-
-    /**
-     * Get the labs property: List of all the labs.
-     *
-     * @return the labs value.
-     */
-    public List labs() {
-        return this.labs;
-    }
-
-    /**
-     * Set the labs property: List of all the labs.
-     *
-     * @param labs the labs value to set.
-     * @return the ListLabsResponseInner object itself.
-     */
-    public ListLabsResponseInner withLabs(List labs) {
-        this.labs = labs;
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (labs() != null) {
-            labs().forEach(e -> e.validate());
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationBatchStatusResponseInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationBatchStatusResponseInner.java
deleted file mode 100644
index 32ca741cf67d..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationBatchStatusResponseInner.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Immutable;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.OperationBatchStatusResponseItem;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.List;
-
-/** Status Details of the long running operation for an environment. */
-@Immutable
-public final class OperationBatchStatusResponseInner {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationBatchStatusResponseInner.class);
-
-    /*
-     * Gets a collection of items that contain the operation url and status.
-     */
-    @JsonProperty(value = "items", access = JsonProperty.Access.WRITE_ONLY)
-    private List items;
-
-    /**
-     * Get the items property: Gets a collection of items that contain the operation url and status.
-     *
-     * @return the items value.
-     */
-    public List items() {
-        return this.items;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (items() != null) {
-            items().forEach(e -> e.validate());
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationInner.java
new file mode 100644
index 000000000000..6ed316ad2457
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationInner.java
@@ -0,0 +1,125 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.ActionType;
+import com.azure.resourcemanager.labservices.models.OperationDisplay;
+import com.azure.resourcemanager.labservices.models.Origin;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** REST API Operation Details of a REST API operation, returned from the Resource Provider Operations API. */
+@Fluent
+public final class OperationInner {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationInner.class);
+
+    /*
+     * The name of the operation, as per Resource-Based Access Control (RBAC).
+     * Examples: "Microsoft.Compute/virtualMachines/write",
+     * "Microsoft.Compute/virtualMachines/capture/action"
+     */
+    @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+    private String name;
+
+    /*
+     * Whether the operation applies to data-plane. This is "true" for
+     * data-plane operations and "false" for ARM/control-plane operations.
+     */
+    @JsonProperty(value = "isDataAction", access = JsonProperty.Access.WRITE_ONLY)
+    private Boolean isDataAction;
+
+    /*
+     * Localized display information for this particular operation.
+     */
+    @JsonProperty(value = "display")
+    private OperationDisplay display;
+
+    /*
+     * The intended executor of the operation; as in Resource Based Access
+     * Control (RBAC) and audit logs UX. Default value is "user,system"
+     */
+    @JsonProperty(value = "origin", access = JsonProperty.Access.WRITE_ONLY)
+    private Origin origin;
+
+    /*
+     * Enum. Indicates the action type. "Internal" refers to actions that are
+     * for internal only APIs.
+     */
+    @JsonProperty(value = "actionType", access = JsonProperty.Access.WRITE_ONLY)
+    private ActionType actionType;
+
+    /**
+     * Get the name property: The name of the operation, as per Resource-Based Access Control (RBAC). Examples:
+     * "Microsoft.Compute/virtualMachines/write", "Microsoft.Compute/virtualMachines/capture/action".
+     *
+     * @return the name value.
+     */
+    public String name() {
+        return this.name;
+    }
+
+    /**
+     * Get the isDataAction property: Whether the operation applies to data-plane. This is "true" for data-plane
+     * operations and "false" for ARM/control-plane operations.
+     *
+     * @return the isDataAction value.
+     */
+    public Boolean isDataAction() {
+        return this.isDataAction;
+    }
+
+    /**
+     * Get the display property: Localized display information for this particular operation.
+     *
+     * @return the display value.
+     */
+    public OperationDisplay display() {
+        return this.display;
+    }
+
+    /**
+     * Set the display property: Localized display information for this particular operation.
+     *
+     * @param display the display value to set.
+     * @return the OperationInner object itself.
+     */
+    public OperationInner withDisplay(OperationDisplay display) {
+        this.display = display;
+        return this;
+    }
+
+    /**
+     * Get the origin property: The intended executor of the operation; as in Resource Based Access Control (RBAC) and
+     * audit logs UX. Default value is "user,system".
+     *
+     * @return the origin value.
+     */
+    public Origin origin() {
+        return this.origin;
+    }
+
+    /**
+     * Get the actionType property: Enum. Indicates the action type. "Internal" refers to actions that are for internal
+     * only APIs.
+     *
+     * @return the actionType value.
+     */
+    public ActionType actionType() {
+        return this.actionType;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (display() != null) {
+            display().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationMetadataInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationMetadataInner.java
deleted file mode 100644
index 2e15ebffd10c..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationMetadataInner.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Fluent;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.OperationMetadataDisplay;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/** The REST API operation supported by ManagedLab ResourceProvider. */
-@Fluent
-public final class OperationMetadataInner {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationMetadataInner.class);
-
-    /*
-     * Operation name: {provider}/{resource}/{operation}
-     */
-    @JsonProperty(value = "name")
-    private String name;
-
-    /*
-     * The object that describes the operations
-     */
-    @JsonProperty(value = "display")
-    private OperationMetadataDisplay display;
-
-    /**
-     * Get the name property: Operation name: {provider}/{resource}/{operation}.
-     *
-     * @return the name value.
-     */
-    public String name() {
-        return this.name;
-    }
-
-    /**
-     * Set the name property: Operation name: {provider}/{resource}/{operation}.
-     *
-     * @param name the name value to set.
-     * @return the OperationMetadataInner object itself.
-     */
-    public OperationMetadataInner withName(String name) {
-        this.name = name;
-        return this;
-    }
-
-    /**
-     * Get the display property: The object that describes the operations.
-     *
-     * @return the display value.
-     */
-    public OperationMetadataDisplay display() {
-        return this.display;
-    }
-
-    /**
-     * Set the display property: The object that describes the operations.
-     *
-     * @param display the display value to set.
-     * @return the OperationMetadataInner object itself.
-     */
-    public OperationMetadataInner withDisplay(OperationMetadataDisplay display) {
-        this.display = display;
-        return this;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-        if (display() != null) {
-            display().validate();
-        }
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationResultInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationResultInner.java
index 7041c69f0052..f87735fbf465 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationResultInner.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationResultInner.java
@@ -5,34 +5,86 @@
 package com.azure.resourcemanager.labservices.fluent.models;
 
 import com.azure.core.annotation.Fluent;
+import com.azure.core.management.exception.ManagementError;
 import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.OperationError;
+import com.azure.resourcemanager.labservices.models.OperationStatus;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
 
-/** An Operation Result. */
+/** A long running operation result. */
 @Fluent
 public final class OperationResultInner {
     @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationResultInner.class);
 
     /*
-     * The operation status.
+     * Fully qualified resource ID for the resource. Ex -
+     * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
      */
-    @JsonProperty(value = "status")
-    private String status;
+    @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY)
+    private String id;
 
     /*
-     * Error details for the operation in case of a failure.
+     * The name of the resource
+     */
+    @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+    private String name;
+
+    /*
+     * The operation status
+     */
+    @JsonProperty(value = "status", required = true)
+    private OperationStatus status;
+
+    /*
+     * Start time
+     */
+    @JsonProperty(value = "startTime")
+    private OffsetDateTime startTime;
+
+    /*
+     * End time
+     */
+    @JsonProperty(value = "endTime")
+    private OffsetDateTime endTime;
+
+    /*
+     * Percent completion
+     */
+    @JsonProperty(value = "percentComplete")
+    private Float percentComplete;
+
+    /*
+     * The error for a failure if the operation failed.
      */
     @JsonProperty(value = "error")
-    private OperationError error;
+    private ManagementError error;
+
+    /**
+     * Get the id property: Fully qualified resource ID for the resource. Ex -
+     * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+     *
+     * @return the id value.
+     */
+    public String id() {
+        return this.id;
+    }
+
+    /**
+     * Get the name property: The name of the resource.
+     *
+     * @return the name value.
+     */
+    public String name() {
+        return this.name;
+    }
 
     /**
      * Get the status property: The operation status.
      *
      * @return the status value.
      */
-    public String status() {
+    public OperationStatus status() {
         return this.status;
     }
 
@@ -42,27 +94,87 @@ public String status() {
      * @param status the status value to set.
      * @return the OperationResultInner object itself.
      */
-    public OperationResultInner withStatus(String status) {
+    public OperationResultInner withStatus(OperationStatus status) {
         this.status = status;
         return this;
     }
 
     /**
-     * Get the error property: Error details for the operation in case of a failure.
+     * Get the startTime property: Start time.
+     *
+     * @return the startTime value.
+     */
+    public OffsetDateTime startTime() {
+        return this.startTime;
+    }
+
+    /**
+     * Set the startTime property: Start time.
+     *
+     * @param startTime the startTime value to set.
+     * @return the OperationResultInner object itself.
+     */
+    public OperationResultInner withStartTime(OffsetDateTime startTime) {
+        this.startTime = startTime;
+        return this;
+    }
+
+    /**
+     * Get the endTime property: End time.
+     *
+     * @return the endTime value.
+     */
+    public OffsetDateTime endTime() {
+        return this.endTime;
+    }
+
+    /**
+     * Set the endTime property: End time.
+     *
+     * @param endTime the endTime value to set.
+     * @return the OperationResultInner object itself.
+     */
+    public OperationResultInner withEndTime(OffsetDateTime endTime) {
+        this.endTime = endTime;
+        return this;
+    }
+
+    /**
+     * Get the percentComplete property: Percent completion.
+     *
+     * @return the percentComplete value.
+     */
+    public Float percentComplete() {
+        return this.percentComplete;
+    }
+
+    /**
+     * Set the percentComplete property: Percent completion.
+     *
+     * @param percentComplete the percentComplete value to set.
+     * @return the OperationResultInner object itself.
+     */
+    public OperationResultInner withPercentComplete(Float percentComplete) {
+        this.percentComplete = percentComplete;
+        return this;
+    }
+
+    /**
+     * Get the error property: The error for a failure if the operation failed.
      *
      * @return the error value.
      */
-    public OperationError error() {
+    public ManagementError error() {
         return this.error;
     }
 
     /**
-     * Set the error property: Error details for the operation in case of a failure.
+     * Set the error property: The error for a failure if the operation failed.
      *
      * @param error the error value to set.
      * @return the OperationResultInner object itself.
      */
-    public OperationResultInner withError(OperationError error) {
+    public OperationResultInner withError(ManagementError error) {
         this.error = error;
         return this;
     }
@@ -73,8 +185,10 @@ public OperationResultInner withError(OperationError error) {
      * @throws IllegalArgumentException thrown if the instance is not valid.
      */
     public void validate() {
-        if (error() != null) {
-            error().validate();
+        if (status() == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException("Missing required property status in model OperationResultInner"));
         }
     }
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationStatusResponseInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationStatusResponseInner.java
deleted file mode 100644
index 92c298cb2704..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/OperationStatusResponseInner.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.fluent.models;
-
-import com.azure.core.annotation.Immutable;
-import com.azure.core.util.logging.ClientLogger;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/** Status Details of the long running operation for an environment. */
-@Immutable
-public final class OperationStatusResponseInner {
-    @JsonIgnore private final ClientLogger logger = new ClientLogger(OperationStatusResponseInner.class);
-
-    /*
-     * status of the long running operation for an environment
-     */
-    @JsonProperty(value = "status", access = JsonProperty.Access.WRITE_ONLY)
-    private String status;
-
-    /**
-     * Get the status property: status of the long running operation for an environment.
-     *
-     * @return the status value.
-     */
-    public String status() {
-        return this.status;
-    }
-
-    /**
-     * Validates the instance.
-     *
-     * @throws IllegalArgumentException thrown if the instance is not valid.
-     */
-    public void validate() {
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleInner.java
new file mode 100644
index 000000000000..343df0cfd305
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleInner.java
@@ -0,0 +1,194 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.management.SystemData;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.RecurrencePattern;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** Schedule for automatically turning virtual machines in a lab on and off at specified times. */
+@Fluent
+public final class ScheduleInner extends ProxyResource {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(ScheduleInner.class);
+
+    /*
+     * Metadata pertaining to creation and last modification of the schedule.
+     */
+    @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+    private SystemData systemData;
+
+    /*
+     * Schedule resource properties
+     */
+    @JsonProperty(value = "properties", required = true)
+    private ScheduleProperties innerProperties = new ScheduleProperties();
+
+    /**
+     * Get the systemData property: Metadata pertaining to creation and last modification of the schedule.
+     *
+     * @return the systemData value.
+     */
+    public SystemData systemData() {
+        return this.systemData;
+    }
+
+    /**
+     * Get the innerProperties property: Schedule resource properties.
+     *
+     * @return the innerProperties value.
+     */
+    private ScheduleProperties innerProperties() {
+        return this.innerProperties;
+    }
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the schedule.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+    }
+
+    /**
+     * Get the startAt property: When lab user virtual machines will be started. Timestamp offsets will be ignored and
+     * timeZoneId is used instead.
+     *
+     * @return the startAt value.
+     */
+    public OffsetDateTime startAt() {
+        return this.innerProperties() == null ? null : this.innerProperties().startAt();
+    }
+
+    /**
+     * Set the startAt property: When lab user virtual machines will be started. Timestamp offsets will be ignored and
+     * timeZoneId is used instead.
+     *
+     * @param startAt the startAt value to set.
+     * @return the ScheduleInner object itself.
+     */
+    public ScheduleInner withStartAt(OffsetDateTime startAt) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new ScheduleProperties();
+        }
+        this.innerProperties().withStartAt(startAt);
+        return this;
+    }
+
+    /**
+     * Get the stopAt property: When lab user virtual machines will be stopped. Timestamp offsets will be ignored and
+     * timeZoneId is used instead.
+     *
+     * @return the stopAt value.
+     */
+    public OffsetDateTime stopAt() {
+        return this.innerProperties() == null ? null : this.innerProperties().stopAt();
+    }
+
+    /**
+     * Set the stopAt property: When lab user virtual machines will be stopped. Timestamp offsets will be ignored and
+     * timeZoneId is used instead.
+     *
+     * @param stopAt the stopAt value to set.
+     * @return the ScheduleInner object itself.
+     */
+    public ScheduleInner withStopAt(OffsetDateTime stopAt) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new ScheduleProperties();
+        }
+        this.innerProperties().withStopAt(stopAt);
+        return this;
+    }
+
+    /**
+     * Get the recurrencePattern property: The recurrence pattern of the scheduled actions.
+     *
+     * @return the recurrencePattern value.
+     */
+    public RecurrencePattern recurrencePattern() {
+        return this.innerProperties() == null ? null : this.innerProperties().recurrencePattern();
+    }
+
+    /**
+     * Set the recurrencePattern property: The recurrence pattern of the scheduled actions.
+     *
+     * @param recurrencePattern the recurrencePattern value to set.
+     * @return the ScheduleInner object itself.
+     */
+    public ScheduleInner withRecurrencePattern(RecurrencePattern recurrencePattern) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new ScheduleProperties();
+        }
+        this.innerProperties().withRecurrencePattern(recurrencePattern);
+        return this;
+    }
+
+    /**
+     * Get the timeZoneId property: The IANA timezone id for the schedule.
+     *
+     * @return the timeZoneId value.
+     */
+    public String timeZoneId() {
+        return this.innerProperties() == null ? null : this.innerProperties().timeZoneId();
+    }
+
+    /**
+     * Set the timeZoneId property: The IANA timezone id for the schedule.
+     *
+     * @param timeZoneId the timeZoneId value to set.
+     * @return the ScheduleInner object itself.
+     */
+    public ScheduleInner withTimeZoneId(String timeZoneId) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new ScheduleProperties();
+        }
+        this.innerProperties().withTimeZoneId(timeZoneId);
+        return this;
+    }
+
+    /**
+     * Get the notes property: Notes for this schedule.
+     *
+     * @return the notes value.
+     */
+    public String notes() {
+        return this.innerProperties() == null ? null : this.innerProperties().notes();
+    }
+
+    /**
+     * Set the notes property: Notes for this schedule.
+     *
+     * @param notes the notes value to set.
+     * @return the ScheduleInner object itself.
+     */
+    public ScheduleInner withNotes(String notes) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new ScheduleProperties();
+        }
+        this.innerProperties().withNotes(notes);
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (innerProperties() == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException("Missing required property innerProperties in model ScheduleInner"));
+        } else {
+            innerProperties().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleProperties.java
new file mode 100644
index 000000000000..2768dd30887e
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleProperties.java
@@ -0,0 +1,79 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.RecurrencePattern;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** Schedule resource properties. */
+@Fluent
+public final class ScheduleProperties extends ScheduleUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(ScheduleProperties.class);
+
+    /*
+     * Current provisioning state of the schedule.
+     */
+    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+    private ProvisioningState provisioningState;
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the schedule.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.provisioningState;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ScheduleProperties withStartAt(OffsetDateTime startAt) {
+        super.withStartAt(startAt);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ScheduleProperties withStopAt(OffsetDateTime stopAt) {
+        super.withStopAt(stopAt);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ScheduleProperties withRecurrencePattern(RecurrencePattern recurrencePattern) {
+        super.withRecurrencePattern(recurrencePattern);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ScheduleProperties withTimeZoneId(String timeZoneId) {
+        super.withTimeZoneId(timeZoneId);
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ScheduleProperties withNotes(String notes) {
+        super.withNotes(notes);
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    @Override
+    public void validate() {
+        super.validate();
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleUpdateProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleUpdateProperties.java
new file mode 100644
index 000000000000..a992a75361c8
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/ScheduleUpdateProperties.java
@@ -0,0 +1,165 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.RecurrencePattern;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.OffsetDateTime;
+
+/** Schedule resource properties used for updates. */
+@Fluent
+public class ScheduleUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(ScheduleUpdateProperties.class);
+
+    /*
+     * When lab user virtual machines will be started. Timestamp offsets will
+     * be ignored and timeZoneId is used instead.
+     */
+    @JsonProperty(value = "startAt")
+    private OffsetDateTime startAt;
+
+    /*
+     * When lab user virtual machines will be stopped. Timestamp offsets will
+     * be ignored and timeZoneId is used instead.
+     */
+    @JsonProperty(value = "stopAt")
+    private OffsetDateTime stopAt;
+
+    /*
+     * The recurrence pattern of the scheduled actions.
+     */
+    @JsonProperty(value = "recurrencePattern")
+    private RecurrencePattern recurrencePattern;
+
+    /*
+     * The IANA timezone id for the schedule.
+     */
+    @JsonProperty(value = "timeZoneId")
+    private String timeZoneId;
+
+    /*
+     * Notes for this schedule.
+     */
+    @JsonProperty(value = "notes")
+    private String notes;
+
+    /**
+     * Get the startAt property: When lab user virtual machines will be started. Timestamp offsets will be ignored and
+     * timeZoneId is used instead.
+     *
+     * @return the startAt value.
+     */
+    public OffsetDateTime startAt() {
+        return this.startAt;
+    }
+
+    /**
+     * Set the startAt property: When lab user virtual machines will be started. Timestamp offsets will be ignored and
+     * timeZoneId is used instead.
+     *
+     * @param startAt the startAt value to set.
+     * @return the ScheduleUpdateProperties object itself.
+     */
+    public ScheduleUpdateProperties withStartAt(OffsetDateTime startAt) {
+        this.startAt = startAt;
+        return this;
+    }
+
+    /**
+     * Get the stopAt property: When lab user virtual machines will be stopped. Timestamp offsets will be ignored and
+     * timeZoneId is used instead.
+     *
+     * @return the stopAt value.
+     */
+    public OffsetDateTime stopAt() {
+        return this.stopAt;
+    }
+
+    /**
+     * Set the stopAt property: When lab user virtual machines will be stopped. Timestamp offsets will be ignored and
+     * timeZoneId is used instead.
+     *
+     * @param stopAt the stopAt value to set.
+     * @return the ScheduleUpdateProperties object itself.
+     */
+    public ScheduleUpdateProperties withStopAt(OffsetDateTime stopAt) {
+        this.stopAt = stopAt;
+        return this;
+    }
+
+    /**
+     * Get the recurrencePattern property: The recurrence pattern of the scheduled actions.
+     *
+     * @return the recurrencePattern value.
+     */
+    public RecurrencePattern recurrencePattern() {
+        return this.recurrencePattern;
+    }
+
+    /**
+     * Set the recurrencePattern property: The recurrence pattern of the scheduled actions.
+     *
+     * @param recurrencePattern the recurrencePattern value to set.
+     * @return the ScheduleUpdateProperties object itself.
+     */
+    public ScheduleUpdateProperties withRecurrencePattern(RecurrencePattern recurrencePattern) {
+        this.recurrencePattern = recurrencePattern;
+        return this;
+    }
+
+    /**
+     * Get the timeZoneId property: The IANA timezone id for the schedule.
+     *
+     * @return the timeZoneId value.
+     */
+    public String timeZoneId() {
+        return this.timeZoneId;
+    }
+
+    /**
+     * Set the timeZoneId property: The IANA timezone id for the schedule.
+     *
+     * @param timeZoneId the timeZoneId value to set.
+     * @return the ScheduleUpdateProperties object itself.
+     */
+    public ScheduleUpdateProperties withTimeZoneId(String timeZoneId) {
+        this.timeZoneId = timeZoneId;
+        return this;
+    }
+
+    /**
+     * Get the notes property: Notes for this schedule.
+     *
+     * @return the notes value.
+     */
+    public String notes() {
+        return this.notes;
+    }
+
+    /**
+     * Set the notes property: Notes for this schedule.
+     *
+     * @param notes the notes value to set.
+     * @return the ScheduleUpdateProperties object itself.
+     */
+    public ScheduleUpdateProperties withNotes(String notes) {
+        this.notes = notes;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (recurrencePattern() != null) {
+            recurrencePattern().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UsageInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UsageInner.java
new file mode 100644
index 000000000000..e7894554ae57
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UsageInner.java
@@ -0,0 +1,159 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.UsageName;
+import com.azure.resourcemanager.labservices.models.UsageUnit;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** The core usage details. */
+@Fluent
+public final class UsageInner {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UsageInner.class);
+
+    /*
+     * The current usage.
+     */
+    @JsonProperty(value = "currentValue")
+    private Long currentValue;
+
+    /*
+     * The limit integer.
+     */
+    @JsonProperty(value = "limit")
+    private Long limit;
+
+    /*
+     * The unit details.
+     */
+    @JsonProperty(value = "unit")
+    private UsageUnit unit;
+
+    /*
+     * The name.
+     */
+    @JsonProperty(value = "name")
+    private UsageName name;
+
+    /*
+     * The fully qualified arm resource id.
+     */
+    @JsonProperty(value = "id")
+    private String id;
+
+    /**
+     * Get the currentValue property: The current usage.
+     *
+     * @return the currentValue value.
+     */
+    public Long currentValue() {
+        return this.currentValue;
+    }
+
+    /**
+     * Set the currentValue property: The current usage.
+     *
+     * @param currentValue the currentValue value to set.
+     * @return the UsageInner object itself.
+     */
+    public UsageInner withCurrentValue(Long currentValue) {
+        this.currentValue = currentValue;
+        return this;
+    }
+
+    /**
+     * Get the limit property: The limit integer.
+     *
+     * @return the limit value.
+     */
+    public Long limit() {
+        return this.limit;
+    }
+
+    /**
+     * Set the limit property: The limit integer.
+     *
+     * @param limit the limit value to set.
+     * @return the UsageInner object itself.
+     */
+    public UsageInner withLimit(Long limit) {
+        this.limit = limit;
+        return this;
+    }
+
+    /**
+     * Get the unit property: The unit details.
+     *
+     * @return the unit value.
+     */
+    public UsageUnit unit() {
+        return this.unit;
+    }
+
+    /**
+     * Set the unit property: The unit details.
+     *
+     * @param unit the unit value to set.
+     * @return the UsageInner object itself.
+     */
+    public UsageInner withUnit(UsageUnit unit) {
+        this.unit = unit;
+        return this;
+    }
+
+    /**
+     * Get the name property: The name.
+     *
+     * @return the name value.
+     */
+    public UsageName name() {
+        return this.name;
+    }
+
+    /**
+     * Set the name property: The name.
+     *
+     * @param name the name value to set.
+     * @return the UsageInner object itself.
+     */
+    public UsageInner withName(UsageName name) {
+        this.name = name;
+        return this;
+    }
+
+    /**
+     * Get the id property: The fully qualified arm resource id.
+     *
+     * @return the id value.
+     */
+    public String id() {
+        return this.id;
+    }
+
+    /**
+     * Set the id property: The fully qualified arm resource id.
+     *
+     * @param id the id value to set.
+     * @return the UsageInner object itself.
+     */
+    public UsageInner withId(String id) {
+        this.id = id;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (name() != null) {
+            name().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserInner.java
index 6465c52bcfbb..9322e780b732 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserInner.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserInner.java
@@ -5,174 +5,152 @@
 package com.azure.resourcemanager.labservices.fluent.models;
 
 import com.azure.core.annotation.Fluent;
-import com.azure.core.annotation.JsonFlatten;
-import com.azure.core.management.Resource;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.management.SystemData;
 import com.azure.core.util.logging.ClientLogger;
-import com.azure.resourcemanager.labservices.models.LatestOperationResult;
+import com.azure.resourcemanager.labservices.models.InvitationState;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.RegistrationState;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import java.time.Duration;
-import java.util.Map;
+import java.time.OffsetDateTime;
 
-/** The User registered to a lab. */
-@JsonFlatten
+/** User of a lab that can register for and use virtual machines within the lab. */
 @Fluent
-public class UserInner extends Resource {
+public final class UserInner extends ProxyResource {
     @JsonIgnore private final ClientLogger logger = new ClientLogger(UserInner.class);
 
     /*
-     * The user email address, as it was specified during registration.
+     * Metadata pertaining to creation and last modification of the user
+     * resource.
      */
-    @JsonProperty(value = "properties.email", access = JsonProperty.Access.WRITE_ONLY)
-    private String email;
+    @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+    private SystemData systemData;
 
     /*
-     * The user family name, as it was specified during registration.
+     * User resource properties
      */
-    @JsonProperty(value = "properties.familyName", access = JsonProperty.Access.WRITE_ONLY)
-    private String familyName;
-
-    /*
-     * The user given name, as it was specified during registration.
-     */
-    @JsonProperty(value = "properties.givenName", access = JsonProperty.Access.WRITE_ONLY)
-    private String givenName;
-
-    /*
-     * The user tenant ID, as it was specified during registration.
-     */
-    @JsonProperty(value = "properties.tenantId", access = JsonProperty.Access.WRITE_ONLY)
-    private String tenantId;
-
-    /*
-     * How long the user has used his VMs in this lab
-     */
-    @JsonProperty(value = "properties.totalUsage", access = JsonProperty.Access.WRITE_ONLY)
-    private Duration totalUsage;
-
-    /*
-     * The provisioning status of the resource.
-     */
-    @JsonProperty(value = "properties.provisioningState")
-    private String provisioningState;
-
-    /*
-     * The unique immutable identifier of a resource (Guid).
-     */
-    @JsonProperty(value = "properties.uniqueIdentifier")
-    private String uniqueIdentifier;
-
-    /*
-     * The details of the latest operation. ex: status, error
-     */
-    @JsonProperty(value = "properties.latestOperationResult", access = JsonProperty.Access.WRITE_ONLY)
-    private LatestOperationResult latestOperationResult;
+    @JsonProperty(value = "properties", required = true)
+    private UserProperties innerProperties = new UserProperties();
 
     /**
-     * Get the email property: The user email address, as it was specified during registration.
+     * Get the systemData property: Metadata pertaining to creation and last modification of the user resource.
      *
-     * @return the email value.
+     * @return the systemData value.
      */
-    public String email() {
-        return this.email;
+    public SystemData systemData() {
+        return this.systemData;
     }
 
     /**
-     * Get the familyName property: The user family name, as it was specified during registration.
+     * Get the innerProperties property: User resource properties.
      *
-     * @return the familyName value.
+     * @return the innerProperties value.
      */
-    public String familyName() {
-        return this.familyName;
+    private UserProperties innerProperties() {
+        return this.innerProperties;
     }
 
     /**
-     * Get the givenName property: The user given name, as it was specified during registration.
+     * Get the provisioningState property: Current provisioning state of the user resource.
      *
-     * @return the givenName value.
+     * @return the provisioningState value.
      */
-    public String givenName() {
-        return this.givenName;
+    public ProvisioningState provisioningState() {
+        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
     }
 
     /**
-     * Get the tenantId property: The user tenant ID, as it was specified during registration.
+     * Get the displayName property: Display name of the user, for example user's full name.
      *
-     * @return the tenantId value.
+     * @return the displayName value.
      */
-    public String tenantId() {
-        return this.tenantId;
+    public String displayName() {
+        return this.innerProperties() == null ? null : this.innerProperties().displayName();
     }
 
     /**
-     * Get the totalUsage property: How long the user has used his VMs in this lab.
+     * Get the email property: Email address of the user.
      *
-     * @return the totalUsage value.
+     * @return the email value.
      */
-    public Duration totalUsage() {
-        return this.totalUsage;
+    public String email() {
+        return this.innerProperties() == null ? null : this.innerProperties().email();
     }
 
     /**
-     * Get the provisioningState property: The provisioning status of the resource.
+     * Set the email property: Email address of the user.
      *
-     * @return the provisioningState value.
+     * @param email the email value to set.
+     * @return the UserInner object itself.
      */
-    public String provisioningState() {
-        return this.provisioningState;
+    public UserInner withEmail(String email) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new UserProperties();
+        }
+        this.innerProperties().withEmail(email);
+        return this;
     }
 
     /**
-     * Set the provisioningState property: The provisioning status of the resource.
+     * Get the registrationState property: State of the user's registration within the lab.
      *
-     * @param provisioningState the provisioningState value to set.
-     * @return the UserInner object itself.
+     * @return the registrationState value.
      */
-    public UserInner withProvisioningState(String provisioningState) {
-        this.provisioningState = provisioningState;
-        return this;
+    public RegistrationState registrationState() {
+        return this.innerProperties() == null ? null : this.innerProperties().registrationState();
     }
 
     /**
-     * Get the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+     * Get the invitationState property: State of the invitation message for the user.
      *
-     * @return the uniqueIdentifier value.
+     * @return the invitationState value.
      */
-    public String uniqueIdentifier() {
-        return this.uniqueIdentifier;
+    public InvitationState invitationState() {
+        return this.innerProperties() == null ? null : this.innerProperties().invitationState();
     }
 
     /**
-     * Set the uniqueIdentifier property: The unique immutable identifier of a resource (Guid).
+     * Get the invitationSent property: Date and time when the invitation message was sent to the user.
      *
-     * @param uniqueIdentifier the uniqueIdentifier value to set.
-     * @return the UserInner object itself.
+     * @return the invitationSent value.
      */
-    public UserInner withUniqueIdentifier(String uniqueIdentifier) {
-        this.uniqueIdentifier = uniqueIdentifier;
-        return this;
+    public OffsetDateTime invitationSent() {
+        return this.innerProperties() == null ? null : this.innerProperties().invitationSent();
     }
 
     /**
-     * Get the latestOperationResult property: The details of the latest operation. ex: status, error.
+     * Get the totalUsage property: How long the user has used their virtual machines in this lab.
      *
-     * @return the latestOperationResult value.
+     * @return the totalUsage value.
      */
-    public LatestOperationResult latestOperationResult() {
-        return this.latestOperationResult;
+    public Duration totalUsage() {
+        return this.innerProperties() == null ? null : this.innerProperties().totalUsage();
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public UserInner withLocation(String location) {
-        super.withLocation(location);
-        return this;
+    /**
+     * Get the additionalUsageQuota property: The amount of usage quota time the user gets in addition to the lab usage
+     * quota.
+     *
+     * @return the additionalUsageQuota value.
+     */
+    public Duration additionalUsageQuota() {
+        return this.innerProperties() == null ? null : this.innerProperties().additionalUsageQuota();
     }
 
-    /** {@inheritDoc} */
-    @Override
-    public UserInner withTags(Map tags) {
-        super.withTags(tags);
+    /**
+     * Set the additionalUsageQuota property: The amount of usage quota time the user gets in addition to the lab usage
+     * quota.
+     *
+     * @param additionalUsageQuota the additionalUsageQuota value to set.
+     * @return the UserInner object itself.
+     */
+    public UserInner withAdditionalUsageQuota(Duration additionalUsageQuota) {
+        if (this.innerProperties() == null) {
+            this.innerProperties = new UserProperties();
+        }
+        this.innerProperties().withAdditionalUsageQuota(additionalUsageQuota);
         return this;
     }
 
@@ -182,8 +160,12 @@ public UserInner withTags(Map tags) {
      * @throws IllegalArgumentException thrown if the instance is not valid.
      */
     public void validate() {
-        if (latestOperationResult() != null) {
-            latestOperationResult().validate();
+        if (innerProperties() == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException("Missing required property innerProperties in model UserInner"));
+        } else {
+            innerProperties().validate();
         }
     }
 }
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserProperties.java
new file mode 100644
index 000000000000..47c2601fe706
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserProperties.java
@@ -0,0 +1,159 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.InvitationState;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.RegistrationState;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.Duration;
+import java.time.OffsetDateTime;
+
+/** User resource properties. */
+@Fluent
+public final class UserProperties extends UserUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UserProperties.class);
+
+    /*
+     * Current provisioning state of the user resource.
+     */
+    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+    private ProvisioningState provisioningState;
+
+    /*
+     * Display name of the user, for example user's full name.
+     */
+    @JsonProperty(value = "displayName", access = JsonProperty.Access.WRITE_ONLY)
+    private String displayName;
+
+    /*
+     * Email address of the user.
+     */
+    @JsonProperty(value = "email", required = true)
+    private String email;
+
+    /*
+     * State of the user's registration within the lab.
+     */
+    @JsonProperty(value = "registrationState", access = JsonProperty.Access.WRITE_ONLY)
+    private RegistrationState registrationState;
+
+    /*
+     * State of the invitation message for the user.
+     */
+    @JsonProperty(value = "invitationState", access = JsonProperty.Access.WRITE_ONLY)
+    private InvitationState invitationState;
+
+    /*
+     * Date and time when the invitation message was sent to the user.
+     */
+    @JsonProperty(value = "invitationSent", access = JsonProperty.Access.WRITE_ONLY)
+    private OffsetDateTime invitationSent;
+
+    /*
+     * How long the user has used their virtual machines in this lab.
+     */
+    @JsonProperty(value = "totalUsage", access = JsonProperty.Access.WRITE_ONLY)
+    private Duration totalUsage;
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the user resource.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.provisioningState;
+    }
+
+    /**
+     * Get the displayName property: Display name of the user, for example user's full name.
+     *
+     * @return the displayName value.
+     */
+    public String displayName() {
+        return this.displayName;
+    }
+
+    /**
+     * Get the email property: Email address of the user.
+     *
+     * @return the email value.
+     */
+    public String email() {
+        return this.email;
+    }
+
+    /**
+     * Set the email property: Email address of the user.
+     *
+     * @param email the email value to set.
+     * @return the UserProperties object itself.
+     */
+    public UserProperties withEmail(String email) {
+        this.email = email;
+        return this;
+    }
+
+    /**
+     * Get the registrationState property: State of the user's registration within the lab.
+     *
+     * @return the registrationState value.
+     */
+    public RegistrationState registrationState() {
+        return this.registrationState;
+    }
+
+    /**
+     * Get the invitationState property: State of the invitation message for the user.
+     *
+     * @return the invitationState value.
+     */
+    public InvitationState invitationState() {
+        return this.invitationState;
+    }
+
+    /**
+     * Get the invitationSent property: Date and time when the invitation message was sent to the user.
+     *
+     * @return the invitationSent value.
+     */
+    public OffsetDateTime invitationSent() {
+        return this.invitationSent;
+    }
+
+    /**
+     * Get the totalUsage property: How long the user has used their virtual machines in this lab.
+     *
+     * @return the totalUsage value.
+     */
+    public Duration totalUsage() {
+        return this.totalUsage;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public UserProperties withAdditionalUsageQuota(Duration additionalUsageQuota) {
+        super.withAdditionalUsageQuota(additionalUsageQuota);
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    @Override
+    public void validate() {
+        super.validate();
+        if (email() == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException("Missing required property email in model UserProperties"));
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserUpdateProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserUpdateProperties.java
new file mode 100644
index 000000000000..e28da807e534
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/UserUpdateProperties.java
@@ -0,0 +1,54 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.util.logging.ClientLogger;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.Duration;
+
+/** User resource properties used for updates. */
+@Fluent
+public class UserUpdateProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(UserUpdateProperties.class);
+
+    /*
+     * The amount of usage quota time the user gets in addition to the lab
+     * usage quota.
+     */
+    @JsonProperty(value = "additionalUsageQuota")
+    private Duration additionalUsageQuota;
+
+    /**
+     * Get the additionalUsageQuota property: The amount of usage quota time the user gets in addition to the lab usage
+     * quota.
+     *
+     * @return the additionalUsageQuota value.
+     */
+    public Duration additionalUsageQuota() {
+        return this.additionalUsageQuota;
+    }
+
+    /**
+     * Set the additionalUsageQuota property: The amount of usage quota time the user gets in addition to the lab usage
+     * quota.
+     *
+     * @param additionalUsageQuota the additionalUsageQuota value to set.
+     * @return the UserUpdateProperties object itself.
+     */
+    public UserUpdateProperties withAdditionalUsageQuota(Duration additionalUsageQuota) {
+        this.additionalUsageQuota = additionalUsageQuota;
+        return this;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/VirtualMachineInner.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/VirtualMachineInner.java
new file mode 100644
index 000000000000..0ed584eb0d88
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/VirtualMachineInner.java
@@ -0,0 +1,113 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Fluent;
+import com.azure.core.management.ProxyResource;
+import com.azure.core.management.SystemData;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.VirtualMachineConnectionProfile;
+import com.azure.resourcemanager.labservices.models.VirtualMachineState;
+import com.azure.resourcemanager.labservices.models.VirtualMachineType;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** A lab virtual machine resource. */
+@Fluent
+public final class VirtualMachineInner extends ProxyResource {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(VirtualMachineInner.class);
+
+    /*
+     * System data of the Lab virtual machine.
+     */
+    @JsonProperty(value = "systemData", access = JsonProperty.Access.WRITE_ONLY)
+    private SystemData systemData;
+
+    /*
+     * Virtual machine resource properties
+     */
+    @JsonProperty(value = "properties", required = true)
+    private VirtualMachineProperties innerProperties = new VirtualMachineProperties();
+
+    /**
+     * Get the systemData property: System data of the Lab virtual machine.
+     *
+     * @return the systemData value.
+     */
+    public SystemData systemData() {
+        return this.systemData;
+    }
+
+    /**
+     * Get the innerProperties property: Virtual machine resource properties.
+     *
+     * @return the innerProperties value.
+     */
+    private VirtualMachineProperties innerProperties() {
+        return this.innerProperties;
+    }
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the virtual machine.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
+    }
+
+    /**
+     * Get the state property: The current state of the virtual machine.
+     *
+     * @return the state value.
+     */
+    public VirtualMachineState state() {
+        return this.innerProperties() == null ? null : this.innerProperties().state();
+    }
+
+    /**
+     * Get the connectionProfile property: Profile for information about connecting to the virtual machine.
+     *
+     * @return the connectionProfile value.
+     */
+    public VirtualMachineConnectionProfile connectionProfile() {
+        return this.innerProperties() == null ? null : this.innerProperties().connectionProfile();
+    }
+
+    /**
+     * Get the claimedByUserId property: The lab user ID (not the PUID!) of who claimed the virtual machine.
+     *
+     * @return the claimedByUserId value.
+     */
+    public String claimedByUserId() {
+        return this.innerProperties() == null ? null : this.innerProperties().claimedByUserId();
+    }
+
+    /**
+     * Get the vmType property: The type of this VM resource.
+     *
+     * @return the vmType value.
+     */
+    public VirtualMachineType vmType() {
+        return this.innerProperties() == null ? null : this.innerProperties().vmType();
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (innerProperties() == null) {
+            throw logger
+                .logExceptionAsError(
+                    new IllegalArgumentException(
+                        "Missing required property innerProperties in model VirtualMachineInner"));
+        } else {
+            innerProperties().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/VirtualMachineProperties.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/VirtualMachineProperties.java
new file mode 100644
index 000000000000..c932bf475361
--- /dev/null
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/VirtualMachineProperties.java
@@ -0,0 +1,106 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+// Code generated by Microsoft (R) AutoRest Code Generator.
+
+package com.azure.resourcemanager.labservices.fluent.models;
+
+import com.azure.core.annotation.Immutable;
+import com.azure.core.util.logging.ClientLogger;
+import com.azure.resourcemanager.labservices.models.ProvisioningState;
+import com.azure.resourcemanager.labservices.models.VirtualMachineConnectionProfile;
+import com.azure.resourcemanager.labservices.models.VirtualMachineState;
+import com.azure.resourcemanager.labservices.models.VirtualMachineType;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/** Virtual machine resource properties. */
+@Immutable
+public final class VirtualMachineProperties {
+    @JsonIgnore private final ClientLogger logger = new ClientLogger(VirtualMachineProperties.class);
+
+    /*
+     * Current provisioning state of the virtual machine.
+     */
+    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+    private ProvisioningState provisioningState;
+
+    /*
+     * The current state of the virtual machine
+     */
+    @JsonProperty(value = "state", access = JsonProperty.Access.WRITE_ONLY)
+    private VirtualMachineState state;
+
+    /*
+     * Profile for information about connecting to the virtual machine.
+     */
+    @JsonProperty(value = "connectionProfile", access = JsonProperty.Access.WRITE_ONLY)
+    private VirtualMachineConnectionProfile connectionProfile;
+
+    /*
+     * The lab user ID (not the PUID!) of who claimed the virtual machine.
+     */
+    @JsonProperty(value = "claimedByUserId", access = JsonProperty.Access.WRITE_ONLY)
+    private String claimedByUserId;
+
+    /*
+     * The type of this VM resource
+     */
+    @JsonProperty(value = "vmType", access = JsonProperty.Access.WRITE_ONLY)
+    private VirtualMachineType vmType;
+
+    /**
+     * Get the provisioningState property: Current provisioning state of the virtual machine.
+     *
+     * @return the provisioningState value.
+     */
+    public ProvisioningState provisioningState() {
+        return this.provisioningState;
+    }
+
+    /**
+     * Get the state property: The current state of the virtual machine.
+     *
+     * @return the state value.
+     */
+    public VirtualMachineState state() {
+        return this.state;
+    }
+
+    /**
+     * Get the connectionProfile property: Profile for information about connecting to the virtual machine.
+     *
+     * @return the connectionProfile value.
+     */
+    public VirtualMachineConnectionProfile connectionProfile() {
+        return this.connectionProfile;
+    }
+
+    /**
+     * Get the claimedByUserId property: The lab user ID (not the PUID!) of who claimed the virtual machine.
+     *
+     * @return the claimedByUserId value.
+     */
+    public String claimedByUserId() {
+        return this.claimedByUserId;
+    }
+
+    /**
+     * Get the vmType property: The type of this VM resource.
+     *
+     * @return the vmType value.
+     */
+    public VirtualMachineType vmType() {
+        return this.vmType;
+    }
+
+    /**
+     * Validates the instance.
+     *
+     * @throws IllegalArgumentException thrown if the instance is not valid.
+     */
+    public void validate() {
+        if (connectionProfile() != null) {
+            connectionProfile().validate();
+        }
+    }
+}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/package-info.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/package-info.java
index cdcb8a87f169..34a923c01f96 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/package-info.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/models/package-info.java
@@ -2,5 +2,5 @@
 // Licensed under the MIT License.
 // Code generated by Microsoft (R) AutoRest Code Generator.
 
-/** Package containing the inner data models for ManagedLabsClient. The Managed Labs Client. */
+/** Package containing the inner data models for LabServicesClient. REST API for managing Azure Lab Services images. */
 package com.azure.resourcemanager.labservices.fluent.models;
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/package-info.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/package-info.java
index 631cad509ed2..33339f2e16f1 100644
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/package-info.java
+++ b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/fluent/package-info.java
@@ -2,5 +2,5 @@
 // Licensed under the MIT License.
 // Code generated by Microsoft (R) AutoRest Code Generator.
 
-/** Package containing the service clients for ManagedLabsClient. The Managed Labs Client. */
+/** Package containing the service clients for LabServicesClient. REST API for managing Azure Lab Services images. */
 package com.azure.resourcemanager.labservices.fluent;
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentImpl.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentImpl.java
deleted file mode 100644
index 7fea7452b2a6..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentImpl.java
+++ /dev/null
@@ -1,379 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.implementation;
-
-import com.azure.core.http.rest.Response;
-import com.azure.core.management.Region;
-import com.azure.core.util.Context;
-import com.azure.resourcemanager.labservices.fluent.models.EnvironmentInner;
-import com.azure.resourcemanager.labservices.models.Environment;
-import com.azure.resourcemanager.labservices.models.EnvironmentFragment;
-import com.azure.resourcemanager.labservices.models.LatestOperationResult;
-import com.azure.resourcemanager.labservices.models.NetworkInterface;
-import com.azure.resourcemanager.labservices.models.ResetPasswordPayload;
-import com.azure.resourcemanager.labservices.models.ResourceSet;
-import com.azure.resourcemanager.labservices.models.ResourceSetFragment;
-import java.time.Duration;
-import java.time.OffsetDateTime;
-import java.util.Collections;
-import java.util.Map;
-
-public final class EnvironmentImpl implements Environment, Environment.Definition, Environment.Update {
-    private EnvironmentInner innerObject;
-
-    private final com.azure.resourcemanager.labservices.ManagedLabsManager serviceManager;
-
-    public String id() {
-        return this.innerModel().id();
-    }
-
-    public String name() {
-        return this.innerModel().name();
-    }
-
-    public String type() {
-        return this.innerModel().type();
-    }
-
-    public String location() {
-        return this.innerModel().location();
-    }
-
-    public Map tags() {
-        Map inner = this.innerModel().tags();
-        if (inner != null) {
-            return Collections.unmodifiableMap(inner);
-        } else {
-            return Collections.emptyMap();
-        }
-    }
-
-    public ResourceSet resourceSets() {
-        return this.innerModel().resourceSets();
-    }
-
-    public String claimedByUserObjectId() {
-        return this.innerModel().claimedByUserObjectId();
-    }
-
-    public String claimedByUserPrincipalId() {
-        return this.innerModel().claimedByUserPrincipalId();
-    }
-
-    public String claimedByUsername() {
-        return this.innerModel().claimedByUsername();
-    }
-
-    public Boolean isClaimed() {
-        return this.innerModel().isClaimed();
-    }
-
-    public String lastKnownPowerState() {
-        return this.innerModel().lastKnownPowerState();
-    }
-
-    public NetworkInterface networkInterface() {
-        return this.innerModel().networkInterface();
-    }
-
-    public Duration totalUsage() {
-        return this.innerModel().totalUsage();
-    }
-
-    public OffsetDateTime passwordLastReset() {
-        return this.innerModel().passwordLastReset();
-    }
-
-    public String provisioningState() {
-        return this.innerModel().provisioningState();
-    }
-
-    public String uniqueIdentifier() {
-        return this.innerModel().uniqueIdentifier();
-    }
-
-    public LatestOperationResult latestOperationResult() {
-        return this.innerModel().latestOperationResult();
-    }
-
-    public Region region() {
-        return Region.fromName(this.regionName());
-    }
-
-    public String regionName() {
-        return this.location();
-    }
-
-    public EnvironmentInner innerModel() {
-        return this.innerObject;
-    }
-
-    private com.azure.resourcemanager.labservices.ManagedLabsManager manager() {
-        return this.serviceManager;
-    }
-
-    private String resourceGroupName;
-
-    private String labAccountName;
-
-    private String labName;
-
-    private String environmentSettingName;
-
-    private String environmentName;
-
-    private EnvironmentFragment updateEnvironment;
-
-    public EnvironmentImpl withExistingEnvironmentsetting(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName) {
-        this.resourceGroupName = resourceGroupName;
-        this.labAccountName = labAccountName;
-        this.labName = labName;
-        this.environmentSettingName = environmentSettingName;
-        return this;
-    }
-
-    public Environment create() {
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironments()
-                .createOrUpdateWithResponse(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    environmentName,
-                    this.innerModel(),
-                    Context.NONE)
-                .getValue();
-        return this;
-    }
-
-    public Environment create(Context context) {
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironments()
-                .createOrUpdateWithResponse(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    environmentName,
-                    this.innerModel(),
-                    context)
-                .getValue();
-        return this;
-    }
-
-    EnvironmentImpl(String name, com.azure.resourcemanager.labservices.ManagedLabsManager serviceManager) {
-        this.innerObject = new EnvironmentInner();
-        this.serviceManager = serviceManager;
-        this.environmentName = name;
-    }
-
-    public EnvironmentImpl update() {
-        this.updateEnvironment = new EnvironmentFragment();
-        return this;
-    }
-
-    public Environment apply() {
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironments()
-                .updateWithResponse(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    environmentName,
-                    updateEnvironment,
-                    Context.NONE)
-                .getValue();
-        return this;
-    }
-
-    public Environment apply(Context context) {
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironments()
-                .updateWithResponse(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    environmentName,
-                    updateEnvironment,
-                    context)
-                .getValue();
-        return this;
-    }
-
-    EnvironmentImpl(
-        EnvironmentInner innerObject, com.azure.resourcemanager.labservices.ManagedLabsManager serviceManager) {
-        this.innerObject = innerObject;
-        this.serviceManager = serviceManager;
-        this.resourceGroupName = Utils.getValueFromIdByName(innerObject.id(), "resourceGroups");
-        this.labAccountName = Utils.getValueFromIdByName(innerObject.id(), "labaccounts");
-        this.labName = Utils.getValueFromIdByName(innerObject.id(), "labs");
-        this.environmentSettingName = Utils.getValueFromIdByName(innerObject.id(), "environmentsettings");
-        this.environmentName = Utils.getValueFromIdByName(innerObject.id(), "environments");
-    }
-
-    public Environment refresh() {
-        String localExpand = null;
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironments()
-                .getWithResponse(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    environmentName,
-                    localExpand,
-                    Context.NONE)
-                .getValue();
-        return this;
-    }
-
-    public Environment refresh(Context context) {
-        String localExpand = null;
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironments()
-                .getWithResponse(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    environmentName,
-                    localExpand,
-                    context)
-                .getValue();
-        return this;
-    }
-
-    public void claim() {
-        serviceManager
-            .environments()
-            .claim(resourceGroupName, labAccountName, labName, environmentSettingName, environmentName);
-    }
-
-    public Response claimWithResponse(Context context) {
-        return serviceManager
-            .environments()
-            .claimWithResponse(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentName, context);
-    }
-
-    public void resetPassword(ResetPasswordPayload resetPasswordPayload) {
-        serviceManager
-            .environments()
-            .resetPassword(
-                resourceGroupName,
-                labAccountName,
-                labName,
-                environmentSettingName,
-                environmentName,
-                resetPasswordPayload);
-    }
-
-    public void resetPassword(ResetPasswordPayload resetPasswordPayload, Context context) {
-        serviceManager
-            .environments()
-            .resetPassword(
-                resourceGroupName,
-                labAccountName,
-                labName,
-                environmentSettingName,
-                environmentName,
-                resetPasswordPayload,
-                context);
-    }
-
-    public void start() {
-        serviceManager
-            .environments()
-            .start(resourceGroupName, labAccountName, labName, environmentSettingName, environmentName);
-    }
-
-    public void start(Context context) {
-        serviceManager
-            .environments()
-            .start(resourceGroupName, labAccountName, labName, environmentSettingName, environmentName, context);
-    }
-
-    public void stop() {
-        serviceManager
-            .environments()
-            .stop(resourceGroupName, labAccountName, labName, environmentSettingName, environmentName);
-    }
-
-    public void stop(Context context) {
-        serviceManager
-            .environments()
-            .stop(resourceGroupName, labAccountName, labName, environmentSettingName, environmentName, context);
-    }
-
-    public EnvironmentImpl withRegion(Region location) {
-        this.innerModel().withLocation(location.toString());
-        return this;
-    }
-
-    public EnvironmentImpl withRegion(String location) {
-        this.innerModel().withLocation(location);
-        return this;
-    }
-
-    public EnvironmentImpl withTags(Map tags) {
-        if (isInCreateMode()) {
-            this.innerModel().withTags(tags);
-            return this;
-        } else {
-            this.updateEnvironment.withTags(tags);
-            return this;
-        }
-    }
-
-    public EnvironmentImpl withResourceSets(ResourceSet resourceSets) {
-        this.innerModel().withResourceSets(resourceSets);
-        return this;
-    }
-
-    public EnvironmentImpl withProvisioningState(String provisioningState) {
-        if (isInCreateMode()) {
-            this.innerModel().withProvisioningState(provisioningState);
-            return this;
-        } else {
-            this.updateEnvironment.withProvisioningState(provisioningState);
-            return this;
-        }
-    }
-
-    public EnvironmentImpl withUniqueIdentifier(String uniqueIdentifier) {
-        if (isInCreateMode()) {
-            this.innerModel().withUniqueIdentifier(uniqueIdentifier);
-            return this;
-        } else {
-            this.updateEnvironment.withUniqueIdentifier(uniqueIdentifier);
-            return this;
-        }
-    }
-
-    public EnvironmentImpl withResourceSets(ResourceSetFragment resourceSets) {
-        this.updateEnvironment.withResourceSets(resourceSets);
-        return this;
-    }
-
-    private boolean isInCreateMode() {
-        return this.innerModel().id() == null;
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentSettingImpl.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentSettingImpl.java
deleted file mode 100644
index 80c766e21ee5..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentSettingImpl.java
+++ /dev/null
@@ -1,357 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.implementation;
-
-import com.azure.core.http.rest.Response;
-import com.azure.core.management.Region;
-import com.azure.core.util.Context;
-import com.azure.resourcemanager.labservices.fluent.models.EnvironmentSettingInner;
-import com.azure.resourcemanager.labservices.models.ConfigurationState;
-import com.azure.resourcemanager.labservices.models.EnvironmentSetting;
-import com.azure.resourcemanager.labservices.models.EnvironmentSettingFragment;
-import com.azure.resourcemanager.labservices.models.LatestOperationResult;
-import com.azure.resourcemanager.labservices.models.PublishPayload;
-import com.azure.resourcemanager.labservices.models.PublishingState;
-import com.azure.resourcemanager.labservices.models.ResourceSettings;
-import com.azure.resourcemanager.labservices.models.ResourceSettingsFragment;
-import java.time.OffsetDateTime;
-import java.util.Collections;
-import java.util.Map;
-
-public final class EnvironmentSettingImpl
-    implements EnvironmentSetting, EnvironmentSetting.Definition, EnvironmentSetting.Update {
-    private EnvironmentSettingInner innerObject;
-
-    private final com.azure.resourcemanager.labservices.ManagedLabsManager serviceManager;
-
-    public String id() {
-        return this.innerModel().id();
-    }
-
-    public String name() {
-        return this.innerModel().name();
-    }
-
-    public String type() {
-        return this.innerModel().type();
-    }
-
-    public String location() {
-        return this.innerModel().location();
-    }
-
-    public Map tags() {
-        Map inner = this.innerModel().tags();
-        if (inner != null) {
-            return Collections.unmodifiableMap(inner);
-        } else {
-            return Collections.emptyMap();
-        }
-    }
-
-    public PublishingState publishingState() {
-        return this.innerModel().publishingState();
-    }
-
-    public ConfigurationState configurationState() {
-        return this.innerModel().configurationState();
-    }
-
-    public String description() {
-        return this.innerModel().description();
-    }
-
-    public String title() {
-        return this.innerModel().title();
-    }
-
-    public ResourceSettings resourceSettings() {
-        return this.innerModel().resourceSettings();
-    }
-
-    public OffsetDateTime lastChanged() {
-        return this.innerModel().lastChanged();
-    }
-
-    public OffsetDateTime lastPublished() {
-        return this.innerModel().lastPublished();
-    }
-
-    public String provisioningState() {
-        return this.innerModel().provisioningState();
-    }
-
-    public String uniqueIdentifier() {
-        return this.innerModel().uniqueIdentifier();
-    }
-
-    public LatestOperationResult latestOperationResult() {
-        return this.innerModel().latestOperationResult();
-    }
-
-    public Region region() {
-        return Region.fromName(this.regionName());
-    }
-
-    public String regionName() {
-        return this.location();
-    }
-
-    public EnvironmentSettingInner innerModel() {
-        return this.innerObject;
-    }
-
-    private com.azure.resourcemanager.labservices.ManagedLabsManager manager() {
-        return this.serviceManager;
-    }
-
-    private String resourceGroupName;
-
-    private String labAccountName;
-
-    private String labName;
-
-    private String environmentSettingName;
-
-    private EnvironmentSettingFragment updateEnvironmentSetting;
-
-    public EnvironmentSettingImpl withExistingLab(String resourceGroupName, String labAccountName, String labName) {
-        this.resourceGroupName = resourceGroupName;
-        this.labAccountName = labAccountName;
-        this.labName = labName;
-        return this;
-    }
-
-    public EnvironmentSetting create() {
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironmentSettings()
-                .createOrUpdate(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    this.innerModel(),
-                    Context.NONE);
-        return this;
-    }
-
-    public EnvironmentSetting create(Context context) {
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironmentSettings()
-                .createOrUpdate(
-                    resourceGroupName, labAccountName, labName, environmentSettingName, this.innerModel(), context);
-        return this;
-    }
-
-    EnvironmentSettingImpl(String name, com.azure.resourcemanager.labservices.ManagedLabsManager serviceManager) {
-        this.innerObject = new EnvironmentSettingInner();
-        this.serviceManager = serviceManager;
-        this.environmentSettingName = name;
-    }
-
-    public EnvironmentSettingImpl update() {
-        this.updateEnvironmentSetting = new EnvironmentSettingFragment();
-        return this;
-    }
-
-    public EnvironmentSetting apply() {
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironmentSettings()
-                .updateWithResponse(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    updateEnvironmentSetting,
-                    Context.NONE)
-                .getValue();
-        return this;
-    }
-
-    public EnvironmentSetting apply(Context context) {
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironmentSettings()
-                .updateWithResponse(
-                    resourceGroupName,
-                    labAccountName,
-                    labName,
-                    environmentSettingName,
-                    updateEnvironmentSetting,
-                    context)
-                .getValue();
-        return this;
-    }
-
-    EnvironmentSettingImpl(
-        EnvironmentSettingInner innerObject, com.azure.resourcemanager.labservices.ManagedLabsManager serviceManager) {
-        this.innerObject = innerObject;
-        this.serviceManager = serviceManager;
-        this.resourceGroupName = Utils.getValueFromIdByName(innerObject.id(), "resourceGroups");
-        this.labAccountName = Utils.getValueFromIdByName(innerObject.id(), "labaccounts");
-        this.labName = Utils.getValueFromIdByName(innerObject.id(), "labs");
-        this.environmentSettingName = Utils.getValueFromIdByName(innerObject.id(), "environmentsettings");
-    }
-
-    public EnvironmentSetting refresh() {
-        String localExpand = null;
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironmentSettings()
-                .getWithResponse(
-                    resourceGroupName, labAccountName, labName, environmentSettingName, localExpand, Context.NONE)
-                .getValue();
-        return this;
-    }
-
-    public EnvironmentSetting refresh(Context context) {
-        String localExpand = null;
-        this.innerObject =
-            serviceManager
-                .serviceClient()
-                .getEnvironmentSettings()
-                .getWithResponse(
-                    resourceGroupName, labAccountName, labName, environmentSettingName, localExpand, context)
-                .getValue();
-        return this;
-    }
-
-    public void claimAny() {
-        serviceManager
-            .environmentSettings()
-            .claimAny(resourceGroupName, labAccountName, labName, environmentSettingName);
-    }
-
-    public Response claimAnyWithResponse(Context context) {
-        return serviceManager
-            .environmentSettings()
-            .claimAnyWithResponse(resourceGroupName, labAccountName, labName, environmentSettingName, context);
-    }
-
-    public void publish(PublishPayload publishPayload) {
-        serviceManager
-            .environmentSettings()
-            .publish(resourceGroupName, labAccountName, labName, environmentSettingName, publishPayload);
-    }
-
-    public Response publishWithResponse(PublishPayload publishPayload, Context context) {
-        return serviceManager
-            .environmentSettings()
-            .publishWithResponse(
-                resourceGroupName, labAccountName, labName, environmentSettingName, publishPayload, context);
-    }
-
-    public void start() {
-        serviceManager.environmentSettings().start(resourceGroupName, labAccountName, labName, environmentSettingName);
-    }
-
-    public void start(Context context) {
-        serviceManager
-            .environmentSettings()
-            .start(resourceGroupName, labAccountName, labName, environmentSettingName, context);
-    }
-
-    public void stop() {
-        serviceManager.environmentSettings().stop(resourceGroupName, labAccountName, labName, environmentSettingName);
-    }
-
-    public void stop(Context context) {
-        serviceManager
-            .environmentSettings()
-            .stop(resourceGroupName, labAccountName, labName, environmentSettingName, context);
-    }
-
-    public EnvironmentSettingImpl withRegion(Region location) {
-        this.innerModel().withLocation(location.toString());
-        return this;
-    }
-
-    public EnvironmentSettingImpl withRegion(String location) {
-        this.innerModel().withLocation(location);
-        return this;
-    }
-
-    public EnvironmentSettingImpl withTags(Map tags) {
-        if (isInCreateMode()) {
-            this.innerModel().withTags(tags);
-            return this;
-        } else {
-            this.updateEnvironmentSetting.withTags(tags);
-            return this;
-        }
-    }
-
-    public EnvironmentSettingImpl withConfigurationState(ConfigurationState configurationState) {
-        if (isInCreateMode()) {
-            this.innerModel().withConfigurationState(configurationState);
-            return this;
-        } else {
-            this.updateEnvironmentSetting.withConfigurationState(configurationState);
-            return this;
-        }
-    }
-
-    public EnvironmentSettingImpl withDescription(String description) {
-        if (isInCreateMode()) {
-            this.innerModel().withDescription(description);
-            return this;
-        } else {
-            this.updateEnvironmentSetting.withDescription(description);
-            return this;
-        }
-    }
-
-    public EnvironmentSettingImpl withTitle(String title) {
-        if (isInCreateMode()) {
-            this.innerModel().withTitle(title);
-            return this;
-        } else {
-            this.updateEnvironmentSetting.withTitle(title);
-            return this;
-        }
-    }
-
-    public EnvironmentSettingImpl withResourceSettings(ResourceSettings resourceSettings) {
-        this.innerModel().withResourceSettings(resourceSettings);
-        return this;
-    }
-
-    public EnvironmentSettingImpl withProvisioningState(String provisioningState) {
-        if (isInCreateMode()) {
-            this.innerModel().withProvisioningState(provisioningState);
-            return this;
-        } else {
-            this.updateEnvironmentSetting.withProvisioningState(provisioningState);
-            return this;
-        }
-    }
-
-    public EnvironmentSettingImpl withUniqueIdentifier(String uniqueIdentifier) {
-        if (isInCreateMode()) {
-            this.innerModel().withUniqueIdentifier(uniqueIdentifier);
-            return this;
-        } else {
-            this.updateEnvironmentSetting.withUniqueIdentifier(uniqueIdentifier);
-            return this;
-        }
-    }
-
-    public EnvironmentSettingImpl withResourceSettings(ResourceSettingsFragment resourceSettings) {
-        this.updateEnvironmentSetting.withResourceSettings(resourceSettings);
-        return this;
-    }
-
-    private boolean isInCreateMode() {
-        return this.innerModel().id() == null;
-    }
-}
diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentSettingsClientImpl.java b/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentSettingsClientImpl.java
deleted file mode 100644
index f509b4f67fb0..000000000000
--- a/sdk/labservices/azure-resourcemanager-labservices/src/main/java/com/azure/resourcemanager/labservices/implementation/EnvironmentSettingsClientImpl.java
+++ /dev/null
@@ -1,2731 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-// Code generated by Microsoft (R) AutoRest Code Generator.
-
-package com.azure.resourcemanager.labservices.implementation;
-
-import com.azure.core.annotation.BodyParam;
-import com.azure.core.annotation.Delete;
-import com.azure.core.annotation.ExpectedResponses;
-import com.azure.core.annotation.Get;
-import com.azure.core.annotation.HeaderParam;
-import com.azure.core.annotation.Headers;
-import com.azure.core.annotation.Host;
-import com.azure.core.annotation.HostParam;
-import com.azure.core.annotation.Patch;
-import com.azure.core.annotation.PathParam;
-import com.azure.core.annotation.Post;
-import com.azure.core.annotation.Put;
-import com.azure.core.annotation.QueryParam;
-import com.azure.core.annotation.ReturnType;
-import com.azure.core.annotation.ServiceInterface;
-import com.azure.core.annotation.ServiceMethod;
-import com.azure.core.annotation.UnexpectedResponseExceptionType;
-import com.azure.core.http.rest.PagedFlux;
-import com.azure.core.http.rest.PagedIterable;
-import com.azure.core.http.rest.PagedResponse;
-import com.azure.core.http.rest.PagedResponseBase;
-import com.azure.core.http.rest.Response;
-import com.azure.core.http.rest.RestProxy;
-import com.azure.core.management.exception.ManagementException;
-import com.azure.core.management.polling.PollResult;
-import com.azure.core.util.Context;
-import com.azure.core.util.FluxUtil;
-import com.azure.core.util.logging.ClientLogger;
-import com.azure.core.util.polling.PollerFlux;
-import com.azure.core.util.polling.SyncPoller;
-import com.azure.resourcemanager.labservices.fluent.EnvironmentSettingsClient;
-import com.azure.resourcemanager.labservices.fluent.models.EnvironmentSettingInner;
-import com.azure.resourcemanager.labservices.models.EnvironmentSettingFragment;
-import com.azure.resourcemanager.labservices.models.PublishPayload;
-import com.azure.resourcemanager.labservices.models.ResponseWithContinuationEnvironmentSetting;
-import java.nio.ByteBuffer;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-/** An instance of this class provides access to all the operations defined in EnvironmentSettingsClient. */
-public final class EnvironmentSettingsClientImpl implements EnvironmentSettingsClient {
-    private final ClientLogger logger = new ClientLogger(EnvironmentSettingsClientImpl.class);
-
-    /** The proxy service used to perform REST calls. */
-    private final EnvironmentSettingsService service;
-
-    /** The service client containing this operation class. */
-    private final ManagedLabsClientImpl client;
-
-    /**
-     * Initializes an instance of EnvironmentSettingsClientImpl.
-     *
-     * @param client the instance of the service client containing this operation class.
-     */
-    EnvironmentSettingsClientImpl(ManagedLabsClientImpl client) {
-        this.service =
-            RestProxy.create(EnvironmentSettingsService.class, client.getHttpPipeline(), client.getSerializerAdapter());
-        this.client = client;
-    }
-
-    /**
-     * The interface defining all the services for ManagedLabsClientEnvironmentSettings to be used by the proxy service
-     * to perform REST calls.
-     */
-    @Host("{$host}")
-    @ServiceInterface(name = "ManagedLabsClientEnv")
-    private interface EnvironmentSettingsService {
-        @Headers({"Content-Type: application/json"})
-        @Get(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings")
-        @ExpectedResponses({200})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono> list(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @QueryParam("$expand") String expand,
-            @QueryParam("$filter") String filter,
-            @QueryParam("$top") Integer top,
-            @QueryParam("$orderby") String orderby,
-            @QueryParam("api-version") String apiVersion,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Get(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings/{environmentSettingName}")
-        @ExpectedResponses({200})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono> get(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @PathParam("environmentSettingName") String environmentSettingName,
-            @QueryParam("$expand") String expand,
-            @QueryParam("api-version") String apiVersion,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Put(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings/{environmentSettingName}")
-        @ExpectedResponses({200, 201})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono>> createOrUpdate(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @PathParam("environmentSettingName") String environmentSettingName,
-            @QueryParam("api-version") String apiVersion,
-            @BodyParam("application/json") EnvironmentSettingInner environmentSetting,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Delete(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings/{environmentSettingName}")
-        @ExpectedResponses({202, 204})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono>> delete(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @PathParam("environmentSettingName") String environmentSettingName,
-            @QueryParam("api-version") String apiVersion,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Patch(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings/{environmentSettingName}")
-        @ExpectedResponses({200})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono> update(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @PathParam("environmentSettingName") String environmentSettingName,
-            @QueryParam("api-version") String apiVersion,
-            @BodyParam("application/json") EnvironmentSettingFragment environmentSetting,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Post(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings/{environmentSettingName}/claimAny")
-        @ExpectedResponses({200})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono> claimAny(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @PathParam("environmentSettingName") String environmentSettingName,
-            @QueryParam("api-version") String apiVersion,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Post(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings/{environmentSettingName}/publish")
-        @ExpectedResponses({200})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono> publish(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @PathParam("environmentSettingName") String environmentSettingName,
-            @QueryParam("api-version") String apiVersion,
-            @BodyParam("application/json") PublishPayload publishPayload,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Post(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings/{environmentSettingName}/start")
-        @ExpectedResponses({200, 202})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono>> start(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @PathParam("environmentSettingName") String environmentSettingName,
-            @QueryParam("api-version") String apiVersion,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Post(
-            "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.LabServices"
-                + "/labaccounts/{labAccountName}/labs/{labName}/environmentsettings/{environmentSettingName}/stop")
-        @ExpectedResponses({200, 202})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono>> stop(
-            @HostParam("$host") String endpoint,
-            @PathParam("subscriptionId") String subscriptionId,
-            @PathParam("resourceGroupName") String resourceGroupName,
-            @PathParam("labAccountName") String labAccountName,
-            @PathParam("labName") String labName,
-            @PathParam("environmentSettingName") String environmentSettingName,
-            @QueryParam("api-version") String apiVersion,
-            @HeaderParam("Accept") String accept,
-            Context context);
-
-        @Headers({"Content-Type: application/json"})
-        @Get("{nextLink}")
-        @ExpectedResponses({200})
-        @UnexpectedResponseExceptionType(ManagementException.class)
-        Mono> listNext(
-            @PathParam(value = "nextLink", encoded = true) String nextLink,
-            @HostParam("$host") String endpoint,
-            @HeaderParam("Accept") String accept,
-            Context context);
-    }
-
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono> listSinglePageAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        final String accept = "application/json";
-        return FluxUtil
-            .withContext(
-                context ->
-                    service
-                        .list(
-                            this.client.getEndpoint(),
-                            this.client.getSubscriptionId(),
-                            resourceGroupName,
-                            labAccountName,
-                            labName,
-                            expand,
-                            filter,
-                            top,
-                            orderby,
-                            this.client.getApiVersion(),
-                            accept,
-                            context))
-            .>map(
-                res ->
-                    new PagedResponseBase<>(
-                        res.getRequest(),
-                        res.getStatusCode(),
-                        res.getHeaders(),
-                        res.getValue().value(),
-                        res.getValue().nextLink(),
-                        null))
-            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
-    }
-
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono> listSinglePageAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby,
-        Context context) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        final String accept = "application/json";
-        context = this.client.mergeContext(context);
-        return service
-            .list(
-                this.client.getEndpoint(),
-                this.client.getSubscriptionId(),
-                resourceGroupName,
-                labAccountName,
-                labName,
-                expand,
-                filter,
-                top,
-                orderby,
-                this.client.getApiVersion(),
-                accept,
-                context)
-            .map(
-                res ->
-                    new PagedResponseBase<>(
-                        res.getRequest(),
-                        res.getStatusCode(),
-                        res.getHeaders(),
-                        res.getValue().value(),
-                        res.getValue().nextLink(),
-                        null));
-    }
-
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    private PagedFlux listAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby) {
-        return new PagedFlux<>(
-            () -> listSinglePageAsync(resourceGroupName, labAccountName, labName, expand, filter, top, orderby),
-            nextLink -> listNextSinglePageAsync(nextLink));
-    }
-
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    private PagedFlux listAsync(
-        String resourceGroupName, String labAccountName, String labName) {
-        final String expand = null;
-        final String filter = null;
-        final Integer top = null;
-        final String orderby = null;
-        return new PagedFlux<>(
-            () -> listSinglePageAsync(resourceGroupName, labAccountName, labName, expand, filter, top, orderby),
-            nextLink -> listNextSinglePageAsync(nextLink));
-    }
-
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    private PagedFlux listAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby,
-        Context context) {
-        return new PagedFlux<>(
-            () ->
-                listSinglePageAsync(resourceGroupName, labAccountName, labName, expand, filter, top, orderby, context),
-            nextLink -> listNextSinglePageAsync(nextLink, context));
-    }
-
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    public PagedIterable list(
-        String resourceGroupName, String labAccountName, String labName) {
-        final String expand = null;
-        final String filter = null;
-        final Integer top = null;
-        final String orderby = null;
-        return new PagedIterable<>(listAsync(resourceGroupName, labAccountName, labName, expand, filter, top, orderby));
-    }
-
-    /**
-     * List environment setting in a given lab.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param filter The filter to apply to the operation.
-     * @param top The maximum number of resources to return from the operation.
-     * @param orderby The ordering expression for the results, using OData notation.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response of a list operation.
-     */
-    @ServiceMethod(returns = ReturnType.COLLECTION)
-    public PagedIterable list(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String expand,
-        String filter,
-        Integer top,
-        String orderby,
-        Context context) {
-        return new PagedIterable<>(
-            listAsync(resourceGroupName, labAccountName, labName, expand, filter, top, orderby, context));
-    }
-
-    /**
-     * Get environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment setting.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono> getWithResponseAsync(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName, String expand) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        if (environmentSettingName == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException("Parameter environmentSettingName is required and cannot be null."));
-        }
-        final String accept = "application/json";
-        return FluxUtil
-            .withContext(
-                context ->
-                    service
-                        .get(
-                            this.client.getEndpoint(),
-                            this.client.getSubscriptionId(),
-                            resourceGroupName,
-                            labAccountName,
-                            labName,
-                            environmentSettingName,
-                            expand,
-                            this.client.getApiVersion(),
-                            accept,
-                            context))
-            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
-    }
-
-    /**
-     * Get environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment setting.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono> getWithResponseAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String expand,
-        Context context) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        if (environmentSettingName == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException("Parameter environmentSettingName is required and cannot be null."));
-        }
-        final String accept = "application/json";
-        context = this.client.mergeContext(context);
-        return service
-            .get(
-                this.client.getEndpoint(),
-                this.client.getSubscriptionId(),
-                resourceGroupName,
-                labAccountName,
-                labName,
-                environmentSettingName,
-                expand,
-                this.client.getApiVersion(),
-                accept,
-                context);
-    }
-
-    /**
-     * Get environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment setting.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono getAsync(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName, String expand) {
-        return getWithResponseAsync(resourceGroupName, labAccountName, labName, environmentSettingName, expand)
-            .flatMap(
-                (Response res) -> {
-                    if (res.getValue() != null) {
-                        return Mono.just(res.getValue());
-                    } else {
-                        return Mono.empty();
-                    }
-                });
-    }
-
-    /**
-     * Get environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment setting.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono getAsync(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName) {
-        final String expand = null;
-        return getWithResponseAsync(resourceGroupName, labAccountName, labName, environmentSettingName, expand)
-            .flatMap(
-                (Response res) -> {
-                    if (res.getValue() != null) {
-                        return Mono.just(res.getValue());
-                    } else {
-                        return Mono.empty();
-                    }
-                });
-    }
-
-    /**
-     * Get environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment setting.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public EnvironmentSettingInner get(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName) {
-        final String expand = null;
-        return getAsync(resourceGroupName, labAccountName, labName, environmentSettingName, expand).block();
-    }
-
-    /**
-     * Get environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param expand Specify the $expand query. Example: 'properties($select=publishingState)'.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return environment setting.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public Response getWithResponse(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        String expand,
-        Context context) {
-        return getWithResponseAsync(resourceGroupName, labAccountName, labName, environmentSettingName, expand, context)
-            .block();
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono>> createOrUpdateWithResponseAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        if (environmentSettingName == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException("Parameter environmentSettingName is required and cannot be null."));
-        }
-        if (environmentSetting == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter environmentSetting is required and cannot be null."));
-        } else {
-            environmentSetting.validate();
-        }
-        final String accept = "application/json";
-        return FluxUtil
-            .withContext(
-                context ->
-                    service
-                        .createOrUpdate(
-                            this.client.getEndpoint(),
-                            this.client.getSubscriptionId(),
-                            resourceGroupName,
-                            labAccountName,
-                            labName,
-                            environmentSettingName,
-                            this.client.getApiVersion(),
-                            environmentSetting,
-                            accept,
-                            context))
-            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono>> createOrUpdateWithResponseAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting,
-        Context context) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        if (environmentSettingName == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException("Parameter environmentSettingName is required and cannot be null."));
-        }
-        if (environmentSetting == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter environmentSetting is required and cannot be null."));
-        } else {
-            environmentSetting.validate();
-        }
-        final String accept = "application/json";
-        context = this.client.mergeContext(context);
-        return service
-            .createOrUpdate(
-                this.client.getEndpoint(),
-                this.client.getSubscriptionId(),
-                resourceGroupName,
-                labAccountName,
-                labName,
-                environmentSettingName,
-                this.client.getApiVersion(),
-                environmentSetting,
-                accept,
-                context);
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private PollerFlux, EnvironmentSettingInner> beginCreateOrUpdateAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting) {
-        Mono>> mono =
-            createOrUpdateWithResponseAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting);
-        return this
-            .client
-            .getLroResult(
-                mono,
-                this.client.getHttpPipeline(),
-                EnvironmentSettingInner.class,
-                EnvironmentSettingInner.class,
-                Context.NONE);
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private PollerFlux, EnvironmentSettingInner> beginCreateOrUpdateAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting,
-        Context context) {
-        context = this.client.mergeContext(context);
-        Mono>> mono =
-            createOrUpdateWithResponseAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting, context);
-        return this
-            .client
-            .getLroResult(
-                mono,
-                this.client.getHttpPipeline(),
-                EnvironmentSettingInner.class,
-                EnvironmentSettingInner.class,
-                context);
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public SyncPoller, EnvironmentSettingInner> beginCreateOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting) {
-        return beginCreateOrUpdateAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting)
-            .getSyncPoller();
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public SyncPoller, EnvironmentSettingInner> beginCreateOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting,
-        Context context) {
-        return beginCreateOrUpdateAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting, context)
-            .getSyncPoller();
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono createOrUpdateAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting) {
-        return beginCreateOrUpdateAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting)
-            .last()
-            .flatMap(this.client::getLroFinalResultOrError);
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono createOrUpdateAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting,
-        Context context) {
-        return beginCreateOrUpdateAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting, context)
-            .last()
-            .flatMap(this.client::getLroFinalResultOrError);
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public EnvironmentSettingInner createOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting) {
-        return createOrUpdateAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting)
-            .block();
-    }
-
-    /**
-     * Create or replace an existing Environment Setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public EnvironmentSettingInner createOrUpdate(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingInner environmentSetting,
-        Context context) {
-        return createOrUpdateAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting, context)
-            .block();
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono>> deleteWithResponseAsync(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        if (environmentSettingName == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException("Parameter environmentSettingName is required and cannot be null."));
-        }
-        final String accept = "application/json";
-        return FluxUtil
-            .withContext(
-                context ->
-                    service
-                        .delete(
-                            this.client.getEndpoint(),
-                            this.client.getSubscriptionId(),
-                            resourceGroupName,
-                            labAccountName,
-                            labName,
-                            environmentSettingName,
-                            this.client.getApiVersion(),
-                            accept,
-                            context))
-            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono>> deleteWithResponseAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        if (environmentSettingName == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException("Parameter environmentSettingName is required and cannot be null."));
-        }
-        final String accept = "application/json";
-        context = this.client.mergeContext(context);
-        return service
-            .delete(
-                this.client.getEndpoint(),
-                this.client.getSubscriptionId(),
-                resourceGroupName,
-                labAccountName,
-                labName,
-                environmentSettingName,
-                this.client.getApiVersion(),
-                accept,
-                context);
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private PollerFlux, Void> beginDeleteAsync(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName) {
-        Mono>> mono =
-            deleteWithResponseAsync(resourceGroupName, labAccountName, labName, environmentSettingName);
-        return this
-            .client
-            .getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, Context.NONE);
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private PollerFlux, Void> beginDeleteAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context) {
-        context = this.client.mergeContext(context);
-        Mono>> mono =
-            deleteWithResponseAsync(resourceGroupName, labAccountName, labName, environmentSettingName, context);
-        return this
-            .client
-            .getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, context);
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public SyncPoller, Void> beginDelete(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName) {
-        return beginDeleteAsync(resourceGroupName, labAccountName, labName, environmentSettingName).getSyncPoller();
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public SyncPoller, Void> beginDelete(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context) {
-        return beginDeleteAsync(resourceGroupName, labAccountName, labName, environmentSettingName, context)
-            .getSyncPoller();
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono deleteAsync(
-        String resourceGroupName, String labAccountName, String labName, String environmentSettingName) {
-        return beginDeleteAsync(resourceGroupName, labAccountName, labName, environmentSettingName)
-            .last()
-            .flatMap(this.client::getLroFinalResultOrError);
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the completion.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono deleteAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context) {
-        return beginDeleteAsync(resourceGroupName, labAccountName, labName, environmentSettingName, context)
-            .last()
-            .flatMap(this.client::getLroFinalResultOrError);
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public void delete(String resourceGroupName, String labAccountName, String labName, String environmentSettingName) {
-        deleteAsync(resourceGroupName, labAccountName, labName, environmentSettingName).block();
-    }
-
-    /**
-     * Delete environment setting. This operation can take a while to complete.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public void delete(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        Context context) {
-        deleteAsync(resourceGroupName, labAccountName, labName, environmentSettingName, context).block();
-    }
-
-    /**
-     * Modify properties of environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono> updateWithResponseAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingFragment environmentSetting) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        if (environmentSettingName == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException("Parameter environmentSettingName is required and cannot be null."));
-        }
-        if (environmentSetting == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter environmentSetting is required and cannot be null."));
-        } else {
-            environmentSetting.validate();
-        }
-        final String accept = "application/json";
-        return FluxUtil
-            .withContext(
-                context ->
-                    service
-                        .update(
-                            this.client.getEndpoint(),
-                            this.client.getSubscriptionId(),
-                            resourceGroupName,
-                            labAccountName,
-                            labName,
-                            environmentSettingName,
-                            this.client.getApiVersion(),
-                            environmentSetting,
-                            accept,
-                            context))
-            .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly()));
-    }
-
-    /**
-     * Modify properties of environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @param context The context to associate with this operation.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono> updateWithResponseAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingFragment environmentSetting,
-        Context context) {
-        if (this.client.getEndpoint() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getEndpoint() is required and cannot be null."));
-        }
-        if (this.client.getSubscriptionId() == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException(
-                        "Parameter this.client.getSubscriptionId() is required and cannot be null."));
-        }
-        if (resourceGroupName == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
-        }
-        if (labAccountName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labAccountName is required and cannot be null."));
-        }
-        if (labName == null) {
-            return Mono.error(new IllegalArgumentException("Parameter labName is required and cannot be null."));
-        }
-        if (environmentSettingName == null) {
-            return Mono
-                .error(
-                    new IllegalArgumentException("Parameter environmentSettingName is required and cannot be null."));
-        }
-        if (environmentSetting == null) {
-            return Mono
-                .error(new IllegalArgumentException("Parameter environmentSetting is required and cannot be null."));
-        } else {
-            environmentSetting.validate();
-        }
-        final String accept = "application/json";
-        context = this.client.mergeContext(context);
-        return service
-            .update(
-                this.client.getEndpoint(),
-                this.client.getSubscriptionId(),
-                resourceGroupName,
-                labAccountName,
-                labName,
-                environmentSettingName,
-                this.client.getApiVersion(),
-                environmentSetting,
-                accept,
-                context);
-    }
-
-    /**
-     * Modify properties of environment setting.
-     *
-     * @param resourceGroupName The name of the resource group.
-     * @param labAccountName The name of the lab Account.
-     * @param labName The name of the lab.
-     * @param environmentSettingName The name of the environment Setting.
-     * @param environmentSetting Represents settings of an environment, from which environment instances would be
-     *     created.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws ManagementException thrown if the request is rejected by server.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return represents settings of an environment, from which environment instances would be created.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    private Mono updateAsync(
-        String resourceGroupName,
-        String labAccountName,
-        String labName,
-        String environmentSettingName,
-        EnvironmentSettingFragment environmentSetting) {
-        return updateWithResponseAsync(
-                resourceGroupName, labAccountName, labName, environmentSettingName, environmentSetting)
-            .flatMap(
-                (Response