Migration External Data into V2

V2Master

Introduction

Import Tools

V2Import Rails Modul

Module Classes

Module Usage

DSL File Format

CSV File Format

Limitations

The current version (2014-08-14) does not support the following options:

Rake Task db:import

Rake Task db:load_tree

Export Tools

Rake Task db:export

Rake Task db:save_tree

Example Usage

Export Example

This sections shows how to export all data from a V2 system. This is done in two steps:

  1. System Configuration

    1. Project structures: Folders and Organisational Chart
    2. Object types: Documents, Revisions, Users
    3. Classification fields and schemes
    4. Status lists and status values
    5. File types
  2. Project Data

    1. Users
    2. Local identities
    3. User roles
    4. User organisational assignments?
    5. Work items
    6. Work item links
    7. Notes
    8. Subscribers
    9. Files

System Configuration Export

  1. Setup shell variables and destination directory
    V2_ROOT=~/rails/v2p0              # Root directory of the V2 application
    
    DST=${V2_ROOT}/tmp/csv            # Directory to save exported files
    DSL=${V2_ROOT}/script/v2_import   # Directory where export/import DSL files are located
    
    mkdir -p $DST
  2. Export: Folder Structure, Organisational Chart, Classification Field Structure
    rake db:save_tree model=Folder          file=$DST/folder.txt
    rake db:save_tree model=Organisation    file=$DST/organisation.txt
    rake db:save_tree model=Classification  file=$DST/classification.txt
  3. Export: Object Types: Document, Revision, Transmittal, User
    rake db:export config_file=$DSL/resource_sub_type_document_dsl.rb     csv_file=$DST/resource_sub_type_document.csv     where='resource_type="Document"'
    rake db:export config_file=$DSL/resource_sub_type_revision_dsl.rb     csv_file=$DST/resource_sub_type_revision.csv     where='resource_type="Revision"'
    rake db:export config_file=$DSL/resource_sub_type_transmittal_dsl.rb  csv_file=$DST/resource_sub_type_transmittal.csv  where='resource_type="Transmittal"'
    rake db:export config_file=$DSL/resource_sub_type_user_dsl.rb         csv_file=tmp/resource_sub_type_user.csv          where='resource_type="User"'
  4. Export: Classification Schemes:
    rake db:export config_file=$DSL/classification_dsl.rb                csv_file=$DST/classification.csv
    rake db:export config_file=$DSL/classification_scheme_dsl.rb         csv_file=$DST/classification_scheme.csv
    rake db:export config_file=$DSL/classification_schemes_class_dsl.rb  csv_file=$DST/classification_schemes_class.csv
  5. Export: Status Lists and Status Values
    rake db:export config_file=$DSL/status_list_dsl.rb   csv_file=$DST/status_list.csv
    rake db:export config_file=$DSL/status_value_dsl.rb  csv_file=$DST/status_value.csv
  6. Export: File Types
    rake db:export config_file=$DSL/file_type_ref_dsl.rb csv_file=$DST/file_type_ref.csv

System Data Export

Import Example

Import Dependencies

