diff --git a/xos/synchronizer/steps/sync_vhsstenant.py b/xos/synchronizer/steps/sync_vhsstenant.py
index 88a3efb..78167f8 100644
--- a/xos/synchronizer/steps/sync_vhsstenant.py
+++ b/xos/synchronizer/steps/sync_vhsstenant.py
@@ -2,12 +2,12 @@
 import sys
 from synchronizers.new_base.SyncInstanceUsingAnsible import SyncInstanceUsingAnsible
 from synchronizers.new_base.modelaccessor import *
-from xos.logger import Logger, logging
+#from xos.logger import Logger, logging
 
 parentdir = os.path.join(os.path.dirname(__file__), "..")
 sys.path.insert(0, parentdir)
 
-logger = Logger(level=logging.INFO)
+#logger = Logger(level=logging.INFO)
 
 class SyncVHSSTenant(SyncInstanceUsingAnsible):
 
@@ -37,19 +37,18 @@
 
         return vhss[0]
 
-    # Gets the attributes that are used by the Ansible template but are not
-    # part of the set of default attributes.
-    #def get_extra_attributes(self, o):
-    #    fields = {}
-    #    fields['tenant_message'] = o.tenant_message
-    #    vhss = self.get_vhss(o)
-    #    fields['service_message'] = vhss.service_message
-    #    return fields
+    #Gets the attributes that are used by the Ansible template but are not
+    #part of the set of default attributes.
 
-    #def delete_record(self, port):
-    #    # Nothing needs to be done to delete an exampleservice; it goes away
-    #    # when the instance holding the exampleservice is deleted.
-    #    pass
+    def get_extra_attributes(self, o):
+        fields = {}
+        fields['tenant_message'] = o.tenant_message
+        vhss = self.get_vhss(o)
+        fields['service_message'] = vhss.service_message
+        return fields
+
+    def delete_record(self, port):
+        pass
 
     #def handle_service_monitoringagentinfo_watch_notification(self, monitoring_agent_info):
     #    if not monitoring_agent_info.service:
