Skip to content
moonflare
← Back to projects
ProfessionalPublicAutomationBrowser ToolingIntegration

SGP Migration Automator

A Chrome extension that automates multi-step client migration tasks between SGP environments to reduce repetitive manual work.

GitHub repository →

Context

Public tool built to support migration workflows between SGP systems, interacting directly with existing web interfaces.

Problem

Migrating clients between environments required repetitive, error-prone steps across multiple screens and systems.

Constraints

  • Must operate within the target systems’ web UIs and their timing/behavior quirks.
  • Actions need safeguards to avoid operating on the wrong client or context.
  • Operator remains responsible for reviewing and confirming critical steps.

Architecture

  • Manifest V3 Chrome extension with React/TypeScript UI and content-script driven automation.
  • Modular libraries for SGP interaction, selectors, and storage/state synchronization.
  • State persisted via browser extension storage to support multi-tab/operator workflows.

Key decisions

  • Used a sidebar-driven interaction model to keep automation controls close to the operator’s workflow.
  • Implemented validation/identity checks before actions to reduce risk of incorrect operations.
  • Encoded timing accommodations (e.g., delays where needed) based on observed system behavior.

Implementation

  • Automated data collection across service/contract/network-related views.
  • Supported provisioning-related steps and status monitoring to assist completion of migrations.
  • Provided visual status feedback and modes to make progress and state explicit to the operator.

Challenges

  • Dealing with variability and fragility of DOM-driven automation on legacy/third-party interfaces.
  • Ensuring the tool accelerates work without hiding important verification steps from the human operator.

Outcomes (verified)

  • A focused automation tool with documented features and versioned releases in the public repository.
  • Operational time savings are not publicly quantified.

Lessons learned

  • Defensive checks and explicit state are essential when automating against systems you don’t control.
  • Good operator tooling augments human judgment instead of attempting full unattended control.

Stack

  • React
  • TypeScript
  • Vite
  • Chrome Extension (MV3)
  • CRXJS