Advanced Aircrew Academy → Docebo Migration

Project Tracker · Runpoint Partners · Updated March 20, 2026

Deadline
Jun 30
In Scope
17,938
In Docebo
611
Excluded
1,681
Remaining
17,327

Migration Progress

404 networks in scope · 17,938 modules (1,681 excluded across 17 networks)
611 / 17,938 modules in Docebo (3.4%)
611 in Docebo (patched + live)
17,327 remaining
1,681 excluded
All 611 published courses fully patched (Mar 17)
  • Shared player deployed to player/v1/ on S3 — future player updates deploy in seconds
  • All courses patched to use direct S3 URLs (no more expiring presigned URLs)
  • All SCORM launchers republished to Docebo with direct URL fallback (610/611, 1 orphan skipped)
  • Lightbox UX, completion flow, and runtime URL fixer all live across all courses

Pre-Production Checklist

Items that must be confirmed before deploying Abbott Labs (network 671) to production Docebo. First production network ships once all items are green.

Action Required: QA Bug Verification

Noel and Krista: Please verify that all 25 resolved bugs from the QA tracker are fixed in the sandbox courses. We need sign-off before pushing to production. Open the QA Tracker and confirm each fix.
ItemOwnerStatus
Verify all 25 resolved QA bugs are actually fixed in sandbox coursesNoel + KristaNeeds Sign-off
Test completion flow (timer, exam, SCORM records) on sandbox coursesNoel + KristaNeeds Sign-off
Confirm no new content or UX issues in sandboxNoel + KristaNeeds Sign-off

Pipeline Readiness

ItemStatus
Course shell properties configured (all 12 fields from Krista’s spec)Ready
Category + certificate mapping for all customers (432 entries)Ready
Additional fields value map (customization, Part, course type)Ready
Variant-to-master course matching (93.3% automated, rest acceptable)Ready
Production Docebo account access (power user via Krista)Ready
Production Docebo OAuth2 API app for pipeline automationReady
Existing Ascent shell matching logic (populate, don’t create new)Ready
Network exclusion list (17 excluded, 404 in scope)Ready
Shared player + direct S3 URLs (no expiring presigned URLs)Ready
All content bugs fixed at pipeline level (shared player deployed)Ready

First Production Deploy: Abbott Labs

Network ID: 671 · Customer Code: ABBOTT · Part: 91 · Category: 10 · Certificate: 11

After QA sign-off, Abbott will be the first network deployed to production Docebo. Krista should verify the course shell properties (thumbnail, description, category, certificate, additional fields) look correct on a few Abbott courses before we proceed to remaining networks.

Pipeline Status

Phase 1: Architecture Complete

Dynamic SCORM 2004 — thin wrapper in Docebo, course content on S3. Edits update S3 only, no re-upload needed.

Phase 2: Conversion Pipeline Complete

JSON → rendered HTML course player with all page types (content, review questions, exams, surveys). Media resolved to S3.

Phase 3: Docebo Automation Complete

Automated publish to Docebo via API. Rate limiting, tracking database, idempotent re-runs.

Phase 4: Batch Processing Complete

611 modules published across 13 customer networks. Zero failures. All courses patched with shared player, direct S3 URLs, and SCORM launchers republished.
Production hardening complete (Mar 17): Shared player deployed, all 611 courses patched, 610/611 SCORM launchers republished. Ready for Alvin to re-test. Remaining 19,008 modules will use new pipeline with all fixes built in.

Phase 4b: Production Deploy Ready to Ship

Push pipeline to production Docebo. All course shell properties configured. First production test network: Abbott Labs (network 671, Part 91). Target: March 25 (push button), full catalog by March 31.
Waiting on: QA sign-off from Noel and Krista on sandbox bug fixes. Once confirmed, Abbott deploys to production.

Phase 5: Course Editor In Progress

Web-based editor (Express + vanilla JS SPA). Backend + frontend built. Version history with snapshots, view, and restore. 34 integration tests passing. Blocked on EC2 provisioning (Nick’s team). Target: testing by Apr 7, go-live Apr 12.

Deployed Networks

16 networks published to Docebo sandbox. 611 courses total. All patched with shared player + direct S3 URLs.

Network ID Modules Status
297293Published + Patched
29880Published + Patched
17140Published + Patched
69840Published + Patched
85940Published + Patched
46630Published + Patched
32729Published + Patched
30615Published + Patched
25410Published + Patched
64810Published + Patched
67310Published + Patched
88410Published + Patched
901Published + Patched
6681Published + Patched
7381Published + Patched
7911Published + Patched

Next Steps

