diff --git a/core/org.eclipse.papyrus.sysml14.service.types.tests/META-INF/MANIFEST.MF b/core/org.eclipse.papyrus.sysml14.service.types.tests/META-INF/MANIFEST.MF
index b7ed854..d724347 100644
--- a/core/org.eclipse.papyrus.sysml14.service.types.tests/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.papyrus.sysml14.service.types.tests/META-INF/MANIFEST.MF
@@ -10,14 +10,8 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
  org.eclipse.papyrus.uml.diagram.clazz;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.communication;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.component;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.composite;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.deployment;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.interactionoverview;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.profile;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.sequence;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.timing;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.papyrus.uml.diagram.usecase;bundle-version="[2.0.0,3.0.0)"
+ org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="[2.0.0,3.0.0)"
 
diff --git a/core/org.eclipse.papyrus.sysml14.service.types.tests/src/org/eclipse/papyrus/sysml14/service/types/tests/advice/ConformCreationEditHelperAdviceTest.java b/core/org.eclipse.papyrus.sysml14.service.types.tests/src/org/eclipse/papyrus/sysml14/service/types/tests/advice/ConformCreationEditHelperAdviceTest.java
index 81c96c4..7639a78 100644
--- a/core/org.eclipse.papyrus.sysml14.service.types.tests/src/org/eclipse/papyrus/sysml14/service/types/tests/advice/ConformCreationEditHelperAdviceTest.java
+++ b/core/org.eclipse.papyrus.sysml14.service.types.tests/src/org/eclipse/papyrus/sysml14/service/types/tests/advice/ConformCreationEditHelperAdviceTest.java
@@ -37,6 +37,7 @@
  * Test class for conform creation
  * This class verifies the requirement{@papyrus.req org.eclipse.papyrus.sysml14.service.types#Req_001}
  */
+@SuppressWarnings("nls")
 public class ConformCreationEditHelperAdviceTest {
 
 	@BeforeClass
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/META-INF/MANIFEST.MF b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/META-INF/MANIFEST.MF
index 25446e3..bdaf9cc 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/META-INF/MANIFEST.MF
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition.tests/META-INF/MANIFEST.MF
@@ -9,13 +9,7 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
  org.eclipse.papyrus.uml.diagram.clazz;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.communication;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.component;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.composite;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.deployment;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.interactionoverview;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.profile;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.sequence;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.timing;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.papyrus.uml.diagram.usecase;bundle-version="[2.0.0,3.0.0)"
+ org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="[2.0.0,3.0.0)"
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 cd73a93..aef5913 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
@@ -13,8 +13,6 @@
 
 package org.eclipse.papyrus.sysml14.diagram.blockdefinition.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;
@@ -32,21 +30,14 @@
  * 
  * @author Benoit Maggi
  */
+@SuppressWarnings("nls")
 public class ExpansionModelTest {
 	
 	public static final String EXPANSION_MODEL_PATH = Activator.PLUGIN_ID+"/resources/configuration/blockDefinitionDiagramConfig.expansionmodel"; //$NON-NLS-1$
 	
 	@BeforeClass
 	public static void loadSysml14Definition() {
-		ElementTypeSetConfigurationRegistry instance = ElementTypeSetConfigurationRegistry.getInstance();
-//		ElementTypeSetConfiguration elementTypeSetConfiguration = instance.getElementTypeSetConfigurations().get("org.eclipse.papyrus.sysml14.service.types.elementTypeSet.class.extension");
-//		Assert.assertNotNull("The SysML element type set definition is missing", elementTypeSetConfiguration);
-//		ElementTypeSetConfiguration elementTypeSetConfiguration1 = instance.getElementTypeSetConfigurations().get("org.eclipse.papyrus.sysml14.service.types.elementTypeSet.class");
-//		Assert.assertNotNull("The SysML 1.4 UML Class Diagram element type set definition is missing", elementTypeSetConfiguration1);
-//		ElementTypeSetConfiguration elementTypeSetConfiguration2 = instance.getElementTypeSetConfigurations().get("org.eclipse.papyrus.sysml14.service.types.elementTypeSet.composite.extension");
-//		Assert.assertNotNull("The SysML element type set definition is missing", elementTypeSetConfiguration2);
-//		ElementTypeSetConfiguration elementTypeSetConfiguration3 = instance.getElementTypeSetConfigurations().get("org.eclipse.papyrus.sysml14.service.types.elementTypeSet.composite");
-//		Assert.assertNotNull("The SysML 1.4 Composite Structure Diagram element type set definition is missing", elementTypeSetConfiguration3);
+		ElementTypeSetConfigurationRegistry.getInstance();
 	}
 	
 	/**
@@ -57,18 +48,6 @@
 		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 blockDefinitionDiagramConfig.expansionmodel model is not valid "+print(diagnostic), Diagnostic.OK, diagnostic.getSeverity());
+		Assert.assertEquals("The blockDefinitionDiagramConfig.expansionmodel model is not valid ", Diagnostic.OK, diagnostic.getSeverity());
 	}
-	
-	// FIXME : Something should exist in API to do that
-	private String print(Diagnostic diagnostic) {
-		List<Diagnostic> children = diagnostic.getChildren();
-		StringBuilder stringBuilder = new StringBuilder(diagnostic.getMessage());
-		for (Diagnostic diagnosticChildren : children) {
-			stringBuilder.append("\n");
-			stringBuilder.append(diagnosticChildren.getMessage());
-		}
-		return stringBuilder.toString();
-	}
-	
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/BlockClassifierViewFactory.java b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/BlockClassifierViewFactory.java
index 0ec89f3..f71ea96 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/BlockClassifierViewFactory.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/BlockClassifierViewFactory.java
@@ -37,6 +37,11 @@
  */
 public class BlockClassifierViewFactory extends AbstractBasicViewFactory {
 
+	/**
+	 * Base element of Block
+	 */
+	private static final String CLASS = "Class";//$NON-NLS-1$
+
 	public Node createElementView(EObject domainElement, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
 		Shape node = NotationFactory.eINSTANCE.createShape();
 		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());
@@ -47,7 +52,7 @@
 		// initializeFromPreferences
 		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint.getPreferenceStore();
 
-		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, "Class");
+		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, CLASS);
 		createLabel(node, UMLVisualIDRegistry.getType(ClassNameEditPart.VISUAL_ID));
 		Node label8510 = createLabel(node, UMLVisualIDRegistry.getType(ClassFloatingNameEditPart.VISUAL_ID));
 		label8510.setLayoutConstraint(NotationFactory.eINSTANCE.createLocation());
@@ -57,7 +62,7 @@
 		createCompartment(node, UMLVisualIDRegistry.getType(ClassAttributeCompartmentEditPart.VISUAL_ID), true, true, true, true);
 		createCompartment(node, UMLVisualIDRegistry.getType(ClassOperationCompartmentEditPart.VISUAL_ID), true, true, true, true);
 		createCompartment(node, UMLVisualIDRegistry.getType(ClassNestedClassifierCompartmentEditPart.VISUAL_ID), true, true, true, true);
-		PreferenceInitializerForElementHelper.initCompartmentsStatusFromPrefs(node, prefStore, "Class");
+		PreferenceInitializerForElementHelper.initCompartmentsStatusFromPrefs(node, prefStore, CLASS);
 		return node;
 	}
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/FlowSpecificationClassifierViewFactory.java b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/FlowSpecificationClassifierViewFactory.java
index 60c8120..cc11047 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/FlowSpecificationClassifierViewFactory.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/FlowSpecificationClassifierViewFactory.java
@@ -38,6 +38,11 @@
  */
 public class FlowSpecificationClassifierViewFactory extends AbstractBasicViewFactory {
 
+	/**
+	 * Base element of FlowSpecification
+	 */
+	private static final String INTERFACE = "Interface";//$NON-NLS-1$
+
 	public Node createElementView(EObject domainElement, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
 		Shape node = NotationFactory.eINSTANCE.createShape();
 		node.setLayoutConstraint(NotationFactory.eINSTANCE.createBounds());
@@ -48,7 +53,7 @@
 		// initializeFromPreferences
 		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint.getPreferenceStore();
 
-		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, "Interface");
+		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, INTERFACE);
 		ClassifierViewFactoryUtil.createLabel(node, UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID));
 		Node label8507 = ClassifierViewFactoryUtil.createLabel(node, UMLVisualIDRegistry.getType(InterfaceFloatingNameEditPart.VISUAL_ID));
 		label8507.setLayoutConstraint(NotationFactory.eINSTANCE.createLocation());
