diff --git a/netconf/nc_rpc/rpc_factory.py b/netconf/nc_rpc/rpc_factory.py
index eb13b8d..72b4734 100644
--- a/netconf/nc_rpc/rpc_factory.py
+++ b/netconf/nc_rpc/rpc_factory.py
@@ -32,11 +32,34 @@
 from netconf import NSMAP, qmap
 import netconf.nc_common.error as ncerror
 log = structlog.get_logger()
+from lxml import etree
+
 
 class RpcFactory:
 
 	instance = None
 
+	def __init__(self):
+		self.rpc_map = {}
+		#TODO:  This will be loaded after the yang modules have been
+		# generated from proto files
+		self.register_rpc('{urn:opencord:params:xml:ns:voltha:ietf-voltha}',
+						 'VolthaGlobalService', 'GetVoltha', GetVoltha)
+
+	def _get_key(self, namespace, service, name):
+		return ''.join([namespace,service,name])
+
+	def register_rpc(self, namespace, service, name, klass):
+		key = self._get_key(namespace, service, name)
+		if key not in self.rpc_map.keys():
+			self.rpc_map[key] = klass
+
+	def get_handler(self, namespace, service, name):
+		key = self._get_key(namespace, service, name)
+		if key in self.rpc_map.keys():
+			return self.rpc_map[key]
+
+
 	def get_rpc_handler(self, rpc_node, msg, grpc_channel, session):
 		try:
 			msg_id = rpc_node.get('message-id')
@@ -46,6 +69,8 @@
 			raise ncerror.SessionError(msg,
 									   "No valid message-id attribute found")
 
+		log.info("rpc-node", node=etree.tostring(rpc_node, pretty_print=True))
+
 		# Get the first child of rpc as the method name
 		rpc_method = rpc_node.getchildren()
 		if len(rpc_method) != 1:
@@ -54,11 +79,28 @@
 
 		rpc_method = rpc_method[0]
 
-		rpc_name = rpc_method.tag.replace(qmap('nc'), "")
+		if rpc_method.prefix is None:
+			log.error("rpc-method-has-no-prefix", msg_id=msg_id)
+			raise ncerror.BadMsg(rpc_node)
 
-		log.info("rpc-request", rpc=rpc_name)
+		try:
+			# extract the namespace, service and name
+			namespace = ''.join(['{', rpc_method.nsmap[rpc_method.prefix], '}'])
+			# rpc_name = rpc_method.tag.replace(qmap('nc'), "")
+			rpc = rpc_method.tag.replace(namespace, "").split('-')
+			rpc_service = rpc[0]
+			rpc_name = rpc[1]
+			log.info("rpc-request",
+					 namespace=namespace,
+					 service=rpc_service,
+					 name=rpc_name)
+		except Exception as e:
+			log.error("rpc-parsing-error", exception=repr(e))
+			raise ncerror.BadMsg(rpc_node)
 
-		class_handler = self.rpc_class_handlers.get(rpc_name, None)
+		class_handler = self.get_handler(namespace, rpc_service, rpc_name)
+
+		# class_handler = self.rpc_class_handlers.get(rpc_name, None)
 		if class_handler is not None:
 			return class_handler(rpc_node, rpc_method, grpc_channel, session)
 
@@ -80,6 +122,7 @@
 	}
 
 
+
 def get_rpc_factory_instance():
 	if RpcFactory.instance == None:
 		RpcFactory.instance = RpcFactory()
@@ -88,5 +131,9 @@
 
 if __name__ == '__main__':
    fac = get_rpc_factory_instance()
-   rpc = fac.rpc_class_handlers.get('getvoltha', None)
-   print rpc(None,None,None)
\ No newline at end of file
+   fac.register_rpc('urn:opencord:params:xml:ns:voltha:ietf-voltha',
+					'VolthaGlobalService', 'GetVoltha', GetVoltha)
+   rpc = fac.get_handler('urn:opencord:params:xml:ns:voltha:ietf-voltha',
+					'VolthaGlobalService', 'GetVoltha')
+   # rpc = fac.rpc_class_handlers.get('getvoltha', None)
+   print rpc(None,None,None, None)
\ No newline at end of file
