diff --git a/client/site_tests/enterprise_CFM_Perf/control b/client/site_tests/enterprise_CFM_Perf/control
deleted file mode 100644
index 9cac1fa..0000000
--- a/client/site_tests/enterprise_CFM_Perf/control
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-AUTHOR = "harpreet@chromium.org"
-NAME = "enterprise_CFM_Perf"
-PURPOSE = 'Records cpu, memory and temp data on hotrod device.'
-TIME = "MEDIUM"
-TEST_CATEGORY = "Performance"
-TEST_CLASS = "hotrod"
-TEST_TYPE = "client"
-
-DOC = """
-Test collects cpu, memory and temperature data from the device under test.
-"""
-
-job.run_test('enterprise_CFM_Perf')
diff --git a/server/site_tests/enterprise_CFM_PerfServer/control b/server/site_tests/enterprise_CFM_Perf/control
similarity index 67%
rename from server/site_tests/enterprise_CFM_PerfServer/control
rename to server/site_tests/enterprise_CFM_Perf/control
index 8345ee2..a8163b9 100644
--- a/server/site_tests/enterprise_CFM_PerfServer/control
+++ b/server/site_tests/enterprise_CFM_Perf/control
@@ -2,8 +2,10 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "harpreet@chromium.org"
-NAME = "enterprise_CFM_PerfServer"
+NAME = "enterprise_CFM_Perf"
 TIME = "MEDIUM"
 TEST_CATEGORY = "Performance"
 TEST_CLASS = "enterprise"
@@ -16,8 +18,11 @@
 Storage as part of the test logs.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_args = hosts.CrosHost.get_servo_arguments(args_dict)
+
 def run_test(machine):
-    host = hosts.create_host(machine)
-    job.run_test('enterprise_CFM_PerfServer', host=host)
+    host = hosts.create_host(machine, servo_args=servo_args)
+    job.run_test('enterprise_CFM_Perf', host=host)
 
 parallel_simple(run_test, machines)
diff --git a/client/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py b/server/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
similarity index 65%
rename from client/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
rename to server/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
index 1548c4a..1e8a368 100644
--- a/client/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
+++ b/server/site_tests/enterprise_CFM_Perf/enterprise_CFM_Perf.py
@@ -1,19 +1,23 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Copyright (c) 2016 The Chromium OS Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
 import csv, os, re, time
 
-from autotest_lib.client.bin import site_utils, test, utils
+from autotest_lib.client.bin import utils, site_utils
+from autotest_lib.client.common_lib.cros import tpm_utils
+from autotest_lib.server import test, autotest, afe_utils
 
 _MEASUREMENT_DURATION_SECONDS = 10
-_TOTAL_TEST_DURATION_SECONDS = 60
+_TOTAL_TEST_DURATION_SECONDS = 30
 _PERF_RESULT_FILE = 'perf.csv'
 
 
 class enterprise_CFM_Perf(test.test):
-    """Captures cpu, memory and temperature data at set interval and stores it
-    in resultsdir of test logs to be uploaded to Google Cloud Storage."""
+    """This is a server test which clears device TPM and runs
+    enterprise_RemoraRequisition client test to enroll the device in to hotrod
+    mode. After enrollment is successful, it collects and logs cpu, memory and
+    temperature data from the device under test."""
     version = 1
 
 
@@ -44,7 +48,7 @@
             MOSYS_OUTPUT_RE = re.compile('(\w+)="(.*?)"')
             values = {}
             cmd = 'mosys -k sensor print thermal %s' % temp_sensor_name
-            for kv in MOSYS_OUTPUT_RE.finditer(utils.system_output(cmd)):
+            for kv in MOSYS_OUTPUT_RE.finditer(self.client.run_output(cmd)):
                 key, value = kv.groups()
                 if key == 'reading':
                     value = int(value)
@@ -52,11 +56,24 @@
             return values['reading']
 
 
-    def run_once(self):
+    def run_once(self, host=None):
+        self.client = host
+
+        tpm_utils.ClearTPMOwnerRequest(self.client)
+
+        if self.client.servo:
+            self.client.servo.switch_usbkey('dut')
+            self.client.servo.set('usb_mux_sel3', 'dut_sees_usbkey')
+            self.client.servo.set('dut_hub1_rst1', 'off')
+
+        autotest.Autotest(self.client).run_test('enterprise_RemoraRequisition',
+                                                check_client_result=True)
+
+        # TODO: Start a hangout session after device enrollment succeeds.
         start_time = time.time()
         perf_keyval = {}
-        board_name = utils.get_current_board()
-        build_id = utils.get_chromeos_release_version()
+        board_name = self.client.get_board().split(':')[1]
+        build_id = afe_utils.get_build(self.client)
         perf_file = open(os.path.join(self.resultsdir, _PERF_RESULT_FILE), 'w')
         writer = csv.writer(perf_file)
         writer.writerow(['cpu', 'memory', 'temperature', 'timestamp', 'board',
@@ -76,3 +93,8 @@
         perf_file.close()
         utils.write_keyval(os.path.join(self.resultsdir, os.pardir),
                            {'perf_csv_folder': self.resultsdir})
+
+        # TODO: End the hangout session after performance data collection is
+        # done.
+
+        tpm_utils.ClearTPMOwnerRequest(self.client)
diff --git a/server/site_tests/enterprise_CFM_PerfServer/enterprise_CFM_PerfServer.py b/server/site_tests/enterprise_CFM_PerfServer/enterprise_CFM_PerfServer.py
deleted file mode 100644
index ae54854..0000000
--- a/server/site_tests/enterprise_CFM_PerfServer/enterprise_CFM_PerfServer.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (c) 2016 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from autotest_lib.client.common_lib.cros import tpm_utils
-from autotest_lib.server import test, autotest
-
-
-class enterprise_CFM_PerfServer(test.test):
-    """This is a server test which clears device TPM and runs
-    enterprise_RemoraRequisition client test to enroll the device in to hotrod
-    mode. After enrollment is successful, it runs the enterprise_CFM_Perf client
-    test to collect and log cpu, memory and temperature data from the device
-    under test."""
-    version = 1
-
-
-    def run_once(self, host=None):
-        self.client = host
-
-        tpm_utils.ClearTPMOwnerRequest(self.client)
-        autotest.Autotest(self.client).run_test('enterprise_RemoraRequisition',
-                                                check_client_result=True)
-
-        # TODO: Start a hangout session after device enrollment succeeds.
-
-        autotest.Autotest(self.client).run_test('enterprise_CFM_Perf',
-                                                check_client_result=True)
-
-        # TODO: End the hangout session after performance data collection is
-        # done.
-
-        tpm_utils.ClearTPMOwnerRequest(self.client)