Import data should be imported in the following order:

  1. Folders & Organisation

    1. folder - no dependencies
    2. organisation - no dependencies
  2. Workflow Status

    1. status_list - no dependencies
    2. status_value - depends on status_list
  3. Classification Fields & Schemes

    1. classification - no dependencies
    2. classification_scheme - depends on classifications
  4. Object Types

    1. resource_sub_type_revision - depends on classification schemes
    2. resource_sub_type_document - depends on classification schemes & revisions (for default revision type

    3. resource_sub_type_user - depends on classification schemes
  5. Classification Scheme Classes

    1. classification_schemes_classes
  6. Users

    1. user - depends on classification schemes
    2. user_role - depends on users

System Configuration Import

Example Configuration Import Script

The following script shows the order in which configuration files should be loaded

#
# Export system configuration
#

V2_ROOT=~/rails/master/v2p0       # Root directory of the V2 application

SRC=${V2_ROOT}/tmp/import         # Directory where the import csv files are
DSL=${V2_ROOT}/script/v2_import   # Directory where export/import DSL files are located
#SEP="col_sep=' '"                # Tab

PREFIX='2015.03.06.'
SUFFIX='-ah5'


# -- Check that files are present

echo ""
echo "---- Check all file are present.."
echo ""

RC=0

check_file () {
  if [ ! -r "$1" ] ; then
    echo "ERROR: File not found: $1" 1>&2 ; RC=1
  fi
}

check_file "${SRC}/${PREFIX}folders${SUFFIX}.txt"

check_file "${SRC}/${PREFIX}organisation${SUFFIX}.txt"

check_file "${SRC}/${PREFIX}status_list${SUFFIX}.csv"
check_file "${SRC}/${PREFIX}status_value${SUFFIX}.csv"                 

check_file "${SRC}/${PREFIX}classification${SUFFIX}.csv"
check_file "${SRC}/${PREFIX}classification_scheme${SUFFIX}.csv"

check_file "${SRC}/${PREFIX}resource_sub_type_revision${SUFFIX}.csv"
check_file "${SRC}/${PREFIX}resource_sub_type_document${SUFFIX}.csv"
check_file "${SRC}/${PREFIX}resource_sub_type_user${SUFFIX}.csv"

check_file "${SRC}/${PREFIX}classification_schemes_class${SUFFIX}.csv"

check_file "${SRC}/${PREFIX}user${SUFFIX}.csv"
check_file "${SRC}/${PREFIX}user_role${SUFFIX}.csv"

## TODO: This information is already contained in the user.csv file
##
## check_file "${SRC}/${PREFIX}users_organisation${SUFFIX}.csv"
## check_file "${SRC}/${PREFIX}user_classification${SUFFIX}.csv"


if [ "$RC" != 0 ] ; then
  echo "Exiting due to previous errors"
  exit
fi
echo "OK"


# -- Org Chart

echo ""
echo "---- Import: Folders & Org Chart.."
echo ""

rake db:load_tree model=Folder       file=${SRC}/${PREFIX}folders${SUFFIX}.txt
rake db:load_tree model=Organisation file=${SRC}/${PREFIX}organisation${SUFFIX}.txt

# -- Status lists

echo ""
echo "---- Import: Status lists.."
echo ""

rake db:import \
  config_file=${DSL}/status_list_dsl.rb \
  csv_file=${SRC}/${PREFIX}status_list${SUFFIX}.csv   

rake db:import \
  config_file=${DSL}/status_value_dsl.rb \
  csv_file=${SRC}/${PREFIX}status_value${SUFFIX}.csv                 

# -- Classification

echo ""
echo "---- Import: Classification.."
echo ""

rake db:import \
  config_file=${DSL}/classification_dsl.rb \
  csv_file=${SRC}/${PREFIX}classification${SUFFIX}.csv

rake db:import \
  config_file=${DSL}/classification_scheme_dsl.rb \
  csv_file=${SRC}/${PREFIX}classification_scheme${SUFFIX}.csv

# -- Object types

echo ""
echo "---- Import: Object Types.."
echo ""

rake db:import \
  config_file=${DSL}/resource_sub_type_revision_dsl.rb \
  csv_file=${SRC}/${PREFIX}resource_sub_type_revision${SUFFIX}.csv

rake db:import \
  config_file=${DSL}/resource_sub_type_document_dsl.rb \
  csv_file=${SRC}/${PREFIX}resource_sub_type_document${SUFFIX}.csv

rake db:import \
  config_file=${DSL}/resource_sub_type_user_dsl.rb \
  csv_file=${SRC}/${PREFIX}resource_sub_type_user${SUFFIX}.csv

# -- Classification Schemes

echo ""
echo "---- Import: Classification Schemes.."
echo ""

rake db:import \
  config_file=${DSL}/classification_schemes_class_dsl.rb\
  csv_file=${SRC}/${PREFIX}classification_schemes_class${SUFFIX}.csv

# -- Users

echo ""
echo "---- Import: Users.."
echo ""

rake db:import \
  config_file=${DSL}/user_dsl.rb \
  csv_file=${SRC}/${PREFIX}user${SUFFIX}.csv

rake db:import insert_only=false insert_only=false \
  config_file=${DSL}/user_role_dsl.rb \
  csv_file=${SRC}/${PREFIX}user_role${SUFFIX}.csv

## TODO: This information is already contained in the user.csv file
##
## rake db:import \
##   config_file=${DSL}/users_organisation_dsl.rb \
##   csv_file=${SRC}/${PREFIX}users_organisation${SUFFIX}.csv
## 
## rake db:import \
##   config_file=${DSL}/user_classification_dsl.rb \
##   csv_file=${SRC}/${PREFIX}user_classification${SUFFIX}.csv

echo ""
echo "Done."

System Data Import

V2MigrationTools (last edited 2015-04-23 09:24:58 by 172)

Copyright 2008-2014, SoftXS GmbH, Switzerland