diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/LibForExtends.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/LibForExtends.qvto
new file mode 100644
index 0000000..e655e73
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/LibForExtends.qvto
@@ -0,0 +1,11 @@
+library LibForExtends;
+
+
+query query_LibForExtends() : String {
+	return "LibForExtends-query_LibForExtends";
+}
+
+query callQuery_LibForExtends() : String {
+	return query_LibForExtends();
+}
+
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/RootTransfForExtends.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/RootTransfForExtends.qvto
new file mode 100644
index 0000000..8d21b72
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/RootTransfForExtends.qvto
@@ -0,0 +1,49 @@
+modeltype ECORE "strict" uses ecore('http://www.eclipse.org/emf/2002/Ecore');
+	
+transformation RootTransfForExtends(in eModel : ECORE, out outModel : ECORE);
+ 
+property prop_TransfForExtends : String = "prop_TransfForExtends";
+
+main() {
+	object EPackage {
+		name := "should never be executed";
+	};
+}
+
+
+helper EClass::decorateName() : String {
+	return "RootTransfForExtends-" + self.name;
+}
+
+helper non_ContextualDecorate(c : EClass) : String {
+	return "RootTransfForExtends-" + c.name;
+}
+
+mapping EClass::customCopy() : EClass {
+	name := "RootTransfForExtends-" + self.name;
+}
+
+mapping customCopy(in eClass : EClass) : EClass {
+	name := "RootTransfForExtends-" + eClass.name;
+}
+
+helper rootModuleQuery() : String {
+	return "RootTransfForExtends";
+}
+
+mapping createOverridenCallsPackage(in pckgName : String) : EPackage {
+	init {
+		var c:EClass := object EClass { name := pckgName };
+		c.eStructuralFeatures += object EAttribute {
+			name := c.decorateName();
+		};
+		c.eStructuralFeatures += object EAttribute {
+			name := non_ContextualDecorate(c);
+		};
+	}
+
+	name := pckgName;
+	eClassifiers += c;
+	eClassifiers += c.map customCopy();
+	eClassifiers += map customCopy(c);	
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/TransfForAccess.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/TransfForAccess.qvto
new file mode 100644
index 0000000..0e931b0
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/TransfForAccess.qvto
@@ -0,0 +1,7 @@
+modeltype ECORE "strict" uses ecore('http://www.eclipse.org/emf/2002/Ecore');
+	
+transformation TransfForAccess(in eModel : ECORE, out outModel : ECORE);
+ 
+query queryStringForAccess() : String {
+	return "TransfForAccess-queryStringForAccess";
+}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/TransfForExtends.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/TransfForExtends.qvto
new file mode 100644
index 0000000..2caffd1
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/TransfForExtends.qvto
@@ -0,0 +1,42 @@
+import RootTransfForExtends;
+	
+modeltype ECORE "strict" uses ecore('http://www.eclipse.org/emf/2002/Ecore');
+	
+transformation TransfForExtends(in eModel : ECORE, out outModel : ECORE) 
+	extends transformation RootTransfForExtends;
+ 
+
+helper EClass::decorateName() : String {
+	return "TransfForExtends-" + self.name;
+}
+
+helper non_ContextualDecorate(c : EClass) : String {
+	return "TransfForExtends->" + this.RootTransfForExtends::non_ContextualDecorate(c);
+}
+
+mapping EClass::customCopy() : EClass {
+	name := "TransfForExtends-EClass::customCopy()" + self.name;
+}
+
+mapping customCopy(in eClass : EClass) : EClass {
+	name := "TransfForExtends-customCopy(in eClass : EClass)" + eClass.name;
+}
+
+/*
+ Intentionally not overridden here but only by the bottom most sub-module
+*/
+//helper rootModuleQuery() : String {
+//	return "RootTransfForExtends";
+//}
+
+query callRootModuleQuery() : String {
+	return rootModuleQuery();
+}
+
+query reusableQuery() : String {
+	return 	"TransfForExtends::reusableQuery";
+}
+
+helper callOverridenPackageResult() : EPackage {
+	return map createOverridenCallsPackage("result-in-TransfForExtends");
+}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/expected.ecore b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/expected.ecore
new file mode 100644
index 0000000..b6228ac
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/expected.ecore
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="mainModule-RootTransfForExtends">
+  <eClassifiers xsi:type="ecore:EClass" name="mainModule->LibForExtends-query_LibForExtends"/>
+  <eSubpackages name="mainModule-RootTransfForExtends">
+    <eClassifiers xsi:type="ecore:EClass" name="mainModule-queryStringForAccess"/>
+  </eSubpackages>
+  <eSubpackages name="RootTransfForExtends"/>
+  <eSubpackages name="result-in-MainModule">
+    <eClassifiers xsi:type="ecore:EClass" name="result-in-MainModule">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="TransfForExtends-result-in-MainModule"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="TransfForExtends->RootTransfForExtends-result-in-MainModule"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TransfForExtends-EClass::customCopy()result-in-MainModule"/>
+    <eClassifiers xsi:type="ecore:EClass" name="TransfForExtends-customCopy(in eClass : EClass)result-in-MainModule"/>
+  </eSubpackages>
+  <eSubpackages name="result-in-TransfForExtends">
+    <eClassifiers xsi:type="ecore:EClass" name="result-in-TransfForExtends">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="TransfForExtends-result-in-TransfForExtends"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="TransfForExtends->RootTransfForExtends-result-in-TransfForExtends"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TransfForExtends-EClass::customCopy()result-in-TransfForExtends"/>
+    <eClassifiers xsi:type="ecore:EClass" name="TransfForExtends-customCopy(in eClass : EClass)result-in-TransfForExtends"/>
+  </eSubpackages>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/in.ecore b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/in.ecore
new file mode 100644
index 0000000..5511a6b
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/in.ecore
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="root"
+    nsURI="x" nsPrefix="x"/>
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/operation_override.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/operation_override.qvto
new file mode 100644
index 0000000..e267389
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/operation_override/operation_override.qvto
@@ -0,0 +1,54 @@
+import TransfForAccess;
+import LibForExtends;
+import TransfForExtends;	
+
+modeltype ECORE "strict" uses ecore('http://www.eclipse.org/emf/2002/Ecore');
+
+transformation operation_override(in eModel : ECORE, out outModel : ECORE) 
+	extends TransfForExtends, LibForExtends
+	access transformation TransfForAccess; 
+    
+    
+main() {
+	var e : EPackage := object EPackage {
+		name := rootModuleQuery();
+
+		eSubpackages += object EPackage {
+			name := callRootModuleQuery();	
+	
+			var c: EClass;
+			eClassifiers += object c:EClass {
+				name := queryStringForAccess();
+			};
+		};
+		
+		eSubpackages += object EPackage {
+			name := this.RootTransfForExtends::rootModuleQuery();
+		};   
+	};
+		
+	e.eSubpackages += map createOverridenCallsPackage("result-in-MainModule");	
+	e.eSubpackages += callOverridenPackageResult();
+	 
+	e.eClassifiers += object EClass { 
+		name := callQuery_LibForExtends();
+	}	
+}
+
+
+helper rootModuleQuery() : String {
+	return "mainModule-RootTransfForExtends";
+}
+
+// non-overriding query local hiding of accessed query 
+query queryStringForAccess() : String {
+	return "mainModule-queryStringForAccess";
+}
+
+query reusableQuery() : String {
+	return 	"mainModule->" + this.TransfForExtends::reusableQuery();
+}
+
+query query_LibForExtends() : String {
+	return "mainModule->LibForExtends-query_LibForExtends";
+}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
index d39d274..81a69a9 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
@@ -78,6 +78,7 @@
     
     public static ModelTestData[] createTestData() {
         return new ModelTestData[] {        		        		
+        		new FileToFileData("operation_override"), //$NON-NLS-1$
         		new FileToFileData("fqnMainCalls_272937"), //$NON-NLS-1$        		
         		new FileToFileData("fqnMainCalls_271987"), //$NON-NLS-1$        		
         		new FileToFileData("fqnOperationCalls_271789"), //$NON-NLS-1$        		
@@ -292,7 +293,7 @@
             "primtypesecore", // uses getDataTypeInstance() defined on ecore //$NON-NLS-1$
             // tests using imports are excluded as the compiler never resolved imported unit
             // to unitName.qvto.javaless (patched original sources)
-            "import_access_extends", "import_access_extends_cfgprop", "importedvirtuals", "imports_transformations", "imports", "virt", "full", "fqntraces", // TODO import other files //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
+            "operation_override", "import_access_extends", "import_access_extends_cfgprop", "importedvirtuals", "imports_transformations", "imports", "virt", "full", "fqntraces", // TODO import other files //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
             "importedInstances", "fqnOperationCalls_271789", "fqnMainCalls_271987", "fqnMainCalls_272937", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
             
             "libraryWithModuleElements_257184", "libraryHeaderWithSignature_257575",// TODO import other files //$NON-NLS-1$ //$NON-NLS-2$