@@ -60,7 +65,7 @@
 		ClassifierViewFactoryUtil.createCompartment(node, UMLVisualIDRegistry.getType(InterfaceAttributeCompartmentEditPart.VISUAL_ID), true, true, true, true);
 		ClassifierViewFactoryUtil.createCompartment(node, UMLVisualIDRegistry.getType(InterfaceOperationCompartmentEditPart.VISUAL_ID), true, true, true, true);
 		ClassifierViewFactoryUtil.createCompartment(node, UMLVisualIDRegistry.getType(InterfaceNestedClassifierCompartmentEditPart.VISUAL_ID), true, true, true, true);
-		PreferenceInitializerForElementHelper.initCompartmentsStatusFromPrefs(node, prefStore, "Interface");
+		PreferenceInitializerForElementHelper.initCompartmentsStatusFromPrefs(node, prefStore, INTERFACE);
 		return node;
 	}
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/OperationPortViewFactory.java b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/OperationPortViewFactory.java
index af66320..55cf32a 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/OperationPortViewFactory.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/OperationPortViewFactory.java
@@ -27,13 +27,17 @@
 public class OperationPortViewFactory extends AbstractBasicViewFactory {
 
 	/**
+	 * Base element of OperationPort
+	 */
+	private static final String PORT = "Port";//$NON-NLS-1$
+	/**
 	 * visual ID for stereotype label of border item
 	 */
-	protected static final String OPERATION_BORDER_ITEM_STEREOTYPE_LABEL = "Operation_BorderItem_Stereotype_Label";
+	protected static final String OPERATION_BORDER_ITEM_STEREOTYPE_LABEL = "Operation_BorderItem_Stereotype_Label";//$NON-NLS-1$
 	/**
 	 * visual ID for name label of border item
 	 */
-	protected static final String OPERATION_BORDER_ITEM_LABEL = "Operation_BorderItem_Label";
+	protected static final String OPERATION_BORDER_ITEM_LABEL = "Operation_BorderItem_Label";//$NON-NLS-1$
 
 	public Node createElementView(EObject domainElement, View containerView,String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
 		Shape node = NotationFactory.eINSTANCE.createShape();
@@ -43,7 +47,7 @@
 		node.setElement(domainElement);
 		// initializeFromPreferences 
 		final IPreferenceStore prefStore = (IPreferenceStore)preferencesHint.getPreferenceStore();
-		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, "Port");
+		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, PORT);
 		Node label5125 = createLabel(node, OPERATION_BORDER_ITEM_LABEL);
 		label5125.setLayoutConstraint(NotationFactory.eINSTANCE.createLocation());
 		Location location5125 = (Location)label5125.getLayoutConstraint();
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/PortViewFactory.java b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/PortViewFactory.java
index a22be49..9482fbf 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/PortViewFactory.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.blockdefinition/src/org/eclipse/papyrus/sysml14/diagram/blockdefinition/internal/factory/PortViewFactory.java
@@ -26,9 +26,13 @@
 public class PortViewFactory extends AbstractBasicViewFactory {
 
 	/**
+	 * Base element of SysML Port
+	 */
+	private static final String PORT = "Port";//$NON-NLS-1$
+	/**
 	 * visual ID for name label of border item
 	 */
-	protected static final String OPERATION_BORDER_ITEM_LABEL = "Operation_BorderItem_Label";
+	protected static final String OPERATION_BORDER_ITEM_LABEL = "Operation_BorderItem_Label";//$NON-NLS-1$
 
 	public Node createElementView(EObject domainElement, View containerView,String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
 		Shape node = NotationFactory.eINSTANCE.createShape();
@@ -38,7 +42,7 @@
 		node.setElement(domainElement);
 		// initializeFromPreferences 
 		final IPreferenceStore prefStore = (IPreferenceStore)preferencesHint.getPreferenceStore();
-		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, "Port");
+		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, PORT);
 		Node label5125 = createLabel(node, OPERATION_BORDER_ITEM_LABEL);
 		label5125.setLayoutConstraint(NotationFactory.eINSTANCE.createLocation());
 		Location location5125 = (Location)label5125.getLayoutConstraint();
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.common/src/org/eclipse/papyrus/sysml14/diagram/common/dialog/CreateOrSelectValuePropertyTypeDialog.java b/diagram/org.eclipse.papyrus.sysml14.diagram.common/src/org/eclipse/papyrus/sysml14/diagram/common/dialog/CreateOrSelectValuePropertyTypeDialog.java
index a3e2420..3c3c2d7 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.common/src/org/eclipse/papyrus/sysml14/diagram/common/dialog/CreateOrSelectValuePropertyTypeDialog.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.common/src/org/eclipse/papyrus/sysml14/diagram/common/dialog/CreateOrSelectValuePropertyTypeDialog.java
@@ -90,7 +90,7 @@
 		creationRadio.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
 
 		pToolkit.createLabel(lBody, getNewTypeNameLabel(), SWT.NONE);