Immediate (Mar 20)

  1. QA sign-off from Krista + Noel — verify resolved bugs in sandbox courses. Last gate before production. Waiting
  2. Rebuild remaining 4 sandbox networks — networks 90, 668, 671, 791 need module data downloaded locally, then rebuild. 1,338 modules. To Do
  3. Ask Nick for s3:DeleteObject permission — needed to clean up 5,107 stale .html ref files on S3 To Do

After QA Sign-off (target Mar 25)

  1. Deploy Abbott Labs to production — network 671, ~36 courses. First production test. Krista verifies shell properties (thumbnail, category, certificate, additional fields).
  2. Full catalog deploy — remaining 404 networks / ~17,938 modules. Estimated ~1.5 days at concurrency 8.

April

  1. Course Editor MVP — backend + frontend built, 34 tests passing. Blocked on EC2 provisioning (Nick’s team). Target: testing by Apr 7, go-live Apr 12.
  2. Learning plans in Docebo — configure curriculum → learning plan mappings. Programmatic if API supports it.

Open Items

QA Bug Verification Action Required

Noel and Krista need to verify that all 25 resolved QA bugs are actually fixed in the sandbox courses before we push to production. This is the last gate before Abbott goes live.

Production Docebo OAuth2 API App Done

Krista created OAuth2 app aaa-enrollment-script on production Docebo (Mar 20). Credentials in .env. Power user access over courses. Enrollment permissions not yet granted (ask Krista when needed).

EC2 for Course Editor Waiting on Nick

Editor backend + frontend are built and tested (34 tests passing). Need EC2 instance provisioned by Nick’s team for deployment. Target: editor live for testing by Apr 7.

CloudFront + WAF Planned

Nick’s infra team wants to replace the S3 bucket policy with CloudFront + WAF for production. No timeline yet. Current bucket policy works fine.

Course Shell Configuration (Production)

All course shell properties are configured and integrated into the pipeline. Data from Krista’s master course list, category/certificate mapping, and additional fields spec (all received Mar 20).

All Properties Configured Complete

Every course shell in production Docebo will have the full property set per Krista’s API spec:

PropertySourceStatus
Name, code, description, course typeModule data + master course listReady
Thumbnail (image_id)Master course list (101 unique thumbnails)Ready
Customization LevelPart 135 = Tailored, Part 91 = MasterReady
Regulatory PartCustomer registry (all 447 customers mapped)Ready
Course/LP TypeHardcoded: AAA (14)Ready
Category + CertificatePer-customer from Krista’s mapping (432 customers)Ready
Duration, show rules, valid time, etc.Master list + hardcoded defaultsReady
93.3% of courses automatically receive thumbnail, description, and duration from the master course list. The remaining 6.7% are courses with empty descriptions or customer-specific manuals that don’t have a master equivalent. These still get all other properties (category, certificate, additional fields, etc.) and still get SCORM content.

Existing Ascent Shells

Per Krista: the Ascent shells in production Docebo were created only to maintain historical enrollment records. They have no properties set other than category and certificate. The pipeline will update all properties when it attaches SCORM content. Confirmed: this will not affect existing enrollments.

Throughput

Pipeline speed is limited by the build phase (media resolution), not the Docebo API. Zero rate limit errors at any volume.

Mode Concurrency Rate All 19,619 modules
Full pipeline3 (validated)~3/min~4.1 days
Full pipeline8 (recommended)~8/min~1.5 days
Content-only update15~10/min~1.2 days

Test Suite

158 tests across 10 test files. 0 failures.

CategoryTestsPassFailNotes
SCORM manifest + launcher + package26260
SCORM client (postMessage bridge)13130
Player build770
Deploy + Docebo publish18180
Batch processing18180
Status report20200
Tracking (SQLite)14140
S3 download660IAM permissions restored Mar 18
Module discovery550
Course config loader15150Added Mar 20
158 tests, 0 failures. All S3 permission issues resolved after Nick restored IAM permissions on Mar 18.

Codebase

AreaFilesDescription
src/scorm/4SCORM 2004 manifest, launcher, package ZIP, client bridge
src/player/2Course player builder + media resolver
src/deploy/7S3 upload, Docebo publish, batch engine, tracking DB, reports, course config
src/data/2S3 download + module discovery (network index)
scripts/6Batch runners, shared player deploy, content patcher, SCORM republisher
test/10158 tests covering all modules

5 dependencies: @aws-sdk/client-s3, @aws-sdk/s3-request-presigner, archiver, better-sqlite3, dotenv, unzipper

QA Tracker

0 open, 26 resolved, 1 not-a-bug. All content, UX, and configuration bugs fixed at the pipeline level. Shared player deployed. Course shell properties configured.

Open QA Tracker →