diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF
index 652af3d..3b69d3e 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
  i;singleton:=true
 Export-Package: org.eclipse.papyrus.requirements.sysml14.common.ui
 Bundle-Name: %Bundle-Name
-Bundle-Version: 0.8.0.qualifier
+Bundle-Version: 0.9.0.qualifier
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.6.0",
  org.eclipse.papyrus.emf.facet.efacet.core,
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml
index 31d68e9..6cc35d0 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml
@@ -67,6 +67,12 @@
       <modeldeclaration
             file="resources/DisplaySatisfiedReq.custom">
       </modeldeclaration>
+      <modeldeclaration
+            file="resources/DownwardTracabilityClasses.custom">
+      </modeldeclaration>
+      <modeldeclaration
+            file="resources/UpwardTracabilityClasses.custom">
+      </modeldeclaration>
    </extension>
 
 </plugin>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml
index 7c53a4b..7374cbb 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml
@@ -30,5 +30,5 @@
 	<!-- POM Description -->
 	<artifactId>org.eclipse.papyrus.requirements.sysml14.common.ui</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<version>0.8.0-SNAPSHOT</version>
+	<version>0.9.0-SNAPSHOT</version>
 </project>
\ No newline at end of file
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom
index 7ad46b9..53ddbdd 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="DownwardTracability" documentation="Used to find element that trace from the current object" mustBeLoadedByDefault="true" rank="2">
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="DownwardTraceability" documentation="Used to find element that trace from the current object" rank="2">
   <eClassifiers xsi:type="custom:EClassCustomization" name="NamedElement">
     <extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement"/>
-    <facetElements xsi:type="efacet:FacetReference" name="downwardTracability" upperBound="-1" volatile="true" transient="true" derived="true">
+    <facetElements xsi:type="efacet:FacetReference" name="DownwardTraceability" upperBound="-1" volatile="true" transient="true" derived="true">
       <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
       <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.requirements.sysml14.common.ui.queries.DownwardTracabilityQuery"/>
     </facetElements>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracabilityClasses.custom b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracabilityClasses.custom
new file mode 100644
index 0000000..05def85
--- /dev/null
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracabilityClasses.custom
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="DownwardTraceabilityClasses" documentation="Used to find element that trace from the current object" rank="2">
+  <eClassifiers xsi:type="custom:EClassCustomization" name="NamedElement">
+    <extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement"/>
+    <facetElements xsi:type="efacet:FacetReference" name="DownwardTraceabilityClasses" upperBound="-1" volatile="true" transient="true" derived="true">
+      <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+      <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.requirements.sysml14.common.ui.queries.DownwardClassesQuery"/>
+    </facetElements>
+    <extendedFacets href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject"/>
+  </eClassifiers>
+</custom:Customization>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom
index de11c04..7f9699d 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="UpwardTracability" documentation="Used to find element that trace from the current object" mustBeLoadedByDefault="true" rank="2">
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="UpwardTraceability" documentation="Used to find element that trace from the current object" rank="2">
   <eClassifiers xsi:type="custom:EClassCustomization" name="NamedElement">
     <extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement"/>
-    <facetElements xsi:type="efacet:FacetReference" name="upwardTracability" upperBound="-1" volatile="true" transient="true" derived="true">
+    <facetElements xsi:type="efacet:FacetReference" name="UpwardTraceability" upperBound="-1" volatile="true" transient="true" derived="true">
       <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
       <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.requirements.sysml14.common.ui.queries.UpwardTracabilityQuery"/>
     </facetElements>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracabilityClasses.custom b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracabilityClasses.custom
