diff --git a/plugins/doc/org.eclipse.papyrus.sirius.doc/image/user/4_Filters.png b/plugins/doc/org.eclipse.papyrus.sirius.doc/image/user/4_Filters.png
deleted file mode 100755
index 25411c9..0000000
--- a/plugins/doc/org.eclipse.papyrus.sirius.doc/image/user/4_Filters.png
+++ /dev/null
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.sirius.doc/src/site/mediawiki/papyrus-sirius-devDoc.mediawiki b/plugins/doc/org.eclipse.papyrus.sirius.doc/src/site/mediawiki/papyrus-sirius-devDoc.mediawiki
index f2f301e..ddf456d 100755
--- a/plugins/doc/org.eclipse.papyrus.sirius.doc/src/site/mediawiki/papyrus-sirius-devDoc.mediawiki
+++ b/plugins/doc/org.eclipse.papyrus.sirius.doc/src/site/mediawiki/papyrus-sirius-devDoc.mediawiki
@@ -152,11 +152,6 @@
 For more information about viewpoint description, you can have a look at the sirius documentation available here:
 https://www.eclipse.org/sirius/doc/specifier/general/Specifying_Viewpoints.html
 
-Note that each viewpoint shall reuse:
-* The common layer which is a mandatory layer defining the common concept of all diagrams (Bendpoint for example).
-* The common tool, for deletion, etc.
-* Common and specific java services. 
-
 = Adding a new diagram to the architecture file =
 
 The editor provided to edit the DocumentStructureTemplate metamodel is not exactly the version generated by EMF. We customized it in order to use a TransactionalEditingDomain (to ease the Papyrus integration). 
@@ -230,16 +225,6 @@
 
 == Common concepts ==
 
-=== Bendpoints ===
-
-Benpoints mapping is used to draw a Benpoint node at the intersection of edges when the Benpoints filter is activated.
-
-=== Refresh provider ===
-
-In some sirius diagrams, for several purpose (region management, bendpoints and sequence diagram reorder), the post refresh behavior of sirius diagrams have been overriden.
-
-To override this behavior, we have used the following extension point org.eclipse.sirius.refreshExtensionProvider.
-
 === Common services ===
 
 * PapyrusSiriusTabbarContributor allows to enable or deactivate tools in the sirius tabbar.
diff --git a/plugins/doc/org.eclipse.papyrus.sirius.doc/src/site/mediawiki/papyrus-sirius-userDoc.mediawiki b/plugins/doc/org.eclipse.papyrus.sirius.doc/src/site/mediawiki/papyrus-sirius-userDoc.mediawiki
index 36401b6..f553746 100755
--- a/plugins/doc/org.eclipse.papyrus.sirius.doc/src/site/mediawiki/papyrus-sirius-userDoc.mediawiki
+++ b/plugins/doc/org.eclipse.papyrus.sirius.doc/src/site/mediawiki/papyrus-sirius-userDoc.mediawiki
@@ -33,12 +33,6 @@
 
 While most part is similar to the former GMF diagram. There are some small differences between both.
 
-=== Filters ===
-
-While using sirius diagram, you can enable or disable filters on the representation. For example filters can show or hide the Bendpoints in the Class Diagram.
-
-[[File:../../../image/user/4_Filters.png]]
-
 === Layers ===
 
 Layers can be defined to hide or show several mapping and/or several tools in the palette in a diagram.
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
index a605c48..db134a0 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:filter="http://www.eclipse.org/sirius/diagram/description/filter/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/description/tool/1.1.0" xmlns:tool_1="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" documentation="Copyright (c) 2009, 2014, 2021-2022 Obeo, CEA LIST, Artal Technologies&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License 2.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;https://www.eclipse.org/legal/epl-2.0/&#xD;&#xA;&#xD;&#xA;SPDX-License-Identifier: EPL-2.0&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;     Obeo - initial API and implementation&#xD;&#xA;     Aurelien Didier (ARTAL) - aurelien.didier51@gmail.com - adaptation to integrate in Papyrus&#xD;&#xA;     Vincent Lorenzo (CEA LIST) - vincent.lorenzo@cea.fr  - adaptation to integrate in Papyrus" name="papyrus" version="12.0.0.2017041100">
+<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/description/tool/1.1.0" xmlns:tool_1="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" documentation="Copyright (c) 2009, 2014, 2021-2022 Obeo, CEA LIST, Artal Technologies&#xD;&#xA;&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License 2.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;https://www.eclipse.org/legal/epl-2.0/&#xD;&#xA;&#xD;&#xA;SPDX-License-Identifier: EPL-2.0&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;     Obeo - initial API and implementation&#xD;&#xA;     Aurelien Didier (ARTAL) - aurelien.didier51@gmail.com - adaptation to integrate in Papyrus&#xD;&#xA;     Vincent Lorenzo (CEA LIST) - vincent.lorenzo@cea.fr  - adaptation to integrate in Papyrus" name="papyrus" version="12.0.0.2017041100">
   <ownedViewpoints name="ClassDiagram" modelFileExtension="uml">
     <ownedRepresentations xsi:type="description_1:DiagramDescription" dropDescriptions="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticPackageDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticClassDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticModelDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticEnumerationDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticDataTypeDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.4/@ownedTools[name='GraphicalEnumerationDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticComponentDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticInterfaceDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticSignalDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticInstanceSpecificationDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticInformationItemDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticPrimitiveTypeDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticCommentDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticConstraintDrop']" documentation="Representation to edit class diagrams" name="ClassDiagram" titleExpression="aql:self.name +' Class Diagram'" domainClass="uml::Package" preconditionExpression="" enablePopupBars="true">
       <metamodel href="platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#/"/>
