diff --git a/ChangeLog b/ChangeLog
index fbb635d..49f2981 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-05-27  Chris Buccella  <buccella@linux.vnet.ibm.com>
+
+	* backend/cimxml/grammar.c, backend/cimxml/cimXmlParser.h, 
+	  backend/cimxml/cimXmlParser.c, backend/cimxml/instance.c,
+	  backend/cimxml/objectpath.c, frontend/sfcc/native.h:
+	[ 3286489 ] getInstance does not return key/value through XML
+	(patch originated by Josef Moellers)
+
 2011-04-07  Chris Buccella  <buccella@linux.vnet.ibm.com>
 
 	* backend/cimxml/grammar.c:
diff --git a/NEWS b/NEWS
index cf0a070..7b4d810 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,11 @@
 Small Footprint CIM Client Library NEWS
 
+Changes in 2.2.3
+================
+
+Bugs:
+- 3286489: getInstance does not return key/value through XML
+
 Changes in 2.2.2
 ================
 
diff --git a/backend/cimxml/cimXmlParser.c b/backend/cimxml/cimXmlParser.c
index 3e0baef..c6a0908 100644
--- a/backend/cimxml/cimXmlParser.c
+++ b/backend/cimxml/cimXmlParser.c
@@ -1386,9 +1386,7 @@
 
    control.respHdr.rvArray=newCMPIArray(0,0,NULL);
 
-   if(cop) {
-       control.da_nameSpace=(char*)getNameSpaceChars(cop);
-   }
+   control.requestObjectPath = cop;
 
    control.heap = parser_heap_init();
 
@@ -1531,9 +1529,7 @@
    
    local_enmp->data = control.respHdr.rvArray ;
    
-   if(cop) {
-       control.da_nameSpace=(char*)getNameSpaceChars(cop);
-   }
+   control.requestObjectPath = cop;
 
    control.heap = parser_heap_init();
 
diff --git a/backend/cimxml/cimXmlParser.h b/backend/cimxml/cimXmlParser.h
index 191fa52..f34d36b 100644
--- a/backend/cimxml/cimXmlParser.h
+++ b/backend/cimxml/cimXmlParser.h
@@ -426,7 +426,7 @@
 typedef struct parser_control {
    XmlBuffer *xmb;
    ResponseHdr respHdr;
-   char *da_nameSpace;
+   CMPIObjectPath *requestObjectPath;
    ParserHeap *heap;
 #ifdef LARGE_VOL_SUPPORT
    CMCIConnection * econ ; /* enumeration connection */
diff --git a/backend/cimxml/grammar.c b/backend/cimxml/grammar.c
index 871c58a..8fb5f91 100644
--- a/backend/cimxml/grammar.c
+++ b/backend/cimxml/grammar.c
@@ -193,7 +193,7 @@
 			dontLex = 1;
 			instance(parm, (parseUnion*)&lvalp.xtokInstance);
 			inst = native_new_CMPIInstance(NULL,NULL);
-			setInstNsAndCn(inst,parm->da_nameSpace,lvalp.xtokInstance.className);
+			setInstNsAndCn(inst,getNameSpaceChars(parm->requestObjectPath),lvalp.xtokInstance.className);
 			setInstProperties(inst, &lvalp.xtokInstance.properties);
 			simpleArrayAdd(parm->respHdr.rvArray,(CMPIValue*)&inst,CMPI_instance);
 		}
@@ -295,7 +295,7 @@
 		else if(stateUnion->xtokReturnValue.data.value.type == typeValue_Instance) {
 			t = CMPI_instance;
 			inst = native_new_CMPIInstance(NULL,NULL);
-			setInstNsAndCn(inst,parm->da_nameSpace,stateUnion->xtokReturnValue.data.value.data.inst->className);
+			setInstNsAndCn(inst,getNameSpaceChars(parm->requestObjectPath),stateUnion->xtokReturnValue.data.value.data.inst->className);
 			setInstProperties(inst, &stateUnion->xtokReturnValue.data.value.data.inst->properties);
 			val.inst = inst;
 		}
@@ -452,8 +452,7 @@
 		do {
 			dontLex = 1;
 			instance(parm, (parseUnion*)&lvalp.xtokInstance);
-			inst = native_new_CMPIInstance(NULL,NULL);
-			setInstNsAndCn(inst,parm->da_nameSpace,lvalp.xtokInstance.className);
+			inst = native_new_CMPIInstance(parm->requestObjectPath,NULL);
 			setInstProperties(inst, &lvalp.xtokInstance.properties);
 			simpleArrayAdd(parm->respHdr.rvArray,(CMPIValue*)&inst,CMPI_instance);
 			ct = localLex(&lvalp, parm);
@@ -477,7 +476,7 @@
 			dontLex = 1;
 			valueNamedInstance(parm, (parseUnion*)&lvalp.xtokNamedInstance);
 			createPath(&op,&(lvalp.xtokNamedInstance.path));
-			CMSetNameSpace(op, parm->da_nameSpace);
+			CMSetNameSpace(op, getNameSpaceChars(parm->requestObjectPath));
 			inst = native_new_CMPIInstance(op,NULL);
 			//setInstQualifiers(inst, &lvalp.xtokNamedInstance.instance.qualifiers);
 			setInstProperties(inst, &lvalp.xtokNamedInstance.instance.properties);
diff --git a/backend/cimxml/instance.c b/backend/cimxml/instance.c
index 43df5a4..72f034b 100644
--- a/backend/cimxml/instance.c
+++ b/backend/cimxml/instance.c
@@ -375,7 +375,7 @@
 	return (CMPIInstance *) instance;
 }
 
-void setInstNsAndCn(CMPIInstance *ci, char *ns, char *cn)
+void setInstNsAndCn(CMPIInstance *ci, const char *ns, char *cn)
 {
    struct native_instance * i = (struct native_instance *) ci;
    
diff --git a/backend/cimxml/objectpath.c b/backend/cimxml/objectpath.c
index 09d0cd9..2e4df1e 100644
--- a/backend/cimxml/objectpath.c
+++ b/backend/cimxml/objectpath.c
@@ -438,6 +438,8 @@
 
 const char *getNameSpaceChars(CMPIObjectPath * cop)
 {
+   if (cop == NULL) return NULL;
+
 	struct native_cop * o = (struct native_cop *) cop;
    return o->nameSpace;
 }
diff --git a/frontend/sfcc/native.h b/frontend/sfcc/native.h
index cb1b5a7..2b14ab9 100644
--- a/frontend/sfcc/native.h
+++ b/frontend/sfcc/native.h
@@ -225,7 +225,7 @@
 
 struct xtokValueReference;
 CMPIValue str2CMPIValue(CMPIType type, char *val, struct xtokValueReference *ref);
-void setInstNsAndCn(CMPIInstance *ci, char *ns, char *cn);
+void setInstNsAndCn(CMPIInstance *ci, const char *ns, char *cn);
 CMPIStatus simpleArrayAdd(CMPIArray * array, CMPIValue * val, CMPIType type);
 const char *getNameSpaceChars(CMPIObjectPath * cop);
 CMPIValue *getKeyValueTypePtr(char *type, char *value, struct xtokValueReference *ref,
