diff --git a/common/test.py b/common/test.py
index 386ed59..1039625 100644
--- a/common/test.py
+++ b/common/test.py
@@ -426,7 +426,7 @@
             tags=tags
         )
         if expected_status not in ['ROLLBACK_COMPLETE'] and enable_cleanup:
-            self.addCleanup(self.client.stacks.delete, name)
+            self.addCleanup(self._stack_delete, name)
 
         stack = self.client.stacks.get(name)
         stack_identifier = '%s/%s' % (name, stack.id)
@@ -458,7 +458,7 @@
             environment=env,
             adopt_stack_data=adopt_data,
         )
-        self.addCleanup(self.client.stacks.delete, name)
+        self.addCleanup(self._stack_delete, name)
 
         stack = self.client.stacks.get(name)
         stack_identifier = '%s/%s' % (name, stack.id)
@@ -468,7 +468,7 @@
     def stack_abandon(self, stack_id):
         if (self.conf.skip_test_stack_action_list and
                 'ABANDON' in self.conf.skip_test_stack_action_list):
-            self.addCleanup(self.client.stacks.delete, stack_id)
+            self.addCleanup(self._stack_delete, stack_id)
             self.skipTest('Testing Stack abandon disabled in conf, skipping')
         info = self.client.stacks.abandon(stack_id=stack_id)
         return info
@@ -476,7 +476,7 @@
     def stack_suspend(self, stack_identifier):
         if (self.conf.skip_test_stack_action_list and
                 'SUSPEND' in self.conf.skip_test_stack_action_list):
-            self.addCleanup(self.client.stacks.delete, stack_identifier)
+            self.addCleanup(self._stack_delete, stack_identifier)
             self.skipTest('Testing Stack suspend disabled in conf, skipping')
         stack_name = stack_identifier.split('/')[0]
         self.client.actions.suspend(stack_name)
@@ -488,7 +488,7 @@
     def stack_resume(self, stack_identifier):
         if (self.conf.skip_test_stack_action_list and
                 'RESUME' in self.conf.skip_test_stack_action_list):
-            self.addCleanup(self.client.stacks.delete, stack_identifier)
+            self.addCleanup(self._stack_delete, stack_identifier)
             self.skipTest('Testing Stack resume disabled in conf, skipping')
         stack_name = stack_identifier.split('/')[0]
         self.client.actions.resume(stack_name)
diff --git a/functional/test_autoscaling.py b/functional/test_autoscaling.py
index 0beefcb..1b9fe99 100644
--- a/functional/test_autoscaling.py
+++ b/functional/test_autoscaling.py
@@ -235,7 +235,7 @@
             parameters={},
             environment=env
         )
-        self.addCleanup(self.client.stacks.delete, stack_name)
+        self.addCleanup(self._stack_delete, stack_name)
         stack = self.client.stacks.get(stack_name)
         stack_identifier = '%s/%s' % (stack_name, stack.id)
         self._wait_for_stack_status(stack_identifier, 'CREATE_FAILED')
diff --git a/functional/test_conditional_exposure.py b/functional/test_conditional_exposure.py
index 2ab297e..99e76ee 100644
--- a/functional/test_conditional_exposure.py
+++ b/functional/test_conditional_exposure.py
@@ -16,19 +16,7 @@
 from heat_integrationtests.functional import functional_base
 
 
-class ConditionalExposureTestBase(functional_base.FunctionalTestsBase):
-    def setUp(self):
-        super(ConditionalExposureTestBase, self).setUp()
-
-    def _delete(self, stack_name):
-        stacks = self.client.stacks.list()
-        for s in stacks:
-            if s.stack_name == stack_name:
-                self._stack_delete(s.identifier)
-                break
-
-
-class ServiceBasedExposureTest(ConditionalExposureTestBase):
+class ServiceBasedExposureTest(functional_base.FunctionalTestsBase):
     # NOTE(pas-ha) if we ever decide to install Sahara on Heat
     # functional gate, this must be changed to other not-installed
     # but in principle supported service
@@ -72,7 +60,6 @@
 
     def test_unavailable_resources_not_created(self):
         stack_name = self._stack_rand_name()
