diff --git a/tools/test/scenarios/odtn/README.md b/tools/test/scenarios/odtn/README.md
index 8a6eae6..e0df1ca 100644
--- a/tools/test/scenarios/odtn/README.md
+++ b/tools/test/scenarios/odtn/README.md
@@ -1,7 +1,7 @@
 ## Description
 
 This directory contains several Shell scripts for ODTN project testing in STC environment.
-The normal steps of ODTN testing are listed:
+The normal steps of ODTN testing are listed (or see the wiki page: https://wiki.onosproject.org/display/ODTN/Cassini+with+STC):
 
 #### 1. `stc net-odtn-presmoke`
 This command completes preparation for testing, including latest onos image build, and onos/atomix cluster containers startup. Also, because of dynamic IP Address for containers, some related environment variables are stored in /tmp/odtn/OCvar.sh. All subsequent stc command should source this file as default environment. An example of this file is:
diff --git a/tools/test/scenarios/odtn/checkNetInit.sh b/tools/test/scenarios/odtn/checkNetInit.sh
index 792a8d7..25524bb 100755
--- a/tools/test/scenarios/odtn/checkNetInit.sh
+++ b/tools/test/scenarios/odtn/checkNetInit.sh
@@ -1,15 +1,22 @@
 #!/bin/bash
 
-# Two input parameters:
+# Three input parameters:
 # $1 - one of {device, port, link}, specify what needs to be checked.
 # $2 - IP address of ONOS instance.
+# $3 - Optional. absolute path of net summary json file. The default path is "/tmp/odtn/net-summary.json".
 
-line_num=`cat ~/emulator/net-summary.json | wc -l`
+summary="/tmp/odtn/net-summary.json"
+if [[ $# == 3 ]];then
+    summary=$3
+fi
+
+line_num=`cat $summary | wc -l`
 if [[ "$line_num" != "1" ]]; then
     echo "JSON file should have only 1 line."
     exit 1
 fi
-
+content=`cat $summary`
+echo -e "The content of the json file is :\n $content"
 # Extract specific value from returned json string under onos command "odtn-show-tapi-context"
 function get_json_value()
 {
@@ -22,7 +29,7 @@
     local num=$3
     fi
 
-    local value=$(echo "${json}" | awk -F"[,:}]" '{for(i=1;i<=NF;i++){if($i~/'${key}'\042/){print $(i+1)}}}' | tr -d '"' | sed -n ${num}p)
+    eval value=$(echo "${json}" | awk -F"[,:}]" '{for(i=1;i<=NF;i++){if($i~/'${key}'\042/){print $(i+1)}}}' | tr -d '"' | sed -n ${num}p)
 
     return ${value}
 }
@@ -30,7 +37,7 @@
 tried=0
 case "$1" in
     "device" )
-        get_json_value $( cat ~/emulator/net-summary.json) device_num
+        eval get_json_value '$content' device_num
         device_num=$?
         num_in_topo=`onos $2 devices | wc -l`
         num_in_tapi=`onos $2 odtn-show-tapi-context | grep "<node>" | wc -l`
@@ -47,9 +54,9 @@
         done
         ;;
     "port" )
-        get_json_value $( cat ~/emulator/net-summary.json) port_num
+        eval get_json_value '$content' port_num
         port_num=$?
-        get_json_value $( cat ~/emulator/net-summary.json) device_num
+        eval get_json_value '$content' device_num
         device_num=$?
         num_in_tapi=`onos $2 odtn-show-tapi-context | grep "<owned-node-edge-point>" | wc -l`
         num_in_topo=`onos $2 ports | wc -l`
@@ -68,7 +75,7 @@
             done
             ;;
     "link" )
-        get_json_value $( cat ~/emulator/net-summary.json) link_num
+        eval get_json_value '$content' link_num
         link_num=$?
         num_in_topo=`onos $2 links | wc -l`
         num_in_tapi=`onos $2 odtn-show-tapi-context | grep "<link>" | wc -l`
diff --git a/tools/test/scenarios/odtn/createNetCfg.sh b/tools/test/scenarios/odtn/createNetCfg.sh
index 9bbd456..9bfbb28 100755
--- a/tools/test/scenarios/odtn/createNetCfg.sh
+++ b/tools/test/scenarios/odtn/createNetCfg.sh
@@ -1,9 +1,23 @@
 #!/bin/bash
 
-# Get first IPv4 Address on local machine, even the machine has lots of NICs.
-localIP=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" | head -n1`
-mkdir /tmp/odtn
-# Replace IP address in openconfig json files with real ones.
-cat ${ONOS_ROOT}/apps/odtn/api/src/test/resources/openconfig-devices.json | sed "s/127.0.0.1/${localIP}/g" > /tmp/odtn/openconfig-devices.json
-cat ${ONOS_ROOT}/apps/odtn/api/src/test/resources/openconfig-device-link.json | sed "s/127.0.0.1/${localIP}/g" > /tmp/odtn/openconfig-device-link.json
-sleep 30
+if [[ "$1" == "-h" ]];then
+    echo "Usage for script $0:"
+    echo " - $0. The command without parameter means that config jsons are generated by modifying testing configuration of odtn app"
+    echo " - $0 {dev-abs-path} {link-abs-path} {net-summary}. The command means use specified device config and link config directly."
+fi
+
+if [[ $# == 0 ]];then
+    # Get first IPv4 Address on local machine, even the machine has lots of NICs.
+    localIP=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" | head -n1`
+    mkdir /tmp/odtn
+    # Replace IP address in openconfig json files with real ones.
+    cat ${ONOS_ROOT}/apps/odtn/api/src/test/resources/openconfig-devices.json | sed "s/127.0.0.1/${localIP}/g" > /tmp/odtn/openconfig-devices.json
+    cat ${ONOS_ROOT}/apps/odtn/api/src/test/resources/openconfig-device-link.json | sed "s/127.0.0.1/${localIP}/g" > /tmp/odtn/openconfig-device-link.json
+    cp ${HOME}/emulator/net-summary.json /tmp/odtn/net-summary.json
+    sleep 30
+elif [[ $# == 3 ]];then
+    mkdir /tmp/odtn
+    cp $1 /tmp/odtn/openconfig-devices.json
+    cp $2 /tmp/odtn/openconfig-device-link.json
+    cp $3 /tmp/odtn/net-summary.json
+fi