-      <filters xsi:type="filter:CompositeFilterDescription" name="Show Bendpoint"/>
       <defaultLayer name="Class">
         <nodeMappings name="CD_Comment" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='Comment_body_EditionTool']" semanticCandidatesExpression="feature:ownedComment" createElements="false" domainClass="uml.Comment">
           <style xsi:type="style:NoteDescription" labelSize="9" showIcon="false" labelExpression="feature:body" sizeComputationExpression="9" labelPosition="node" resizeKind="NSEW" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CommentColor']">
@@ -2141,16 +2140,7 @@
           </vsmElementCustomizations>
         </customization>
       </defaultLayer>
-      <additionalLayers name="Common" optional="false">
-        <nodeMappings name="Bendpoint" semanticCandidatesExpression="aql:diagram.getCommonBendpointsToDraw()" synchronizationLock="true" domainClass="uml.Element">
-          <style xsi:type="style:DotDescription" labelSize="12" showIcon="false" labelExpression="" hideLabelByDefault="true" sizeComputationExpression="aql:self.getBenpointDiameter()">
-            <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-          </style>
-        </nodeMappings>
-      </additionalLayers>
-      <additionalLayers endUserDocumentation="This layer is used to display the qualified name of the elements." name="QualifiedNameLayer" label="Display Qualified Name" reusedMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Abstraction'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_AssociationClass_Link'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@borderedNodeMappings[name='CD_RedefinableTemplateSignature'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_ClassLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Comment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Constraint'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_DataTypeLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Dependency'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_ElementImport'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_EnumerationLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration']/@subContainerMappings[name='CD_EnumerationLiteralsCompartment']/@subNodeMappings[name='CD_EnumerationLiteralLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_GeneralizationSet'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InformationFlow'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_InformationItem'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InstanceSpecification_Link'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_InterfaceLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InterfaceRealization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedOperation']/@subNodeMappings[name='CD_OperationLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageImport'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageMerge'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_PrimitiveTypeLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedAttribute']/@subNodeMappings[name='CD_PropertyLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Realization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedReception']/@subNodeMappings[name='CD_ReceptionLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Signal'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_SignalLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']/@subContainerMappings[name='CD_InstanceSpecificationSlotsCompartment']/@subNodeMappings[name='CD_SlotLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Substitution'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_TemplateBinding'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Usage'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@additionalLayers[name='Common']/@nodeMappings[name='Bendpoint']"/>
+      <additionalLayers endUserDocumentation="This layer is used to display the qualified name of the elements." name="QualifiedNameLayer" label="Display Qualified Name" reusedMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Abstraction'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_AssociationClass_Link'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@borderedNodeMappings[name='CD_RedefinableTemplateSignature'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_ClassLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Comment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Constraint'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_DataTypeLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Dependency'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_ElementImport'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_EnumerationLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration']/@subContainerMappings[name='CD_EnumerationLiteralsCompartment']/@subNodeMappings[name='CD_EnumerationLiteralLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_GeneralizationSet'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InformationFlow'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_InformationItem'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InstanceSpecification_Link'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_InterfaceLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InterfaceRealization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedOperation']/@subNodeMappings[name='CD_OperationLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageImport'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageMerge'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_PrimitiveTypeLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedAttribute']/@subNodeMappings[name='CD_PropertyLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Realization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedReception']/@subNodeMappings[name='CD_ReceptionLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Signal'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_SignalLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']/@subContainerMappings[name='CD_InstanceSpecificationSlotsCompartment']/@subNodeMappings[name='CD_SlotLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Substitution'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_TemplateBinding'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Usage']"/>
       <additionalLayers endUserDocumentation="This layer is used to display the applied Stereotypes on the elements." name="AppliedStereotypeLayer" label="Display Applied Stereotypes" reusedMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Abstraction'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_AssociationClass_Link'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_ClassLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Comment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Constraint'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_DataTypeLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Dependency'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_ElementImport'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_EnumerationLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_GeneralizationSet'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InformationFlow'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_InformationItem'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InstanceSpecification_Link'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_InterfaceLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InterfaceRealization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedOperation']/@subNodeMappings[name='CD_OperationLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageImport'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageMerge'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_PrimitiveTypeLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedAttribute']/@subNodeMappings[name='CD_PropertyLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Realization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedReception']/@subNodeMappings[name='CD_ReceptionLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Signal'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_SignalLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']/@subContainerMappings[name='CD_InstanceSpecificationSlotsCompartment']/@subNodeMappings[name='CD_SlotLabelNode'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Substitution'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_TemplateBinding'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Usage']" activeByDefault="true"/>
     </ownedRepresentations>
     <ownedJavaExtensions qualifiedClassName="org.eclipse.papyrus.sirius.uml.diagram.clazz.services.ClassDiagramServices"/>
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/plugin.xml b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/plugin.xml
index a97221d..69aacb6 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/plugin.xml
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/plugin.xml
@@ -10,12 +10,6 @@
 	</decoratorProvider>
 </extension>
 
-   <extension
-         point="org.eclipse.sirius.refreshExtensionProvider">
-      <refreshExtensionProvider
-            providerClass="org.eclipse.papyrus.sirius.uml.diagram.common.refresh.CommonRefreshExtensionProvider">
-      </refreshExtensionProvider>
-   </extension>
       <extension
         point="org.eclipse.gmf.runtime.diagram.ui.editpolicyProviders">
      <editpolicyProvider
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/core/services/FilterService.java b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/core/services/FilterService.java
deleted file mode 100755
index 8557bf6..0000000
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/core/services/FilterService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2021 CEA LIST, Artal Technologies
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *    Aurelien Didier (ARTAL) - aurelien.didier51@gmail.com - Initial API and implementation
- *****************************************************************************/
-package org.eclipse.papyrus.sirius.uml.diagram.common.core.services;
-
-import org.eclipse.sirius.diagram.DDiagram;
-import org.eclipse.sirius.diagram.description.filter.FilterDescription;
-
-/**
- * Service to manage filters.
- *
- */
-public final class FilterService {
-    /**
-     * A singleton instance to be accessed by other java services.
-     */
-    public static final FilterService INSTANCE = new FilterService();
-
-    /**
-     * Hidden constructor.
-     */
-    private FilterService() {
-    }
-
-	public boolean isBenpointFilterActivated(DDiagram diagram) {
-		for (FilterDescription filter : diagram.getActivatedFilters()) {
-			if (filter.getName().equals("Show Bendpoint")) {
-				return true;
-			}
-		}
-		return false;
-	}
-	
-}
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/refresh/CommonDiagramRefreshExtension.java b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/refresh/CommonDiagramRefreshExtension.java
deleted file mode 100755
index bc5030f..0000000
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/refresh/CommonDiagramRefreshExtension.java
+++ /dev/null
@@ -1,486 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2021 CEA LIST, Artal Technologies
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *    Aurelien Didier (ARTAL) - aurelien.didier51@gmail.com - Initial API and implementation
- *****************************************************************************/
-package org.eclipse.papyrus.sirius.uml.diagram.common.refresh;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.eclipse.draw2d.AbstractPointListShape;
-import org.eclipse.draw2d.Connection;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.gef.ConnectionEditPart;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
-import org.eclipse.gmf.runtime.draw2d.ui.geometry.LineSeg;
-import org.eclipse.gmf.runtime.notation.Diagram;
-import org.eclipse.gmf.runtime.notation.Edge;
-import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.DisplayLabelSwitch;
-import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.FilterService;
-import org.eclipse.papyrus.sirius.uml.diagram.common.services.DiagramServices;
-import org.eclipse.papyrus.sirius.uml.diagram.common.utils.ODesignConstant;
-import org.eclipse.sirius.business.api.session.Session;
-import org.eclipse.sirius.business.api.session.SessionManager;
-import org.eclipse.sirius.common.tools.api.interpreter.IInterpreter;
-import org.eclipse.sirius.common.tools.api.util.RefreshIdsHolder;
-import org.eclipse.sirius.diagram.DDiagram;
-import org.eclipse.sirius.diagram.DNode;
-import org.eclipse.sirius.diagram.DSemanticDiagram;
-import org.eclipse.sirius.diagram.DragAndDropTarget;
-import org.eclipse.sirius.diagram.ResizeKind;
-import org.eclipse.sirius.diagram.business.api.componentization.DiagramMappingsManager;
-import org.eclipse.sirius.diagram.business.api.componentization.DiagramMappingsManagerRegistry;
-import org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension;
-import org.eclipse.sirius.diagram.business.internal.sync.DDiagramElementSynchronizer;
-import org.eclipse.sirius.diagram.business.internal.sync.DDiagramSynchronizer;
-import org.eclipse.sirius.diagram.business.internal.sync.DNodeCandidate;
-import org.eclipse.sirius.diagram.description.DiagramDescription;
-import org.eclipse.sirius.diagram.description.DiagramElementMapping;
-import org.eclipse.sirius.diagram.description.NodeMapping;
-import org.eclipse.sirius.diagram.ui.business.api.view.SiriusGMFHelper;
-import org.eclipse.sirius.diagram.ui.business.api.view.SiriusLayoutDataManager;
-import org.eclipse.sirius.diagram.ui.business.internal.view.RootLayoutData;
-import org.eclipse.sirius.diagram.ui.internal.refresh.GMFHelper;
-import org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor;
-import org.eclipse.sirius.ext.base.Option;
-import org.eclipse.sirius.tools.api.SiriusPlugin;
-import org.eclipse.sirius.viewpoint.description.RepresentationDescription;
-
-/**
- * 
- * This class add the common bendpoints on sirius diagram
- *
- */
-public class CommonDiagramRefreshExtension implements IRefreshExtension {
-
-	private int bendpointDiameter = 7;
-
-
-	/**
-	 * @see org.eclipse.sirius.business.api.refresh.IRefreshExtension#beforeRefresh(org.eclipse.sirius.DDiagram)
-	 */
-	@Override
-	public void beforeRefresh(DDiagram diagram) {
-		long showStereotype = diagram.getActivatedLayers().stream().filter(layer -> ODesignConstant.APPLIED_STEREOTYPE_LAYER_ID.equals(layer.getName())).count(); //$NON-NLS-1$
-		DisplayLabelSwitch.setStereotypeFilter(showStereotype == 1);
-		
-		long showQualifiedName = diagram.getActivatedLayers().stream().filter(layer -> ODesignConstant.QUALIFIED_NAMED_LAYER_ID.equals(layer.getName())).count(); //$NON-NLS-1$
-		DisplayLabelSwitch.setQualifiedNameFilter(showQualifiedName == 1);
-	}
-
-	/**
-	 * @see org.eclipse.sirius.business.api.refresh.IRefreshExtension#postRefresh(org.eclipse.sirius.DDiagram)
-	 */
-	@Override
-	public void postRefresh(DDiagram diagram) {
-		List<EObject> list = new ArrayList<>();
-		diagram.eAllContents().forEachRemaining(list::add);
-		// ResetStyleHelper.resetStyle(list);
-		if (FilterService.INSTANCE.isBenpointFilterActivated(diagram)) {
-			Collection<Point> bendpointsToDraw = getCommonBenpointsToDraw(diagram);
-			Diagram gmfDiagram = SiriusGMFHelper.getGmfDiagram(diagram);
-			Option<GraphicalEditPart> gef = GMFHelper.getGraphicalEditPart(gmfDiagram);
-			if (gef.some()) {
-				if (bendpointsToDraw.size() > 0) {
-					drawCommonBendpoints((DSemanticDiagram) diagram, (IGraphicalEditPart) gef.get(), bendpointsToDraw);
-				}
-			}
-		}
-		// Not this one : DiagramHelper.refresh(gmfDiagram.get,true);
-	}
-
-	/**
-	 *
-	 * @param diagram
-	 *
-	 */
-	protected Collection<Point> getCommonBenpointsToDraw(DDiagram diagram) {
-		final Collection<Point> commonBendpointsToDraw = new HashSet<>();
-
-		Diagram gmfDiagram = SiriusGMFHelper.getGmfDiagram(diagram);
-		EList<Edge> edges = gmfDiagram.getEdges();
-		for (Edge edge : edges) {
-			// get the figure
-			GraphicalEditPart currentEditPart = GMFHelper.getGraphicalEditPart(edge).get();
-			IFigure currentEdgeFigure = ((IGraphicalEditPart) currentEditPart).getFigure();
-			if (currentEdgeFigure instanceof AbstractPointListShape) {
-				PointList bendPoints = ((AbstractPointListShape) currentEdgeFigure).getPoints();
-				EClass eClass = null;
-				if (currentEditPart instanceof IGraphicalEditPart) {
-					final EObject el = ((IGraphicalEditPart) currentEditPart).resolveSemanticElement();
-					if (el != null) {
-						eClass = el.eClass();
-
-						// 2. find all connections editpart with same source AND/OR same target than the
-						// current one
-						if (currentEditPart instanceof ConnectionEditPart && eClass != null) {
-							final EditPart sourceEP = ((ConnectionEditPart) currentEditPart).getSource();
-							final EditPart targetEP = ((ConnectionEditPart) currentEditPart).getTarget();
-							final Set<Object> allConnectionsEP = new HashSet<>();
-							// 2.1. get all potential editpart connections
-							if (sourceEP instanceof AbstractGraphicalEditPart
-									&& targetEP instanceof AbstractGraphicalEditPart) {
-								allConnectionsEP.addAll(((AbstractGraphicalEditPart) sourceEP).getSourceConnections());
-								allConnectionsEP.addAll(((AbstractGraphicalEditPart) targetEP).getSourceConnections());
-								allConnectionsEP.addAll(((AbstractGraphicalEditPart) sourceEP).getTargetConnections());
-								allConnectionsEP.addAll(((AbstractGraphicalEditPart) targetEP).getTargetConnections());
-								allConnectionsEP.remove(currentEditPart);
-							}
-
-							// 2.2 get the figure for these connections and keep only figure when its
-							// editpart has the same kind than the current one
-							final Set<Connection> allConnections = new HashSet<>();
-							if (allConnectionsEP.size() > 0) {
-								for (final Object current : allConnectionsEP) {
-									// the editpart be instance of the same class
-									if (current.getClass().isInstance(currentEditPart)
-											&& currentEditPart.getClass().isInstance(current)
-											&& current instanceof IGraphicalEditPart) {
-										final EObject resolvedElement = ((IGraphicalEditPart) current)
-												.resolveSemanticElement();
-										if (resolvedElement != null && eClass != null
-												&& resolvedElement.eClass() != eClass) {
-											continue;// we draw ben point only for elements which have the same eClass,
-														// when
-														// this
-														// eClass is not null
-										}
-										final IFigure currentFig = ((IGraphicalEditPart) current).getFigure();
-										if (currentFig instanceof Connection) {
-											allConnections.add((Connection) currentFig);
-										}
-									}
-								}
-							}
-
-							// 3. Create the list of the LineSeg of the current figure
-							final List<LineSeg> refs = new ArrayList<>();
-							for (int i = 0; i < bendPoints.size() - 1; i++) {
-								LineSeg seg = new LineSeg(bendPoints.getPoint(i), bendPoints.getPoint(i + 1));
-								refs.add(seg);
-							}
-
-							// 4. find common segments between the current figure and each others link
-							// we need to associate each common segment to the concerned link
-							final Map<Connection, Map<LineSeg, List<LineSeg>>> segs = new HashMap<>();
-							for (Connection currentConn : allConnections) {
-								final PointList currentPoints = currentConn.getPoints();
-								final Map<LineSeg, List<LineSeg>> mapSegs = new HashMap<>();
-								segs.put(currentConn, mapSegs);
-								for (LineSeg refSeg : refs) {
-									final List<LineSeg> commonSubSegs = new ArrayList<>();
-									mapSegs.put(refSeg, commonSubSegs);
-									for (int i = 0; i < currentPoints.size() - 1; i++) {
-										LineSeg tmp = new LineSeg(currentPoints.getPoint(i),
-												currentPoints.getPoint(i + 1));
-										PointList intersection = getCommonSegment(refSeg, tmp);
-										if (intersection.size() == 2) {
-											if (!intersection.getFirstPoint().equals(intersection.getLastPoint())) {
-												double distanceFromFirst = refSeg.getOrigin()
-														.getDistance(intersection.getFirstPoint());
-												double distanceFromSecond = refSeg.getOrigin()
-														.getDistance(intersection.getLastPoint());
-												final LineSeg commonSeg;
-												// we arrange the 2 points in order to have the first point nearest of
-												// the
-												// start
-												// of the current segment
-												if (distanceFromFirst < distanceFromSecond) {
-													commonSeg = new LineSeg(intersection.getFirstPoint(),
-															intersection.getLastPoint());
-												} else {
-													commonSeg = new LineSeg(intersection.getLastPoint(),
-															intersection.getFirstPoint());
-												}
-												commonSubSegs.add(commonSeg);
-											}
-										}
-									}
-								}
-							}
-
-							// 5. we look for the bendpoints crossing existing link on the model, then
-							// crossing their common segment with the current figure, to find bendpoints to
-							// draw
-							for (Entry<Connection, Map<LineSeg, List<LineSeg>>> entry : segs.entrySet()) {
-								final Map<LineSeg, List<LineSeg>> commonSegMap = entry.getValue();
-								for (int i = 0; i < refs.size(); i++) { // we iterate on the segments of the current
-																		// figure
-
-									// 5.1 find required values to find bendpoints to draw
-									final LineSeg currentFigureSeg = refs.get(i);
-									final List<LineSeg> currentCommonSegs = commonSegMap.get(currentFigureSeg);
-
-									final LineSeg previousSeg;
-									final List<LineSeg> previousCommonSegs;
-
-									final LineSeg nextSeg;
-									final List<LineSeg> nextCommonSegs;
-
-									// obtain previous segs of the current figure
-									if (i != 0) {
-										previousSeg = refs.get(i - 1);
-										previousCommonSegs = commonSegMap.get(previousSeg);
-									} else {
-										previousSeg = null;
-										previousCommonSegs = null;
-									}
-
-									// obtain next segs of the current figure
-									if (i != refs.size() - 1) {
-										nextSeg = refs.get(i + 1);
-										nextCommonSegs = commonSegMap.get(nextSeg);
-									} else {
-										nextSeg = null;
-										nextCommonSegs = null;
-									}
-
-									LineSeg previousCommonSeg = null;
-									LineSeg nextCommonSeg = null;
-
-									// we iterate on the common subsegment shared with others link with the current
-									// figure
-									for (int a = 0; a < currentCommonSegs.size(); a++) {
-										final LineSeg curr = currentCommonSegs.get(a);
-										final Point first = curr.getOrigin();
-										final Point second = curr.getTerminus();
-										// obtain previous common seg
-										if (a == 0) {
-											if (previousCommonSegs != null && previousCommonSegs.size() > 0) {
-												previousCommonSeg = previousCommonSegs
-														.get(previousCommonSegs.size() - 1);
-											} else {
-												previousCommonSeg = null;
-											}
-										} else {
-											previousCommonSeg = currentCommonSegs.get(a - 1);
-										}
-
-										// obtain next common seg
-										if (a == currentCommonSegs.size() - 1) {
-											if (nextCommonSegs != null && nextCommonSegs.size() > 0) {
-												nextCommonSeg = nextCommonSegs.get(0);
-											} else {
-												nextCommonSeg = null;
-											}
-										} else {
-											nextCommonSeg = currentCommonSegs.get(a + 1);
-										}
-
-										// 5.2 calculates bendpoints visibility
-
-										// determining if we draw first point :
-										if (previousCommonSeg == null) {
-											if (i == 0) {// first segment of the figure
-												if (!bendPoints.getFirstPoint().equals(first)) {
-													// we draw the point when it is not the first anchor of the figure
-													commonBendpointsToDraw.add(first);
-												}
-											} else {
-												commonBendpointsToDraw.add(first);
-											}
-										} else if (!previousCommonSeg.getTerminus().equals(first)) {
-											// the previous common seg doesn't share this point with the current segment
-											// we draw the first point
-											commonBendpointsToDraw.add(first);
-										}
-
-										// determining if we draw the second point
-										if (nextCommonSeg == null) {
-											if (i == refs.size() - 1) {
-												if (!bendPoints.getLastPoint().equals(second)) {
-													// we draw the point when it is not the first anchor of the figure
-													commonBendpointsToDraw.add(second);
-												}
-											} else {
-												commonBendpointsToDraw.add(second);
-											}
-										} else if (!nextCommonSeg.getOrigin().equals(second)) {
-											// the next common seg doesn't share this point with the current segment
-											// we draw the second point
-											commonBendpointsToDraw.add(second);
-										}
-									}
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-		return commonBendpointsToDraw;
-	}
-
-	/**
-	 *
-	 * @param seg1
-	 *            the first segment
-	 * @param seg2
-	 *            the secong segment
-	 * @return
-	 */
-	public static final PointList getCommonSegment(final LineSeg seg1, final LineSeg seg2) {
-		final List<Point> list = new ArrayList<>();
-		list.add(seg1.getOrigin());
-		list.add(seg2.getOrigin());
-		list.add(seg1.getTerminus());
-		list.add(seg2.getTerminus());
-
-		List<Point> commonPoints = new ArrayList<>();
-		for (Point point : list) {
-			if (!commonPoints.contains(point)) {
-				if (seg1.containsPoint(point, 0) && seg2.containsPoint(point, 0)) {
-					commonPoints.add(point);
-				}
-			}
-		}
-
-		final PointList result = new PointList();
-		for (final Point point : commonPoints) {
-			result.addPoint(point);
-		}
-		return result;
-	}
-
-	/**
-	 *
-	 * @return <code>true</code> according to the preference store
-	 */
-	protected boolean getDrawBendpointPreferenceValue() {
-		return true;
-	}
-
-	/**
-	 * Calculate the best diameter and set the diameter value
-	 *
-	 * @param diameter
-	 *            the diameter of the bendpoints (if diameter<=1, we set the
-	 *            diameter to 0)
-	 */
-	public void setBendPointDiameter(final int diameter) {
-		if (diameter <= 1) {
-			this.bendpointDiameter = 0;
-		}
-		if (diameter % 2 != 0) {
-			this.bendpointDiameter = diameter;
-		} else {
-			setBendPointDiameter(diameter + 1);
-		}
-	}
-
-	/**
-	 *
-	 * @return the bendpoint diameter
-	 */
-	protected final int getBendPointDiameter() {
-		return bendpointDiameter;
-	}
-
-	/**
-	 *
-	 * @param figure
-	 *            graphics
-	 * @param pointsToDraw
-	 *            the list of the points to draw
-	 */
-	public void drawCommonBendpoints(DSemanticDiagram diagram, final IGraphicalEditPart gep,
-			final Collection<Point> bendPoints) {
-
-		// See PapyrusEdgeFigure for the initial algorithm.
-		final int diameter = getBendPointDiameter();
-		for (final Point point : bendPoints) {
-
-			Point adjustedPoint = new Point((double) point.x - (double) bendpointDiameter / 2,
-					(double) point.y - (double) bendpointDiameter / 2);
-			NodeMapping mapping = null;
-
-			// Before we were using
-			// NodeMapping mapping= (NodeMapping)
-			// DiagramServices.getDiagramServices().getMappingByName(diagram.getDescription(),
-			// "Bendpoint");
-			// but in papyrus context, description is not initialized as expected so we have
-			// to use DiagramMappingsManager
-			DiagramMappingsManager dmm = getMappingManager(diagram);
-			for (NodeMapping map : dmm.getNodeMappings()) {
-				if (ODesignConstant.BENDPOINT_MAPPING.equals(map.getName())) {
-					mapping = map;
-				}
-			}
-			// DNodeCandidate nodeCandidate = new DNodeCandidate(mapping, diagram.getTarget(), diagram, rId);
-			if (mapping != null) { // some diagram doesn't have this mapping
-				DNode node = createNode(mapping, diagram.getTarget(), diagram, diagram);
-				node.setResizeKind(ResizeKind.NONE_LITERAL);
-				// find how to set color
-				Dimension dim = new Dimension(bendpointDiameter, bendpointDiameter);
-				RootLayoutData layoutData = new RootLayoutData(node, adjustedPoint, dim);
-				SiriusLayoutDataManager.INSTANCE.addData(layoutData);
-			}
-		}
-	}
-
-	public DNode createNode(NodeMapping mapping, EObject modelElement, DragAndDropTarget container, DDiagram diagram) {
-		final DDiagram diag = diagram;
-
-		ModelAccessor accessor = SiriusPlugin.getDefault().getModelAccessorRegistry().getModelAccessor(modelElement);
-		IInterpreter interpreter = SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(modelElement);
-		final DDiagramSynchronizer diagramSync = new DDiagramSynchronizer(interpreter, diag.getDescription(), accessor);
-		diagramSync.setDiagram((DSemanticDiagram) diagram);
-		final DDiagramElementSynchronizer elementSync = diagramSync.getElementSynchronizer();
-		RefreshIdsHolder rId = RefreshIdsHolder.getOrCreateHolder(diagram);
-
-		DNodeCandidate nodeCandidate = new DNodeCandidate(mapping, modelElement, container, rId);
-		return (DNode) elementSync.createNewNode(getMappingManager((DSemanticDiagram) diag), nodeCandidate, false);
-	}
-
-	private DiagramMappingsManager getMappingManager(final DSemanticDiagram diagram) {
-		Session session = SessionManager.INSTANCE.getSession(diagram.getTarget());
-		return DiagramMappingsManagerRegistry.INSTANCE.getDiagramMappingsManager(session, diagram);
-	}
-
-	/**
-	 * @param targetDescription
-	 * @param targetMappingName
-	 * @return
-	 */
-	public DiagramElementMapping getMappingByName(RepresentationDescription targetDescription,
-			String targetMappingName) {
-		DiagramElementMapping mapping = null;
-
-		if ((targetMappingName != null) && (targetDescription != null)
-				&& (targetDescription instanceof DiagramDescription)) {
-			mapping = DiagramServices.getDiagramServices()
-					.getAbstractNodeMapping((DiagramDescription) targetDescription, targetMappingName);
-			if (mapping == null) {
-				mapping = DiagramServices.getDiagramServices().getEdgeMapping((DiagramDescription) targetDescription,
-						targetMappingName);
-			}
-		}
-
-		return mapping;
-	}
-
-}
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/refresh/CommonRefreshExtensionProvider.java b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/refresh/CommonRefreshExtensionProvider.java
deleted file mode 100755
index 51d4402..0000000
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/refresh/CommonRefreshExtensionProvider.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2021 CEA LIST, Artal Technologies
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *    Aurelien Didier (ARTAL) - aurelien.didier51@gmail.com - Initial API and implementation
- *****************************************************************************/
-package org.eclipse.papyrus.sirius.uml.diagram.common.refresh;
-
-import org.eclipse.sirius.diagram.DDiagram;
-import org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtension;
-import org.eclipse.sirius.diagram.business.api.refresh.IRefreshExtensionProvider;
-
-public class CommonRefreshExtensionProvider implements IRefreshExtensionProvider {
-
-	  private static final CommonDiagramRefreshExtension REFRESH_EXTENSION = new CommonDiagramRefreshExtension();
-
-	  public CommonRefreshExtensionProvider() {
-	    // empty constructor
-	  }
-
-	  /**
-	   * @see org.eclipse.sirius.business.api.refresh.IRefreshExtensionProvider#getRefreshExtension(org.eclipse.sirius.DDiagram)
-	   */
-	  public IRefreshExtension getRefreshExtension(DDiagram viewPoint_p) {
-	    return REFRESH_EXTENSION;
-	  }
-
-	  /**
-	   * @see org.eclipse.sirius.business.api.refresh.IRefreshExtensionProvider#provides(org.eclipse.sirius.DDiagram)
-	   */
-	  public boolean provides(DDiagram viewPoint_p) {
-	    return true;
-	  }
-
-	}
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/utils/ODesignConstant.java b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/utils/ODesignConstant.java
index 25cbebf..dcf9b1d 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/utils/ODesignConstant.java
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/src/org/eclipse/papyrus/sirius/uml/diagram/common/utils/ODesignConstant.java
@@ -31,10 +31,5 @@
 	 * The ID of the layer used to show/hide qualified name
 	 */
 	public static final String QUALIFIED_NAMED_LAYER_ID = "QualifiedNameLayer"; //$NON-NLS-1$
-	
-	/**
-	 * The ID of the mapping used to draw bendpoints
-	 */
-	public static final String BENDPOINT_MAPPING =  "Bendpoint"; //$NON-NLS-1$
 
 }
