diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..97a323a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,66 @@
+*.lo
+*.o
+.deps/
+.gitignore
+.libs/
+Makefile
+Makefile.in
+TAGS
+TEST/.deps/
+TEST/.libs/
+TEST/Makefile
+TEST/Makefile.in
+TEST/TAGS
+TEST/stress.sh
+TEST/test
+TEST/test_an
+TEST/test_an_2
+TEST/test_as
+TEST/test_as_2
+TEST/test_ci
+TEST/test_cpp
+TEST/test_di
+TEST/test_ec
+TEST/test_ecn
+TEST/test_ecn_ssl
+TEST/test_ei
+TEST/test_ein
+TEST/test_gc
+TEST/test_gi
+TEST/test_gp
+TEST/test_im1
+TEST/test_im2
+TEST/test_im3
+TEST/test_im4
+TEST/test_imos
+TEST/test_leak
+TEST/test_qualifiers
+TEST/test_qualifiers2
+TEST/test_rf
+TEST/test_rfn
+TEST/test_si
+TEST/test_sp
+TEST/test_xq
+TEST/v2test_ec
+TEST/v2test_ecn
+TEST/v2test_ei
+TEST/v2test_ein
+TEST/v2test_gc
+TEST/v2test_im
+aclocal.m4
+autom4te.cache/
+*~
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+*.la
+libtool
+ltmain.sh
+missing
+sfcc.spec
diff --git a/ChangeLog b/ChangeLog
index e8450ab..3d55979 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-25  Narasimha Sharoff  <nsharoff@us.ibm.com>
 
 	* frontend/sfcc/sfcclient.c:
diff --git a/NEWS b/NEWS
index 2e3e90d..f2be3ed 100644
--- a/NEWS
+++ b/NEWS
@@ -2,8 +2,10 @@
 
 Changes in 2.2.3
 ================
+
 Bugs:
 - 2967265: Code cleanup in frontend/sfcc/sfcclient.c
+- 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,