new file mode 100644
index 0000000..72cfb7b
--- /dev/null
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracabilityClasses.custom
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="UpwardTraceabilityClasses" documentation="Used to find element that trace from the current object" rank="2">
+  <eClassifiers xsi:type="custom:EClassCustomization" name="NamedElement">
+    <extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement"/>
+    <facetElements xsi:type="efacet:FacetReference" name="UpwardTraceabilityClasses" upperBound="-1" volatile="true" transient="true" derived="true">
+      <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+      <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.requirements.sysml14.common.ui.queries.UpwardClassesQuery"/>
+    </facetElements>
+    <extendedFacets href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject"/>
+  </eClassifiers>
+</custom:Customization>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardClassesQuery.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardClassesQuery.java
new file mode 100644
index 0000000..df4b442
--- /dev/null
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardClassesQuery.java
@@ -0,0 +1,85 @@
+/*****************************************************************************
+ * Copyright (c) 2016,2018 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Patrick Tessier (Patrick.tessier@cea.fr) CEA LIST
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml14.common.ui.queries;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.resource.UMLResource;
+
+/**
+ * Req03: Papyrus Req  shall provides a means to display downward traceability in the model explorer
+ *
+ */
+public class DownwardClassesQuery implements IJavaQuery2<NamedElement,  Collection<EObject>> {
+	public Collection<EObject>  evaluate(final NamedElement context, 
+			final IParameterValueList2 parameterValues,
+			final IFacetManager facetManager)
+					throws DerivedTypedElementException {
+
+
+		ArrayList<EObject> result= new ArrayList<EObject>();
+		if( context  instanceof DirectedRelationship) {
+			result.addAll(((DirectedRelationship)context).getSources());
+		}
+		else {
+			ResourceSet resourceSet=context.eResource().getResourceSet();
+			for(int i=0; i< resourceSet.getResources().size();i++) {
+				Resource resource = (Resource) resourceSet.getResources().get(i);
+				if( resource instanceof UMLResource) {
+
+					for (Iterator<EObject> iteratorObject = resource.getAllContents(); iteratorObject.hasNext();) {
+						EObject ownedElement = (EObject) iteratorObject.next();
+						if( ownedElement instanceof  Abstraction) {
+							if(((DirectedRelationship)ownedElement).getTargets().contains(context)) {
+								DirectedRelationship directedRelationship=(DirectedRelationship) ownedElement;
+								result.addAll(directedRelationship.getSources());
+							}
+						}
+					}
+				}
+			}
+		}
+		return result;
+
+	}
+
+	/**
+	 * @param elem
+	 *            UML model element
+	 * @return the highest level Package of the element
+	 */
+	public static Package getToPackage(Element elememt) {
+		Package tmp = elememt.getNearestPackage();
+		while (tmp.getOwner() != null && (tmp.getOwner() instanceof Package)) {
+			tmp = (Package) tmp.getOwner();
+		}
+		return tmp;
+	}
+}
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java
index 3709011..75bebb1 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java
@@ -25,6 +25,8 @@
 import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
 import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
 import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DirectedRelationship;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.NamedElement;
