Skip to content

LaunchLife Migration Process Guide

Batch: Pitman Office 2019

This guide documents the end-to-end process for migrating Pitman labs into CloudShare environments. Steps are labeled by who performs them: [User] for manual actions and [Scripted] for automated actions.

Prerequisites (One-Time Setup)

These items only need to be configured once per batch — not repeated each run.

[User] Ensure the base blueprint 01 - Pitman Office 2019 Base BP has cs_startup.ps1 attached as a Vix startup script. This is done via CloudShare support and is what causes VMs to self-configure on boot.

[User] Ensure the Google Sheet has lab names populated in column C, starting at row 44 (Batch 3). Columns D–F (Status, Timing, Notes) will be written by the script.

[User] Ensure each lab's exercise files exist on the FTP server under: /Pitman Office 2019's Cloud Folder/Batch 3 - Pitman/<Lab Name>/

Step 1 — Upload Configuration Script to FTP

[Scripted] At the start of each run, the orchestrator uploads the latest vm_configure.ps1 to: /Pitman Office 2019's Cloud Folder/scripts/vm_configure.ps1

This ensures every VM that boots during this run pulls the current version of the script.

VM-level: Nothing happens yet. This just stages the script on FTP.

Step 2 — Read Lab List from Google Sheet

[Scripted] The orchestrator authenticates with Google Sheets and reads all rows from row 44 onward. Each row must have a lab name in column C. The script derives the Office application type from the lab name code (e.g., EXC → Excel, WRD → Word, ACC → Access).

VM-level: Nothing happens yet.

Step 3 — Create CloudShare Environment (per lab)

[Scripted] For each lab, the orchestrator calls the CloudShare API to create a new environment from the base blueprint. The environment is named after the lab (e.g., Pitman EXC19L1 Exercise Lab).

Google Sheet column D updates to: Creating Environment

VM-level: CloudShare provisions the environment. The VM is building from the base blueprint snapshot — it is not yet booted or configured.

If an environment with that name already exists, the script looks it up and reuses it rather than failing.

Step 4 — Wait for Environment to Become Active

[Scripted] The script polls the CloudShare API every 15 seconds, up to 10 minutes, until the environment and all its VMs report an Active status.

VM-level: The VM has booted and is running. The cs_startup.ps1 Vix script fires automatically on first boot and begins running in the background.

Step 5 — Mark as Ready in Google Sheet

[Scripted] Once the environment is active, the sheet updates:

  • Column D: Ready - Needs Manual Config
  • Column E: Timestamp of creation
  • Column F: Vix startup script running on boot

The orchestrator then moves to the next lab.

VM-level: The VM is now running cs_startup.ps1 autonomously. See Step 6 for what happens inside the VM.

Step 6 — VM Self-Configuration (Automatic on Boot)

The following all happens inside the VM automatically via cs_startup.ps1. No human action is required.

6a — Retrieve Lab Name

The VM calls the CloudShare metadata API (https://metadata.cloudshare.com/...) to learn its own environment name. It retries up to 10 times if the API is not yet available.

6b — Determine Application Type

The VM parses the lab name to identify the Office app:

Code in name App configured
EXC Excel
WRD Word
ACC / ACS Access
PPT PowerPoint
OTL Outlook
PUB Publisher

6c — Download Configuration Script

The VM pulls vm_configure.ps1 from FTP and saves it to C:\vm_configure.ps1.

6d — Run VM Configuration

vm_configure.ps1 executes and performs all of the following:

  • Download lab files — Pulls the lab's exercise folder from FTP into C:\<Lab Name>\, including all subfolders.
  • Create Office shortcut — Adds a desktop shortcut directly to the correct Office 2019 application (e.g., Excel.lnk → EXCEL.EXE).
  • Create folder shortcut — Adds a desktop shortcut to C:\<Lab Name>\ so students can access exercise files immediately.
  • Show file extensions — Sets the Windows registry to display file name extensions in File Explorer.
  • Configure Start menu — Applies a layout with Office 2019 apps pinned (Word, Excel, PowerPoint, Access, Outlook, OneNote) plus File Explorer and Chrome.
  • Disable updates — Disables Windows Update and Office auto-updates via registry and service settings, so labs remain stable.
  • Set language to en-GB — Configures Windows locale, keyboard, and region to English (United Kingdom), removing en-US.

A log of all actions is written to C:\lab_setup_log.txt on the VM.

Step 7 — Verify Completion

[User] Spot-check a sample of environments in CloudShare:

  • VM desktop has the correct Office app shortcut and lab folder shortcut
  • C:\<Lab Name>\ contains the expected exercise files
  • File extensions are visible in File Explorer
  • Start menu shows Office 2019 apps

[User] In the Google Sheet, manually update column D from Ready - Needs Manual Config to Complete for verified labs.

Running the Script

From the project directory (C:\CloudShare powershells\LL-migration):

# Run all labs
python cloudshare_orchestrator.py

# Preview without making changes
python cloudshare_orchestrator.py --dry-run

# Run a single lab by name
python cloudshare_orchestrator.py --lab "Pitman EXC19L1 Exercise Lab"

# Skip labs already marked Complete in the sheet
python cloudshare_orchestrator.py --skip-complete

# Skip the FTP script upload (e.g., if vm_configure.ps1 hasn't changed)
python cloudshare_orchestrator.py --skip-upload

A timestamped log file (orchestrator_YYYYMMDD_HHMMSS.log) is created in the same directory for each run.

Status Reference

Sheet Status Meaning
Pending Lab not yet started
Creating Environment CloudShare API call in progress
Configuring Transitional — rarely seen
Ready - Needs Manual Config Environment active; VM self-configuring on boot
Complete Verified and done
Failed Error occurred — see column F for details
Skipped Already complete; skipped by --skip-complete flag