diff --git a/utils/ci/check_manual_usage_example.sh b/utils/ci/check_manual_usage_example.sh
deleted file mode 100755
index 8bd5584..0000000
--- a/utils/ci/check_manual_usage_example.sh
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/bin/bash
-export DOCKER_HOST="unix:///var/run/docker.sock"
-
-set -e
-set -x
-
-W() {
-    # Wait until a line appears in the screen session.
-    # It starts from the beginning of the log and exits after the first match.
-    local T=${2:-20s}
-    #timeout -k 3s ${T} stdbuf -o0 grep -q -m 1 "^${1}" <(tail -F -n+0 screenlog.0)
-    # (HACK) As Jenkins blocks subshell, we must use an intermediate script
-    local SUBF=$(mktemp)
-    chmod +x ${SUBF}
-    cat > ${SUBF} <<- EOF
-	#!/bin/bash -e
-	while true; do
-	    if strings screenlog.0 | grep -m 1 "\${1}"; then
-	        exit 0
-	    fi
-	    sleep 0.5s
-	done
-	EOF
-    local RES=0
-    timeout -k 3s ${T} ${SUBF} "${1}" || RES=$?
-    rm -f ${SUBF}
-    if [ ! "$RES" = "0" ]; then
-        sync
-        echo -e "\n\n\n(Debug) Error while waiting for a pattern to appear in screenlog.0\n\n\n"
-        strings screenlog.0
-    fi
-    return ${RES}
-}
-
-Cmd() {
-    # Send a command to the screen session, aka into the containernet prompt
-    screen -S sonemu -X stuff "${1}^M"
-}
-
-Vnf() {
-    # Send a command inside the vnf1 container
-    docker exec -t "mn.${1}" /bin/bash -c "${2}" && sync
-}
-
-
-if ! screen --version | grep 'Screen version'; then
-    # Install screen and do an initial cleanup
-    sudo apt-get update -qq -y
-    sudo apt-get install -y screen
-    screen --version | grep 'Screen version'
-fi
-if ! timeout --version; then
-    # Install coreutils for the timeout command
-    sudo apt-get update -qq -y
-    sudo apt-get install -y coreutils
-    timeout --version
-fi
-# Initial cleanup
-pkill --signal KILL -f 'SCREEN -L -S sonemu' || true
-sleep 1s
-screen -wipe || true
-rm -f screenlog.0
-
-
-# Start containernet with a topology
-screen -L -S sonemu -d -m sudo python src/emuvim/examples/simple_topology.py
-# Setup screen for immediate flusing
-screen -S sonemu -X logfile flush 0
-# Wait for the cli to start
-W '^*** Starting CLI:' 60s
-# Print nodes
-Cmd 'nodes'
-# Start vnf1
-son-emu-cli compute start -d datacenter1 -n vnf1 && sleep 1s
-# Start vnf2
-son-emu-cli compute start -d datacenter1 -n vnf2 && sleep 1s
-# List compute nodes
-son-emu-cli compute list && sleep 1s
-sync # avoid text overlapping
-# Gather some infos
-Cmd 'sh sync'
-Cmd 'sh echo "... starting various checks"'
-sync # avoid text overlappin
-Cmd 'links'
-Vnf vnf1 'ifconfig'
-Vnf vnf2 'ifconfig'
-# Try to ping vnfs
-IP_2=$(Vnf vnf2 'ip -f inet -o addr show vnf2-eth0' | cut -d\  -f 7 | cut -d/ -f 1)
-# IP_1=$(Vnf vnf1 'ip -f inet -o addr show vnf1-eth0' | cut -d\  -f 7 | cut -d/ -f 1)
-OUTPUT_A=$(Vnf vnf1 "ping -v -c 2 ${IP_2}")
-Cmd 'quit'
-# Wait for sonemu to end
-W '*** Done'
-
-echo -e '\n\n******************* Result ******************\n\n'
-strings screenlog.0
-echo -e '\n\n*********************************************\n\n'
-
-
-# Check the ping result
-if echo ${OUTPUT_A} | grep ', 2 received'; then
-    echo 'No problems detected'
-    exit 0
-else
-    echo 'Ping is broken !'
-    exit 1
-fi
diff --git a/utils/ci/son-analyze_test.sh b/utils/ci/son-analyze_test.sh
deleted file mode 100755
index 45aafad..0000000
--- a/utils/ci/son-analyze_test.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-vnf1_uuid=$(docker inspect --format="{{.Id}}" mn.vnf1)
-
-
diff --git a/utils/ci/stop_sdk_monitor.sh b/utils/ci/stop_sdk_monitor.sh
deleted file mode 100755
index c61e3f6..0000000
--- a/utils/ci/stop_sdk_monitor.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-# stop the monitor
-son-emu-cli monitor stop_metric -vnf vnf1:output --metric tx_packets
-
-sleep 1
-
-#stop the vnf
-son-emu-cli compute stop -d datacenter1 -n vnf1
-
-
diff --git a/utils/ci/test_sdk_monitor.sh b/utils/ci/test_sdk_monitor.sh
deleted file mode 100755
index 8c3ce47..0000000
--- a/utils/ci/test_sdk_monitor.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-set -e
-set -x
-
-# test if a vnf can be deployed and monitored
-
-#start test emulator topology
-#python src/emuvim/examples/monitoring_demo_topology.py &
-
-# start a vnf
-son-emu-cli compute start -d datacenter1 -n vnf1  --net '(id=input,ip=10.0.10.3/24),(id=output,ip=10.0.10.4/24)'
-
-sleep 1
-
-# monitor a metric
-son-emu-cli monitor setup_metric -vnf vnf1:output --metric tx_packets
-
-# allow some time to gather metrics
-sleep 20
-
-# check if metric is monitored as expected (exported by son-emu, has vnf name as metric id)
-tx_rate=$(son-emu-cli monitor-zapi prometheus -d datacenter1 -vnf vnf1 -q 'rate(sonemu_tx_count_packets{vnf_name="vnf1"}[10s])')
-
-sleep 1
-
-# test if prometheus query worked
-echo $tx_rate
-
-regex='\[[0-9.]*, .*\]'
-
-if [[ $tx_rate =~ $regex ]] ; then
-	echo " tx_rate monitor test OK"
-else
-	echo "tx_rate monitor test not OK"
-	exit 1
-fi
-
-
-# check if cpu load can be monitored (exported by cAdvisor, needs uuid)
-cpu_load=$(son-emu-cli monitor-zapi prometheus -d datacenter1 -vnf vnf1 -q 'sum(rate(container_cpu_usage_seconds_total{id="/docker/<uuid>"}[10s]))')
-
-sleep 1
-
-
-# test if prometheus query worked
-echo $cpu_load
-
-regex='\[[0-9.]*, .*\]'
-
-if [[ $cpu_load =~ $regex ]] ; then
-	echo " cpu monitor test OK"
-else
-	echo "cpu monitor test not OK"
-	exit 1
-fi
-
-exit 0
-
-
