1. Analysis
    1. Categorization of difficulty
    2. Weighted metrics applied to project categorization to determine scope
      1. Pain Points
        1. Packaging
          1. custom nant tasks
          2. hard coded crosslink directories
          3. inconsistent configurations
        2. project structure inconsistency
          1. type of project:
          2. Core
          3. TP
          4. leaf
          5. Utility
          6. Tool
          7. 3rd party
          8. language
          9. C#
          10. VB
          11. Other
          12. Gen 1
          13. Gen2
        3. 3rd party difficulties
          1. projects not our code but are checked in
          2. structure difficulties
          3. identify artifacts for publish and consumption
        4. up front project work done by developer prior to migration
          1. htt://wiki/display/eng/Project+Migration+Checklist
  2. Preparation
    1. Project Master cleanup
    2. Migration list from PM queries
    3. Project configuration cleanup
    4. Parallel systems
      1. Blue system (in place)
        1. Accurev
        2. SCIFBUIDCI11
        3. SCBDRELEASE11
        4. Eng
        5. SmcAdminDelivery
      2. Green System (parallel)
        1. Git
        2. SCIFBUILD01
        3. Ivy
        4. Artifactory
        5. Chef
  3. Customization
    1. Iterative runs
      1. Automated project configuration changes
      2. Migration of code
      3. builds
      4. packages
      5. installs
  4. Rollout
    1. non NaviNet projects initiated as Git repositories
      1. CodeGenTPProvisioning
      2. membaseRepo
      3. naviNetOperationsTools
      4. ReleaseEngineeringServer Provisioning
      5. RundeckRepo
      6. TPCbc
      7. chef-repo
    2. OLTPDatabase - first general use development project in Git
      1. training of dev group
    3. naviNet projects migrated in single weekend
      1. run automated project changes
      2. run automated code migration
      3. run automated builds
      4. run automated packaging
      5. run automated distribution
      6. testing and verification
  5. Source Control Change
    1. Define Policies
      1. Developer Workflow
      2. Branch Policies
    2. Train Staff
    3. Automation
      1. MIgration
      2. System Daily Management
        1. Repository Creation
        2. User Creation
        3. Branch policies
      3. Identify Developer Workflow processes
        1. At least partially automated by GitFlow
      4. Identify and create custom hooks
      5. Automation Language
        1. Powershell (known)
        2. Python (learning curve)
      6. Change Build Scripts
  6. Dependency management restructuring
    1. Current tooling breaks
    2. No Accurev crosslinks
    3. New tools and subsystems
      1. Ivy
      2. Artifactory
    4. Project level changes
      1. Automate
    5. Build script changes
  7. Build server restructuring
    1. upgrade ccnet
    2. two build servers to one single server
    3. build script changes
  8. Packaging Changes
    1. split out building from packaging
    2. New tools or subsystems
    3. Project level changes
      1. Custom nant code
      2. Identification of project artifacts
      3. Ivy
      4. Arifactory
      5. Chef
    4. build script changes
  9. Testing
    1. Code Migration
    2. Build server Changes
    3. Project level changes
    4. publishing
    5. packaging
    6. installation
  10. Documentation
    1. Server configurations
      1. build servers
      2. Git Servers
    2. Subsystem configuration
      1. artifactory
      2. chef
    3. Workflows
      1. Developer workflow
      2. SCM Admin workflow
      3. QA workflow
      4. AST workflow
      5. release workflow