-        self.addCleanup(self._delete, stack_name)
         ex = self.assertRaises(exc.HTTPBadRequest,
                                self.client.stacks.create,
                                stack_name=stack_name,
diff --git a/functional/test_encrypted_parameter.py b/functional/test_encrypted_parameter.py
index e1a9b88..21dc925 100644
--- a/functional/test_encrypted_parameter.py
+++ b/functional/test_encrypted_parameter.py
@@ -16,28 +16,49 @@
 class EncryptedParametersTest(functional_base.FunctionalTestsBase):
 
     template = '''
-heat_template_version: 2013-05-23
+heat_template_version: 2014-10-16
 parameters:
+  image:
+    type: string
+  flavor:
+    type: string
+  network:
+    type: string
   foo:
     type: string
-    description: Parameter with encryption turned on
+    description: 'parameter with encryption turned on'
     hidden: true
     default: secret
+resources:
+  server_with_encrypted_property:
+    type: OS::Nova::Server
+    properties:
+      name: { get_param: foo }
+      image: { get_param: image }
+      flavor: { get_param: flavor }
+      networks: [{network: {get_param: network} }]
 outputs:
   encrypted_foo_param:
-    description: ''
-    value: {get_param: foo}
+    description: 'encrypted param'
+    value: { get_param: foo }
 '''
 
     def setUp(self):
         super(EncryptedParametersTest, self).setUp()
 
     def test_db_encryption(self):
-        # Create a stack with a non-default value for 'foo' to be encrypted
+        # Create a stack with the value of 'foo' to be encrypted
         foo_param = 'my_encrypted_foo'
+        parameters = {
+            "image": self.conf.minimal_image_ref,
+            "flavor": self.conf.minimal_instance_type,
+            'network': self.conf.fixed_network_name,
+            "foo": foo_param
+        }
+
         stack_identifier = self.stack_create(
             template=self.template,
-            parameters={'foo': foo_param}
+            parameters=parameters
         )
         stack = self.client.stacks.get(stack_identifier)
 
diff --git a/functional/test_instance_group.py b/functional/test_instance_group.py
index a8494c2..b8bcc3d 100644
--- a/functional/test_instance_group.py
+++ b/functional/test_instance_group.py
@@ -225,7 +225,7 @@
             parameters={},
             environment=env
         )
-        self.addCleanup(self.client.stacks.delete, stack_name)
+        self.addCleanup(self._stack_delete, stack_name)
         stack = self.client.stacks.get(stack_name)
         stack_identifier = '%s/%s' % (stack_name, stack.id)
         self._wait_for_stack_status(stack_identifier, 'CREATE_FAILED')
diff --git a/functional/test_notifications.py b/functional/test_notifications.py
index f24d2c2..3b8e003 100644
--- a/functional/test_notifications.py
+++ b/functional/test_notifications.py
@@ -16,8 +16,6 @@
 from oslo_messaging import transport
 import requests
 
-from testtools import testcase
-
 from heat_integrationtests.common import test
 from heat_integrationtests.functional import functional_base
 
@@ -164,7 +162,6 @@
         for n in BASIC_NOTIFICATIONS:
             self.assertIn(n, handler.notifications)
 
-    @testcase.skip('Skipped until keystone fixed #1484086')
     def test_asg_notifications(self):
         stack_identifier = self.stack_create(template=self.asg_template)
 
diff --git a/functional/test_preview.py b/functional/test_preview.py
index b4389ff..19da01b 100644
--- a/functional/test_preview.py
+++ b/functional/test_preview.py
@@ -53,9 +53,10 @@
                       'description'):
             self.assertIn(field, res)
             self.assertEqual('', res[field])
+        # 'creation_time' and 'updated_time' are None when preview
         for field in ('creation_time', 'updated_time'):
             self.assertIn(field, res)
-            self.assertIsNotNone(res[field])
+            self.assertIsNone(res[field])
         self.assertIn('output', res['attributes'])
 
         # resource_identity
diff --git a/scenario/test_ceilometer_alarm.py b/scenario/test_ceilometer_alarm.py
index e5e141b..e0523aa 100644
--- a/scenario/test_ceilometer_alarm.py
+++ b/scenario/test_ceilometer_alarm.py
@@ -11,7 +11,6 @@
 #    under the License.
 
 from oslo_log import log as logging
-from testtools import testcase
 
 from heat_integrationtests.common import test
 from heat_integrationtests.scenario import scenario_base
@@ -35,7 +34,6 @@
                                                               actual))
         return actual == expected
 
-    @testcase.skip('Skipped until keystone fixed #1484086')
     def test_alarm(self):
         """Confirm we can create an alarm and trigger it."""
 
diff --git a/scenario/test_server_cfn_init.py b/scenario/test_server_cfn_init.py
index 00a360b..267b44b 100644
--- a/scenario/test_server_cfn_init.py
+++ b/scenario/test_server_cfn_init.py
@@ -12,8 +12,6 @@
 
 import json
 
-from testtools import testcase
-
 from heat_integrationtests.common import exceptions
 from heat_integrationtests.scenario import scenario_base
 
@@ -95,7 +93,6 @@
                 self._log_console_output(servers=[server])
                 raise e
 
-    @testcase.skip('Skipped until keystone fixed #1484086')
     def test_server_cfn_init(self):
         """
         Check cfn-init and cfn-signal availability on the created server.
