diff --git a/src/extension/app-schema/app-schema-test/src/test/java/org/geoserver/test/WmsGetMapTest.java b/src/extension/app-schema/app-schema-test/src/test/java/org/geoserver/test/WmsGetMapTest.java
index eabcfa4..6083caa 100644
--- a/src/extension/app-schema/app-schema-test/src/test/java/org/geoserver/test/WmsGetMapTest.java
+++ b/src/extension/app-schema/app-schema-test/src/test/java/org/geoserver/test/WmsGetMapTest.java
@@ -11,6 +11,8 @@ import javax.imageio.ImageIO;
 import junit.framework.Test;
 import org.geoserver.test.NamespaceTestData;
 import org.geotools.image.test.ImageAssert;
+import org.w3c.dom.Document;
+
 import java.io.File;
 
 public class WmsGetMapTest extends AbstractAppSchemaWfsTestSupport {
@@ -51,6 +53,16 @@ public class WmsGetMapTest extends AbstractAppSchemaWfsTestSupport {
 
     }
     
+    public void testGetMapOutcropCharacterReprojection() throws Exception
+    {
+        InputStream is = getBinary("wms?request=GetMap&SRS=EPSG:4283&layers=gsml:MappedFeature&styles=outcropcharacter&BBOX=-2,52,0,54&X=0&Y=0&width=20&height=20&FORMAT=image/jpeg");
+        BufferedImage imageBuffer = ImageIO.read(is);
+                
+        assertNotBlank("app-schema test getmap outcrop character", imageBuffer, Color.WHITE);   
+        ImageAssert.assertEquals(new File(getClass().getResource("/test-data/img/outcrop.tiff").getFile()), imageBuffer, -1);
+
+    }
+    
     public void testGetMapPositionalAccuracy() throws Exception
     {
         InputStream is = getBinary("wms?request=GetMap&SRS=EPSG:4326&layers=gsml:MappedFeature&styles=positionalaccuracy&BBOX=-2,52,0,54&X=0&Y=0&width=20&height=20&FORMAT=image/jpeg");
@@ -67,5 +79,19 @@ public class WmsGetMapTest extends AbstractAppSchemaWfsTestSupport {
         is.close();
         out.close();*/
     }  
+    
+   
+    public void testGetMapAfterWFS() throws Exception
+    {
+        Document doc = getAsDOM("wfs?version=1.1.0&request=getFeature&typeName=gsml:MappedFeature&maxFeatures=1");
+        LOGGER.info(prettyString(doc));
+        
+        InputStream is = getBinary("wms?request=GetMap&SRS=EPSG:4326&layers=gsml:MappedFeature&styles=outcropcharacter&BBOX=-2,52,0,54&X=0&Y=0&width=20&height=20&FORMAT=image/jpeg");
+        BufferedImage imageBuffer = ImageIO.read(is);
+                
+        assertNotBlank("app-schema test getmap outcrop character", imageBuffer, Color.WHITE);   
+        ImageAssert.assertEquals(new File(getClass().getResource("/test-data/img/outcrop.tiff").getFile()), imageBuffer, -1);
+
+    }
 
 }
diff --git a/src/extension/app-schema/app-schema-test/src/test/java/org/geoserver/test/onlineTest/DataReferenceWmsOnlineTest.java b/src/extension/app-schema/app-schema-test/src/test/java/org/geoserver/test/onlineTest/DataReferenceWmsOnlineTest.java
index 057f65c..3c5040a 100644
--- a/src/extension/app-schema/app-schema-test/src/test/java/org/geoserver/test/onlineTest/DataReferenceWmsOnlineTest.java
+++ b/src/extension/app-schema/app-schema-test/src/test/java/org/geoserver/test/onlineTest/DataReferenceWmsOnlineTest.java
@@ -21,16 +21,7 @@ public abstract class DataReferenceWmsOnlineTest extends AbstractDataReferenceWf
         super();
         // TODO Auto-generated constructor stub
     }
-    
-    public void __testMappedFeature() {
-        String path = "wfs?request=GetFeature&version=1.1.0&typeName=gsml:MappedFeature&featureid=gsml.mappedfeature.191322";
-       // validateGet(path);
-        Document doc = getAsDOM(path);
-        LOGGER.info(prettyString(doc));
-        
-        
-    }
-    
+      
     public void testGetMapSimpleLithology() throws Exception
     {
         InputStream is = getBinary("wms?request=GetMap&SRS=EPSG:4326&layers=gsml:MappedFeature&styles=simplelithology&BBOX=140,-38,145,-35&width=500&height=500&FORMAT=image/jpeg");
@@ -54,6 +45,19 @@ public abstract class DataReferenceWmsOnlineTest extends AbstractDataReferenceWf
         ImageAssert.assertEquals(new File(getClass().getResource("/test-data/img/datareference_stratchart.tiff").getFile()), imageBuffer, -1);
         
     } 
+    
+    public void testGetMapAfterWFS() throws Exception
+    {
+        Document doc = getAsDOM("wfs?request=getFeature&version=1.1.0&typeName=gsml:MappedFeature&maxFeatures=1");
+        LOGGER.info(prettyString(doc));
+        
+        InputStream is = getBinary("wms?request=GetMap&SRS=EPSG:4326&layers=gsml:MappedFeature&styles=stratchart&BBOX=140,-38,150,-35&width=500&height=500&FORMAT=image/jpeg");
+        BufferedImage imageBuffer = ImageIO.read(is);
+                
+        assertNotBlank("app-schema test getmap outcrop character", imageBuffer, Color.WHITE);   
+        ImageAssert.assertEquals(new File(getClass().getResource("/test-data/img/datareference_stratchart.tiff").getFile()), imageBuffer, -1);
+
+    }
 
     
 }
diff --git a/src/wms/src/main/java/org/geoserver/wms/GetFeatureInfo.java b/src/wms/src/main/java/org/geoserver/wms/GetFeatureInfo.java
index 16e408b..c731c6e 100644
--- a/src/wms/src/main/java/org/geoserver/wms/GetFeatureInfo.java
+++ b/src/wms/src/main/java/org/geoserver/wms/GetFeatureInfo.java
@@ -300,6 +300,18 @@ public class GetFeatureInfo {
                 
                 int size = collection.size();
                 if(size != 0) {
+
+                    // For complex features, we need the targetCrs and version in scenario where we have
+                	// a top level feature that does not contain a geometry(therefore no crs) and has a
+                	// nested feature that contains geometry as its property.Furthermore it is possible
+                	// for each nested feature to have different crs hence we need to reproject on each
+                	// feature accordingly.
+                	if (! (collection instanceof SimpleFeatureCollection)) {
+                       collection.getSchema().getUserData().put("targetCrs", request.getGetMapRequest().getCrs());
+                       collection.getSchema().getUserData().put("targetVersion", "wms:getfeatureinfo");
+                       
+                    }
+                	
                     results.add(collection);
                     
                     // don't return more than FEATURE_COUNT
