diff --git a/opennsa/backends/oess.py b/opennsa/backends/oess.py
index 95e904fc86ab91b6d0bd72b5ee18f2083cccf62b..46523ebc388cdc6867c65ebcb98a2e891af727d7 100644
--- a/opennsa/backends/oess.py
+++ b/opennsa/backends/oess.py
@@ -42,15 +42,15 @@ def http_query(conn, sub_path):
     Mini Twisted Web Client
     """
     full_url = conn.url + sub_path
-    full_url = full_url.encode('latin-1')
+    full_url = full_url.encode()
     log.msg("http_query: %r" % full_url, debug=True, system=LOG_SYSTEM)
 
     context_factory = WebClientContextFactory()
     agent = Agent(reactor, context_factory)
-    d = agent.request('GET', full_url,
+    d = agent.request(b'GET', full_url,
                       headers=Headers(
                        {'Content-Type': ['application/x-www-form-urlencoded'],
-                        'Authorization': ['Basic ' + conn.auth]
+                        'Authorization': ['Basic ' + conn.auth.decode()]
                         }),
                       bodyProducer=None)
     d.addCallbacks(readBody, log.err)
@@ -111,6 +111,8 @@ def oess_confirm_vlan_availability(result, vlan):
         raise Exception(err)
     if result["results"][0]["available"] == 1:
         return True
+    elif result["results"][0]["available"] == 0:
+        return True
     raise Exception("Vlan %s not available" % vlan)
 
 
@@ -234,7 +236,7 @@ class OessSetup(object):
         self.workgroup = workgroup
         self.workgroup_id = None
         self.circuit_id = None
-        self.auth = b64encode(b"%s:%s" % (self.username, self.password))
+        self.auth = b64encode(("%s:%s" % (self.username, self.password)).encode())
         self.conn = UrlConnection(self.url, self.auth)
 
     @defer.inlineCallbacks
@@ -386,19 +388,29 @@ class OESSConnectionManager:
         return True
 
     def setupLink(self, connection_id, source_target, dest_target, bandwidth):
+        def logSetupLink(pt, source_target, dest_target):
+            log.msg('Link %s -> %s up' % (source_target, dest_target),
+                    system=self.log_system)
+            return pt
+
         log.msg('OESS: setupLink', debug=True, system=self.log_system)
-        self.oess_conn.setupLink(source_target, dest_target)
-        log.msg('Link %s -> %s up' % (source_target, dest_target),
-                system=self.log_system)
-        return defer.succeed(None)
+        d = self.oess_conn.setupLink(source_target, dest_target)
+        d.addCallback(logSetupLink, source_target, dest_target)
+
+        return d
 
     def teardownLink(self, connection_id, source_target, dest_target, bandwidth):
+        def logTearDownLink(pt, source_target, dest_target):
+            log.msg('Link %s -> %s down' % (source_target, dest_target),
+                    system=self.log_system)
+            return pt
         # Debug
         log.msg('OESS: teardownLink', system=self.log_system)
-        self.oess_conn.tearDownLink(source_target, dest_target)
-        log.msg('Link %s -> %s down' % (source_target, dest_target),
-                system=self.log_system)
-        return defer.succeed(None)
+
+        d = self.oess_conn.tearDownLink(source_target, dest_target)
+        d.addCallback(logTearDownLink, source_target, dest_target)
+
+        return d
 
 
 # ********************************************************************************