diff --git a/compose/docker-compose-system-test.yml b/compose/docker-compose-system-test.yml
index 27bf8be..344f6f9 100644
--- a/compose/docker-compose-system-test.yml
+++ b/compose/docker-compose-system-test.yml
@@ -199,6 +199,7 @@
     - fluentd
     volumes:
     - "/var/run/docker.sock:/tmp/docker.sock"
+    restart: unless-stopped
 
   #
   # Netconf server instance(s)
diff --git a/docker/Dockerfile.ofagent b/docker/Dockerfile.ofagent
index e9a4b84..b5d49f0 100644
--- a/docker/Dockerfile.ofagent
+++ b/docker/Dockerfile.ofagent
@@ -30,6 +30,7 @@
     wget http://ftp.us.debian.org/debian/pool/main/p/protobuf/libprotobuf-dev_3.0.0-9_amd64.deb && \
     wget http://ftp.us.debian.org/debian/pool/main/p/protobuf/libprotobuf10_3.0.0-9_amd64.deb && \
     wget http://ftp.us.debian.org/debian/pool/main/p/protobuf/protobuf-compiler_3.0.0-9_amd64.deb && \
+    wget https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \
     dpkg -i *.deb && \
     protoc --version && \
     rm -f *.deb
@@ -40,5 +41,7 @@
 COPY common /ofagent/common
 COPY ofagent /ofagent/ofagent
 
+ENTRYPOINT ["/usr/bin/dumb-init", "--"]
+
 # Exposing process and default entry point
-CMD ["python", "ofagent/ofagent/main.py"]
+CMD ["dumb-init", "python", "ofagent/ofagent/main.py"]
diff --git a/docker/Dockerfile.onos b/docker/Dockerfile.onos
index 4974e1e..eafa892 100644
--- a/docker/Dockerfile.onos
+++ b/docker/Dockerfile.onos
@@ -8,7 +8,7 @@
 ENV AUX=$APPS/aux
 
 RUN apt-get update && apt-get install -y git maven unzip 
-RUN git config --global http.sslverify false &&\
+RUN git config --global http.sslverify false && \
     git clone https://alshabibi@bitbucket.org/alshabibi/onos-apps.git
     
 RUN cd $ONOS/onos-apps/apps && mvn clean install
diff --git a/ofagent/connection_mgr.py b/ofagent/connection_mgr.py
index 71318af..6182b90 100644
--- a/ofagent/connection_mgr.py
+++ b/ofagent/connection_mgr.py
@@ -13,6 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+import os
 
 import sys
 
@@ -99,7 +100,9 @@
             except Exception as e:
                 log.error('Failure to locate {} service from '
                                'consul {}:'.format(endpoint, repr(e)))
-                return
+                log.error('Committing suicide...')
+                # Committing suicide in order to let docker restart ofagent
+                os.system("kill -15 {}".format(os.getpid()))
         if ip_port_endpoint:
             host, port = ip_port_endpoint.split(':', 2)
             return host, int(port)
diff --git a/ofagent/grpc_client.py b/ofagent/grpc_client.py
index d1b78bd..ccdb98b 100644
--- a/ofagent/grpc_client.py
+++ b/ofagent/grpc_client.py
@@ -18,6 +18,7 @@
 The gRPC client layer for the OpenFlow agent
 """
 from Queue import Queue, Empty
+import os
 
 from grpc import StatusCode
 from grpc._channel import _Rendezvous
@@ -77,7 +78,11 @@
 
         def stream_packets_out():
             generator = packet_generator()
-            self.local_stub.StreamPacketsOut(generator)
+            try:
+                self.local_stub.StreamPacketsOut(generator)
+            except _Rendezvous, e:
+                if e.code() == StatusCode.UNAVAILABLE:
+                    os.system("kill -15 {}".format(os.getpid()))
 
         reactor.callInThread(stream_packets_out)
 
@@ -86,12 +91,16 @@
         def receive_packet_in_stream():
             streaming_rpc_method = self.local_stub.ReceivePacketsIn
             iterator = streaming_rpc_method(empty_pb2.Empty())
-            for packet_in in iterator:
-                reactor.callFromThread(self.packet_in_queue.put,
-                                       packet_in)
-                log.debug('enqued-packet-in',
-                          packet_in=packet_in,
-                          queue_len=len(self.packet_in_queue.pending))
+            try:
+                for packet_in in iterator:
+                    reactor.callFromThread(self.packet_in_queue.put,
+                                           packet_in)
+                    log.debug('enqued-packet-in',
+                              packet_in=packet_in,
+                              queue_len=len(self.packet_in_queue.pending))
+            except _Rendezvous, e:
+                if e.code() == StatusCode.UNAVAILABLE:
+                    os.system("kill -15 {}".format(os.getpid()))
 
         reactor.callInThread(receive_packet_in_stream)
 
@@ -100,11 +109,15 @@
         def receive_change_events():
             streaming_rpc_method = self.local_stub.ReceiveChangeEvents
             iterator = streaming_rpc_method(empty_pb2.Empty())
-            for event in iterator:
-                reactor.callFromThread(self.change_event_queue.put, event)
-                log.debug('enqued-change-event',
-                          change_event=event,
-                          queue_len=len(self.change_event_queue.pending))
+            try:
+                for event in iterator:
+                    reactor.callFromThread(self.change_event_queue.put, event)
+                    log.debug('enqued-change-event',
+                              change_event=event,
+                              queue_len=len(self.change_event_queue.pending))
+            except _Rendezvous, e:
+                if e.code() == StatusCode.UNAVAILABLE:
+                    os.system("kill -15 {}".format(os.getpid()))
 
         reactor.callInThread(receive_change_events)
 
