---
title: "Transition Lab Definitions"
slug: "transition-lab-definitions-als"
updated: 2024-09-13T16:22:07Z
published: 2024-09-13T16:22:07Z
canonical: "docs.skillable.com/transition-lab-definitions-als"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skillable.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transition Lab Definitions

In this article, you will identify the process for migrating existing Azure Lab definitions to Skillable. Skillable supports both a way to import labs as a JSON definition as well as a manual creation process directly navigating through Skillable Studio. As part of your transition process, you can choose to either use the same VM Images your labs have been using or change them out for new ones. If rather than transition anything existing, you would like to start completely from scratch - learn more about how to [Create & Configure Labs](/v1/docs/create-configure-labs-lab-developer).

> [!WARNING]
> Cloud Subscription Pool Required
> 
> While aspects of this process can be completed without a Cloud Subscription Pool configured in your Skillable Studio organization, some steps require that the [Determine Cloud Subscription(s) to Use](/v1/docs/determine-cloud-subscriptions-to-use) process has already been completed.

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(94).png)

Labs can be fully transitioned with only read-access into Azure labs/lab plans and lab developer access into Skillable Studio. Additionally, Skillable has provided a script that can be executed by anyone with access to Azure Cloud Shell to expedite this process. The Cloud Shell script operates in 2 ways, as a full export into a Skillable-import package and as a data-only export to speed up the manual process in the event the exported data of a given lab does not import cleanly into Skillable Studio.

In this process, you will:

