diff --git a/model/src/main/java/lcsb/mapviewer/model/map/MiriamData.java b/model/src/main/java/lcsb/mapviewer/model/map/MiriamData.java
index df0c5393d3afd997f8c3b51187385c0d56778c65..f6f3ba71422a0ea40c90e485bb957b60ead8ff0a 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/MiriamData.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/MiriamData.java
@@ -187,7 +187,7 @@ public class MiriamData implements Comparable<MiriamData>, Serializable {
 
 	@Override
 	public int compareTo(MiriamData other) {
-		return ((dataType + ":" + resource).compareTo(other.dataType + ":" + other.resource));
+		return ((dataType + ":" + resource).toLowerCase().compareTo((other.dataType + ":" + other.resource).toLowerCase()));
 	}
 
 	/**
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java b/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
index d7755071ab1c7d771f9aab2d8b28b7d5610425dc..d202b0c4c8a7c2baada65e64b107a8b0c3a1150e 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/SearchService.java
@@ -488,7 +488,7 @@ public class SearchService implements ISearchService {
 	/**
 	 * Returns elements that are annotated with the given miriam data.
 	 * 
-	 * @param model
+	 * @param topModel
 	 *          model where elements are looked for
 	 * @param md
 	 *          miriam annotation to identifiy interesting elements
@@ -496,18 +496,23 @@ public class SearchService implements ISearchService {
 	 *          max number of elements to find
 	 * @return elements that are annotated with the given miriam data
 	 */
-	private List<IHeavyView> searchByMiriam(Model model, MiriamData md, int limit) {
+	private List<IHeavyView> searchByMiriam(Model topModel, MiriamData md, int limit) {
 		List<IHeavyView> result = new ArrayList<>();
-		for (BioEntity obj : model.getElementsByAnnotation(md)) {
-			if (result.size() >= limit) {
-				break;
-			}
-			if (obj instanceof Element) {
-				result.add(fullAliasViewFactory.create((Element) obj));
-			} else if (obj instanceof Reaction) {
-				result.addAll(reactionToResultList((Reaction) obj));
-			} else {
-				throw new InvalidClassException("Unknown class: " + obj.getClass());
+		Set<Model> models = new HashSet<>();
+		models.add(topModel);
+		models.addAll(topModel.getSubmodels());
+		for (Model model : models) {
+			for (BioEntity obj : model.getElementsByAnnotation(md)) {
+				if (result.size() >= limit) {
+					break;
+				}
+				if (obj instanceof Element) {
+					result.add(fullAliasViewFactory.create((Element) obj));
+				} else if (obj instanceof Reaction) {
+					result.addAll(reactionToResultList((Reaction) obj));
+				} else {
+					throw new InvalidClassException("Unknown class: " + obj.getClass());
+				}
 			}
 		}
 		return result;
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java
index 473f8634030944bce0a879b86054ad595d840585..c6d48d10ac8341433d4fd917f1f09ee5a60fcee7 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/SearchServiceTest.java
@@ -25,6 +25,8 @@ import lcsb.mapviewer.model.map.MiriamType;
 import lcsb.mapviewer.model.map.layout.Layout;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.map.model.ModelFullIndexed;
+import lcsb.mapviewer.model.map.model.ModelSubmodelConnection;
+import lcsb.mapviewer.model.map.model.SubmodelType;
 import lcsb.mapviewer.model.map.reaction.Reaction;
 import lcsb.mapviewer.model.map.species.Complex;
 import lcsb.mapviewer.model.map.species.Degraded;
@@ -521,6 +523,28 @@ public class SearchServiceTest extends ServiceTestFunctions {
 
 	}
 
+	@Test
+	public void testSearchByMiriamInSubmap() throws Exception {
+		try {
+			String query = "HGNC_SYMBOL:SNCA";
+			Model model = new ModelFullIndexed(null);
+			Model submodel = new ModelFullIndexed(null);
+			GenericProtein protein = new GenericProtein("s1");
+			protein.addMiriamData(new MiriamData(MiriamType.HGNC_SYMBOL, "SNCA"));
+			submodel.addElement(protein);
+			model.addSubmodelConnection(new ModelSubmodelConnection(submodel, SubmodelType.UNKNOWN));
+
+			SearchElementResult result = searchService.searchByQuery(model, query, 50, null, "127.0.0.1");
+
+			assertEquals(1, result.getElements().size());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		}
+
+	}
+
 	@Test
 	public void testGetMiriamTypeForQuery2() throws Exception {
 		try {