diff --git a/local_agent/local_agent.py b/local_agent/local_agent.py
index 25398d1..ae99195 100644
--- a/local_agent/local_agent.py
+++ b/local_agent/local_agent.py
@@ -50,6 +50,7 @@
     '~/.config/google/local_agent_config.ini')
 _START_TEST_SUITE_METHOD = 'startTestSuite'
 _END_TEST_SUITE_METHOD = 'endTestSuite'
+_COMMISSION_DEVICE_METHOD = 'commissionDevice'
 _USER_CONFIG_ROOT_KEY = 'ServerConfig'
 _USER_CONFIG_AMS_HOST = 'AMS_HOST'
 _USER_CONFIG_AMS_PORT = 'AMS_PORT'
@@ -67,6 +68,8 @@
     START_TEST_SUITE = enum.auto()
     END_TEST_SUITE = enum.auto()
     DEVICE_QUERY_CONTROL = enum.auto()
+    COMMISSION_DEVICE = enum.auto()
+
 
 # ======================== Module level functions ========================== #
 def rpc_request_type(method: str) -> RpcRequestType:
@@ -82,6 +85,8 @@
         return RpcRequestType.START_TEST_SUITE
     elif method == _END_TEST_SUITE_METHOD:
         return RpcRequestType.END_TEST_SUITE
+    elif method == _COMMISSION_DEVICE_METHOD:
+        return RpcRequestType.COMMISSION_DEVICE
     else:
         return RpcRequestType.DEVICE_QUERY_CONTROL
 # ========================================================================== #
@@ -323,6 +328,9 @@
             elif req_type == RpcRequestType.DEVICE_QUERY_CONTROL:
                 resp = self._translator.dispatch_to_cmd_handler(rpc_request)
 
+            elif req_type == RpcRequestType.COMMISSION_DEVICE:
+                resp = self._translator.commission_device(rpc_request)
+
             else:
                 raise errors.InvalidRPCError(
                     f'Invalid RPC request type {req_type}.')
diff --git a/local_agent/tests/unit_tests/test_local_agent.py b/local_agent/tests/unit_tests/test_local_agent.py
index 184685b..b2d97a6 100644
--- a/local_agent/tests/unit_tests/test_local_agent.py
+++ b/local_agent/tests/unit_tests/test_local_agent.py
@@ -42,6 +42,7 @@
 _FAKE_ARTIFACTS_DIR = 'fake-artifacts-dir'
 _START_TEST_SUITE = 'startTestSuite'
 _END_TEST_SUITE = 'endTestSuite'
+_COMMISSION_DEVICE = 'commissionDevice'
 _LOCK_DEVICE = 'setLock'
 _FAKE_CONTROLLER_PACKAGE = 'FAKE_CONTROLLER_PACKAGE'
 #############################################################################
@@ -612,6 +613,18 @@
         self.assertEqual(_FAKE_RPC_RESPONSE, rpc_response)
         mock_dispatch.assert_called_once_with(fake_rpc_request)
 
+    @mock.patch.object(
+        translation_layer.TranslationLayer, 'commission_device')
+    def test_handle_rpc_request_commission_device(self, mock_commission):
+        """Verifies handle_rpc_request to commission device on success."""
+        mock_commission.return_value = _FAKE_RPC_RESPONSE
+        fake_rpc_request = {'method': _COMMISSION_DEVICE}
+
+        rpc_response = self.proc._handle_rpc_request(fake_rpc_request)
+
+        self.assertEqual(_FAKE_RPC_RESPONSE, rpc_response)
+        mock_commission.assert_called_once_with(fake_rpc_request)
+
     @mock.patch.object(local_agent, 'rpc_request_type', return_value='')
     def test_handle_rpc_request_invalid_rpc_type(self, mock_req_type):
         """Verifies handle_rpc_request on failure with invalid RPC type."""
diff --git a/local_agent/tests/unit_tests/test_translation_layer.py b/local_agent/tests/unit_tests/test_translation_layer.py
index ddfa844..f5871f1 100644
--- a/local_agent/tests/unit_tests/test_translation_layer.py
+++ b/local_agent/tests/unit_tests/test_translation_layer.py
@@ -28,8 +28,10 @@
 _FAKE_DEVICE_TYPE = 'fake-device-type'
 _FAKE_DEVICE_ID = 'fake-device-id'
 _FAKE_CAPABILITY = 'fake-device-capability'
+_FAKE_PAIRING_CODE = 'fake-pairing-code'
 _SET_ON = 'setOn'
 _SET_LOCK = 'setLock'
+_COMMISSION_DEVICE = 'commissionDevice'
 ##############################################################################
 
 
@@ -218,6 +220,21 @@
         self.mock_client.send_rpc_response.assert_called_once()
         self.assertTrue(self.translator.is_rpc_timeout(_FAKE_DEVICE_ID))
 
+    def test_10_commission_device_on_failure_no_pairing_code(self):
+        """Verifies commission_device on failure when pairing code not found."""
+        invalid_rpc_request = rpc_request(_COMMISSION_DEVICE, {})
+        error_msg = 'Invalid rpc command, no pairingCode in params was found.'
+        with self.assertRaisesRegex(agent_errors.InvalidRPCError, error_msg):
+            self.translator.commission_device(invalid_rpc_request)
+
+    def test_10_commission_device_on_success(self):
+        """Verifies commission_device on success with pairing code provided."""
+        valid_rpc_request = rpc_request(
+            _COMMISSION_DEVICE, {'pairingCode': _FAKE_PAIRING_CODE})
+        response = self.translator.commission_device(valid_rpc_request)
+
+        # Id is fake and it was made by `rpc_request` wrapper.
+        self.assertEqual(response, {'id': 0, 'jsonrpc': '2.0', 'result': {}})
 
 if __name__ == '__main__':
     unittest.main(failfast=True)
diff --git a/local_agent/translation_layer/translation_layer.py b/local_agent/translation_layer/translation_layer.py
index eeb02e6..96d7cdc 100644
--- a/local_agent/translation_layer/translation_layer.py
+++ b/local_agent/translation_layer/translation_layer.py
@@ -280,3 +280,26 @@
                             'message': err_mesg}
                         self._ams_client.send_rpc_response(err_resp)
                         self._timeout_rpc.add(rpc_id)
+
+    def commission_device(self, rpc_request: Dict[str, str]) -> Dict[str, Any]:
+        """Subroutine for handling COMMISSION_DEVICE command.
+
+        Args:
+            rpc_request: JSON-RPC request.
+
+        Raises:
+            InvalidRPCError: Invalid RPC.
+
+        Returns:
+            RPC response.
+        """
+        pairing_code = rpc_request['params'].get('pairingCode')
+        if pairing_code is None:
+            raise agent_errors.InvalidRPCError(
+                'Invalid rpc command, no pairingCode in params was found.')
+
+        id = rpc_request['id']
+        #TODO(kuruk): Use this pairing code to commission a matter device.
+        logger.info(f'Completed request for {id}, pairingCode: {pairing_code}')
+
+        return {'id': id, 'jsonrpc': '2.0', 'result': {}}
