diff --git a/scripts/service-openvim.sh b/scripts/service-openvim.sh
index 898bba6..7eefa8e 100755
--- a/scripts/service-openvim.sh
+++ b/scripts/service-openvim.sh
@@ -21,7 +21,8 @@
 # contact with: nfvlabs@tid.es
 ##
 
-#launch openvim (andr floodlight) inside a screen. 
+#launch openvim (and/or floodlight) inside a screen. 
+#or call service if it is installed on systemd
 #It assumes a relative path '..' for openvim 
 #for floodlight, the variable FLOODLIGHT_PATH indicates the installation path
 
@@ -34,8 +35,11 @@
 
 function usage(){
     echo -e "Usage: $0 [openvim/vim] [floodlight/flow] start|stop|restart|status"
-    echo -e "  Launch|Removes|Restart|Getstatus openvim (by default) or/and floodlight on a screen"
+    echo -e "  Launch|Removes|Restart|Getstatus openvim (by default) or/and floodlight on a screen/service"
     echo -e "  For floodlight variable FLOODLIGHT_PATH must indicate installation path"
+    echo -e "    -h --help: shows this help"
+    echo -e "    -n --screen-name NAME : name of screen to launch openvim (default vim)"
+    echo -e "    -- PARAMS use to separate PARAMS that will be send to the service. e.g. -pPORT -PADMINPORT --dbname=DDBB"
 }
 
 function kill_pid(){
@@ -53,53 +57,94 @@
    
 }
 
+#process options
+source ${DIRNAME}/get-options.sh "screen-name:n= help:h --" $* || exit 1
+
+#help
+[[ -n "$option_help" ]] && usage && exit 0
+
+
 #obtain parameters
 om_list=""
 #om_action="start"  #uncoment to get a default action
-for param in $*
+action_list=""
+om_params="$option__"
+
+for param in $params
 do
     [ "$param" == "start" -o "$param" == "stop"  -o "$param" == "restart" -o "$param" == "status" ] && om_action=$param  && continue
     [ "$param" == "openvim" -o "$param" == "vim"  ]    && om_list="$om_list vim"              && continue
     [ "$param" == "openmano" -o "$param" == "mano" ]   && continue #allow and ingore for backwards compatibility
     [ "$param" == "openflow" -o "$param" == "flow" -o "$param" == "floodlight" ] && om_list="flow $om_list" && continue
-    [ "$param" == "-h" -o "$param" == "--help" ] && usage && exit 0
-    #note flow that it must be the first element, because openvim relay on this
-    
-    #if none of above, reach this line because a param is incorrect
-    echo "Unknown param '$param' type $0 --help" >&2
-    exit -1
+    echo "invalid argument '$param'?  Type -h for help" >&2 && exit 1
 done
 