-		newTypeNameText = pToolkit.createText(lBody, "", SWT.BORDER);
+		newTypeNameText = pToolkit.createText(lBody, "", SWT.BORDER);//$NON-NLS-1$
 		newTypeNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
 		newTypeNameText.setFocus();
 
@@ -98,7 +98,7 @@
 		pToolkit.createLabel(lBody, getNewTypeContainerNameLabel(), SWT.NONE);
 		newTypeContainerNameText = pToolkit.createText(lBody, labelProvider.getText(newTypeContainer), SWT.BORDER | SWT.READ_ONLY);
 		newTypeContainerNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		newTypeContainerButton = pToolkit.createButton(lBody, "...", SWT.FLAT);
+		newTypeContainerButton = pToolkit.createButton(lBody, "...", SWT.FLAT);//$NON-NLS-1$
 		// TODO : getImage
 		// Image image = Activator.getDefault().getImage(containerType.getEClass());
 		// if (containerEClass != null) {
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.common/src/org/eclipse/papyrus/sysml14/diagram/common/util/GraphicalSysMLServiceTypeUtil.java b/diagram/org.eclipse.papyrus.sysml14.diagram.common/src/org/eclipse/papyrus/sysml14/diagram/common/util/GraphicalSysMLServiceTypeUtil.java
index 1646955..2a39955 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.common/src/org/eclipse/papyrus/sysml14/diagram/common/util/GraphicalSysMLServiceTypeUtil.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.common/src/org/eclipse/papyrus/sysml14/diagram/common/util/GraphicalSysMLServiceTypeUtil.java
@@ -24,6 +24,6 @@
 
 	public static final String ORG_ECLIPSE_PAPYRUS_SYSML14_PARAMETER_BORDER_ITEM = "org.eclipse.papyrus.SysML14.Parameter_BorderItem"; //$NON-NLS-1$
 
