OneDev to Sztab Migration Tool (SZ-159)
rk@tigase.net opened 6 days ago

Summary

Implement a one-shot server-to-server migration tool that imports OneDev data into Sztab using the OneDev REST API. The migration is designed to be run once as a cutover operation, not a continuous sync.

Scope (Phase 1)

  1. Users — imported via OneDev REST API; passwords are not migrated. Users must reset their password on first login to Sztab.
  2. Projects — imported with metadata (name, description). Git repositories transferred as bare clones into Sztabina.
  3. Issues — imported with best-effort status mapping from OneDev states to Sztab's nine-status workflow. Fields with no Sztab equivalent are dropped or recorded in the issue description.
  4. Pull Requests — out of scope for Phase 1.

Approach

  1. Source: OneDev REST API (https://tigase.dev/~help/api)
  2. Target: Sztab REST API + Sztabina git clone
  3. Migration runs as a standalone tool (script or CLI), not embedded in Sztab UI
  4. Idempotent where possible — re-running should not create duplicates

Acceptance Criteria

  1. All OneDev users imported; users can log in after password reset
  2. All projects imported with git history intact
  3. Issues imported with best-effort state mapping
  4. Migration tool documented with step-by-step usage instructions
  5. Tested against Tigase's OneDev instance
  • rk@tigase.net commented 6 days ago
    PhaseWorkHours
    OneDev API explorationEndpoints, auth, pagination4
    User importFetch, create in Sztab, force password reset4
    Project importFetch, create in Sztab4
    Git bare clone transferClone from OneDev, push to Sztabina8
    Issue importFetch, state mapping, create in Sztab8
    Error handlingRe-run safety, partial failure recovery4
    TestingEnd-to-end against Tigase OneDev8
    DocumentationUsage guide2
    Total 42
  • rk@tigase.net commented 6 days ago

    Proposed mapping from OneDev to Sztab issue status during import:

    OneDev StatusSztab Status
    OpenNEW
    In ProgressIN_PROGRESS
    ClosedCLOSED
    FixedRESOLVED
    Won't FixJUNKED
    DuplicateDUPLICATE
    UnknownNEW
  • Wojciech Kapcia (Tigase) commented 6 days ago

    One thing to consider and keep in mind - inter-issue linking (it proved quite useful over the years)

  • rk@tigase.net commented 6 days ago

    Wojciech — this was implemented as SZ-142 (symmetric peer-to-peer links). The parent/child model described here was scoped out at the time. If you feel hierarchical linking is needed before migration, pl let me know.

    Also, the linking is only in the same project - again, caveated due to lack of time; can revisit if it's deemed critical.

issue 1 of 1
Type
New Feature
Priority
Normal
Assignee
Version
1.11.1
Sprints
n/a
Customer
n/a
Issue Votes (0)
Watchers (3)
Reference
SZ-159
Please wait...
Page is in error, reload to recover