+[[ -n $option_screen_name ]] && option_screen_name=${option_screen_name#*.} #allow the format 'pid.name' and keep only name
+
 #check action is provided
 [ -z "$om_action" ] && usage >&2 && exit -1
 
 #if no componenets supplied assume all
 [ -z "$om_list" ] && om_list="vim"
 
+function find_process_id(){ #PARAMS:  command screen-name
+    for process_id in `ps -o pid,cmd -U $USER -u $USER | grep -v grep | grep "${1}" | awk '{print $1}'`
+    do
+        scname=$(ps wwep $process_id | grep -o 'STY=\S*')
+        scname=${scname#STY=}
+        [[ -n "$2" ]] && [[ "${scname#*.}" != "$2" ]] && continue
+        echo -n "${process_id} "
+    done
+    echo    
+}
+
+
 for om_component in $om_list
 do
+    screen_name="${om_component}"
+    [[ -n "$option_screen_name" ]] && screen_name=$option_screen_name
     [ "${om_component}" == "flow" ] && om_cmd="floodlight.jar" && om_name="floodlight" && om_dir=$FLOODLIGHT_PATH
-    [ "${om_component}" == "vim" ]  && om_cmd="openvimd.py"    && om_name="openvim   " && om_dir=${DIR_OM}
+    [ "${om_component}" == "vim" ]  && om_cmd="./openvimd.py"  && om_name="openvim   " && om_dir=${DIR_OM}
     #obtain PID of program
-    component_id=`ps -o pid,cmd -U $USER -u $USER | grep -v grep | grep ${om_cmd} | awk '{print $1}'`
+    component_id=`find_process_id "${om_cmd}" $option_screen_name`
+    processes=$(echo $component_id | wc -w)
 
     #status
     if [ "$om_action" == "status" ]
     then
-        [ -n "$component_id" ] && echo "    $om_name running, pid $component_id"
-        [ -z "$component_id" ] && echo "    $om_name stopped"
+    	running=""
+        for process_id in $component_id 
+        do
+            scname=$(ps wwep $process_id | grep -o 'STY=\S*')
+            scname=${scname#STY=}
+            [[ -n "$option_screen_name" ]] && [[ "${scname#*.}" != "$option_screen_name" ]] && continue
+            printf "%-15s" "pid: ${process_id},"
+            [[ -n "$scname" ]] && printf "%-25s" "screen: ${scname},"
+            echo cmd: $(ps -o cmd p $process_id | tail -n1 )
+            running=y
+        done
+        #if installed as a service and it is not provided a screen name call service
+        [[ -f /etc/systemd/system/openvim.service ]] && [[ -z $option_screen_name ]] && running=y #&& service openvim status
+        if [ -z "$running" ]
+        then
+            echo -n "    $om_name not running" && [[ -n "$option_screen_name" ]] && echo " on screen '$option_screen_name'" || echo
+        fi
     fi
 
+    #if installed as a service and it is not provided a screen name call service
+    [[ -f /etc/systemd/system/openvim.service ]] && [[ -z $option_screen_name ]] && service openvim $om_action && ( [[ $om_action == status ]] || sleep 5 ) && exit $?
+
     #stop
     if [ "$om_action" == "stop" -o "$om_action" == "restart" ]
     then
         #terminates program
-        [ -n "$component_id" ] && echo -n "    stopping $om_name ... " && kill_pid $component_id 
+        [ $processes -gt 1 ] && echo "$processes processes are running, specify with --screen-name" && continue  
+        [ $processes -eq 1 ] && echo -n "    stopping $om_name ... " && kill_pid $component_id 
         component_id=""
         #terminates screen
-        if screen -wipe | grep -Fq .$om_component
+        if screen -wipe | grep -q -e "\.${screen_name}\b"
         then
-            screen -S $om_component -p 0 -X stuff "exit\n"
+            screen -S $screen_name -p 0 -X stuff "exit\n" || echo
             sleep 1
         fi
     fi
@@ -111,21 +156,21 @@
             echo "FLOODLIGHT_PATH shell variable must indicate floodlight installation path" >&2 && exit -1
         #calculates log file name
         logfile=""
-        mkdir -p $DIR_OM/logs && logfile=$DIR_OM/logs/open${om_component}.log || echo "can not create logs directory  $DIR_OM/logs"
+        mkdir -p $DIR_OM/logs && logfile=$DIR_OM/logs/open${screen_name}.log || echo "can not create logs directory  $DIR_OM/logs"
         #check already running
         [ -n "$component_id" ] && echo "    $om_name is already running. Skipping" && continue
         #create screen if not created
         echo -n "    starting $om_name ... "
-        if ! screen -wipe | grep -Fq .${om_component}
+        if ! screen -wipe | grep -q -e "\.${screen_name}\b"
         then
             pushd ${om_dir} > /dev/null
-            screen -dmS ${om_component}  bash
+            screen -dmS ${screen_name}  bash
             sleep 1
             popd > /dev/null
         else
-            echo -n " using existing screen '${om_component}' ... "
-            screen -S ${om_component} -p 0 -X log off
-            screen -S ${om_component} -p 0 -X stuff "cd ${om_dir}\n"
+            echo -n " using existing screen '${screen_name}' ... "
+            screen -S ${screen_name} -p 0 -X log off
+            screen -S ${screen_name} -p 0 -X stuff "cd ${om_dir}\n"
             sleep 1
         fi
         #move old log file index one number up and log again in index 0
@@ -136,14 +181,14 @@
                 [[ -f ${logfile}.${index} ]] && mv ${logfile}.${index} ${logfile}.$((index+1))
             done
             [[ -f ${logfile} ]] && mv ${logfile} ${logfile}.1
-            screen -S ${om_component} -p 0 -X logfile ${logfile}
-            screen -S ${om_component} -p 0 -X log on
+            screen -S ${screen_name} -p 0 -X logfile ${logfile}
+            screen -S ${screen_name} -p 0 -X log on
         fi
         #launch command to screen
-        #[ "${om_component}" != "flow" ] && screen -S ${om_component} -p 0 -X stuff "cd ${DIR_OM}/open${om_component}\n" && sleep 1
-        [ "${om_component}" == "flow" ] && screen -S flow -p 0 -X stuff "java  -Dlogback.configurationFile=${DIRNAME}/flow-logback.xml -jar ./target/floodlight.jar -cf ${DIRNAME}/flow.properties_v0.9\n"
-        #[ "${om_component}" == "flow" ] && screen -S flow -p 0 -X stuff "java  -Dlogback.configurationFile=${DIRNAME}/flow-logback.xml -jar ./target/floodlight.jar -cf ${DIRNAME}/flow.properties_v1.1\n" && sleep 5
-        [ "${om_component}" != "flow" ] && screen -S ${om_component} -p 0 -X stuff "./${om_cmd}\n"
+        #[ "${om_component}" != "flow" ] && screen -S ${screen_name} -p 0 -X stuff "cd ${DIR_OM}/open${om_component}\n" && sleep 1
+        [ "${om_component}" == "flow" ] && screen -S ${screen_name} -p 0 -X stuff "java  -Dlogback.configurationFile=${DIRNAME}/flow-logback.xml -jar ./target/floodlight.jar -cf ${DIRNAME}/flow.properties_v0.9\n"
+        #[ "${om_component}" == "flow" ] && screen -S ${screen_name} -p 0 -X stuff "java  -Dlogback.configurationFile=${DIRNAME}/flow-logback.xml -jar ./target/floodlight.jar -cf ${DIRNAME}/flow.properties_v1.1\n" && sleep 5
+        [ "${om_component}" != "flow" ] && screen -S ${screen_name} -p 0 -X stuff "${om_cmd}${om_params}\n"
         #check if is running
         [[ -n $logfile ]] && timeout=120 #2 minute
         [[ -z $logfile ]] && timeout=20
@@ -154,7 +199,7 @@
            #if !  ps -f -U $USER -u $USER | grep -v grep | grep -q ${om_cmd}
            log_lines=0
            [[ -n $logfile ]] && log_lines=`head ${logfile} | wc -l`
-           component_id=`ps -o pid,cmd -U $USER -u $USER | grep -v grep | grep ${om_cmd} | awk '{print $1}'`
+           component_id=`find_process_id "${om_cmd}${om_params}" $screen_name`
            if [[ -z $component_id ]]
            then #process not started or finished
                [[ $log_lines -ge 2 ]] &&  echo -n "ERROR, it has exited." && break
@@ -169,7 +214,7 @@
         then 
            echo -n "timeout!"
         else
-           echo -n "running on 'screen -x ${om_component}'."
+           echo -n "running on 'screen -x ${screen_name}'."
         fi
         [[ -n $logfile ]] && echo "  Logging at '${logfile}'" || echo
     fi