-
+	public static final String ORG_ECLIPSE_PAPYRUS_SYSML14_CONSTRAINT_LABEL = "org.eclipse.papyrus.SysML14.Constraint_Label";//$NON-NLS-1$
 
 }
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/META-INF/MANIFEST.MF b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/META-INF/MANIFEST.MF
index 333c969..794de80 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/META-INF/MANIFEST.MF
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.internalblock.tests/META-INF/MANIFEST.MF
@@ -9,13 +9,7 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
  org.eclipse.papyrus.uml.diagram.clazz;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.communication;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.component;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.composite;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.deployment;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.interactionoverview;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.profile;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.sequence;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.timing;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.papyrus.uml.diagram.usecase;bundle-version="[2.0.0,3.0.0)"
+ org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="[2.0.0,3.0.0)"
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric.tests/META-INF/MANIFEST.MF b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric.tests/META-INF/MANIFEST.MF
index d086c13..7577756 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric.tests/META-INF/MANIFEST.MF
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric.tests/META-INF/MANIFEST.MF
@@ -9,14 +9,8 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Require-Bundle: org.junit;bundle-version="[4.11.0,5.0.0)",
  org.eclipse.papyrus.uml.diagram.clazz;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.communication;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.component;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.composite;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.deployment;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.interactionoverview;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.diagram.profile;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.sequence;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.papyrus.uml.diagram.timing;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.papyrus.uml.diagram.usecase;bundle-version="[2.0.0,3.0.0)"
