diff --git a/core/org.eclipse.papyrus.sysml14.service.types.tests/src/org/eclipse/papyrus/sysml14/service/types/tests/SysML14ElementTypesExtensionTest.java b/core/org.eclipse.papyrus.sysml14.service.types.tests/src/org/eclipse/papyrus/sysml14/service/types/tests/SysML14ElementTypesExtensionTest.java
index 34cd70f..68c140d 100644
--- a/core/org.eclipse.papyrus.sysml14.service.types.tests/src/org/eclipse/papyrus/sysml14/service/types/tests/SysML14ElementTypesExtensionTest.java
+++ b/core/org.eclipse.papyrus.sysml14.service.types.tests/src/org/eclipse/papyrus/sysml14/service/types/tests/SysML14ElementTypesExtensionTest.java
@@ -40,7 +40,7 @@
  */
 public class SysML14ElementTypesExtensionTest {
 
-	public static final String ELEMENTTYPE_EXTENSION_MENU_PATH = "org.eclipse.papyrus.sysml14.service.types/model/SysML14-extension.elementtypesconfigurations"; //$NON-NLS-0$
+	public static final String ELEMENTTYPE_EXTENSION_MENU_PATH = "org.eclipse.papyrus.sysml14.service.types/model/SysML14-extension.elementtypesconfigurations"; //$NON-NLS-1$
 	
 	@BeforeClass
 	public static void loadSysMLDefinition() {
diff --git a/core/org.eclipse.papyrus.sysml14.service.types/src/org/eclipse/papyrus/sysml14/service/types/advice/ConnectorReorientEditHelperAdvice.java b/core/org.eclipse.papyrus.sysml14.service.types/src/org/eclipse/papyrus/sysml14/service/types/advice/ConnectorReorientEditHelperAdvice.java
index 10d2562..bd758ca 100644
--- a/core/org.eclipse.papyrus.sysml14.service.types/src/org/eclipse/papyrus/sysml14/service/types/advice/ConnectorReorientEditHelperAdvice.java
+++ b/core/org.eclipse.papyrus.sysml14.service.types/src/org/eclipse/papyrus/sysml14/service/types/advice/ConnectorReorientEditHelperAdvice.java
@@ -181,7 +181,7 @@
 			} else {
 				oppositeEnd = ((Connector) request.getRelationship()).getEnds().get(0);
 			}
-			final NestedConnectorEnd nestedConnectorEnd = UMLUtil.getStereotypeApplication(oppositeEnd, NestedConnectorEnd.class);
+			UMLUtil.getStereotypeApplication(oppositeEnd, NestedConnectorEnd.class);
 			newFullNestedPath.add(newRole);
 
 
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/CssModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/CssModelTest.java
index 379e415..7aa5968 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/CssModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/CssModelTest.java
@@ -31,7 +31,7 @@
  */
 public class CssModelTest {
 	
-	public static final String CSS_MODEL_PATH = Activator.PLUGIN_ID+"/resources/style/blockDefinitionDiagram.css"; //$NON-NLS-0$
+	public static final String CSS_MODEL_PATH = Activator.PLUGIN_ID+"/resources/style/blockDefinitionDiagram.css"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -42,7 +42,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(CSS_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The blockDefinitionDiagram.css model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The blockDefinitionDiagram.css model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/DocModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/DocModelTest.java
index 4e61eba..4784c66 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/DocModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/DocModelTest.java
@@ -33,11 +33,11 @@
  */
 public class DocModelTest {
 	
-	public static final String UML_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml.14.diagram.blockdefinition.uml"; //$NON-NLS-0$
+	public static final String UML_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml.14.diagram.blockdefinition.uml"; //$NON-NLS-1$
 	
-	public static final String NOTATION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml.14.diagram.blockdefinition.notation"; //$NON-NLS-0$
+	public static final String NOTATION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml.14.diagram.blockdefinition.notation"; //$NON-NLS-1$
 	
-	public static final String DI_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml.14.diagram.blockdefinition.di"; //$NON-NLS-0$
+	public static final String DI_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml.14.diagram.blockdefinition.di"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -48,7 +48,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(UML_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The doc org.eclipse.papyrus.sysml.14.diagram.blockdefinition.uml model is not valid "+print(diagnostic), Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The doc org.eclipse.papyrus.sysml.14.diagram.blockdefinition.uml model is not valid "+print(diagnostic), Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 	/**
@@ -59,7 +59,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(NOTATION_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The doc org.eclipse.papyrus.sysml.14.diagram.blockdefinition.notation model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The doc org.eclipse.papyrus.sysml.14.diagram.blockdefinition.notation model is not valid ", Diagnostic.OK, diagnostic.getSeverity());//$NON-NLS-1$
 	}	
 
 	/**
@@ -71,7 +71,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(DI_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The doc org.eclipse.papyrus.sysml.14.diagram.blockdefinition.di model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The doc org.eclipse.papyrus.sysml.14.diagram.blockdefinition.di model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}	
 	
 	// FIXME : Something should exist in API to do that
@@ -79,7 +79,7 @@
 		List<Diagnostic> children = diagnostic.getChildren();
 		StringBuilder stringBuilder = new StringBuilder(diagnostic.getMessage());
 		for (Diagnostic diagnosticChildren : children) {
-			stringBuilder.append("\n");
+			stringBuilder.append("\n"); //$NON-NLS-1$
 			stringBuilder.append(diagnosticChildren.getMessage());
 		}
 		return stringBuilder.toString();
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ExpansionModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ExpansionModelTest.java
index 545163e..d0c4818 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ExpansionModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ExpansionModelTest.java
@@ -35,7 +35,7 @@
  */
 public class ExpansionModelTest {
 	
-	public static final String EXPANSION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/blockDefinitionDiagramConfig.expansionmodel"; //$NON-NLS-0$
+	public static final String EXPANSION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/blockDefinitionDiagramConfig.expansionmodel"; //$NON-NLS-1$
 	
 	@BeforeClass
 	public static void loadSysml14Definition() {
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 023bf12..a539811 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
@@ -31,7 +31,7 @@
  */
 public class ViewpointModelTest {
 	
-	public static final String VIEWPOINT_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/blockDefinitionDiagram.configuration"; //$NON-NLS-0$
+	public static final String VIEWPOINT_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/blockDefinitionDiagram.configuration"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -42,7 +42,7 @@
 		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());
+		Assert.assertEquals("The blockDefinitionDiagram.configuration model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14ClassDiagramElementTypesExtensionTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14ClassDiagramElementTypesExtensionTest.java
index d97bb3c..9a67f87 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14ClassDiagramElementTypesExtensionTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14ClassDiagramElementTypesExtensionTest.java
@@ -39,7 +39,7 @@
  */
 public class SysML14ClassDiagramElementTypesExtensionTest {
 
-	public static final String CLASS_DIAGRAM_EXTENSION_ELEMENT_TYPE_PATH = "org.eclipse.papyrus.sysml14.diagram.common/resources/SysML14ClassDiagram-extension.elementtypesconfigurations"; //$NON-NLS-0$
+	public static final String CLASS_DIAGRAM_EXTENSION_ELEMENT_TYPE_PATH = "org.eclipse.papyrus.sysml14.diagram.common/resources/SysML14ClassDiagram-extension.elementtypesconfigurations"; //$NON-NLS-1$
 	
 	@BeforeClass
 	public static void loadSysMLDefinition() {
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14ClassDiagramElementTypesTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14ClassDiagramElementTypesTest.java
index 44e645c..72a6db2 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14ClassDiagramElementTypesTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14ClassDiagramElementTypesTest.java
@@ -32,7 +32,7 @@
  */
 public class SysML14ClassDiagramElementTypesTest {
 
-	public static final String CLASS_DIAGRAM_ELEMENT_TYPE_PATH = "org.eclipse.papyrus.sysml14.diagram.common/resources/SysML14ClassDiagram.elementtypesconfigurations"; //$NON-NLS-0$
+	public static final String CLASS_DIAGRAM_ELEMENT_TYPE_PATH = "org.eclipse.papyrus.sysml14.diagram.common/resources/SysML14ClassDiagram.elementtypesconfigurations"; //$NON-NLS-1$
 
 	@BeforeClass
 	public static void loadSysML14UMLClassDiagramDefinition() {
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14CompositeDiagramElementTypesExtensionTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14CompositeDiagramElementTypesExtensionTest.java
index 5782677..8625201 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14CompositeDiagramElementTypesExtensionTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14CompositeDiagramElementTypesExtensionTest.java
@@ -38,7 +38,7 @@
  */
 public class SysML14CompositeDiagramElementTypesExtensionTest {
 
-	public static final String COMPOSITE_DIAGRAM_EXTENSION_ELEMENT_TYPE_PATH = "org.eclipse.papyrus.sysml14.diagram.common/resources/SysML14CompositeDiagram-extension.elementtypesconfigurations"; //$NON-NLS-0$
+	public static final String COMPOSITE_DIAGRAM_EXTENSION_ELEMENT_TYPE_PATH = "org.eclipse.papyrus.sysml14.diagram.common/resources/SysML14CompositeDiagram-extension.elementtypesconfigurations"; //$NON-NLS-1$
 
 	@BeforeClass
 	public static void loadSysMLDefinition() {
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14CompositeDiagramElementTypesTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14CompositeDiagramElementTypesTest.java
index 201a789..0b3fbe0 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14CompositeDiagramElementTypesTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.common.tests/src/org/eclipse/papyrus/sysml14/diagram/common/tests/resources/SysML14CompositeDiagramElementTypesTest.java
@@ -32,7 +32,7 @@
  */
 public class SysML14CompositeDiagramElementTypesTest {
 
-	public static final String COMPOSITE_DIAGRAM_ELEMENT_TYPE_PATH = "org.eclipse.papyrus.sysml14.diagram.common/resources/SysML14CompositeDiagram.elementtypesconfigurations"; //$NON-NLS-0$
+	public static final String COMPOSITE_DIAGRAM_ELEMENT_TYPE_PATH = "org.eclipse.papyrus.sysml14.diagram.common/resources/SysML14CompositeDiagram.elementtypesconfigurations"; //$NON-NLS-1$
 
 
 	@BeforeClass
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/CssModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/CssModelTest.java
index 88d96c0..34e0b8f 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/CssModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/CssModelTest.java
@@ -31,7 +31,7 @@
  */
 public class CssModelTest {
 	
-	public static final String CSS_MODEL_PATH = Activator.PLUGIN_ID+"/resources/style/internalBlockDiagram.css"; //$NON-NLS-0$
+	public static final String CSS_MODEL_PATH = Activator.PLUGIN_ID+"/resources/style/internalBlockDiagram.css"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -42,7 +42,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(CSS_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The internalBlockDiagram.css model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The internalBlockDiagram.css model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/DocModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/DocModelTest.java
index 62c6582..8143e69 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/DocModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/DocModelTest.java
@@ -31,11 +31,11 @@
  */
 public class DocModelTest {
 	
-	public static final String UML_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml14.diagram.internalblock.uml"; //$NON-NLS-0$
+	public static final String UML_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml14.diagram.internalblock.uml"; //$NON-NLS-1$
 	
-	public static final String NOTATION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml14.diagram.internalblock.notation"; //$NON-NLS-0$
+	public static final String NOTATION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml14.diagram.internalblock.notation"; //$NON-NLS-1$
 	
-	public static final String DI_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml14.diagram.internalblock.di"; //$NON-NLS-0$
+	public static final String DI_MODEL_PATH = Activator.PLUGIN_ID+"/resources/doc/org.eclipse.papyrus.sysml14.diagram.internalblock.di"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -46,7 +46,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(UML_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The doc org.eclipse.papyrus.sysml14.diagram.internalblock.uml model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The doc org.eclipse.papyrus.sysml14.diagram.internalblock.uml model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 	/**
@@ -57,7 +57,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(NOTATION_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The doc org.eclipse.papyrus.sysml14.diagram.internalblock.notation model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The doc org.eclipse.papyrus.sysml14.diagram.internalblock.notation model is not valid ", Diagnostic.OK, diagnostic.getSeverity());//$NON-NLS-1$
 	}	
 
 	/**
@@ -69,7 +69,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(DI_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The doc org.eclipse.papyrus.sysml14.diagram.internalblock.di model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The doc org.eclipse.papyrus.sysml14.diagram.internalblock.di model is not valid ", Diagnostic.OK, diagnostic.getSeverity());//$NON-NLS-1$
 	}	
 	
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ExpansionModelTest.java b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ExpansionModelTest.java
index 39ee95d..eb7c5e8 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ExpansionModelTest.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/tests/resources/ExpansionModelTest.java
@@ -32,7 +32,7 @@
  */
 public class ExpansionModelTest {
 	
-	public static final String EXPANSION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/internaBlockDiagramConfig.expansionmodel"; //$NON-NLS-0$
+	public static final String EXPANSION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/internaBlockDiagramConfig.expansionmodel"; //$NON-NLS-1$
 	
 	
 	@BeforeClass
@@ -48,7 +48,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(EXPANSION_MODEL_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The internaBlockDiagramConfig.expansionmodel model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The internaBlockDiagramConfig.expansionmodel model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 }
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 079b097..7e2e8da 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
@@ -31,7 +31,7 @@
  */
 public class ViewpointModelTest {
 	
-	public static final String VIEWPOINT_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/internalBlockDiagram.configuration"; //$NON-NLS-0$
+	public static final String VIEWPOINT_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/internalBlockDiagram.configuration"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -42,7 +42,7 @@
 		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 internalBlockDiagram.configuration model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The internalBlockDiagram.configuration model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/dnd/IParametricDropStrategy.java b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/dnd/IParametricDropStrategy.java
index 25321da..e5ff935 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/dnd/IParametricDropStrategy.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/dnd/IParametricDropStrategy.java
@@ -19,5 +19,5 @@
  */
 public interface IParametricDropStrategy {
 
-	public static final String PARAMETRIC_DROP_CATEGORY_ID = "org.eclipse.papyrus.sysml14.diagram.parametric";
+	static final String PARAMETRIC_DROP_CATEGORY_ID = "org.eclipse.papyrus.sysml14.diagram.parametric"; //$NON-NLS-1$
 }
diff --git a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/AbstractPaletteTest.java b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/AbstractPaletteTest.java
index a97205a..8bc76c6 100644
--- a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/AbstractPaletteTest.java
+++ b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/AbstractPaletteTest.java
@@ -51,9 +51,9 @@
 
 	public static final String EDGE = "edge"; //$NON-NLS-1$
 
-	private String rootPath = "";
+	private String rootPath = ""; //$NON-NLS-1$
 
-	private String palettePath = "";
+	private String palettePath = ""; //$NON-NLS-1$
 
 	public ElementTypeSetConfigurationRegistry instance = ElementTypeSetConfigurationRegistry.getInstance();
 
diff --git a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/IBDPaletteTest.java b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/IBDPaletteTest.java
index a46c749..ebe438c 100644
--- a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/IBDPaletteTest.java
+++ b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/IBDPaletteTest.java
@@ -25,7 +25,7 @@
 	 */
 	@Override
 	public String getRootPath() {
-		return "org.eclipse.papyrus.sysML.ibd.palette"; //$NON-NLS-0$
+		return "org.eclipse.papyrus.sysML.ibd.palette"; //$NON-NLS-1$
 	}
 
 	/**
@@ -35,7 +35,7 @@
 	 */
 	@Override
 	public String getPalettePath() {
-		return "org.eclipse.papyrus.sysml14.diagram.internalblock/resources/palette/internalBlockDiagram.paletteconfiguration"; //$NON-NLS-0$
+		return "org.eclipse.papyrus.sysml14.diagram.internalblock/resources/palette/internalBlockDiagram.paletteconfiguration"; //$NON-NLS-1$
 	}
 
 
diff --git a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/RequirementPaletteTest.java b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/RequirementPaletteTest.java
index 810be2a..da42903 100644
--- a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/RequirementPaletteTest.java
+++ b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/palette/RequirementPaletteTest.java
@@ -25,7 +25,7 @@
 	 */
 	@Override
 	public String getRootPath() {
-		return "org.eclipse.papyrus.sysML.req.palette"; //$NON-NLS-0$
+		return "org.eclipse.papyrus.sysML.req.palette"; //$NON-NLS-1$
 	}
 
 	/**
@@ -35,7 +35,7 @@
 	 */
 	@Override
 	public String getPalettePath() {
-		return "org.eclipse.papyrus.sysml14.diagram.requirement/resources/palette/requirementDiagram.paletteconfiguration"; //$NON-NLS-0$
+		return "org.eclipse.papyrus.sysml14.diagram.requirement/resources/palette/requirementDiagram.paletteconfiguration"; //$NON-NLS-1$
 	}
 
 
diff --git a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/ConstraintEnvironmentTest.java b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/ConstraintEnvironmentTest.java
index 0426da7..284dfb1 100644
--- a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/ConstraintEnvironmentTest.java
+++ b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/ConstraintEnvironmentTest.java
@@ -18,6 +18,7 @@
 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.sysml14.ui.Activator;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -29,7 +30,7 @@
  */
 public class ConstraintEnvironmentTest {
 	
-	public static final String CONSTRAINT_PATH = "org.eclipse.papyrus.sysml14.ui/resources/SysML1.4ConstraintEnvironment.xmi"; //$NON-NLS-0$
+	public static final String CONSTRAINT_PATH = Activator.PLUGIN_ID +"/resources/SysML1.4ConstraintEnvironment.xmi"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -39,7 +40,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(CONSTRAINT_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The constraint model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The constraint model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 }
diff --git a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/CustomModelExplorerTest.java b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/CustomModelExplorerTest.java
index 785c3ac..d0d15c8 100644
--- a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/CustomModelExplorerTest.java
+++ b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/CustomModelExplorerTest.java
@@ -19,6 +19,7 @@
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.Diagnostician;
 import org.eclipse.papyrus.infra.elementtypesconfigurations.registries.ElementTypeSetConfigurationRegistry;
+import org.eclipse.papyrus.sysml14.ui.Activator;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
@@ -32,7 +33,7 @@
  */
 public class CustomModelExplorerTest {
 	
-	public static final String CUSTOM_MODEL_EXPLORER_PATH = "org.eclipse.papyrus.sysml14.ui/resources/custom/OperationalSysML.custom"; //$NON-NLS-1$
+	public static final String CUSTOM_MODEL_EXPLORER_PATH = Activator.PLUGIN_ID +"/resources/custom/OperationalSysML.custom"; //$NON-NLS-1$
 	
 	@BeforeClass
 	public static void loadElementTypeSet(){
@@ -43,12 +44,12 @@
 	 * Validate the model with the rules defined in the meta-model tooling
 	 */
 	@Test
-	@Ignore //Model seems not to be valid due to the use of two classifier with the same name and a missing proxy toresolve a metamodel.
+	@Ignore //Model seems not to be valid due to the use of two classifier with the same name and a missing proxy to resolve a metamodel.
 	public void useValidation() {
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(CUSTOM_MODEL_EXPLORER_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The custom model explorer Model is not valid "+CUSTOM_MODEL_EXPLORER_PATH, Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The custom model explorer Model is not valid "+CUSTOM_MODEL_EXPLORER_PATH, Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 
diff --git a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/NewChildMenuTest.java b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/NewChildMenuTest.java
index affff8c..9e6a968 100644
--- a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/NewChildMenuTest.java
+++ b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/NewChildMenuTest.java
@@ -27,6 +27,7 @@
 import org.eclipse.papyrus.infra.elementtypesconfigurations.registries.ElementTypeSetConfigurationRegistry;
 import org.eclipse.papyrus.infra.newchild.elementcreationmenumodel.CreationMenu;
 import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.sysml14.ui.Activator;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -40,7 +41,7 @@
  */
 public class NewChildMenuTest {
 	
-	public static final String NEW_CHILD_MENU_PATH = "org.eclipse.papyrus.sysml14.ui/resources/SysML14.creationmenumodel"; //$NON-NLS-0$
+	public static final String NEW_CHILD_MENU_PATH = Activator.PLUGIN_ID +"/resources/SysML14.creationmenumodel"; //$NON-NLS-1$
 	
 	
 	@BeforeClass
@@ -87,7 +88,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(NEW_CHILD_MENU_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The new Child menu is not valid "+NEW_CHILD_MENU_PATH, Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The new Child menu is not valid "+NEW_CHILD_MENU_PATH, Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 
diff --git a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/PropertiesTest.java b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/PropertiesTest.java
index fc380af..924dce7 100644
--- a/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/PropertiesTest.java
+++ b/gui/org.eclipse.papyrus.sysml14.ui.tests/test/org/eclipse/papyrus/sysml14/ui/tests/resources/PropertiesTest.java
@@ -20,6 +20,7 @@
 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.sysml14.ui.Activator;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -31,7 +32,7 @@
  */
 public class PropertiesTest {
 
-	public static final String PROPERTIES_MENU_PATH = "org.eclipse.papyrus.sysml14.ui/resources/properties/SysML1.4.ctx"; //$NON-NLS-1$
+	public static final String PROPERTIES_MENU_PATH = Activator.PLUGIN_ID +"/resources/properties/SysML1.4.ctx"; //$NON-NLS-1$
 
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -41,7 +42,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(PROPERTIES_MENU_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The properties menu is not valid "+print(diagnostic), Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The properties menu is not valid "+print(diagnostic), Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 
 	/**
@@ -52,7 +53,7 @@
 		StringBuffer message = new StringBuffer(diagnostic.getMessage());
 		List<Diagnostic> children = diagnostic.getChildren();
 		for (Diagnostic diagnostic2 : children) {
-			message.append("\n");
+			message.append("\n"); //$NON-NLS-1$
 			message.append(print(diagnostic2));
 		}
 		return message.toString();
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/META-INF/MANIFEST.MF b/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/META-INF/MANIFEST.MF
index 8fb69c5..8ab9f54 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/META-INF/MANIFEST.MF
+++ b/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/META-INF/MANIFEST.MF
@@ -1,5 +1,11 @@
 Manifest-Version: 1.0
-Require-Bundle: org.junit;bundle-version="4.11.0"
+Require-Bundle: org.junit;bundle-version="4.11.0",
+ org.eclipse.ocl;bundle-version="3.5.0",
+ org.eclipse.ocl.pivot;bundle-version="1.0.1",
+ org.eclipse.ocl.xtext.essentialocl;bundle-version="1.0.1",
+ org.eclipse.emf.validation.ocl;bundle-version="1.4.0",
+ org.eclipse.ocl.ecore;bundle-version="3.5.0",
+ org.eclipse.ocl.xtext.essentialocl.ui;bundle-version="1.0.0"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-Version: 0.8.0.qualifier
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/resources/AllocationNattableTest.java b/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/resources/AllocationNattableTest.java
index 7e8fe78..650ea21 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/resources/AllocationNattableTest.java
+++ b/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/resources/AllocationNattableTest.java
@@ -13,13 +13,15 @@
 
 package org.eclipse.papyrus.sysml14.nattable.allocation.tests.resources;
 
+import java.util.List;
+
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.URI;
 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.sysml14.nattable.allocation.Activator;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -30,19 +32,30 @@
  */
 public class AllocationNattableTest {
 	
-	public static final String ALLOCATION_NATTABLE_MENU_PATH = "org.eclipse.papyrus.sysml14.nattable.allocation/resources/allocation.nattableconfiguration"; //$NON-NLS-0$
+	public static final String ALLOCATION_NATTABLE_MENU_PATH = Activator.PLUGIN_ID + "/resources/allocation.nattableconfiguration"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
 	 */
-	@Ignore // FIXME : Bug 477218 the model is invalid
 	@Test
 	public void validateAllocationNattableModel() {
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(ALLOCATION_NATTABLE_MENU_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The allocation nattable model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The allocation nattable model is not valid "+print(diagnostic), Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 	
-	
+	/**
+	 * Prints diagnostics
+	 */
+	// FIXME : Something should exist in API to do that: https://www.eclipse.org/forums/index.php/m/1712237/#msg_1712237
+	private String print(Diagnostic diagnostic) {
+		StringBuffer message = new StringBuffer(diagnostic.getMessage());
+		List<Diagnostic> children = diagnostic.getChildren();
+		for (Diagnostic diagnostic2 : children) {
+			message.append("\n"); //$NON-NLS-1$
+			message.append(print(diagnostic2));
+		}
+		return message.toString();
+	}
 }
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/resources/AllocationTableConfiguration.java b/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/resources/AllocationTableConfiguration.java
index d8ace79..04b7bb9 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/resources/AllocationTableConfiguration.java
+++ b/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/resources/AllocationTableConfiguration.java
@@ -18,6 +18,7 @@
 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.sysml14.nattable.allocation.Activator;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -29,7 +30,7 @@
  */
 public class AllocationTableConfiguration {
 	
-	public static final String ALLOCATION_TABLE_VIEWPOINT_PATH = "org.eclipse.papyrus.sysml14.nattable.allocation/resources/configuration/allocationTable.configuration"; //$NON-NLS-0$
+	public static final String ALLOCATION_TABLE_VIEWPOINT_PATH = Activator.PLUGIN_ID +"/resources/configuration/allocationTable.configuration"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -39,7 +40,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(ALLOCATION_TABLE_VIEWPOINT_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The allocation table viewpoint model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The allocation table viewpoint model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 	
 	
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/tester/TableAllocationCreationTesterTest.java b/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/tester/TableAllocationCreationTesterTest.java
index 31e52c0..1b6a09b 100755
--- a/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/tester/TableAllocationCreationTesterTest.java
+++ b/table/org.eclipse.papyrus.sysml14.nattable.allocation.tests/src/org/eclipse/papyrus/sysml14/nattable/allocation/tests/tester/TableAllocationCreationTesterTest.java
@@ -27,7 +27,7 @@
 	public void test() {
 		TableAllocationCreationTester tableAllocationCreationTester = new TableAllocationCreationTester();
 		IStatus allowed = tableAllocationCreationTester.isAllowed(null);
-		Assert.assertEquals("The tester should not work on a null entry", IStatus.ERROR, allowed.getSeverity());
+		Assert.assertEquals("The tester should not work on a null entry", IStatus.ERROR, allowed.getSeverity()); //$NON-NLS-1$
 	}
 
 }
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.allocation/META-INF/MANIFEST.MF b/table/org.eclipse.papyrus.sysml14.nattable.allocation/META-INF/MANIFEST.MF
index 12b7557..49e0143 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.allocation/META-INF/MANIFEST.MF
+++ b/table/org.eclipse.papyrus.sysml14.nattable.allocation/META-INF/MANIFEST.MF
@@ -1,12 +1,16 @@
 Manifest-Version: 1.0
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
- org.eclipse.uml2.uml;bundle-version="5.1.0",
- org.eclipse.papyrus.infra.nattable;bundle-version="1.1.0",
- org.eclipse.papyrus.infra.nattable.model;bundle-version="1.1.0",
+ org.eclipse.gmf.runtime.emf.type.core,
+ org.eclipse.uml2.uml;bundle-version="5.1.0", 
  org.eclipse.papyrus.infra.nattable.common;bundle-version="1.1.0",
- org.eclipse.papyrus.sysml14;bundle-version="0.8.0",
- org.eclipse.papyrus.sysml14.nattable.common;bundle-version="0.8.0"
+ org.eclipse.papyrus.infra.nattable;bundle-version="1.1.0",
+ org.eclipse.papyrus.infra.tools;bundle-version="1.1.0",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="1.1.0",
+ org.eclipse.papyrus.infra.nattable.model;bundle-version="1.1.0",
+ org.eclipse.papyrus.sysml14.nattable.common;bundle-version="0.8.0",
+ org.eclipse.papyrus.sysml14.service.types;bundle-version="0.8.0",
+ org.eclipse.papyrus.sysml14;bundle-version="0.8.0"
 Bundle-Vendor: %Bundle-Vendor
 Bundle-ActivationPolicy: lazy
 Bundle-Version: 0.8.0.qualifier
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/META-INF/MANIFEST.MF b/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/META-INF/MANIFEST.MF
index ed4e947..eb9dd0b 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/META-INF/MANIFEST.MF
+++ b/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/META-INF/MANIFEST.MF
@@ -1,5 +1,11 @@
 Manifest-Version: 1.0
 Require-Bundle: org.junit;bundle-version="4.11.0",
+ org.eclipse.ocl;bundle-version="3.5.0",
+ org.eclipse.ocl.pivot;bundle-version="1.0.1",
+ org.eclipse.ocl.xtext.essentialocl;bundle-version="1.0.1",
+ org.eclipse.emf.validation.ocl;bundle-version="1.4.0",
+ org.eclipse.ocl.ecore;bundle-version="3.5.0",
+ org.eclipse.ocl.xtext.essentialocl.ui;bundle-version="1.0.0",
  org.eclipse.uml2.uml.resources;bundle-version="5.1.0",
  org.eclipse.papyrus.infra.nattable.model;bundle-version="1.1.0",
  org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="1.1.0",
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/src/org/eclipse/papyrus/sysml14/nattable/requirement/tests/resources/RequirementNattableTest.java b/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/src/org/eclipse/papyrus/sysml14/nattable/requirement/tests/resources/RequirementNattableTest.java
index 0327166..9242439 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/src/org/eclipse/papyrus/sysml14/nattable/requirement/tests/resources/RequirementNattableTest.java
+++ b/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/src/org/eclipse/papyrus/sysml14/nattable/requirement/tests/resources/RequirementNattableTest.java
@@ -18,8 +18,8 @@
 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.sysml14.nattable.requirement.Activator;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -30,18 +30,17 @@
  */
 public class RequirementNattableTest {
 	
-	public static final String REQUIREMENT_NATTABLE_MENU_PATH = "org.eclipse.papyrus.sysml14.nattable.requirement/resources/requirement.nattableconfiguration"; //$NON-NLS-0$
-	
+	public static final String REQUIREMENT_NATTABLE_MENU_PATH = Activator.PLUGIN_ID + "/resources/requirement.nattableconfiguration"; //$NON-NLS-1$
+
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
 	 */
-	@Ignore // FIXME : Bug 477218 the model is invalid
 	@Test
 	public void validateRequirementNattableModel() {
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(REQUIREMENT_NATTABLE_MENU_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The requirement nattable model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The requirement nattable model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 	
 	
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/src/org/eclipse/papyrus/sysml14/nattable/requirement/tests/resources/RequirementTableConfiguration.java b/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/src/org/eclipse/papyrus/sysml14/nattable/requirement/tests/resources/RequirementTableConfiguration.java
index a9d88e0..0c96813 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/src/org/eclipse/papyrus/sysml14/nattable/requirement/tests/resources/RequirementTableConfiguration.java
+++ b/table/org.eclipse.papyrus.sysml14.nattable.requirement.tests/src/org/eclipse/papyrus/sysml14/nattable/requirement/tests/resources/RequirementTableConfiguration.java
@@ -18,6 +18,7 @@
 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.sysml14.nattable.requirement.Activator;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -29,7 +30,7 @@
  */
 public class RequirementTableConfiguration {
 	
-	public static final String REQUIREMENT_NATTABLE_MENU_PATH = "org.eclipse.papyrus.sysml14.nattable.requirement/resources/configuration/requirementTable.configuration"; //$NON-NLS-0$
+	public static final String REQUIREMENT_NATTABLE_MENU_PATH = Activator.PLUGIN_ID+"/resources/configuration/requirementTable.configuration"; //$NON-NLS-1$
 	
 	/**
 	 * Validate the model with the rules defined in the meta-model tooling
@@ -39,7 +40,7 @@
 		URI createPlatformPluginURI = URI.createPlatformPluginURI(REQUIREMENT_NATTABLE_MENU_PATH, true);
 		Resource resource = new ResourceSetImpl().getResource(createPlatformPluginURI, true);
 		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
-		Assert.assertEquals("The requirement table viewpoint model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The requirement table viewpoint model is not valid ", Diagnostic.OK, diagnostic.getSeverity()); //$NON-NLS-1$
 	}
 	
 	
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.requirement/META-INF/MANIFEST.MF b/table/org.eclipse.papyrus.sysml14.nattable.requirement/META-INF/MANIFEST.MF
index 3e7074e..c5d1232 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.requirement/META-INF/MANIFEST.MF
+++ b/table/org.eclipse.papyrus.sysml14.nattable.requirement/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.gmf.runtime.emf.type.core,
- org.eclipse.uml2.uml;bundle-version="4.1.0", 
+ org.eclipse.uml2.uml;bundle-version="5.1.0", 
  org.eclipse.papyrus.infra.nattable.common;bundle-version="1.1.0",
  org.eclipse.papyrus.infra.nattable;bundle-version="1.1.0",
  org.eclipse.papyrus.infra.tools;bundle-version="1.1.0",
diff --git a/table/org.eclipse.papyrus.sysml14.nattable.requirement/src/org/eclipse/papyrus/sysml14/nattable/requirement/Activator.java b/table/org.eclipse.papyrus.sysml14.nattable.requirement/src/org/eclipse/papyrus/sysml14/nattable/requirement/Activator.java
index 72bf935..30b6ec7 100644
--- a/table/org.eclipse.papyrus.sysml14.nattable.requirement/src/org/eclipse/papyrus/sysml14/nattable/requirement/Activator.java
+++ b/table/org.eclipse.papyrus.sysml14.nattable.requirement/src/org/eclipse/papyrus/sysml14/nattable/requirement/Activator.java
@@ -17,7 +17,7 @@
 public class Activator extends AbstractUIPlugin {
 
 	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.papyrus.sysml.nattable.requirement"; //$NON-NLS-1$
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.sysml14.nattable.requirement"; //$NON-NLS-1$
 
 	public static final String TABLE_TYPE = "PapyrusSysMLRequirementTable"; //$NON-NLS-1$
 