- [**Extract lab data from Azure**](/v1/docs/migrate-lab-definitions-als#extract-lab-data-from-azure)
  - [Activate Azure Cloud Shell](/v1/docs/migrate-lab-definitions-als#activate-azure-cloud-shell)
  - [Run lab export script](/v1/docs/migrate-lab-definitions-als#run-lab-export-script)
- [**Quick Import labs extracted from Azure**](/v1/docs/migrate-lab-definitions-als#quick-import)
  - [Configure Lab Profile](/v1/docs/migrate-lab-definitions-als#lab-profile-import-configuration)
  - [Configure Virtual Machine](/v1/docs/migrate-lab-definitions-als#virtual-machine-profile-configuration)
- [**Manually import labs that can't Quick Import**](/v1/docs/migrate-lab-definitions-als#manual-import)
  - [Configure Virtual Machine](/v1/docs/migrate-lab-definitions-als#virtual-machine-configuration)
  - [Configure Lab Profile](/v1/docs/migrate-lab-definitions-als#lab-profile-configuration)

## Extract Lab Data from Azure

> [!WARNING]
> Lab Plans Only
> 
> This script is engineered to function with Lab Plans only. If you are using lab accounts, you will need to use the [manual process](/v1/docs/migrate-lab-definitions-als#manual-import) or [Create & Configure Labs](/v1/docs/create-configure-labs-lab-developer) from scratch.

To simplify the determination and mapping of Azure Labs settings to Skillable Studio settings, we have created a PowerShell script you can execute directly within Azure Cloud Shell. To get this data, complete the following steps:

### Activate Azure Cloud Shell

1. Login to the [**Azure Portal**](https://portal.azure.com/).
2. Confirm you are in the tenant you would like to transition labs from.
3. Open Azure **Cloud Shell**.

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(95).png)
4. If this is your first time opening Cloud Shell, you may have some one-time setup to do - configure this to your choosing.
5. Ensure you are in the **Powershell** mode - your experience should look similar to one of the two screenshots below, depending on if you are in the new or classic Cloud Shell.

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(96).png)

PowerShell mode in classic Cloud Shell

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(98).png)

PowerShell mode in new Cloud Shell

### Run Lab Export Script

1. Execute the below command:

```powershell
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/James-Burnham/docs/James-Burnham-patch-1/lod/quick-starts/cloud-slice/als-export.ps1'))
```
2. As the script processes it will prompt you for the following responses:
  1. ![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(104).png)

When this prompt appears, validate the tenant it shows you is the appropriate one with the images you would like to transition. If it is, press enter to continue.
  2. ![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(107).png)

When this prompt appears, consider if you want to allow extensions in your labs. These allow lab users to extend their time in the lab by up to 50% (for example, in a 2 hour lab they could stay active for 3 hours). Skillable supports this free of charge, however you will still be liable for any Azure charges during this extended time.
  3. ![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(108).png)

You will see this prompt once for each lab you are migrating. When you do, provide the admin (or non-admin, as specified by the prompt) password for the virtual machine. For security purposes Azure does not allow extraction of this piece of data so it must be provided manually.
3. When the script is complete, you will see a “Download File” pop up. Select the **Lab_Export.zip** to download a Zip archive with the labs ready for input to Skillable Studio.

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(109).png)

> [!NOTE]
> Re-Download Zip
> 
> If you ever have a need to re-download the Zip file, you can return to Cloud Shell at any time and execute `download ./Labs_Export.zip` (this command is case sensitive).
> 
> 
> 
> Any time you run this script all past data is purged from Cloud Shell.

## Quick Import

> [!WARNING]
> Lab Plans Only
> 
> The script above is engineered to function with Lab Plans only. If you are using lab accounts, you will need to use the [manual process](/v1/docs/migrate-lab-definitions-als#manual-import) or [Create & Configure Labs](/v1/docs/create-configure-labs-lab-developer) from scratch.

Now that you have extracted the lab data from Azure, you are ready to get it loaded into Skillable Studio! When doing so, there are 2 components we will validate imported properly and modify accordingly: the Lab Profile and Virtual Machine Profile.

### Lab Profile Import & Configuration

In addition to completing the initial import of the lab profile, you must also assign the Azure Datacenter(s) the lab can launch from and the Cloud Subscription Pool the lab will use. Additionally, it is recommended to review several other settings you may want to modify from their default or what was being utilized in Azure Labs.

1. Navigate to the **Labs_Export.zip**file you downloaded from Azure and extract it.
2. Within the extracted folder you should see a **labs** folder, and within that a **CSV** and a number of **Zip Files** that match the number of labs you have.

> [!NOTE]
> In the automated import, we will not be using the CSV - however it is provided so you have the datapoints if something doesn’t properly import and you need to use the manual import process.
3. Login to [**Skillable Studio**](https://studio.skillable.com) and navigate to the **Admin** screen.
4. Find and select **Create Lab Series**.

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(111).png)
5. Name the Lab Series **Azure Lab Services Imports**, do not worry about configuring any other settings yet.
6. For each lab zip file in your **Labs_Export** folder, perform the following steps:
  1. On the Lab Series page, select **Import Lab Profile**.
  2. Using the file picker, navigate to and select the **lab zip file**, then select **Import**.
  3. If you receive an error on import, consider the [Manual Import process](/v1/docs/migrate-lab-definitions-als#manual-import) for that lab.

> [!NOTE]
> If the lab appears to import properly, but you get an error when selecting the **Launch** button - this is expected behavior. There are a few steps left to accomplish.
  4. Once the lab has imported, select **Edit Profile**review the following settings:

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(113).png)

| Setting | Location | Description |
| --- | --- | --- |
| **Number** | Basic Information | Configure this to anything you’d like. This is often viewed as the “lab code” and **represents a short hand way reference to the lab** other than it’s name. |
| **Duration** | Basic Information | Ensure this is set to the appropriate desired, especially if you have enabled **Prompt User to Extend Time**. |
| **Prompt User to Extend Time** | Basic Information | If you have enabled this setting, consider the **# Minutes**and **Minutes Remaining** values for this setting. Make sure they align with your intended use case. |
| **Description** | Basic Information | Optional Metadata that can be added (and also retrieved over API) to provide added context about the lab. If the lab in Azure had a description, this should be populated already. |
| **Owner Name & Email** | Basic Information | This associates the lab with a specific person as the **Owner** and provides contact information for either Skillable Support or other internal peers if an issue is identified with the lab. |
| **Datacenter Availability** **(Do Not Skip)** | Cloud | Configure whatever regions you would like this lab to be able to be delivered in. This enables the labs to use [Geolocation](/v1/docs/geolocation) so they deploy in the region closest to the user. ***NOTE:****Compute Gallery images must be replicated in all selected regions.* |
| **Subscription Pool** **(Do Not Skip)** | Cloud | Select the subscription pool associated with your organization for these labs to deploy in. |
| **Resource Group** | Cloud | When Skillable deploys user virtual machines, they will be in a resource group with a format of **{prefix}-#####**. A default prefix has been added, but this can be changed to a value of your choosing. ***NOTE:****You do not need to add any permissions, templates, or policies.* |
| **User Save & Cancel Options** | Advanced | Ensure these settings align with the desired values for your organization. The following are pre-populated based on similar values in the original Azure Lab: - **Save/Cancel Labs When Last Lab Client Heartbeat Exceeds:** Azure’s *Shutdown virtual machines when users disconnect* - **Save/Cancel Labs When Last Activity Exceeds:** Azure’s *Shutdown idle virtual machines* - **Activity Required to Enable Auto-Save:** Azure’s *Shutdown virtual machines when users do not connect* Learn more about [Cost Controls for Cloud Labs](/v1/docs/cost-controls-for-cloud-labs). |
| **Publish to Organization Template Gallery** | Advanced | Enable this setting to make the lab a [template](https://docs.skillable.com/docs/using-the-template-gallery) that appears in the template gallery to function as a quicker starting point for other lab developers. ***NOTE:****Only Lab Administrators can enable or disable this option.* |
7. When your lab is configured properly, **Save** your changes.

> [!CAUTION]
> Configure Datacenter & Cloud Subscription Pool
> 
> Make sure to configure the Datacenter & Cloud Subscription Pool on every lab you import, otherwise they will fail to launch.

### Virtual Machine Profile Configuration

Once your Lab Profile is properly configured, you should validate that the Virtual Machine Profile is also configured correct.

1. From the Lab Profile details page, scroll down to the **Virtual Machines** section and select the VM.

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(114).png)
2. Open the provided **AllLabs.csv** file.
3. Edit the VM Profile and configure the following settings on the **Basic Information** tab:

| Setting | Description |
| --- | --- |
| **Description** | Optionally provide a detailed description of what makes this VM unique. |
| **Machine Type** | **Select the Azure VM SKU** that best fits your needs. The import process tried to pick an appropriate one based on your Azure lab configuration but may not be exactly the same or there may be other sizes your organization prefers. |
| **Disk Type** | By default, to keep costs low all labs are imported on Standard HDDs. If you would like faster launch times or other operations, you may change this to one of the SSD options, this will result in added costs to the VM deployment. Learn more about [Azure Disk Types](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types). |
| **Use Image Library** | If your **VM is going to use an image in the Compute Gallery**, select this option. The original setting can be identified in the CSV. |
| **Machine Image** | If your VM is using the Compute Gallery, specify the **Image Definition** and **Image Version**. The original image can be identified in the CSV. |
| **Use Azure Marketplace Image** | If your **VM is going to use an image from Azure Marketplace**, select this option. The original setting can be identified in the CSV. |
| **Marketplace Image Details** | If your VM is using the Azure Marketplace, specify the **Publisher ID**, **Product ID**, and **Plan ID**. The original image information can be identified in the CSV. If this information is missing or you wish to use a different image, [identify this information in Azure](https://learn.microsoft.com/en-us/marketplace/programmatic-deploy-of-marketplace-products#how-to-find-marketplace-product-identifiers-for-publisher-offer-and-plan). |
| **Operating System** | **Select the Operating System** that best aligns with the machine image you are using. This ensures Skillable Studio uses the correct connection type. For example, if you select Windows and the VM is Linux - there may be issues connecting. |
| **Username & Password** | Specify the username and password you would like **presented to the student**. ***NOTE:****While Azure Labs supported both admin and non-admin credentials (both are provided in the CSV), only a single set of credentials can be specified in Skillable Studio. If you would like to provide non-Admin credentials to the student, but keep Admin Credentials documented for other developers, use the Internal Notes tab on the VM profile.* |
| **Screen Width & Height** | Change this if you want the **default screen size** to be different on lab launch. ***NOTE:****We recommend leaving this at 1024×768 to account for smaller screens, after launch users can easily resize the VM to match their screen.* |
| **Redirect Clipboard** | Leave this enabled to **allow users to freely copy/paste between the virtual machine and their local computer**. Disable if you do not want users to copy/paste to or from the virtual machine. |
| **Allow Desktop Wallpaper** | Enable this to properly **display the VM’s configured desktop wallpaper**. If this is disabled, the wallpaper will appear solid black. For users with an already poor connection, this can further impact their connection quality to the VM. |
4. When your VM is configured properly, **Save**your changes.
5. To test that your lab is functioning properly, return to the lab profile the VM belongs and **Launch**.

## Manual Import

If you have trouble with the automated import on any labs, are using lab accounts, or just prefer to manually import your labs, the below process will assist with your migration to Skillable. Just as with the [Automated Import](/v1/docs/migrate-lab-definitions-als#automated-import), this process will result in a single Lab Profile and Virtual Machine Profile per Azure lab. However, if multiple labs need to use the exact same underlying environment - you can use a single virtual machine profile in multiple labs, leaving you less things to manage in the system.

### Virtual Machine Configuration

Before creating a Lab Profile, we will make sure we have a virtual machine to add to the lab profile once complete.

1. Ensure you are logged into both the [**Azure Portal**](https://portal.azure.com/) and [**Skillable Studio**](https://studio.skillable.com).
2. In the Azure Portal, navigate to **one of the VM Images you’d like to use**.
3. In Skillable Studio, if your **Azure Lab Services Imports** Lab Series already exists, navigate to it and skip to step 7.
4. If your Imports Lab Series does not exist, navigate to the **Admin** screen.
5. Find and select **Create Lab Series**.

![image(112)](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(112).png)
6. Name the Lab Series **Azure Lab Services Imports**, do not worry about configuring any other settings yet.
7. From the Lab Series screen, select **+ Create Virtual Machine Profile**and configure the following settings on the **Basic Information** tab:

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(116).png)

| Setting | Description |
| --- | --- |
| **Name** | Provide the Virtual Machine a descriptive name. |
| **Description** | Optionally provide a detailed description of what makes this VM unique. |
| **Machine Type** | **Select the Azure VM SKU** that best fits your needs. |
| **Disk Type** | By default, to keep costs low all labs use Standard HDDs. If you would like faster launch times or other operations, you may change this to one of the SSD options, this will result in added costs to the VM deployment. Learn more about [Azure Disk Types](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types). |
| **Use Image Library** | If your **VM is going to use an image in the Compute Gallery**, select this option. |
| **Machine Image** | If your VM is using the Compute Gallery, specify the **Image Definition** and **Image Version**. |
| **Use Azure Marketplace Image** | If your **VM is going to use an image from Azure Marketplace**, select this option. |
| **Marketplace Image Details** | If your VM was using the Azure Marketplace, specify the **Publisher ID**, **Product ID**, and **Plan ID**. Use the Azure Portal to [identify this information](https://learn.microsoft.com/en-us/marketplace/programmatic-deploy-of-marketplace-products#how-to-find-marketplace-product-identifiers-for-publisher-offer-and-plan). |
| **Operating System** | **Select the Operating System** that best aligns with the machine image you are using. This ensures Skillable Studio uses the correct connection type. For example, if you select Windows and the VM is Linux - there may be issues connecting. |
| **Username & Password** | Specify the username and password you would like **presented to the student**. ***NOTE:****While Azure Labs supported both admin and non-admin credentials, only a single set of credentials can be specified in Skillable Studio. If you would like to provide non-Admin credentials to the student, but keep Admin Credentials documented for other developers, use the Internal Notes tab on the VM profile.* |
| **Screen Width & Height** | Change this if you want the **default screen size** to be different on lab launch. ***NOTE:****We recommend leaving this at 1024×768 to account for smaller screens, after launch users can easily resize the VM to match their screen.* |
| **Redirect Clipboard** | Enable this to **allow users to freely copy/paste between the virtual machine and their local computer**. Leave disabled if you do not want users to copy/paste to or from the virtual machine. |
| **Allow Desktop Wallpaper** | Enable this to properly **display the VM’s configured desktop wallpaper**. If this is disabled, the wallpaper will appear solid black. This can impact the connection quality between a user and the VM. |
| **Enable Font Smoothing** | Enable this to **make the font within the virtual machine clearer for the user****(recommended)**. For users with an already poor connection, this can further impact their connection quality to the VM, the impact is typically minimal and outweighed by the positive impact for most users. |
| **Enable Dynamic Screen Resizing** | Enable this to**allow the virtual machine to resize to the available space within the lab window****(recommended)**. If this is disabled, users must manually modify the VM size to make it bigger or smaller for their screens. |
8. On the Network Adapters tab, **create at least one Network Adapter**.
9. When your VM is configured properly, **Save**your changes.

> [!WARNING]
> Best Practice: Reuse VM Profiles
> 
> If you will be making multiple labs with the same VM image and settings, you can reuse any VM profile multiple times rather than making a new one for every lab.

### Lab Profile Configuration

1. Ensure you are logged into both the [**Azure Portal**](https://portal.azure.com/) and [**Skillable Studio**](https://studio.skillable.com).
2. In the Azure Portal, navigate to **one of the labs you’d like to transition**.
3. In Skillable Studio, navigate to your **Azure Lab Services Imports** Lab Series.
4. From the Lab Series screen, select **+ Create Lab Profile**and configure the following settings:

![](https://cdn.document360.io/a298db04-a0fe-47e0-bfe3-c52d6f9d7c8c/Images/Documentation/image(115).png)

| Setting | Location | Azure Equivalent | Description |
| --- | --- | --- | --- |
| **Number** | Basic Information | N/A | Configure this to anything you’d like. This is often viewed as the “lab code” and **represents a short hand way reference to the lab** other than it’s name. Example: If your lab is “Azure 101” you may make the number “AZ-101” |
| **Name** | Basic Information | Name | The name of your lab. |
| **Duration** | Basic Information | Quota | This is the value billing is based on and that controls how long a user is allowed to be in the lab environment. Ensure this is set to the appropriate desired, especially if you have enabled **Prompt User to Extend Time**. |
| **Prompt User to Extend Time** | Basic Information | N/A | If you leave this setting enabled, consider the **# Minutes**and **Minutes Remaining** values for this setting. Make sure they align with your intended use case. |
| **Description** | Basic Information | Description | Optional Metadata that can be added (and also retrieved over API) to provide added context about the lab. |
| **Owner Name & Email** | Basic Information | N/A | This associates the lab with a specific person as the **Owner** and provides contact information for either Skillable Support or other internal peers if an issue is identified with the lab. |
| **Deployment Failure** | Cloud | N/A | This option determines what happens if your lab fails to deploy for any reason. For production labs, we recommend this is set to **Terminate Lab** to avoid learners entering an experience with issues. While a lab is in development, **other options can assist with troubleshooting**. |
| **Datacenter Availability** **(Do Not Skip)** | Cloud | Enabled Regions | Configure whatever regions you would like this lab to be able to be delivered in. This enables the labs to use [Geolocation](/v1/docs/geolocation) so they deploy in the region closest to the user. ***NOTE:****Compute Gallery images must be replicated in all selected regions.* |
| **Subscription Pool** **(Do Not Skip)** | Cloud | Tenant or Subscription | Select the subscription pool associated with your organization for these labs to deploy in. |
| **Resource Group** **(Do Not Skip)** | Cloud | Resource Group | When Skillable deploys user virtual machines, they will be in a resource group with a format of **{prefix}-#####**. **You must create at least one.** When created, a default prefix is defined, but this can be changed to a value of your choosing. ***NOTE:****You do not need to add any permissions, templates, or policies.* |
| **Network** **(Do Not Skip)** | Networks | Network | Create a network, this is required for your virtual machine. You can leave the CIDR default or customize it if you would like. |
| **User Save & Cancel Options** | Advanced | See Description | Ensure these settings align with the desired values for your organization. The following have similar values in the Azure Labs, as specified: - **Save/Cancel Labs When Last Lab Client Heartbeat Exceeds:** Azure’s *Shutdown virtual machines when users disconnect* - **Save/Cancel Labs When Last Activity Exceeds:** Azure’s *Shutdown idle virtual machines* - **Activity Required to Enable Auto-Save:** Azure’s *Shutdown virtual machines when users do not connect* Learn more about [Cost Controls for Cloud Labs](/v1/docs/cost-controls-for-cloud-labs). |
| **Publish to Organization Template Gallery** | Advanced | Template | Enable this setting to make the lab a [template](https://docs.skillable.com/docs/using-the-template-gallery) that appears in the template gallery to function as a quicker starting point for other lab developers or migrating additional labs. ***NOTE:****Only Lab Administrators can enable or disable this option.* |
5. On the Virtual Machines tab, select **+ Add Virtual Machine** and **add the VM you created** previously.
6. When your Lab Profile is configured properly, **Save**your changes.
7. To test that your lab is functioning properly, **Launch** it from the Lab Profile details page.

> [!WARNING]
> Best Practice: Create a Template
> 
> If you have many more labs & VMs to make that will have similar settings, strongly consider [making this lab profile an official template](https://docs.skillable.com/docs/using-the-template-gallery). This will expedite your migration process as well as new lab creation later.

## Next Steps

Repeat any part of this process as many times as needed. Now that you have transitioned your existing labs, it is time to start [Delivering Labs](/v1/docs/deliver-labs-lms-api-admins)!

Azure represents Microsoft Azure - Microsoft's public cloud computing platform.

Skillable's lab building & authoring platform.

Cloud Subscription Pools are used by labs to provision Cloud Slices in a load balanced fashion. Even if you are only using one managed Cloud Subscription, you still must create a Cloud Subscription Pool. This setup allows you to add additional subscriptions to your subscription pool later, at which point you will gain the benefits of the load balancing support that the platform provides.

Labs in Skillable Studio are housed in a Lab Profile. The Lab Profile contains the information about the configurable settings and the virtual machines that make up a lab. For a Lab Profile to be published it must be part of a Lab Series.

A Virtual Machine profile represents the hardware configuration of a virtual machine. Base settings would include, memory, processor, network adapters and storage configuration. The actual settings available are dependent on the fabric the Virtual Machine would be running on.