+ org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="[2.0.0,3.0.0)"
 
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/dnd/ConstraintDropStrategy.java b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/dnd/ConstraintDropStrategy.java
index 4454f76..b93fac9 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/dnd/ConstraintDropStrategy.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/dnd/ConstraintDropStrategy.java
@@ -25,6 +25,7 @@
 import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;
 import org.eclipse.gmf.runtime.emf.type.core.ISpecializationType;
 import org.eclipse.papyrus.infra.gmfdiag.dnd.strategy.ExpansionElementDropStrategy;
+import org.eclipse.papyrus.sysml14.diagram.common.util.GraphicalSysMLServiceTypeUtil;
 import org.eclipse.papyrus.sysml14.service.types.util.SysMLServiceTypeUtil;
 import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.Element;
@@ -83,7 +84,7 @@
 				Type targetType = ((Property) target).getType();
 				for (EObject sourceElement : sourceElements) {
 					if ((sourceElement instanceof Constraint) && sourceElement.eContainer().equals(targetType)) {
-						addCommandDrop(targetEditPart, cc, valuesToAdd, sourceElement, (ISpecializationType) ElementTypeRegistry.getInstance().getType("org.eclipse.papyrus.SysML14.Constraint_Label"));
+						addCommandDrop(targetEditPart, cc, valuesToAdd, sourceElement, (ISpecializationType) ElementTypeRegistry.getInstance().getType(GraphicalSysMLServiceTypeUtil.ORG_ECLIPSE_PAPYRUS_SYSML14_CONSTRAINT_LABEL));
 					}
 				}
 			}
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/internal/factory/BlockCompositeViewFactory.java b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/internal/factory/BlockCompositeViewFactory.java
index 1b7a0d1..5762d78 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/internal/factory/BlockCompositeViewFactory.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/internal/factory/BlockCompositeViewFactory.java
@@ -35,6 +35,11 @@
  */
 public class BlockCompositeViewFactory extends AbstractBasicViewFactory {
 
+	/**
+	 * Base element of Block
+	 */
+	private static final String CLASS = "Class";//$NON-NLS-1$ 
+
 	@Override
 	public View createElementView(EObject domainElement, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
 		Shape node = NotationFactory.eINSTANCE.createShape();
@@ -44,14 +49,14 @@
 		node.setElement(domainElement);
 		// initializeFromPreferences
 		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint.getPreferenceStore();
-		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, "Class");
+		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, CLASS);
 		createLabel(node, UMLVisualIDRegistry.getType(ClassCompositeNameEditPart.VISUAL_ID));
 		Node floatinglLabel = createLabel(node, UMLVisualIDRegistry.getType(ClassCompositeFloatingLabelEditPart.VISUAL_ID));
 		floatinglLabel.setLayoutConstraint(NotationFactory.eINSTANCE.createLocation());
 		Location location6089 = (Location) floatinglLabel.getLayoutConstraint();
 		location6089.setX(0);
 		location6089.setY(5);
-		PreferenceInitializerForElementHelper.initCompartmentsStatusFromPrefs(node, prefStore, "Class");
+		PreferenceInitializerForElementHelper.initCompartmentsStatusFromPrefs(node, prefStore, CLASS);
 		return node;
 	}
 