@@ -47,18 +49,20 @@
 			result.addAll(((DirectedRelationship)context).getSources());
 		}
 		else {
-
 			ResourceSet resourceSet=context.eResource().getResourceSet();
-			for (Iterator<Resource> iteratorResource = resourceSet.getResources().iterator(); iteratorResource.hasNext();) {
-				Resource resource = (Resource) iteratorResource.next();
+			
+			for(int i=0; i< resourceSet.getResources().size();i++) {
+				Resource resource = (Resource) resourceSet.getResources().get(i);
 				if( resource instanceof UMLResource) {
-
 					for (Iterator<EObject> iteratorObject = resource.getAllContents(); iteratorObject.hasNext();) {
 						EObject ownedElement = (EObject) iteratorObject.next();
 						if(ownedElement instanceof DirectedRelationship) {
-							if(((DirectedRelationship)ownedElement).getTargets().contains(context)) {
-								result.add(ownedElement);
+							if( ownedElement instanceof  Abstraction) {
+								if(((DirectedRelationship)ownedElement).getTargets().contains(context)) {
+									result.add(ownedElement);
+								}
 							}
+
 						}
 					}
 				}
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java
index 0e81660..70d720c 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java
@@ -63,7 +63,7 @@
 		}
 
 		if ((source instanceof org.eclipse.uml2.uml.Class) && (appStereotype != null) && (isRequirementStereotype(appStereotype))) {
-			return "" + source.getValue(appStereotype, I_SysMLStereotype.REQUIREMENT_ID_ATT) + ": " + source.getName();
+			return "" + source.getValue(appStereotype, I_SysMLStereotype.REQUIREMENT_ID_ATT) + ": " +  source.getValue(appStereotype, I_SysMLStereotype.REQUIREMENT_TEXT_ATT);
 		}
 		// Delegate to UML2 Edit providers to get localized and inferred names where applicable
 		return labelProvider.getText(source);
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardClassesQuery.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardClassesQuery.java
new file mode 100644
index 0000000..6ce6600
--- /dev/null
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardClassesQuery.java
@@ -0,0 +1,84 @@
+/*****************************************************************************
+ * Copyright (c) 2016,2018 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Patrick Tessier (Patrick.tessier@cea.fr) CEA LIST
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml14.common.ui.queries;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.resource.UMLResource;
+
+/**
+ * Req02:Papyrus Req  shall provides a means to display upward traceability in the model explorer
+ *
+ */
+public class UpwardClassesQuery implements IJavaQuery2<NamedElement,  Collection<EObject>> {
+
+
+
+	public Collection<EObject>  evaluate(final NamedElement context, 
+			final IParameterValueList2 parameterValues,
+			final IFacetManager facetManager)
+					throws DerivedTypedElementException {
+
+
+		ArrayList<EObject> result= new ArrayList<EObject>();
+		ResourceSet resourceSet=context.eResource().getResourceSet();
+		for(int i=0; i< resourceSet.getResources().size();i++) {
+			Resource resource = (Resource) resourceSet.getResources().get(i);
+			if( resource instanceof UMLResource) {
+
+				for (Iterator<EObject> iteratorObject = resource.getAllContents(); iteratorObject.hasNext();) {
+					EObject ownedElement = (EObject) iteratorObject.next();
+					if(ownedElement instanceof DirectedRelationship) {
+						if( ownedElement instanceof  Abstraction) {
+							if(((DirectedRelationship)ownedElement).getSources().contains(context)) {
+								result.addAll(((DirectedRelationship)ownedElement).getTargets());
+							}
+						}
+					}
+				}
+			}
+		}
+		return result;
+
+	}
+
+	/**
+	 * @param elem
+	 *            UML model element
+	 * @return the highest level Package of the element
+	 */
+	public static Package getToPackage(Element elememt) {
+		Package tmp = elememt.getNearestPackage();
+		while (tmp.getOwner() != null && (tmp.getOwner() instanceof Package)) {
+			tmp = (Package) tmp.getOwner();
+		}
+		return tmp;
+	}
+}
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java
index ab7f2ae..a4e19c9 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java
@@ -25,6 +25,8 @@
 import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
 import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
 import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DirectedRelationship;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.NamedElement;
@@ -36,9 +38,9 @@
  *
  */
 public class UpwardTracabilityQuery implements IJavaQuery2<NamedElement,  Collection<EObject>> {
-	
-	
-	
+
+
+
 	public Collection<EObject>  evaluate(final NamedElement context, 
 			final IParameterValueList2 parameterValues,
 			final IFacetManager facetManager)
@@ -52,15 +54,17 @@
 		else {
 
 			ResourceSet resourceSet=context.eResource().getResourceSet();
-			for (Iterator<Resource> iteratorResource = resourceSet.getResources().iterator(); iteratorResource.hasNext();) {
-				Resource resource = (Resource) iteratorResource.next();
+			for(int i=0; i< resourceSet.getResources().size();i++) {
+				Resource resource = (Resource) resourceSet.getResources().get(i);
 				if( resource instanceof UMLResource) {
 
 					for (Iterator<EObject> iteratorObject = resource.getAllContents(); iteratorObject.hasNext();) {
 						EObject ownedElement = (EObject) iteratorObject.next();
 						if(ownedElement instanceof DirectedRelationship) {
-							if(((DirectedRelationship)ownedElement).getSources().contains(context)) {
-								result.add(ownedElement);
+							if( ownedElement instanceof  Abstraction) {
+								if(((DirectedRelationship)ownedElement).getSources().contains(context)) {
+									result.add(ownedElement);
+								}
 							}
 						}
 					}
