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 |