diff --git a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/internal/factory/ConstraintPropertyViewFactory.java b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/internal/factory/ConstraintPropertyViewFactory.java
index 773cae9..c525c26 100644
--- a/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/internal/factory/ConstraintPropertyViewFactory.java
+++ b/diagram/org.eclipse.papyrus.sysml14.diagram.parametric/src/org/eclipse/papyrus/sysml14/diagram/parametric/internal/factory/ConstraintPropertyViewFactory.java
@@ -35,6 +35,11 @@
  */
 public class ConstraintPropertyViewFactory extends AbstractBasicViewFactory {
 
+	/**
+	 * Base element of ConstraintProperty
+	 */
+	private static final String PROPERTY = "Property";//$NON-NLS-1$ 
+
 	@Override
 	public View createElementView(EObject domainElement, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
 		Shape node = NotationFactory.eINSTANCE.createShape();
@@ -44,7 +49,7 @@
 		node.setElement(domainElement);
 		// initializeFromPreferences
 		final IPreferenceStore prefStore = (IPreferenceStore) preferencesHint.getPreferenceStore();
-		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, "Property");
+		PreferenceInitializerForElementHelper.initFontStyleFromPrefs(node, prefStore, PROPERTY);
 		createLabel(node, UMLVisualIDRegistry.getType(PropertyPartNameEditPartCN.VISUAL_ID));
 		Node floatingLabel = createLabel(node, UMLVisualIDRegistry.getType(PropertyPartFloatingLabelEditPartCN.VISUAL_ID));
 		floatingLabel.setLayoutConstraint(NotationFactory.eINSTANCE.createLocation());
@@ -52,7 +57,7 @@
 		location6054.setX(0);
 		location6054.setY(5);
 		createCompartment(node, UMLVisualIDRegistry.getType(PropertyPartCompartmentEditPartCN.VISUAL_ID), true, true, false, false);
-		PreferenceInitializerForElementHelper.initCompartmentsStatusFromPrefs(node, prefStore, "Property");
+		PreferenceInitializerForElementHelper.initCompartmentsStatusFromPrefs(node, prefStore, PROPERTY);
 		return node;
 	}
 
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 ade7cea..448f8c8 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
@@ -45,18 +45,23 @@
  *  
  * @author Benoit Maggi
  */
+@SuppressWarnings("nls")
 public abstract class AbstractPaletteTest {
 
-	public static final String NODE = "node"; //$NON-NLS-1$
+	public static final String NODE = "node"; 
 
-	public static final String EDGE = "edge"; //$NON-NLS-1$
+	public static final String EDGE = "edge"; 
 
-	private String rootPath = ""; //$NON-NLS-1$
+	private String rootPath = ""; 
 
-	private String palettePath = ""; //$NON-NLS-1$
+	private String palettePath = ""; 
 
-	public ElementTypeSetConfigurationRegistry instance = ElementTypeSetConfigurationRegistry.getInstance();
 
+	@Before
+	public void loadElementTypeRegistry(){
+		ElementTypeSetConfigurationRegistry.getInstance();
+	}
+	
 	public boolean assertPaletteId(String id) {
 		return id != null && (id.startsWith(rootPath + "." + NODE) || id.startsWith(rootPath + "." + EDGE));
 	}
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 62b4041..a1574fb 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -5,6 +5,32 @@
     <title>Sample Changes Report: Papyrus SysML 1.4</title>
   </properties>
   <body>
+    <release version="0.8.1" date="2016-15-04" description="Second release">
+      <action dev="bmaggi" type="update" issue="488468">
+		Update version dependencies to indicate incompatibility with Papyrus Neon 
+		(Note version 0.9.0 won't be compatible with Papyrus Mars)
+      </action>	 
+	  <action dev="flefevre" type="update" issue="479570">
+       755c771 Bug 484695 - [SysML 1.4][product] open the papyrus perspective
+      </action>
+      <action dev="flefevre" type="update" issue="479570">
+       3958147 Bug 478259 - [SysML 1.4][BDD] Attributes compartment of ConstraintBlocks should be named 'parameters'
+      </action>
+      <action dev="flefevre" type="add" issue="480739">
+		New icon for ControlOperator in the model explorer view
+      </action>		
+      <action dev="bmaggi" type="update" issue="488080">
+		The new Child menu is separated in two menus nodes and relations
+      </action>	
+      <action dev="bmaggi" type="add" issue="484221">
+	  The rcptt tests are know available here:
+https://repo.eclipse.org/content/repositories/papyrus-releases/org/eclipse/papyrus/sysml/org.eclipse.papyrus.sysml14.rcptt.tests/
+      </action>	  
+      <action type="update">
+        All the fixes can be found here:
+https://bugs.eclipse.org/bugs/buglist.cgi?classification=Modeling&product=Papyrus&component=SysML&target_milestone=0.8.1
+      </action>
+    </release>	
     <release version="0.8" date="2015-12-01" description="First release">
       <action dev="flefevre" type="fix" issue="479570">
         Factorize the code under org.eclipse.papyrus.sysml14.diagram.blockdefinition.factory.
