diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ViewpointModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ViewpointModelTest.java
index a539811..39d7960 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ViewpointModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ViewpointModelTest.java
@@ -14,10 +14,15 @@
 package org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests.resources;
 
 import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.papyrus.infra.viewpoints.configuration.ModelRule;
 import org.eclipse.papyrus.sysml14.diagram.blockdefinition.Activator;
 import org.junit.Assert;
 import org.junit.Ignore;
@@ -29,9 +34,10 @@
  * 
  * @author Benoit Maggi
  */
+@SuppressWarnings("nls")
 public class ViewpointModelTest {
 	
-	public static final String VIEWPOINT_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/blockDefinitionDiagram.configuration"; //$NON-NLS-1$
+	public static final String VIEWPOINT_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/blockDefinitionDiagram.configuration";
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -42,7 +48,29 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(VIEWPOINT_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The blockDefinitionDiagram.configuration model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
+		Assert.assertEquals("The blockDefinitionDiagram.configuration model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
 	}
 
+	
+	/**
+	 * Check that the stereotypes are correctly referenced 
+	 * Can be removed once the validation is working
+	 */
+	@Test
+	public void checkStereotype() {
+		URI createPlatformPluginURI = URI.createPlatformPluginURI(VIEWPOINT_MODEL_PATH, true);
+		ResourceSetImpl resourceSetImpl = new ResourceSetImpl();
+		Resource resource = resourceSetImpl.getResource(createPlatformPluginURI, true);
+		TreeIterator<EObject> allContents = resource.getAllContents();
+		while (allContents.hasNext()) {
+			EObject eObject = (EObject) allContents.next();
+			if (eObject instanceof ModelRule) { // PapyrusConfiguration
+				ModelRule modelRule = (ModelRule) eObject;
+				EList<EClass> stereotypes = modelRule.getStereotypes();
+				for (EClass eClass : stereotypes) {
+					Assert.assertFalse(eClass.eIsProxy());
+				}
+			}
+		}
+	}
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/resources/configuration/blockDefinitionDiagram.configuration b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/resources/configuration/blockDefinitionDiagram.configuration
index ef909e9..c6aa0b6 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/resources/configuration/blockDefinitionDiagram.configuration
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/resources/configuration/blockDefinitionDiagram.configuration
@@ -20,22 +20,22 @@
       </modelRules>
       <modelRules xmi:id="_d1wI8DEWEeWBaOAEtkgP6w">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/Blocks#//Block"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//blocks/Block"/>
       </modelRules>
       <modelRules xmi:id="_tom7sDEsEeWJxc-KaJbwrw">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/ConstraintBlocks#//ConstraintBlock"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//constraintblocks/ConstraintBlock"/>
       </modelRules>
       <owningRules xmi:id="_ZrBf45aBEeS8eNvSwD0lgA">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
       </owningRules>
       <owningRules xmi:id="_aYehEDEnEeWu9rf11ohCng">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/Blocks#//Block"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//blocks/Block"/>
       </owningRules>
       <owningRules xmi:id="_x62M8DEsEeWJxc-KaJbwrw">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/ConstraintBlocks#//ConstraintBlock"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//constraintblocks/ConstraintBlock"/>
       </owningRules>
       <childRules xmi:id="_ZrBf5ZaBEeS8eNvSwD0lgA"/>
       <paletteRules xmi:id="_N4GzIKFQEeSx6MYdei1rKA" permit="false" element="clazz.group.*"/>
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ViewpointModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ViewpointModelTest.java
index 7e2e8da..1e78074 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ViewpointModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ViewpointModelTest.java
@@ -14,10 +14,15 @@
 package org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests.resources;
 
 import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.papyrus.infra.viewpoints.configuration.ModelRule;
 import org.eclipse.papyrus.sysml14.diagram.internalblock.Activator;
 import org.junit.Assert;
 import org.junit.Ignore;
@@ -45,4 +50,25 @@
 		Assert.assertEquals("The internalBlockDiagram.configuration model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
+	/**
+	 * Check that the stereotypes are correctly referenced 
+	 * Can be removed once the validation is working
+	 */
+	@Test
+	public void checkStereotype() {
+		URI createPlatformPluginURI = URI.createPlatformPluginURI(VIEWPOINT_MODEL_PATH, true);
+		ResourceSetImpl resourceSetImpl = new ResourceSetImpl();
+		Resource resource = resourceSetImpl.getResource(createPlatformPluginURI, true);
+		TreeIterator<EObject> allContents = resource.getAllContents();
+		while (allContents.hasNext()) {
+			EObject eObject = (EObject) allContents.next();
+			if (eObject instanceof ModelRule) { // PapyrusConfiguration
+				ModelRule modelRule = (ModelRule) eObject;
+				EList<EClass> stereotypes = modelRule.getStereotypes();
+				for (EClass eClass : stereotypes) {
+					Assert.assertFalse(eClass.eIsProxy());
+				}
+			}
+		}
+	}	
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock/resources/configuration/internalBlockDiagram.configuration b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock/resources/configuration/internalBlockDiagram.configuration
index 6ab4374..ee4f2bb 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock/resources/configuration/internalBlockDiagram.configuration
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock/resources/configuration/internalBlockDiagram.configuration
@@ -17,19 +17,19 @@
       <profiles href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#/"/>
       <modelRules xmi:id="_ZrBf4ZaBEeS8eNvSwD0lgA">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/Blocks#//Block"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//blocks/Block"/>
       </modelRules>
       <modelRules xmi:id="__1p68DEsEeWJxc-KaJbwrw">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/ConstraintBlocks#//ConstraintBlock"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//constraintblocks/ConstraintBlock"/>
       </modelRules>
       <owningRules xmi:id="_ZrBf45aBEeS8eNvSwD0lgA">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/Blocks#//Block"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//blocks/Block"/>
       </owningRules>
       <owningRules xmi:id="_BkuE0DEtEeWJxc-KaJbwrw">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/ConstraintBlocks#//ConstraintBlock"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//constraintblocks/ConstraintBlock"/>
       </owningRules>
       <owningRules xmi:id="_mIEUsDEnEeWu9rf11ohCng">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric.tests/src/org/eclipse/papyrus/sysml14/diagram/parametric/tests/resources/ViewpointModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric.tests/src/org/eclipse/papyrus/sysml14/diagram/parametric/tests/resources/ViewpointModelTest.java
index 5b0f848..c4e9060 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric.tests/src/org/eclipse/papyrus/sysml14/diagram/parametric/tests/resources/ViewpointModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric.tests/src/org/eclipse/papyrus/sysml14/diagram/parametric/tests/resources/ViewpointModelTest.java
@@ -14,10 +14,15 @@
 package org.eclipse.papyrus.sysml14.diagram.parametric.tests.resources;
 
 import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.papyrus.infra.viewpoints.configuration.ModelRule;
 import org.eclipse.papyrus.sysml14.diagram.parametric.Activator;
 import org.junit.Assert;
 import org.junit.Ignore;
@@ -45,4 +50,25 @@
 		Assert.assertEquals("The parametricDiagram.configuration viewpoint model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
+	/**
+	 * Check that the stereotypes are correctly referenced 
+	 * Can be removed once the validation is working
+	 */
+	@Test
+	public void checkStereotype() {
+		URI createPlatformPluginURI = URI.createPlatformPluginURI(VIEWPOINT_MODEL_PATH, true);
+		ResourceSetImpl resourceSetImpl = new ResourceSetImpl();
+		Resource resource = resourceSetImpl.getResource(createPlatformPluginURI, true);
+		TreeIterator<EObject> allContents = resource.getAllContents();
+		while (allContents.hasNext()) {
+			EObject eObject = (EObject) allContents.next();
+			if (eObject instanceof ModelRule) { // PapyrusConfiguration
+				ModelRule modelRule = (ModelRule) eObject;
+				EList<EClass> stereotypes = modelRule.getStereotypes();
+				for (EClass eClass : stereotypes) {
+					Assert.assertFalse(eClass.eIsProxy());
+				}
+			}
+		}
+	}	
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/resources/configuration/parametricDiagram.configuration b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/resources/configuration/parametricDiagram.configuration
index d2ab805..05f58b9 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/resources/configuration/parametricDiagram.configuration
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/resources/configuration/parametricDiagram.configuration
@@ -5,19 +5,19 @@
       <profiles href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#/"/>
       <modelRules xmi:id="_SUm70TEoEeWu9rf11ohCng">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/Blocks#//Block"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//blocks/Block"/>
       </modelRules>
       <modelRules xmi:id="_SMsV8TEoEeWu9rf11ohCng">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/ConstraintBlocks#//ConstraintBlock"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//constraintblocks/ConstraintBlock"/>
       </modelRules>
       <owningRules xmi:id="_iyse4DEoEeWu9rf11ohCng">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/Blocks#//Block"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//blocks/Block"/>
       </owningRules>
       <owningRules xmi:id="_SMsV8jEoEeWu9rf11ohCng">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/ConstraintBlocks#//ConstraintBlock"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//constraintblocks/ConstraintBlock"/>
       </owningRules>
       <owningRules xmi:id="_ZrBf45aBEeS8eNvSwD0lgA">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.requirement.tests/src/org/eclipse/papyrus/sysml14/diagram/requirement/tests/resources/ViewpointModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.requirement.tests/src/org/eclipse/papyrus/sysml14/diagram/requirement/tests/resources/ViewpointModelTest.java
index f79e418..2b609f0 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.requirement.tests/src/org/eclipse/papyrus/sysml14/diagram/requirement/tests/resources/ViewpointModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.requirement.tests/src/org/eclipse/papyrus/sysml14/diagram/requirement/tests/resources/ViewpointModelTest.java
@@ -14,10 +14,15 @@
 package org.eclipse.papyrus.sysml14.diagram.requirement.tests.resources;
 
 import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.papyrus.infra.viewpoints.configuration.ModelRule;
 import org.eclipse.papyrus.sysml14.diagram.requirement.Activator;
 import org.junit.Assert;
 import org.junit.Ignore;
@@ -45,4 +50,25 @@
 		Assert.assertEquals("The requirementDiagram.configuration viewpoint model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
+	/**
+	 * Check that the stereotypes are correctly referenced 
+	 * Can be removed once the validation is working
+	 */
+	@Test
+	public void checkStereotype() {
+		URI createPlatformPluginURI = URI.createPlatformPluginURI(VIEWPOINT_MODEL_PATH, true);
+		ResourceSetImpl resourceSetImpl = new ResourceSetImpl();
+		Resource resource = resourceSetImpl.getResource(createPlatformPluginURI, true);
+		TreeIterator<EObject> allContents = resource.getAllContents();
+		while (allContents.hasNext()) {
+			EObject eObject = (EObject) allContents.next();
+			if (eObject instanceof ModelRule) { // PapyrusConfiguration
+				ModelRule modelRule = (ModelRule) eObject;
+				EList<EClass> stereotypes = modelRule.getStereotypes();
+				for (EClass eClass : stereotypes) {
+					Assert.assertFalse(eClass.eIsProxy());
+				}
+			}
+		}
+	}
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.requirement/resources/configuration/requirementDiagram.configuration b/diagram/org.eclipse.papyrus.sysml14.diagram.requirement/resources/configuration/requirementDiagram.configuration
index 2503d56..2c889ed 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.requirement/resources/configuration/requirementDiagram.configuration
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.requirement/resources/configuration/requirementDiagram.configuration
@@ -1,30 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (c) 2015 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:
-   Benoit Maggi (CEA LIST) benoit.maggi@cea.fr - Initial API and implementation
- 
--->
 <configuration:PapyrusConfiguration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmi:id="_ko07IErbEeSdQKzSRatBjg">
   <viewpoints xsi:type="configuration:PapyrusViewpoint" xmi:id="_xogdoErbEeSdQKzSRatBjg" name="Default Papyrus Viewpoint">
     <modelKinds xsi:type="configuration:PapyrusDiagram" xmi:id="_ZrBf4JaBEeS8eNvSwD0lgA" name="SysML 1.4 Requirement" icon="platform:/plugin/org.eclipse.papyrus.sysml14.diagram.requirement/resources/icons/obj16/Diagram_Requirement.gif" implementationID="PapyrusUMLClassDiagram" categories="_lfthYMykEeSuYbPdZwWlyw" customPalette="platform:/plugin/org.eclipse.papyrus.sysml14.diagram.requirement/resources/palette/requirementDiagram.paletteconfiguration" customStyle="platform:/plugin/org.eclipse.papyrus.sysml14.diagram.requirement/resources/style/requirementDiagram.css">
       <profiles href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#/"/>
       <modelRules xmi:id="_SErQIDEtEeWJxc-KaJbwrw">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/Requirements#//Requirement"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//requirements/Requirement"/>
       </modelRules>
       <modelRules xmi:id="_ZrBf4ZaBEeS8eNvSwD0lgA">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
       </modelRules>
       <owningRules xmi:id="_VV2F8DEtEeWJxc-KaJbwrw">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
-        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML/Requirements#//Requirement"/>
+        <stereotypes href="http://www.eclipse.org/papyrus/sysml/1.4/SysML#//requirements/Requirement"/>
       </owningRules>
       <owningRules xmi:id="_ZrBf45aBEeS8eNvSwD0lgA">
         <element href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
