diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
index a97dc9e2dcbaed0e23200c64e3363bdefaf8893f..a9ed50683e4e171b854ee454a33a8541ba47d5b7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
@@ -586,3 +586,11 @@ _UI_AgAttributeType_refersToEnumeration_feature = Refers To Enumeration
 _UI_Doc_referredByTitledClass_feature = Referred By Titled Class
 _UI_DocumentedClass_refersToDescDoc_feature = Refers To Desc Doc
 _UI_TitledClass_refersToTitleDoc_feature = Refers To Title Doc
+_UI_Doc_referredByFunctionalConstraintAsDesc_feature = Referred By Functional Constraint As Desc
+_UI_Doc_referredByFunctionalConstraintAsTitle_feature = Referred By Functional Constraint As Title
+_UI_FunctionalConstraint_refersToDescDoc_feature = Refers To Desc Doc
+_UI_FunctionalConstraint_refersToTitleDoc_feature = Refers To Title Doc
+_UI_Doc_referredByPresenceConditionAsDesc_feature = Referred By Presence Condition As Desc
+_UI_Doc_referredByPresenceConditionAsTitle_feature = Referred By Presence Condition As Title
+_UI_PresenceCondition_refersToDescDoc_feature = Refers To Desc Doc
+_UI_PresenceCondition_refersToTitleDoc_feature = Refers To Title Doc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocItemProvider.java
index ccc61bc8308dde8c313f4d6b80fe4573eb4c855e..06fa2c2b146a3ef9a2fffe8e9d2d7d01a108a181 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocItemProvider.java
@@ -71,14 +71,16 @@ public class DocItemProvider extends NsdObjectItemProvider {
 
             addIdPropertyDescriptor( object );
             addReferredByAgNSDescPropertyDescriptor( object );
-            addReferredByPresenceConditionPropertyDescriptor( object );
+            addReferredByPresenceConditionAsDescPropertyDescriptor( object );
             addReferredByAgPresenceConditionPropertyDescriptor( object );
             addReferredByAbbreviationPropertyDescriptor( object );
             addReferredByBasicTypePropertyDescriptor( object );
             addReferredByDocumentedClassPropertyDescriptor( object );
-            addReferredByFunctionalConstraintPropertyDescriptor( object );
+            addReferredByFunctionalConstraintAsDescPropertyDescriptor( object );
             addReferredByAgPresenceConditionDerivedStatisticsPropertyDescriptor( object );
             addReferredByTitledClassPropertyDescriptor( object );
+            addReferredByFunctionalConstraintAsTitlePropertyDescriptor( object );
+            addReferredByPresenceConditionAsTitlePropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -127,19 +129,19 @@ public class DocItemProvider extends NsdObjectItemProvider {
     }
 
     /**
-     * This adds a property descriptor for the Referred By Presence Condition feature.
+     * This adds a property descriptor for the Referred By Presence Condition As Desc feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected void addReferredByPresenceConditionPropertyDescriptor( Object object ) {
+    protected void addReferredByPresenceConditionAsDescPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
                         getResourceLocator(),
-                        getString( "_UI_Doc_referredByPresenceCondition_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_Doc_referredByPresenceCondition_feature",
-                                "_UI_Doc_type" ),
-                        NsdPackage.Literals.DOC__REFERRED_BY_PRESENCE_CONDITION,
+                        getString( "_UI_Doc_referredByPresenceConditionAsDesc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_Doc_referredByPresenceConditionAsDesc_feature", "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC,
                         true,
                         false,
                         true,
@@ -237,19 +239,19 @@ public class DocItemProvider extends NsdObjectItemProvider {
     }
 
     /**
-     * This adds a property descriptor for the Referred By Functional Constraint feature.
+     * This adds a property descriptor for the Referred By Functional Constraint As Desc feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected void addReferredByFunctionalConstraintPropertyDescriptor( Object object ) {
+    protected void addReferredByFunctionalConstraintAsDescPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
                         getResourceLocator(),
-                        getString( "_UI_Doc_referredByFunctionalConstraint_feature" ),
+                        getString( "_UI_Doc_referredByFunctionalConstraintAsDesc_feature" ),
                         getString( "_UI_PropertyDescriptor_description",
-                                "_UI_Doc_referredByFunctionalConstraint_feature", "_UI_Doc_type" ),
-                        NsdPackage.Literals.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT,
+                                "_UI_Doc_referredByFunctionalConstraintAsDesc_feature", "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC,
                         true,
                         false,
                         true,
@@ -302,6 +304,50 @@ public class DocItemProvider extends NsdObjectItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Referred By Functional Constraint As Title feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByFunctionalConstraintAsTitlePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_referredByFunctionalConstraintAsTitle_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_Doc_referredByFunctionalConstraintAsTitle_feature", "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Referred By Presence Condition As Title feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByPresenceConditionAsTitlePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_referredByPresenceConditionAsTitle_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_Doc_referredByPresenceConditionAsTitle_feature", "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
      * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintItemProvider.java
index 48abfb633c8092515c75d3839be4d893b01d5bab..636dc34828b8995247e2eccdab4a45311a46fbdc 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintItemProvider.java
@@ -67,7 +67,8 @@ public class FunctionalConstraintItemProvider extends NsdObjectItemProvider {
             addDescIDPropertyDescriptor( object );
             addTitleIDPropertyDescriptor( object );
             addReferredByDataAttributePropertyDescriptor( object );
-            addRefersToDocPropertyDescriptor( object );
+            addRefersToDescDocPropertyDescriptor( object );
+            addRefersToTitleDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -161,19 +162,41 @@ public class FunctionalConstraintItemProvider extends NsdObjectItemProvider {
     }
 
     /**
-     * This adds a property descriptor for the Refers To Doc feature.
+     * This adds a property descriptor for the Refers To Desc Doc feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected void addRefersToDocPropertyDescriptor( Object object ) {
+    protected void addRefersToDescDocPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
                         getResourceLocator(),
-                        getString( "_UI_FunctionalConstraint_refersToDoc_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_FunctionalConstraint_refersToDoc_feature",
-                                "_UI_FunctionalConstraint_type" ),
-                        NsdPackage.Literals.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC,
+                        getString( "_UI_FunctionalConstraint_refersToDescDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_FunctionalConstraint_refersToDescDoc_feature", "_UI_FunctionalConstraint_type" ),
+                        NsdPackage.Literals.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Refers To Title Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToTitleDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_FunctionalConstraint_refersToTitleDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_FunctionalConstraint_refersToTitleDoc_feature", "_UI_FunctionalConstraint_type" ),
+                        NsdPackage.Literals.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC,
                         true,
                         false,
                         true,
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionItemProvider.java
index 8ca9aadae9072dda448614a88edd3bbf41190ef5..f74405e664ba0c2baa1f0f477c84cd76c67ac06f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionItemProvider.java
@@ -69,7 +69,8 @@ public class PresenceConditionItemProvider extends NsdObjectItemProvider {
             addReferredBySubDataObjectPropertyDescriptor( object );
             addReferredByDataAttributePropertyDescriptor( object );
             addReferredBySubDataAttributePropertyDescriptor( object );
-            addRefersToDocPropertyDescriptor( object );
+            addRefersToDescDocPropertyDescriptor( object );
+            addRefersToTitleDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -274,19 +275,41 @@ public class PresenceConditionItemProvider extends NsdObjectItemProvider {
     }
 
     /**
-     * This adds a property descriptor for the Refers To Doc feature.
+     * This adds a property descriptor for the Refers To Desc Doc feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected void addRefersToDocPropertyDescriptor( Object object ) {
+    protected void addRefersToDescDocPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
                         getResourceLocator(),
-                        getString( "_UI_PresenceCondition_refersToDoc_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_PresenceCondition_refersToDoc_feature",
-                                "_UI_PresenceCondition_type" ),
-                        NsdPackage.Literals.PRESENCE_CONDITION__REFERS_TO_DOC,
+                        getString( "_UI_PresenceCondition_refersToDescDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_PresenceCondition_refersToDescDoc_feature", "_UI_PresenceCondition_type" ),
+                        NsdPackage.Literals.PRESENCE_CONDITION__REFERS_TO_DESC_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Refers To Title Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToTitleDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_PresenceCondition_refersToTitleDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_PresenceCondition_refersToTitleDoc_feature", "_UI_PresenceCondition_type" ),
+                        NsdPackage.Literals.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC,
                         true,
                         false,
                         true,
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
index 5c1937d0ac8e0ed4ef1776b5a549757c65f828e2..6a85a357d6f86f35f5688550931b5451474ab243 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
@@ -905,9 +905,9 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="ReferredByAgNSDesc" ordered="false"
         upperBound="-1" eType="#//AgNSdesc" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//AgNSdesc/refersToDoc"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByPresenceCondition"
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByPresenceConditionAsDesc"
         ordered="false" upperBound="-1" eType="#//PresenceCondition" transient="true"
-        unsettable="true" resolveProxies="false" eOpposite="#//PresenceCondition/refersToDoc"/>
+        unsettable="true" resolveProxies="false" eOpposite="#//PresenceCondition/refersToDescDoc"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="referredByAgPresenceCondition"
         ordered="false" upperBound="-1" eType="#//AgPresenceCondition" transient="true"
         unsettable="true" resolveProxies="false" eOpposite="#//AgPresenceCondition/refersToPresCondArgsDoc"/>
@@ -920,15 +920,21 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="referredByDocumentedClass"
         ordered="false" upperBound="-1" eType="#//DocumentedClass" transient="true"
         unsettable="true" resolveProxies="false" eOpposite="#//DocumentedClass/refersToDescDoc"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByFunctionalConstraint"
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByFunctionalConstraintAsDesc"
         ordered="false" upperBound="-1" eType="#//FunctionalConstraint" transient="true"
-        unsettable="true" resolveProxies="false" eOpposite="#//FunctionalConstraint/refersToDoc"/>
+        unsettable="true" resolveProxies="false" eOpposite="#//FunctionalConstraint/refersToDescDoc"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="referredByAgPresenceConditionDerivedStatistics"
         ordered="false" upperBound="-1" eType="#//AgPresenceConditionDerivedStatistics"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//AgPresenceConditionDerivedStatistics/refersToDsPresCondArgsDoc"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="referredByTitledClass"
         ordered="false" upperBound="-1" eType="#//TitledClass" transient="true" unsettable="true"
         resolveProxies="false" eOpposite="#//TitledClass/refersToTitleDoc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByFunctionalConstraintAsTitle"
+        ordered="false" upperBound="-1" eType="#//FunctionalConstraint" transient="true"
+        unsettable="true" resolveProxies="false" eOpposite="#//FunctionalConstraint/refersToTitleDoc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByPresenceConditionAsTitle"
+        ordered="false" upperBound="-1" eType="#//PresenceCondition" transient="true"
+        unsettable="true" resolveProxies="false" eOpposite="#//PresenceCondition/refersToTitleDoc"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DocumentedClass" abstract="true" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1078,8 +1084,10 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="referredByDataAttribute"
         ordered="false" upperBound="-1" eType="#//DataAttribute" transient="true"
         unsettable="true" resolveProxies="false" eOpposite="#//DataAttribute/refersToFunctionalConstraint"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDoc" ordered="false"
-        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByFunctionalConstraint"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDescDoc" ordered="false"
+        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByFunctionalConstraintAsDesc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToTitleDoc" ordered="false"
+        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByFunctionalConstraintAsTitle"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FunctionalConstraints" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1449,8 +1457,10 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="referredBySubDataAttribute"
         ordered="false" upperBound="-1" eType="#//SubDataAttribute" transient="true"
         unsettable="true" resolveProxies="false" eOpposite="#//SubDataAttribute/refersToPresenceCondition"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDoc" ordered="false"
-        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByPresenceCondition"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDescDoc" ordered="false"
+        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByPresenceConditionAsDesc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToTitleDoc" ordered="false"
+        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByPresenceConditionAsTitle"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PresenceConditions" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
index 17cb7ee59dda4c65b823d32a87dc2abd33726015..c3c67e1d422d360371cade17dfd3fe110e266d2e 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
@@ -250,14 +250,16 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Doc/id"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//Doc/parentNSDoc"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/ReferredByAgNSDesc"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByPresenceCondition"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByPresenceConditionAsDesc"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByAgPresenceCondition"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByAbbreviation"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByBasicType"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByDocumentedClass"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByFunctionalConstraint"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByFunctionalConstraintAsDesc"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByAgPresenceConditionDerivedStatistics"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByTitledClass"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByFunctionalConstraintAsTitle"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Doc/referredByPresenceConditionAsTitle"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DocumentedClass">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DocumentedClass/deprecated"/>
@@ -285,7 +287,8 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//FunctionalConstraint/titleID"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//FunctionalConstraint/parentFunctionalConstraints"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//FunctionalConstraint/referredByDataAttribute"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//FunctionalConstraint/refersToDoc"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//FunctionalConstraint/refersToDescDoc"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//FunctionalConstraint/refersToTitleDoc"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//FunctionalConstraints">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//FunctionalConstraints/functionalConstraint"/>
@@ -346,7 +349,8 @@
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//PresenceCondition/referredBySubDataObject"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//PresenceCondition/referredByDataAttribute"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//PresenceCondition/referredBySubDataAttribute"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//PresenceCondition/refersToDoc"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//PresenceCondition/refersToDescDoc"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//PresenceCondition/refersToTitleDoc"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//PresenceConditions">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//PresenceConditions/presenceCondition"/>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Doc.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Doc.java
index 16182e887ed85b1d31f20565b432585c3b21e55e..46b709b8b671ac7e9bd59407290bdcf286439136 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Doc.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Doc.java
@@ -37,14 +37,16 @@ import org.eclipse.emf.ecore.util.FeatureMap;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getParentNSDoc <em>Parent NS Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgNSDesc <em>Referred By Ag NS Desc</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceCondition <em>Referred By Presence Condition</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsDesc <em>Referred By Presence Condition As Desc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceCondition <em>Referred By Ag Presence Condition</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAbbreviation <em>Referred By Abbreviation</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByBasicType <em>Referred By Basic Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByDocumentedClass <em>Referred By Documented Class</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraint <em>Referred By Functional Constraint</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsDesc <em>Referred By Functional Constraint As Desc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceConditionDerivedStatistics <em>Referred By Ag Presence Condition Derived Statistics</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByTitledClass <em>Referred By Titled Class</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsTitle <em>Referred By Functional Constraint As Title</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsTitle <em>Referred By Presence Condition As Title</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc()
@@ -217,41 +219,41 @@ public interface Doc extends NsdObject {
     boolean isSetReferredByAgNSDesc();
 
     /**
-     * Returns the value of the '<em><b>Referred By Presence Condition</b></em>' reference list.
+     * Returns the value of the '<em><b>Referred By Presence Condition As Desc</b></em>' reference list.
      * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition}.
-     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To Doc</em>}'.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDescDoc <em>Refers To Desc Doc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the value of the '<em>Referred By Presence Condition</em>' reference list.
-     * @see #isSetReferredByPresenceCondition()
-     * @see #unsetReferredByPresenceCondition()
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByPresenceCondition()
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc
-     * @model opposite="refersToDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @return the value of the '<em>Referred By Presence Condition As Desc</em>' reference list.
+     * @see #isSetReferredByPresenceConditionAsDesc()
+     * @see #unsetReferredByPresenceConditionAsDesc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByPresenceConditionAsDesc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDescDoc
+     * @model opposite="refersToDescDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
      * @generated
      */
-    EList< PresenceCondition > getReferredByPresenceCondition();
+    EList< PresenceCondition > getReferredByPresenceConditionAsDesc();
 
     /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceCondition <em>Referred By Presence Condition</em>}' reference list.
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsDesc <em>Referred By Presence Condition As Desc</em>}' reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isSetReferredByPresenceCondition()
-     * @see #getReferredByPresenceCondition()
+     * @see #isSetReferredByPresenceConditionAsDesc()
+     * @see #getReferredByPresenceConditionAsDesc()
      * @generated
      */
-    void unsetReferredByPresenceCondition();
+    void unsetReferredByPresenceConditionAsDesc();
 
     /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceCondition <em>Referred By Presence Condition</em>}' reference list is set.
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsDesc <em>Referred By Presence Condition As Desc</em>}' reference list is set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Referred By Presence Condition</em>' reference list is set.
-     * @see #unsetReferredByPresenceCondition()
-     * @see #getReferredByPresenceCondition()
+     * @return whether the value of the '<em>Referred By Presence Condition As Desc</em>' reference list is set.
+     * @see #unsetReferredByPresenceConditionAsDesc()
+     * @see #getReferredByPresenceConditionAsDesc()
      * @generated
      */
-    boolean isSetReferredByPresenceCondition();
+    boolean isSetReferredByPresenceConditionAsDesc();
 
     /**
      * Returns the value of the '<em><b>Referred By Ag Presence Condition</b></em>' reference list.
@@ -402,41 +404,41 @@ public interface Doc extends NsdObject {
     boolean isSetReferredByDocumentedClass();
 
     /**
-     * Returns the value of the '<em><b>Referred By Functional Constraint</b></em>' reference list.
+     * Returns the value of the '<em><b>Referred By Functional Constraint As Desc</b></em>' reference list.
      * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint}.
-     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To Doc</em>}'.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDescDoc <em>Refers To Desc Doc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the value of the '<em>Referred By Functional Constraint</em>' reference list.
-     * @see #isSetReferredByFunctionalConstraint()
-     * @see #unsetReferredByFunctionalConstraint()
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByFunctionalConstraint()
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc
-     * @model opposite="refersToDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @return the value of the '<em>Referred By Functional Constraint As Desc</em>' reference list.
+     * @see #isSetReferredByFunctionalConstraintAsDesc()
+     * @see #unsetReferredByFunctionalConstraintAsDesc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByFunctionalConstraintAsDesc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDescDoc
+     * @model opposite="refersToDescDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
      * @generated
      */
-    EList< FunctionalConstraint > getReferredByFunctionalConstraint();
+    EList< FunctionalConstraint > getReferredByFunctionalConstraintAsDesc();
 
     /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraint <em>Referred By Functional Constraint</em>}' reference list.
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsDesc <em>Referred By Functional Constraint As Desc</em>}' reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isSetReferredByFunctionalConstraint()
-     * @see #getReferredByFunctionalConstraint()
+     * @see #isSetReferredByFunctionalConstraintAsDesc()
+     * @see #getReferredByFunctionalConstraintAsDesc()
      * @generated
      */
-    void unsetReferredByFunctionalConstraint();
+    void unsetReferredByFunctionalConstraintAsDesc();
 
     /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraint <em>Referred By Functional Constraint</em>}' reference list is set.
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsDesc <em>Referred By Functional Constraint As Desc</em>}' reference list is set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Referred By Functional Constraint</em>' reference list is set.
-     * @see #unsetReferredByFunctionalConstraint()
-     * @see #getReferredByFunctionalConstraint()
+     * @return whether the value of the '<em>Referred By Functional Constraint As Desc</em>' reference list is set.
+     * @see #unsetReferredByFunctionalConstraintAsDesc()
+     * @see #getReferredByFunctionalConstraintAsDesc()
      * @generated
      */
-    boolean isSetReferredByFunctionalConstraint();
+    boolean isSetReferredByFunctionalConstraintAsDesc();
 
     /**
      * Returns the value of the '<em><b>Referred By Ag Presence Condition Derived Statistics</b></em>' reference list.
@@ -512,4 +514,78 @@ public interface Doc extends NsdObject {
      */
     boolean isSetReferredByTitledClass();
 
+    /**
+     * Returns the value of the '<em><b>Referred By Functional Constraint As Title</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToTitleDoc <em>Refers To Title Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Functional Constraint As Title</em>' reference list.
+     * @see #isSetReferredByFunctionalConstraintAsTitle()
+     * @see #unsetReferredByFunctionalConstraintAsTitle()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByFunctionalConstraintAsTitle()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToTitleDoc
+     * @model opposite="refersToTitleDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< FunctionalConstraint > getReferredByFunctionalConstraintAsTitle();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsTitle <em>Referred By Functional Constraint As Title</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByFunctionalConstraintAsTitle()
+     * @see #getReferredByFunctionalConstraintAsTitle()
+     * @generated
+     */
+    void unsetReferredByFunctionalConstraintAsTitle();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsTitle <em>Referred By Functional Constraint As Title</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Functional Constraint As Title</em>' reference list is set.
+     * @see #unsetReferredByFunctionalConstraintAsTitle()
+     * @see #getReferredByFunctionalConstraintAsTitle()
+     * @generated
+     */
+    boolean isSetReferredByFunctionalConstraintAsTitle();
+
+    /**
+     * Returns the value of the '<em><b>Referred By Presence Condition As Title</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToTitleDoc <em>Refers To Title Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Presence Condition As Title</em>' reference list.
+     * @see #isSetReferredByPresenceConditionAsTitle()
+     * @see #unsetReferredByPresenceConditionAsTitle()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByPresenceConditionAsTitle()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToTitleDoc
+     * @model opposite="refersToTitleDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< PresenceCondition > getReferredByPresenceConditionAsTitle();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsTitle <em>Referred By Presence Condition As Title</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByPresenceConditionAsTitle()
+     * @see #getReferredByPresenceConditionAsTitle()
+     * @generated
+     */
+    void unsetReferredByPresenceConditionAsTitle();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsTitle <em>Referred By Presence Condition As Title</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Presence Condition As Title</em>' reference list is set.
+     * @see #unsetReferredByPresenceConditionAsTitle()
+     * @see #getReferredByPresenceConditionAsTitle()
+     * @generated
+     */
+    boolean isSetReferredByPresenceConditionAsTitle();
+
 } // Doc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraint.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraint.java
index 2e883b13a6c269d02042257e78457c0a6a57139b..5f00b173e89d378a1533263614c2d778a3dd54ac 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraint.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraint.java
@@ -36,7 +36,8 @@ import org.eclipse.emf.common.util.EList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getTitleID <em>Title ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getParentFunctionalConstraints <em>Parent Functional Constraints</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getReferredByDataAttribute <em>Referred By Data Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDescDoc <em>Refers To Desc Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToTitleDoc <em>Refers To Title Doc</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getFunctionalConstraint()
@@ -318,54 +319,105 @@ public interface FunctionalConstraint extends NsdObject {
     boolean isSetReferredByDataAttribute();
 
     /**
-     * Returns the value of the '<em><b>Refers To Doc</b></em>' reference.
-     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraint <em>Referred By Functional Constraint</em>}'.
+     * Returns the value of the '<em><b>Refers To Desc Doc</b></em>' reference.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsDesc <em>Referred By Functional Constraint As Desc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the value of the '<em>Refers To Doc</em>' reference.
-     * @see #isSetRefersToDoc()
-     * @see #unsetRefersToDoc()
-     * @see #setRefersToDoc(Doc)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getFunctionalConstraint_RefersToDoc()
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraint
-     * @model opposite="referredByFunctionalConstraint" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @return the value of the '<em>Refers To Desc Doc</em>' reference.
+     * @see #isSetRefersToDescDoc()
+     * @see #unsetRefersToDescDoc()
+     * @see #setRefersToDescDoc(Doc)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getFunctionalConstraint_RefersToDescDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsDesc
+     * @model opposite="referredByFunctionalConstraintAsDesc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
      * @generated
      */
-    Doc getRefersToDoc();
+    Doc getRefersToDescDoc();
 
     /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDescDoc <em>Refers To Desc Doc</em>}' reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Refers To Doc</em>' reference.
-     * @see #isSetRefersToDoc()
-     * @see #unsetRefersToDoc()
-     * @see #getRefersToDoc()
+     * @param value the new value of the '<em>Refers To Desc Doc</em>' reference.
+     * @see #isSetRefersToDescDoc()
+     * @see #unsetRefersToDescDoc()
+     * @see #getRefersToDescDoc()
      * @generated
      */
-    void setRefersToDoc( Doc value );
+    void setRefersToDescDoc( Doc value );
 
     /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDescDoc <em>Refers To Desc Doc</em>}' reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isSetRefersToDoc()
-     * @see #getRefersToDoc()
-     * @see #setRefersToDoc(Doc)
+     * @see #isSetRefersToDescDoc()
+     * @see #getRefersToDescDoc()
+     * @see #setRefersToDescDoc(Doc)
      * @generated
      */
-    void unsetRefersToDoc();
+    void unsetRefersToDescDoc();
 
     /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To Doc</em>}' reference is set.
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDescDoc <em>Refers To Desc Doc</em>}' reference is set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Refers To Doc</em>' reference is set.
-     * @see #unsetRefersToDoc()
-     * @see #getRefersToDoc()
-     * @see #setRefersToDoc(Doc)
+     * @return whether the value of the '<em>Refers To Desc Doc</em>' reference is set.
+     * @see #unsetRefersToDescDoc()
+     * @see #getRefersToDescDoc()
+     * @see #setRefersToDescDoc(Doc)
      * @generated
      */
-    boolean isSetRefersToDoc();
+    boolean isSetRefersToDescDoc();
+
+    /**
+     * Returns the value of the '<em><b>Refers To Title Doc</b></em>' reference.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsTitle <em>Referred By Functional Constraint As Title</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Refers To Title Doc</em>' reference.
+     * @see #isSetRefersToTitleDoc()
+     * @see #unsetRefersToTitleDoc()
+     * @see #setRefersToTitleDoc(Doc)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getFunctionalConstraint_RefersToTitleDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsTitle
+     * @model opposite="referredByFunctionalConstraintAsTitle" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    Doc getRefersToTitleDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToTitleDoc <em>Refers To Title Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Refers To Title Doc</em>' reference.
+     * @see #isSetRefersToTitleDoc()
+     * @see #unsetRefersToTitleDoc()
+     * @see #getRefersToTitleDoc()
+     * @generated
+     */
+    void setRefersToTitleDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToTitleDoc <em>Refers To Title Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToTitleDoc()
+     * @see #getRefersToTitleDoc()
+     * @see #setRefersToTitleDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToTitleDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToTitleDoc <em>Refers To Title Doc</em>}' reference is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Refers To Title Doc</em>' reference is set.
+     * @see #unsetRefersToTitleDoc()
+     * @see #getRefersToTitleDoc()
+     * @see #setRefersToTitleDoc(Doc)
+     * @generated
+     */
+    boolean isSetRefersToTitleDoc();
 
 } // FunctionalConstraint
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java
index 53b5bb757b73e81c96aecde14a7de79a6c1a1c9b..ebe4df41673f1118f5dfc8f25ef16d43bdb7cb88 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java
@@ -3463,13 +3463,13 @@ public interface NsdPackage extends EPackage {
     int DOC__REFERRED_BY_AG_NS_DESC = NSD_OBJECT_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Referred By Presence Condition</b></em>' reference list.
+     * The feature id for the '<em><b>Referred By Presence Condition As Desc</b></em>' reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC__REFERRED_BY_PRESENCE_CONDITION = NSD_OBJECT_FEATURE_COUNT + 6;
+    int DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC = NSD_OBJECT_FEATURE_COUNT + 6;
 
     /**
      * The feature id for the '<em><b>Referred By Ag Presence Condition</b></em>' reference list.
@@ -3508,13 +3508,13 @@ public interface NsdPackage extends EPackage {
     int DOC__REFERRED_BY_DOCUMENTED_CLASS = NSD_OBJECT_FEATURE_COUNT + 10;
 
     /**
-     * The feature id for the '<em><b>Referred By Functional Constraint</b></em>' reference list.
+     * The feature id for the '<em><b>Referred By Functional Constraint As Desc</b></em>' reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT = NSD_OBJECT_FEATURE_COUNT + 11;
+    int DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC = NSD_OBJECT_FEATURE_COUNT + 11;
 
     /**
      * The feature id for the '<em><b>Referred By Ag Presence Condition Derived Statistics</b></em>' reference list.
@@ -3534,6 +3534,24 @@ public interface NsdPackage extends EPackage {
      */
     int DOC__REFERRED_BY_TITLED_CLASS = NSD_OBJECT_FEATURE_COUNT + 13;
 
+    /**
+     * The feature id for the '<em><b>Referred By Functional Constraint As Title</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE = NSD_OBJECT_FEATURE_COUNT + 14;
+
+    /**
+     * The feature id for the '<em><b>Referred By Presence Condition As Title</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE = NSD_OBJECT_FEATURE_COUNT + 15;
+
     /**
      * The number of structural features of the '<em>Doc</em>' class.
      * <!-- begin-user-doc -->
@@ -3541,7 +3559,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DOC_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 14;
+    int DOC_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 16;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -3859,13 +3877,22 @@ public interface NsdPackage extends EPackage {
     int FUNCTIONAL_CONSTRAINT__REFERRED_BY_DATA_ATTRIBUTE = NSD_OBJECT_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * The feature id for the '<em><b>Refers To Desc Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC = NSD_OBJECT_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Refers To Title Doc</b></em>' reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC = NSD_OBJECT_FEATURE_COUNT + 6;
+    int FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC = NSD_OBJECT_FEATURE_COUNT + 7;
 
     /**
      * The number of structural features of the '<em>Functional Constraint</em>' class.
@@ -3874,7 +3901,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 7;
+    int FUNCTIONAL_CONSTRAINT_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 8;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -4948,13 +4975,22 @@ public interface NsdPackage extends EPackage {
     int PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_ATTRIBUTE = NSD_OBJECT_FEATURE_COUNT + 9;
 
     /**
-     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * The feature id for the '<em><b>Refers To Desc Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int PRESENCE_CONDITION__REFERS_TO_DESC_DOC = NSD_OBJECT_FEATURE_COUNT + 10;
+
+    /**
+     * The feature id for the '<em><b>Refers To Title Doc</b></em>' reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION__REFERS_TO_DOC = NSD_OBJECT_FEATURE_COUNT + 10;
+    int PRESENCE_CONDITION__REFERS_TO_TITLE_DOC = NSD_OBJECT_FEATURE_COUNT + 11;
 
     /**
      * The number of structural features of the '<em>Presence Condition</em>' class.
@@ -4963,7 +4999,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 11;
+    int PRESENCE_CONDITION_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 12;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -8653,15 +8689,15 @@ public interface NsdPackage extends EPackage {
     EReference getDoc_ReferredByAgNSDesc();
 
     /**
-     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceCondition <em>Referred By Presence Condition</em>}'.
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsDesc <em>Referred By Presence Condition As Desc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the reference list '<em>Referred By Presence Condition</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceCondition()
+     * @return the meta object for the reference list '<em>Referred By Presence Condition As Desc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsDesc()
      * @see #getDoc()
      * @generated
      */
-    EReference getDoc_ReferredByPresenceCondition();
+    EReference getDoc_ReferredByPresenceConditionAsDesc();
 
     /**
      * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceCondition <em>Referred By Ag Presence Condition</em>}'.
@@ -8708,15 +8744,15 @@ public interface NsdPackage extends EPackage {
     EReference getDoc_ReferredByDocumentedClass();
 
     /**
-     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraint <em>Referred By Functional Constraint</em>}'.
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsDesc <em>Referred By Functional Constraint As Desc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the reference list '<em>Referred By Functional Constraint</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraint()
+     * @return the meta object for the reference list '<em>Referred By Functional Constraint As Desc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsDesc()
      * @see #getDoc()
      * @generated
      */
-    EReference getDoc_ReferredByFunctionalConstraint();
+    EReference getDoc_ReferredByFunctionalConstraintAsDesc();
 
     /**
      * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceConditionDerivedStatistics <em>Referred By Ag Presence Condition Derived Statistics</em>}'.
@@ -8740,6 +8776,28 @@ public interface NsdPackage extends EPackage {
      */
     EReference getDoc_ReferredByTitledClass();
 
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsTitle <em>Referred By Functional Constraint As Title</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Functional Constraint As Title</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraintAsTitle()
+     * @see #getDoc()
+     * @generated
+     */
+    EReference getDoc_ReferredByFunctionalConstraintAsTitle();
+
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsTitle <em>Referred By Presence Condition As Title</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Presence Condition As Title</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsTitle()
+     * @see #getDoc()
+     * @generated
+     */
+    EReference getDoc_ReferredByPresenceConditionAsTitle();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass <em>Documented Class</em>}'.
      * <!-- begin-user-doc -->
@@ -8990,15 +9048,26 @@ public interface NsdPackage extends EPackage {
     EReference getFunctionalConstraint_ReferredByDataAttribute();
 
     /**
-     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To Doc</em>}'.
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDescDoc <em>Refers To Desc Doc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the reference '<em>Refers To Doc</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc()
+     * @return the meta object for the reference '<em>Refers To Desc Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDescDoc()
      * @see #getFunctionalConstraint()
      * @generated
      */
-    EReference getFunctionalConstraint_RefersToDoc();
+    EReference getFunctionalConstraint_RefersToDescDoc();
+
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToTitleDoc <em>Refers To Title Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference '<em>Refers To Title Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToTitleDoc()
+     * @see #getFunctionalConstraint()
+     * @generated
+     */
+    EReference getFunctionalConstraint_RefersToTitleDoc();
 
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraints <em>Functional Constraints</em>}'.
@@ -9553,15 +9622,26 @@ public interface NsdPackage extends EPackage {
     EReference getPresenceCondition_ReferredBySubDataAttribute();
 
     /**
-     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To Doc</em>}'.
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDescDoc <em>Refers To Desc Doc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the reference '<em>Refers To Doc</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc()
+     * @return the meta object for the reference '<em>Refers To Desc Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDescDoc()
      * @see #getPresenceCondition()
      * @generated
      */
-    EReference getPresenceCondition_RefersToDoc();
+    EReference getPresenceCondition_RefersToDescDoc();
+
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToTitleDoc <em>Refers To Title Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference '<em>Refers To Title Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToTitleDoc()
+     * @see #getPresenceCondition()
+     * @generated
+     */
+    EReference getPresenceCondition_RefersToTitleDoc();
 
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions <em>Presence Conditions</em>}'.
@@ -11867,12 +11947,12 @@ public interface NsdPackage extends EPackage {
         EReference DOC__REFERRED_BY_AG_NS_DESC = eINSTANCE.getDoc_ReferredByAgNSDesc();
 
         /**
-         * The meta object literal for the '<em><b>Referred By Presence Condition</b></em>' reference list feature.
+         * The meta object literal for the '<em><b>Referred By Presence Condition As Desc</b></em>' reference list feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference DOC__REFERRED_BY_PRESENCE_CONDITION = eINSTANCE.getDoc_ReferredByPresenceCondition();
+        EReference DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC = eINSTANCE.getDoc_ReferredByPresenceConditionAsDesc();
 
         /**
          * The meta object literal for the '<em><b>Referred By Ag Presence Condition</b></em>' reference list feature.
@@ -11907,12 +11987,13 @@ public interface NsdPackage extends EPackage {
         EReference DOC__REFERRED_BY_DOCUMENTED_CLASS = eINSTANCE.getDoc_ReferredByDocumentedClass();
 
         /**
-         * The meta object literal for the '<em><b>Referred By Functional Constraint</b></em>' reference list feature.
+         * The meta object literal for the '<em><b>Referred By Functional Constraint As Desc</b></em>' reference list feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT = eINSTANCE.getDoc_ReferredByFunctionalConstraint();
+        EReference DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC = eINSTANCE
+                .getDoc_ReferredByFunctionalConstraintAsDesc();
 
         /**
          * The meta object literal for the '<em><b>Referred By Ag Presence Condition Derived Statistics</b></em>' reference list feature.
@@ -11931,6 +12012,23 @@ public interface NsdPackage extends EPackage {
          */
         EReference DOC__REFERRED_BY_TITLED_CLASS = eINSTANCE.getDoc_ReferredByTitledClass();
 
+        /**
+         * The meta object literal for the '<em><b>Referred By Functional Constraint As Title</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE = eINSTANCE
+                .getDoc_ReferredByFunctionalConstraintAsTitle();
+
+        /**
+         * The meta object literal for the '<em><b>Referred By Presence Condition As Title</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE = eINSTANCE.getDoc_ReferredByPresenceConditionAsTitle();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl <em>Documented Class</em>}' class.
          * <!-- begin-user-doc -->
@@ -12127,12 +12225,20 @@ public interface NsdPackage extends EPackage {
                 .getFunctionalConstraint_ReferredByDataAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Refers To Doc</b></em>' reference feature.
+         * The meta object literal for the '<em><b>Refers To Desc Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC = eINSTANCE.getFunctionalConstraint_RefersToDescDoc();
+
+        /**
+         * The meta object literal for the '<em><b>Refers To Title Doc</b></em>' reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC = eINSTANCE.getFunctionalConstraint_RefersToDoc();
+        EReference FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC = eINSTANCE.getFunctionalConstraint_RefersToTitleDoc();
 
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintsImpl <em>Functional Constraints</em>}' class.
@@ -12567,12 +12673,20 @@ public interface NsdPackage extends EPackage {
                 .getPresenceCondition_ReferredBySubDataAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Refers To Doc</b></em>' reference feature.
+         * The meta object literal for the '<em><b>Refers To Desc Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference PRESENCE_CONDITION__REFERS_TO_DESC_DOC = eINSTANCE.getPresenceCondition_RefersToDescDoc();
+
+        /**
+         * The meta object literal for the '<em><b>Refers To Title Doc</b></em>' reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference PRESENCE_CONDITION__REFERS_TO_DOC = eINSTANCE.getPresenceCondition_RefersToDoc();
+        EReference PRESENCE_CONDITION__REFERS_TO_TITLE_DOC = eINSTANCE.getPresenceCondition_RefersToTitleDoc();
 
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionsImpl <em>Presence Conditions</em>}' class.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceCondition.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceCondition.java
index 8f406e7972ecce04c40443c13f306e7c292ff8a3..b0dcfd88dfa4da6b2716e855ef413744e15829f4 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceCondition.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceCondition.java
@@ -40,7 +40,8 @@ import org.eclipse.emf.common.util.EList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getReferredBySubDataObject <em>Referred By Sub Data Object</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getReferredByDataAttribute <em>Referred By Data Attribute</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getReferredBySubDataAttribute <em>Referred By Sub Data Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDescDoc <em>Refers To Desc Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToTitleDoc <em>Refers To Title Doc</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getPresenceCondition()
@@ -480,54 +481,105 @@ public interface PresenceCondition extends NsdObject {
     boolean isSetReferredBySubDataAttribute();
 
     /**
-     * Returns the value of the '<em><b>Refers To Doc</b></em>' reference.
-     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceCondition <em>Referred By Presence Condition</em>}'.
+     * Returns the value of the '<em><b>Refers To Desc Doc</b></em>' reference.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsDesc <em>Referred By Presence Condition As Desc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the value of the '<em>Refers To Doc</em>' reference.
-     * @see #isSetRefersToDoc()
-     * @see #unsetRefersToDoc()
-     * @see #setRefersToDoc(Doc)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getPresenceCondition_RefersToDoc()
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceCondition
-     * @model opposite="referredByPresenceCondition" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @return the value of the '<em>Refers To Desc Doc</em>' reference.
+     * @see #isSetRefersToDescDoc()
+     * @see #unsetRefersToDescDoc()
+     * @see #setRefersToDescDoc(Doc)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getPresenceCondition_RefersToDescDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsDesc
+     * @model opposite="referredByPresenceConditionAsDesc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
      * @generated
      */
-    Doc getRefersToDoc();
+    Doc getRefersToDescDoc();
 
     /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDescDoc <em>Refers To Desc Doc</em>}' reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Refers To Doc</em>' reference.
-     * @see #isSetRefersToDoc()
-     * @see #unsetRefersToDoc()
-     * @see #getRefersToDoc()
+     * @param value the new value of the '<em>Refers To Desc Doc</em>' reference.
+     * @see #isSetRefersToDescDoc()
+     * @see #unsetRefersToDescDoc()
+     * @see #getRefersToDescDoc()
      * @generated
      */
-    void setRefersToDoc( Doc value );
+    void setRefersToDescDoc( Doc value );
 
     /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDescDoc <em>Refers To Desc Doc</em>}' reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isSetRefersToDoc()
-     * @see #getRefersToDoc()
-     * @see #setRefersToDoc(Doc)
+     * @see #isSetRefersToDescDoc()
+     * @see #getRefersToDescDoc()
+     * @see #setRefersToDescDoc(Doc)
      * @generated
      */
-    void unsetRefersToDoc();
+    void unsetRefersToDescDoc();
 
     /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To Doc</em>}' reference is set.
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDescDoc <em>Refers To Desc Doc</em>}' reference is set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Refers To Doc</em>' reference is set.
-     * @see #unsetRefersToDoc()
-     * @see #getRefersToDoc()
-     * @see #setRefersToDoc(Doc)
+     * @return whether the value of the '<em>Refers To Desc Doc</em>' reference is set.
+     * @see #unsetRefersToDescDoc()
+     * @see #getRefersToDescDoc()
+     * @see #setRefersToDescDoc(Doc)
      * @generated
      */
-    boolean isSetRefersToDoc();
+    boolean isSetRefersToDescDoc();
+
+    /**
+     * Returns the value of the '<em><b>Refers To Title Doc</b></em>' reference.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsTitle <em>Referred By Presence Condition As Title</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Refers To Title Doc</em>' reference.
+     * @see #isSetRefersToTitleDoc()
+     * @see #unsetRefersToTitleDoc()
+     * @see #setRefersToTitleDoc(Doc)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getPresenceCondition_RefersToTitleDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceConditionAsTitle
+     * @model opposite="referredByPresenceConditionAsTitle" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    Doc getRefersToTitleDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToTitleDoc <em>Refers To Title Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Refers To Title Doc</em>' reference.
+     * @see #isSetRefersToTitleDoc()
+     * @see #unsetRefersToTitleDoc()
+     * @see #getRefersToTitleDoc()
+     * @generated
+     */
+    void setRefersToTitleDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToTitleDoc <em>Refers To Title Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToTitleDoc()
+     * @see #getRefersToTitleDoc()
+     * @see #setRefersToTitleDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToTitleDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToTitleDoc <em>Refers To Title Doc</em>}' reference is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Refers To Title Doc</em>' reference is set.
+     * @see #unsetRefersToTitleDoc()
+     * @see #getRefersToTitleDoc()
+     * @see #setRefersToTitleDoc(Doc)
+     * @generated
+     */
+    boolean isSetRefersToTitleDoc();
 
 } // PresenceCondition
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
index f76dc943357ffd7ef2e0ac41abfe0b43df50ca08..d1c7f38e9178d617a9b700d16192100fc3f4872d 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
@@ -3590,11 +3590,14 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
             else {
                 setRefersToFunctionalConstraint( foundFC );
                 String foundWhere = "(???";
-                if( getRefersToFunctionalConstraint().getParentFunctionalConstraints().getParentNS() !=  null ) {
-                    foundWhere = "NS (id:" + getRefersToFunctionalConstraint().getParentFunctionalConstraints().getParentNS().getId();
+                if( getRefersToFunctionalConstraint().getParentFunctionalConstraints().getParentNS() != null ) {
+                    foundWhere = "NS (id:"
+                            + getRefersToFunctionalConstraint().getParentFunctionalConstraints().getParentNS().getId();
                 }
-                else if( getRefersToFunctionalConstraint().getParentFunctionalConstraints().getParentServiceNS() != null ) {
-                    foundWhere = "ServiceNS (id:" + getRefersToFunctionalConstraint().getParentFunctionalConstraints().getParentServiceNS().getId();
+                else if( getRefersToFunctionalConstraint().getParentFunctionalConstraints()
+                        .getParentServiceNS() != null ) {
+                    foundWhere = "ServiceNS (id:" + getRefersToFunctionalConstraint().getParentFunctionalConstraints()
+                            .getParentServiceNS().getId();
                 }
                 console.info( "[NSD links] FunctionalConstraint (abbreviation: " + getFc()
                         + ") refers by DataAttribute (name: "
@@ -3612,11 +3615,13 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
             else {
                 setRefersToPresenceCondition( foundPC );
                 String foundWhere = "(???";
-                if( getRefersToPresenceCondition().getParentPresenceConditions().getParentNS() !=  null ) {
-                    foundWhere = "NS (id:" + getRefersToPresenceCondition().getParentPresenceConditions().getParentNS().getId();
+                if( getRefersToPresenceCondition().getParentPresenceConditions().getParentNS() != null ) {
+                    foundWhere = "NS (id:"
+                            + getRefersToPresenceCondition().getParentPresenceConditions().getParentNS().getId();
                 }
                 else if( getRefersToPresenceCondition().getParentPresenceConditions().getParentServiceNS() != null ) {
-                    foundWhere = "ServiceNS (id:" + getRefersToPresenceCondition().getParentPresenceConditions().getParentServiceNS().getId();
+                    foundWhere = "ServiceNS (id:"
+                            + getRefersToPresenceCondition().getParentPresenceConditions().getParentServiceNS().getId();
                 }
                 console.info( "[NSD links] PresenceCondition (name: " + getPresCond()
                         + ") refers by DataAttribute (name: "
@@ -3679,7 +3684,8 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
                     }
                     break;
                 case DefinedAttributeTypeKind.CONSTRUCTED_VALUE:
-                    ConstructedAttribute foundCA = rs.findConstructedAttribute( getType(), getNsIdentification(), console );
+                    ConstructedAttribute foundCA = rs.findConstructedAttribute( getType(), getNsIdentification(),
+                            console );
 
                     if( foundCA == null ) {
                         console.warning( messagePrefix + "ConstructedAttribute (name: " + getType() + ") not found" );
@@ -3687,11 +3693,13 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
                     else {
                         setRefersToConstructedAttribute( foundCA );
                         String foundWhere = "(???";
-                        if( getRefersToConstructedAttribute().getParentConstructedAttributes() !=  null ) {
-                            foundWhere = "NS (id:" + getRefersToConstructedAttribute().getParentConstructedAttributes().getParentNS().getId();
+                        if( getRefersToConstructedAttribute().getParentConstructedAttributes() != null ) {
+                            foundWhere = "NS (id:" + getRefersToConstructedAttribute().getParentConstructedAttributes()
+                                    .getParentNS().getId();
                         }
                         else if( getRefersToConstructedAttribute().getParentServiceTypeRealizations() != null ) {
-                            foundWhere = "ServiceNS (id:" + getRefersToConstructedAttribute().getParentServiceTypeRealizations().getParentServiceNS().getId();
+                            foundWhere = "ServiceNS (id:" + getRefersToConstructedAttribute()
+                                    .getParentServiceTypeRealizations().getParentServiceNS().getId();
                         }
                         console.info( "[NSD links] ConstructedAttribute (name: " + getType()
                                 + ") refers as type by DataAttribute (name: "
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocImpl.java
index e8aa229f0a54c78064e60228d64bd2b5fa707d8d..8f650273966788b2a1cb68b60552fca95d0a0029 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocImpl.java
@@ -61,14 +61,16 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getParentNSDoc <em>Parent NS Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByAgNSDesc <em>Referred By Ag NS Desc</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByPresenceCondition <em>Referred By Presence Condition</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByPresenceConditionAsDesc <em>Referred By Presence Condition As Desc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByAgPresenceCondition <em>Referred By Ag Presence Condition</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByAbbreviation <em>Referred By Abbreviation</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByBasicType <em>Referred By Basic Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByDocumentedClass <em>Referred By Documented Class</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByFunctionalConstraint <em>Referred By Functional Constraint</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByFunctionalConstraintAsDesc <em>Referred By Functional Constraint As Desc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByAgPresenceConditionDerivedStatistics <em>Referred By Ag Presence Condition Derived Statistics</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByTitledClass <em>Referred By Titled Class</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByFunctionalConstraintAsTitle <em>Referred By Functional Constraint As Title</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getReferredByPresenceConditionAsTitle <em>Referred By Presence Condition As Title</em>}</li>
  * </ul>
  *
  * @generated
@@ -124,14 +126,14 @@ public class DocImpl extends NsdObjectImpl implements Doc {
     protected EList< AgNSdesc > referredByAgNSDesc;
 
     /**
-     * The cached value of the '{@link #getReferredByPresenceCondition() <em>Referred By Presence Condition</em>}' reference list.
+     * The cached value of the '{@link #getReferredByPresenceConditionAsDesc() <em>Referred By Presence Condition As Desc</em>}' reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getReferredByPresenceCondition()
+     * @see #getReferredByPresenceConditionAsDesc()
      * @generated
      * @ordered
      */
-    protected EList< PresenceCondition > referredByPresenceCondition;
+    protected EList< PresenceCondition > referredByPresenceConditionAsDesc;
 
     /**
      * The cached value of the '{@link #getReferredByAgPresenceCondition() <em>Referred By Ag Presence Condition</em>}' reference list.
@@ -174,14 +176,14 @@ public class DocImpl extends NsdObjectImpl implements Doc {
     protected EList< DocumentedClass > referredByDocumentedClass;
 
     /**
-     * The cached value of the '{@link #getReferredByFunctionalConstraint() <em>Referred By Functional Constraint</em>}' reference list.
+     * The cached value of the '{@link #getReferredByFunctionalConstraintAsDesc() <em>Referred By Functional Constraint As Desc</em>}' reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getReferredByFunctionalConstraint()
+     * @see #getReferredByFunctionalConstraintAsDesc()
      * @generated
      * @ordered
      */
-    protected EList< FunctionalConstraint > referredByFunctionalConstraint;
+    protected EList< FunctionalConstraint > referredByFunctionalConstraintAsDesc;
 
     /**
      * The cached value of the '{@link #getReferredByAgPresenceConditionDerivedStatistics() <em>Referred By Ag Presence Condition Derived Statistics</em>}' reference list.
@@ -203,6 +205,26 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      */
     protected EList< TitledClass > referredByTitledClass;
 
+    /**
+     * The cached value of the '{@link #getReferredByFunctionalConstraintAsTitle() <em>Referred By Functional Constraint As Title</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByFunctionalConstraintAsTitle()
+     * @generated
+     * @ordered
+     */
+    protected EList< FunctionalConstraint > referredByFunctionalConstraintAsTitle;
+
+    /**
+     * The cached value of the '{@link #getReferredByPresenceConditionAsTitle() <em>Referred By Presence Condition As Title</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByPresenceConditionAsTitle()
+     * @generated
+     * @ordered
+     */
+    protected EList< PresenceCondition > referredByPresenceConditionAsTitle;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -392,13 +414,13 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      * @generated
      */
     @Override
-    public EList< PresenceCondition > getReferredByPresenceCondition() {
-        if( referredByPresenceCondition == null ) {
-            referredByPresenceCondition = new EObjectWithInverseEList.Unsettable< PresenceCondition >(
-                    PresenceCondition.class, this, NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION,
-                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC );
+    public EList< PresenceCondition > getReferredByPresenceConditionAsDesc() {
+        if( referredByPresenceConditionAsDesc == null ) {
+            referredByPresenceConditionAsDesc = new EObjectWithInverseEList.Unsettable< PresenceCondition >(
+                    PresenceCondition.class, this, NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC,
+                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC );
         }
-        return referredByPresenceCondition;
+        return referredByPresenceConditionAsDesc;
     }
 
     /**
@@ -407,9 +429,9 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      * @generated
      */
     @Override
-    public void unsetReferredByPresenceCondition() {
-        if( referredByPresenceCondition != null )
-            ( ( InternalEList.Unsettable< ? > ) referredByPresenceCondition ).unset();
+    public void unsetReferredByPresenceConditionAsDesc() {
+        if( referredByPresenceConditionAsDesc != null )
+            ( ( InternalEList.Unsettable< ? > ) referredByPresenceConditionAsDesc ).unset();
     }
 
     /**
@@ -418,9 +440,9 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      * @generated
      */
     @Override
-    public boolean isSetReferredByPresenceCondition() {
-        return referredByPresenceCondition != null
-                && ( ( InternalEList.Unsettable< ? > ) referredByPresenceCondition ).isSet();
+    public boolean isSetReferredByPresenceConditionAsDesc() {
+        return referredByPresenceConditionAsDesc != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByPresenceConditionAsDesc ).isSet();
     }
 
     /**
@@ -570,13 +592,13 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      * @generated
      */
     @Override
-    public EList< FunctionalConstraint > getReferredByFunctionalConstraint() {
-        if( referredByFunctionalConstraint == null ) {
-            referredByFunctionalConstraint = new EObjectWithInverseEList.Unsettable< FunctionalConstraint >(
-                    FunctionalConstraint.class, this, NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT,
-                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC );
+    public EList< FunctionalConstraint > getReferredByFunctionalConstraintAsDesc() {
+        if( referredByFunctionalConstraintAsDesc == null ) {
+            referredByFunctionalConstraintAsDesc = new EObjectWithInverseEList.Unsettable< FunctionalConstraint >(
+                    FunctionalConstraint.class, this, NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC,
+                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC );
         }
-        return referredByFunctionalConstraint;
+        return referredByFunctionalConstraintAsDesc;
     }
 
     /**
@@ -585,9 +607,9 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      * @generated
      */
     @Override
-    public void unsetReferredByFunctionalConstraint() {
-        if( referredByFunctionalConstraint != null )
-            ( ( InternalEList.Unsettable< ? > ) referredByFunctionalConstraint ).unset();
+    public void unsetReferredByFunctionalConstraintAsDesc() {
+        if( referredByFunctionalConstraintAsDesc != null )
+            ( ( InternalEList.Unsettable< ? > ) referredByFunctionalConstraintAsDesc ).unset();
     }
 
     /**
@@ -596,9 +618,9 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      * @generated
      */
     @Override
-    public boolean isSetReferredByFunctionalConstraint() {
-        return referredByFunctionalConstraint != null
-                && ( ( InternalEList.Unsettable< ? > ) referredByFunctionalConstraint ).isSet();
+    public boolean isSetReferredByFunctionalConstraintAsDesc() {
+        return referredByFunctionalConstraintAsDesc != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByFunctionalConstraintAsDesc ).isSet();
     }
 
     /**
@@ -673,6 +695,80 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         return referredByTitledClass != null && ( ( InternalEList.Unsettable< ? > ) referredByTitledClass ).isSet();
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< FunctionalConstraint > getReferredByFunctionalConstraintAsTitle() {
+        if( referredByFunctionalConstraintAsTitle == null ) {
+            referredByFunctionalConstraintAsTitle = new EObjectWithInverseEList.Unsettable< FunctionalConstraint >(
+                    FunctionalConstraint.class, this, NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE,
+                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC );
+        }
+        return referredByFunctionalConstraintAsTitle;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByFunctionalConstraintAsTitle() {
+        if( referredByFunctionalConstraintAsTitle != null )
+            ( ( InternalEList.Unsettable< ? > ) referredByFunctionalConstraintAsTitle ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByFunctionalConstraintAsTitle() {
+        return referredByFunctionalConstraintAsTitle != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByFunctionalConstraintAsTitle ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< PresenceCondition > getReferredByPresenceConditionAsTitle() {
+        if( referredByPresenceConditionAsTitle == null ) {
+            referredByPresenceConditionAsTitle = new EObjectWithInverseEList.Unsettable< PresenceCondition >(
+                    PresenceCondition.class, this, NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE,
+                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC );
+        }
+        return referredByPresenceConditionAsTitle;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByPresenceConditionAsTitle() {
+        if( referredByPresenceConditionAsTitle != null )
+            ( ( InternalEList.Unsettable< ? > ) referredByPresenceConditionAsTitle ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByPresenceConditionAsTitle() {
+        return referredByPresenceConditionAsTitle != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByPresenceConditionAsTitle ).isSet();
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -689,8 +785,8 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         case NsdPackage.DOC__REFERRED_BY_AG_NS_DESC:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByAgNSDesc() )
                     .basicAdd( otherEnd, msgs );
-        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION:
-            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByPresenceCondition() )
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByPresenceConditionAsDesc() )
                     .basicAdd( otherEnd, msgs );
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByAgPresenceCondition() )
@@ -704,8 +800,8 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         case NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByDocumentedClass() )
                     .basicAdd( otherEnd, msgs );
-        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT:
-            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByFunctionalConstraint() )
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByFunctionalConstraintAsDesc() )
                     .basicAdd( otherEnd, msgs );
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByAgPresenceConditionDerivedStatistics() )
@@ -713,6 +809,12 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         case NsdPackage.DOC__REFERRED_BY_TITLED_CLASS:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByTitledClass() )
                     .basicAdd( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByFunctionalConstraintAsTitle() )
+                    .basicAdd( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByPresenceConditionAsTitle() )
+                    .basicAdd( otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -735,8 +837,8 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return basicSetParentNSDoc( null, msgs );
         case NsdPackage.DOC__REFERRED_BY_AG_NS_DESC:
             return ( ( InternalEList< ? > ) getReferredByAgNSDesc() ).basicRemove( otherEnd, msgs );
-        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION:
-            return ( ( InternalEList< ? > ) getReferredByPresenceCondition() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC:
+            return ( ( InternalEList< ? > ) getReferredByPresenceConditionAsDesc() ).basicRemove( otherEnd, msgs );
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
             return ( ( InternalEList< ? > ) getReferredByAgPresenceCondition() ).basicRemove( otherEnd, msgs );
         case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
@@ -745,13 +847,17 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return ( ( InternalEList< ? > ) getReferredByBasicType() ).basicRemove( otherEnd, msgs );
         case NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS:
             return ( ( InternalEList< ? > ) getReferredByDocumentedClass() ).basicRemove( otherEnd, msgs );
-        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT:
-            return ( ( InternalEList< ? > ) getReferredByFunctionalConstraint() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC:
+            return ( ( InternalEList< ? > ) getReferredByFunctionalConstraintAsDesc() ).basicRemove( otherEnd, msgs );
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
             return ( ( InternalEList< ? > ) getReferredByAgPresenceConditionDerivedStatistics() ).basicRemove( otherEnd,
                     msgs );
         case NsdPackage.DOC__REFERRED_BY_TITLED_CLASS:
             return ( ( InternalEList< ? > ) getReferredByTitledClass() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE:
+            return ( ( InternalEList< ? > ) getReferredByFunctionalConstraintAsTitle() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE:
+            return ( ( InternalEList< ? > ) getReferredByPresenceConditionAsTitle() ).basicRemove( otherEnd, msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -793,8 +899,8 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return getParentNSDoc();
         case NsdPackage.DOC__REFERRED_BY_AG_NS_DESC:
             return getReferredByAgNSDesc();
-        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION:
-            return getReferredByPresenceCondition();
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC:
+            return getReferredByPresenceConditionAsDesc();
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
             return getReferredByAgPresenceCondition();
         case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
@@ -803,12 +909,16 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return getReferredByBasicType();
         case NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS:
             return getReferredByDocumentedClass();
-        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT:
-            return getReferredByFunctionalConstraint();
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC:
+            return getReferredByFunctionalConstraintAsDesc();
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
             return getReferredByAgPresenceConditionDerivedStatistics();
         case NsdPackage.DOC__REFERRED_BY_TITLED_CLASS:
             return getReferredByTitledClass();
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE:
+            return getReferredByFunctionalConstraintAsTitle();
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE:
+            return getReferredByPresenceConditionAsTitle();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -841,9 +951,9 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             getReferredByAgNSDesc().clear();
             getReferredByAgNSDesc().addAll( ( Collection< ? extends AgNSdesc > ) newValue );
             return;
-        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION:
-            getReferredByPresenceCondition().clear();
-            getReferredByPresenceCondition().addAll( ( Collection< ? extends PresenceCondition > ) newValue );
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC:
+            getReferredByPresenceConditionAsDesc().clear();
+            getReferredByPresenceConditionAsDesc().addAll( ( Collection< ? extends PresenceCondition > ) newValue );
             return;
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
             getReferredByAgPresenceCondition().clear();
@@ -861,9 +971,10 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             getReferredByDocumentedClass().clear();
             getReferredByDocumentedClass().addAll( ( Collection< ? extends DocumentedClass > ) newValue );
             return;
-        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT:
-            getReferredByFunctionalConstraint().clear();
-            getReferredByFunctionalConstraint().addAll( ( Collection< ? extends FunctionalConstraint > ) newValue );
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC:
+            getReferredByFunctionalConstraintAsDesc().clear();
+            getReferredByFunctionalConstraintAsDesc()
+                    .addAll( ( Collection< ? extends FunctionalConstraint > ) newValue );
             return;
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
             getReferredByAgPresenceConditionDerivedStatistics().clear();
@@ -874,6 +985,15 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             getReferredByTitledClass().clear();
             getReferredByTitledClass().addAll( ( Collection< ? extends TitledClass > ) newValue );
             return;
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE:
+            getReferredByFunctionalConstraintAsTitle().clear();
+            getReferredByFunctionalConstraintAsTitle()
+                    .addAll( ( Collection< ? extends FunctionalConstraint > ) newValue );
+            return;
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE:
+            getReferredByPresenceConditionAsTitle().clear();
+            getReferredByPresenceConditionAsTitle().addAll( ( Collection< ? extends PresenceCondition > ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -904,8 +1024,8 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         case NsdPackage.DOC__REFERRED_BY_AG_NS_DESC:
             unsetReferredByAgNSDesc();
             return;
-        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION:
-            unsetReferredByPresenceCondition();
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC:
+            unsetReferredByPresenceConditionAsDesc();
             return;
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
             unsetReferredByAgPresenceCondition();
@@ -919,8 +1039,8 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         case NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS:
             unsetReferredByDocumentedClass();
             return;
-        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT:
-            unsetReferredByFunctionalConstraint();
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC:
+            unsetReferredByFunctionalConstraintAsDesc();
             return;
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
             unsetReferredByAgPresenceConditionDerivedStatistics();
@@ -928,6 +1048,12 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         case NsdPackage.DOC__REFERRED_BY_TITLED_CLASS:
             unsetReferredByTitledClass();
             return;
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE:
+            unsetReferredByFunctionalConstraintAsTitle();
+            return;
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE:
+            unsetReferredByPresenceConditionAsTitle();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -952,8 +1078,8 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return getParentNSDoc() != null;
         case NsdPackage.DOC__REFERRED_BY_AG_NS_DESC:
             return isSetReferredByAgNSDesc();
-        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION:
-            return isSetReferredByPresenceCondition();
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC:
+            return isSetReferredByPresenceConditionAsDesc();
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
             return isSetReferredByAgPresenceCondition();
         case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
@@ -962,12 +1088,16 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return isSetReferredByBasicType();
         case NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS:
             return isSetReferredByDocumentedClass();
-        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT:
-            return isSetReferredByFunctionalConstraint();
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC:
+            return isSetReferredByFunctionalConstraintAsDesc();
         case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
             return isSetReferredByAgPresenceConditionDerivedStatistics();
         case NsdPackage.DOC__REFERRED_BY_TITLED_CLASS:
             return isSetReferredByTitledClass();
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE:
+            return isSetReferredByFunctionalConstraintAsTitle();
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE:
+            return isSetReferredByPresenceConditionAsTitle();
         }
         return super.eIsSet( featureID );
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintImpl.java
index 37b337bf9c9d9734bbc7490cfc76663b62476461..4bb019ba483a36d08db0885eb19c584673e36bb5 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintImpl.java
@@ -56,7 +56,8 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl#getTitleID <em>Title ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl#getParentFunctionalConstraints <em>Parent Functional Constraints</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl#getReferredByDataAttribute <em>Referred By Data Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl#getRefersToDoc <em>Refers To Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl#getRefersToDescDoc <em>Refers To Desc Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl#getRefersToTitleDoc <em>Refers To Title Doc</em>}</li>
  * </ul>
  *
  * @generated
@@ -179,23 +180,42 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
     protected EList< DataAttribute > referredByDataAttribute;
 
     /**
-     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * The cached value of the '{@link #getRefersToDescDoc() <em>Refers To Desc Doc</em>}' reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRefersToDoc()
+     * @see #getRefersToDescDoc()
      * @generated
      * @ordered
      */
-    protected Doc refersToDoc;
+    protected Doc refersToDescDoc;
 
     /**
-     * This is true if the Refers To Doc reference has been set.
+     * This is true if the Refers To Desc Doc reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean refersToDocESet;
+    protected boolean refersToDescDocESet;
+
+    /**
+     * The cached value of the '{@link #getRefersToTitleDoc() <em>Refers To Title Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToTitleDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToTitleDoc;
+
+    /**
+     * This is true if the Refers To Title Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToTitleDocESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -580,8 +600,103 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
      * @generated
      */
     @Override
-    public Doc getRefersToDoc() {
-        return refersToDoc;
+    public Doc getRefersToDescDoc() {
+        return refersToDescDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDescDoc( Doc newRefersToDescDoc, NotificationChain msgs ) {
+        Doc oldRefersToDescDoc = refersToDescDoc;
+        refersToDescDoc = newRefersToDescDoc;
+        boolean oldRefersToDescDocESet = refersToDescDocESet;
+        refersToDescDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC, oldRefersToDescDoc, newRefersToDescDoc,
+                    !oldRefersToDescDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDescDoc( Doc newRefersToDescDoc ) {
+        if( newRefersToDescDoc != refersToDescDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDescDoc != null )
+                msgs = ( ( InternalEObject ) refersToDescDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC, Doc.class, msgs );
+            if( newRefersToDescDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDescDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC, Doc.class, msgs );
+            msgs = basicSetRefersToDescDoc( newRefersToDescDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDescDocESet = refersToDescDocESet;
+            refersToDescDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC, newRefersToDescDoc, newRefersToDescDoc,
+                        !oldRefersToDescDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDescDoc( NotificationChain msgs ) {
+        Doc oldRefersToDescDoc = refersToDescDoc;
+        refersToDescDoc = null;
+        boolean oldRefersToDescDocESet = refersToDescDocESet;
+        refersToDescDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC, oldRefersToDescDoc, null,
+                    oldRefersToDescDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDescDoc() {
+        if( refersToDescDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDescDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC, Doc.class, msgs );
+            msgs = basicUnsetRefersToDescDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDescDocESet = refersToDescDocESet;
+            refersToDescDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC, null, null, oldRefersToDescDocESet ) );
+        }
     }
 
     /**
@@ -589,15 +704,35 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
      * <!-- end-user-doc -->
      * @generated
      */
-    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
-        Doc oldRefersToDoc = refersToDoc;
-        refersToDoc = newRefersToDoc;
-        boolean oldRefersToDocESet = refersToDocESet;
-        refersToDocESet = true;
+    @Override
+    public boolean isSetRefersToDescDoc() {
+        return refersToDescDocESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToTitleDoc() {
+        return refersToTitleDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToTitleDoc( Doc newRefersToTitleDoc, NotificationChain msgs ) {
+        Doc oldRefersToTitleDoc = refersToTitleDoc;
+        refersToTitleDoc = newRefersToTitleDoc;
+        boolean oldRefersToTitleDocESet = refersToTitleDocESet;
+        refersToTitleDocESet = true;
         if( eNotificationRequired() ) {
             ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
-                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc,
-                    !oldRefersToDocESet );
+                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC, oldRefersToTitleDoc, newRefersToTitleDoc,
+                    !oldRefersToTitleDocESet );
             if( msgs == null )
                 msgs = notification;
             else
@@ -612,24 +747,25 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
      * @generated
      */
     @Override
-    public void setRefersToDoc( Doc newRefersToDoc ) {
-        if( newRefersToDoc != refersToDoc ) {
+    public void setRefersToTitleDoc( Doc newRefersToTitleDoc ) {
+        if( newRefersToTitleDoc != refersToTitleDoc ) {
             NotificationChain msgs = null;
-            if( refersToDoc != null )
-                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
-                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT, Doc.class, msgs );
-            if( newRefersToDoc != null )
-                msgs = ( ( InternalEObject ) newRefersToDoc ).eInverseAdd( this,
-                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT, Doc.class, msgs );
-            msgs = basicSetRefersToDoc( newRefersToDoc, msgs );
+            if( refersToTitleDoc != null )
+                msgs = ( ( InternalEObject ) refersToTitleDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE, Doc.class, msgs );
+            if( newRefersToTitleDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToTitleDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE, Doc.class, msgs );
+            msgs = basicSetRefersToTitleDoc( newRefersToTitleDoc, msgs );
             if( msgs != null ) msgs.dispatch();
         }
         else {
-            boolean oldRefersToDocESet = refersToDocESet;
-            refersToDocESet = true;
+            boolean oldRefersToTitleDocESet = refersToTitleDocESet;
+            refersToTitleDocESet = true;
             if( eNotificationRequired() )
-                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC,
-                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC, newRefersToTitleDoc, newRefersToTitleDoc,
+                        !oldRefersToTitleDocESet ) );
         }
     }
 
@@ -638,14 +774,15 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
      * <!-- end-user-doc -->
      * @generated
      */
-    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
-        Doc oldRefersToDoc = refersToDoc;
-        refersToDoc = null;
-        boolean oldRefersToDocESet = refersToDocESet;
-        refersToDocESet = false;
+    public NotificationChain basicUnsetRefersToTitleDoc( NotificationChain msgs ) {
+        Doc oldRefersToTitleDoc = refersToTitleDoc;
+        refersToTitleDoc = null;
+        boolean oldRefersToTitleDocESet = refersToTitleDocESet;
+        refersToTitleDocESet = false;
         if( eNotificationRequired() ) {
             ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
-                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC, oldRefersToTitleDoc, null,
+                    oldRefersToTitleDocESet );
             if( msgs == null )
                 msgs = notification;
             else
@@ -660,20 +797,20 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
      * @generated
      */
     @Override
-    public void unsetRefersToDoc() {
-        if( refersToDoc != null ) {
+    public void unsetRefersToTitleDoc() {
+        if( refersToTitleDoc != null ) {
             NotificationChain msgs = null;
-            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
-                    NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT, Doc.class, msgs );
-            msgs = basicUnsetRefersToDoc( msgs );
+            msgs = ( ( InternalEObject ) refersToTitleDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE, Doc.class, msgs );
+            msgs = basicUnsetRefersToTitleDoc( msgs );
             if( msgs != null ) msgs.dispatch();
         }
         else {
-            boolean oldRefersToDocESet = refersToDocESet;
-            refersToDocESet = false;
+            boolean oldRefersToTitleDocESet = refersToTitleDocESet;
+            refersToTitleDocESet = false;
             if( eNotificationRequired() )
                 eNotify( new ENotificationImpl( this, Notification.UNSET,
-                        NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC, null, null, oldRefersToDocESet ) );
+                        NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC, null, null, oldRefersToTitleDocESet ) );
         }
     }
 
@@ -683,8 +820,8 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
      * @generated
      */
     @Override
-    public boolean isSetRefersToDoc() {
-        return refersToDocESet;
+    public boolean isSetRefersToTitleDoc() {
+        return refersToTitleDocESet;
     }
 
     /**
@@ -708,11 +845,16 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
         case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERRED_BY_DATA_ATTRIBUTE:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByDataAttribute() )
                     .basicAdd( otherEnd, msgs );
-        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC:
-            if( refersToDoc != null )
-                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
-                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT, Doc.class, msgs );
-            return basicSetRefersToDoc( ( Doc ) otherEnd, msgs );
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC:
+            if( refersToDescDoc != null )
+                msgs = ( ( InternalEObject ) refersToDescDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC, Doc.class, msgs );
+            return basicSetRefersToDescDoc( ( Doc ) otherEnd, msgs );
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC:
+            if( refersToTitleDoc != null )
+                msgs = ( ( InternalEObject ) refersToTitleDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE, Doc.class, msgs );
+            return basicSetRefersToTitleDoc( ( Doc ) otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -731,8 +873,10 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
             return basicSetParentFunctionalConstraints( null, msgs );
         case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERRED_BY_DATA_ATTRIBUTE:
             return ( ( InternalEList< ? > ) getReferredByDataAttribute() ).basicRemove( otherEnd, msgs );
-        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC:
-            return basicUnsetRefersToDoc( msgs );
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC:
+            return basicUnsetRefersToDescDoc( msgs );
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC:
+            return basicUnsetRefersToTitleDoc( msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -772,8 +916,10 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
             return getParentFunctionalConstraints();
         case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERRED_BY_DATA_ATTRIBUTE:
             return getReferredByDataAttribute();
-        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC:
-            return getRefersToDoc();
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC:
+            return getRefersToDescDoc();
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC:
+            return getRefersToTitleDoc();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -806,8 +952,11 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
             getReferredByDataAttribute().clear();
             getReferredByDataAttribute().addAll( ( Collection< ? extends DataAttribute > ) newValue );
             return;
-        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC:
-            setRefersToDoc( ( Doc ) newValue );
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC:
+            setRefersToDescDoc( ( Doc ) newValue );
+            return;
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC:
+            setRefersToTitleDoc( ( Doc ) newValue );
             return;
         }
         super.eSet( featureID, newValue );
@@ -839,8 +988,11 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
         case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERRED_BY_DATA_ATTRIBUTE:
             unsetReferredByDataAttribute();
             return;
-        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC:
-            unsetRefersToDoc();
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC:
+            unsetRefersToDescDoc();
+            return;
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC:
+            unsetRefersToTitleDoc();
             return;
         }
         super.eUnset( featureID );
@@ -866,8 +1018,10 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
             return getParentFunctionalConstraints() != null;
         case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERRED_BY_DATA_ATTRIBUTE:
             return isSetReferredByDataAttribute();
-        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC:
-            return isSetRefersToDoc();
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC:
+            return isSetRefersToDescDoc();
+        case NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC:
+            return isSetRefersToTitleDoc();
         }
         return super.eIsSet( featureID );
     }
@@ -908,8 +1062,18 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
         if( isSetDescID() ) {
             if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
                 Doc doc = ( ( NsdResourceSetImpl ) this.eResource().getResourceSet() )
-                        .findDoc( new NsIdentification( getParentFunctionalConstraints().getParentNS() ), getDescID() );
-                if( doc != null ) setRefersToDoc( doc );
+                        .findDoc( new NsIdentification( getParentFunctionalConstraints().getParentNS() ),
+                                getDescID() );
+                if( doc != null ) setRefersToDescDoc( doc );
+            }
+        }
+
+        if( isSetTitleID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = ( ( NsdResourceSetImpl ) this.eResource().getResourceSet() )
+                        .findDoc( new NsIdentification( getParentFunctionalConstraints().getParentNS() ),
+                                getTitleID() );
+                if( doc != null ) setRefersToTitleDoc( doc );
             }
         }
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java
index 711115b5c75fb3f9e5906f0269fbabcc60cf362b..6cc9fa1f19f7bf0572703fc357825af1137f45bb 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java
@@ -1920,7 +1920,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getDoc_ReferredByPresenceCondition() {
+    public EReference getDoc_ReferredByPresenceConditionAsDesc() {
         return ( EReference ) docEClass.getEStructuralFeatures().get( 6 );
     }
 
@@ -1970,7 +1970,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getDoc_ReferredByFunctionalConstraint() {
+    public EReference getDoc_ReferredByFunctionalConstraintAsDesc() {
         return ( EReference ) docEClass.getEStructuralFeatures().get( 11 );
     }
 
@@ -1994,6 +1994,26 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) docEClass.getEStructuralFeatures().get( 13 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByFunctionalConstraintAsTitle() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 14 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByPresenceConditionAsTitle() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 15 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2230,10 +2250,20 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getFunctionalConstraint_RefersToDoc() {
+    public EReference getFunctionalConstraint_RefersToDescDoc() {
         return ( EReference ) functionalConstraintEClass.getEStructuralFeatures().get( 6 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getFunctionalConstraint_RefersToTitleDoc() {
+        return ( EReference ) functionalConstraintEClass.getEStructuralFeatures().get( 7 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2750,10 +2780,20 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getPresenceCondition_RefersToDoc() {
+    public EReference getPresenceCondition_RefersToDescDoc() {
         return ( EReference ) presenceConditionEClass.getEStructuralFeatures().get( 10 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getPresenceCondition_RefersToTitleDoc() {
+        return ( EReference ) presenceConditionEClass.getEStructuralFeatures().get( 11 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -4086,14 +4126,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( docEClass, DOC__ID );
         createEReference( docEClass, DOC__PARENT_NS_DOC );
         createEReference( docEClass, DOC__REFERRED_BY_AG_NS_DESC );
-        createEReference( docEClass, DOC__REFERRED_BY_PRESENCE_CONDITION );
+        createEReference( docEClass, DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC );
         createEReference( docEClass, DOC__REFERRED_BY_AG_PRESENCE_CONDITION );
         createEReference( docEClass, DOC__REFERRED_BY_ABBREVIATION );
         createEReference( docEClass, DOC__REFERRED_BY_BASIC_TYPE );
         createEReference( docEClass, DOC__REFERRED_BY_DOCUMENTED_CLASS );
-        createEReference( docEClass, DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT );
+        createEReference( docEClass, DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_DESC );
         createEReference( docEClass, DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS );
         createEReference( docEClass, DOC__REFERRED_BY_TITLED_CLASS );
+        createEReference( docEClass, DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT_AS_TITLE );
+        createEReference( docEClass, DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE );
 
         documentedClassEClass = createEClass( DOCUMENTED_CLASS );
         createEAttribute( documentedClassEClass, DOCUMENTED_CLASS__DEPRECATED );
@@ -4121,7 +4163,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( functionalConstraintEClass, FUNCTIONAL_CONSTRAINT__TITLE_ID );
         createEReference( functionalConstraintEClass, FUNCTIONAL_CONSTRAINT__PARENT_FUNCTIONAL_CONSTRAINTS );
         createEReference( functionalConstraintEClass, FUNCTIONAL_CONSTRAINT__REFERRED_BY_DATA_ATTRIBUTE );
-        createEReference( functionalConstraintEClass, FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC );
+        createEReference( functionalConstraintEClass, FUNCTIONAL_CONSTRAINT__REFERS_TO_DESC_DOC );
+        createEReference( functionalConstraintEClass, FUNCTIONAL_CONSTRAINT__REFERS_TO_TITLE_DOC );
 
         functionalConstraintsEClass = createEClass( FUNCTIONAL_CONSTRAINTS );
         createEReference( functionalConstraintsEClass, FUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT );
@@ -4182,7 +4225,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEReference( presenceConditionEClass, PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_OBJECT );
         createEReference( presenceConditionEClass, PRESENCE_CONDITION__REFERRED_BY_DATA_ATTRIBUTE );
         createEReference( presenceConditionEClass, PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_ATTRIBUTE );
-        createEReference( presenceConditionEClass, PRESENCE_CONDITION__REFERS_TO_DOC );
+        createEReference( presenceConditionEClass, PRESENCE_CONDITION__REFERS_TO_DESC_DOC );
+        createEReference( presenceConditionEClass, PRESENCE_CONDITION__REFERS_TO_TITLE_DOC );
 
         presenceConditionsEClass = createEClass( PRESENCE_CONDITIONS );
         createEReference( presenceConditionsEClass, PRESENCE_CONDITIONS__PRESENCE_CONDITION );
@@ -4817,10 +4861,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getDoc_ReferredByAgNSDesc(), this.getAgNSdesc(), this.getAgNSdesc_RefersToDoc(),
                 "ReferredByAgNSDesc", null, 0, -1, Doc.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
                 !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
-        initEReference( getDoc_ReferredByPresenceCondition(), this.getPresenceCondition(),
-                this.getPresenceCondition_RefersToDoc(), "referredByPresenceCondition", null, 0, -1, Doc.class,
-                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
-                !IS_DERIVED, !IS_ORDERED );
+        initEReference( getDoc_ReferredByPresenceConditionAsDesc(), this.getPresenceCondition(),
+                this.getPresenceCondition_RefersToDescDoc(), "referredByPresenceConditionAsDesc", null, 0, -1,
+                Doc.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE,
+                IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
         initEReference( getDoc_ReferredByAgPresenceCondition(), this.getAgPresenceCondition(),
                 this.getAgPresenceCondition_RefersToPresCondArgsDoc(), "referredByAgPresenceCondition", null, 0, -1,
                 Doc.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE,
@@ -4835,10 +4879,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 this.getDocumentedClass_RefersToDescDoc(), "referredByDocumentedClass", null, 0, -1, Doc.class,
                 IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
                 !IS_DERIVED, !IS_ORDERED );
-        initEReference( getDoc_ReferredByFunctionalConstraint(), this.getFunctionalConstraint(),
-                this.getFunctionalConstraint_RefersToDoc(), "referredByFunctionalConstraint", null, 0, -1, Doc.class,
-                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
-                !IS_DERIVED, !IS_ORDERED );
+        initEReference( getDoc_ReferredByFunctionalConstraintAsDesc(), this.getFunctionalConstraint(),
+                this.getFunctionalConstraint_RefersToDescDoc(), "referredByFunctionalConstraintAsDesc", null, 0, -1,
+                Doc.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE,
+                IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
         initEReference( getDoc_ReferredByAgPresenceConditionDerivedStatistics(),
                 this.getAgPresenceConditionDerivedStatistics(),
                 this.getAgPresenceConditionDerivedStatistics_RefersToDsPresCondArgsDoc(),
@@ -4847,6 +4891,14 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getDoc_ReferredByTitledClass(), this.getTitledClass(), this.getTitledClass_RefersToTitleDoc(),
                 "referredByTitledClass", null, 0, -1, Doc.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getDoc_ReferredByFunctionalConstraintAsTitle(), this.getFunctionalConstraint(),
+                this.getFunctionalConstraint_RefersToTitleDoc(), "referredByFunctionalConstraintAsTitle", null, 0, -1,
+                Doc.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE,
+                IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getDoc_ReferredByPresenceConditionAsTitle(), this.getPresenceCondition(),
+                this.getPresenceCondition_RefersToTitleDoc(), "referredByPresenceConditionAsTitle", null, 0, -1,
+                Doc.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE,
+                IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( documentedClassEClass, DocumentedClass.class, "DocumentedClass", IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4921,10 +4973,14 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 this.getDataAttribute_RefersToFunctionalConstraint(), "referredByDataAttribute", null, 0, -1,
                 FunctionalConstraint.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
                 !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
-        initEReference( getFunctionalConstraint_RefersToDoc(), this.getDoc(),
-                this.getDoc_ReferredByFunctionalConstraint(), "refersToDoc", null, 0, 1, FunctionalConstraint.class,
-                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
-                !IS_DERIVED, !IS_ORDERED );
+        initEReference( getFunctionalConstraint_RefersToDescDoc(), this.getDoc(),
+                this.getDoc_ReferredByFunctionalConstraintAsDesc(), "refersToDescDoc", null, 0, 1,
+                FunctionalConstraint.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getFunctionalConstraint_RefersToTitleDoc(), this.getDoc(),
+                this.getDoc_ReferredByFunctionalConstraintAsTitle(), "refersToTitleDoc", null, 0, 1,
+                FunctionalConstraint.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( functionalConstraintsEClass, FunctionalConstraints.class, "FunctionalConstraints", !IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
@@ -5083,9 +5139,14 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 this.getSubDataAttribute_RefersToPresenceCondition(), "referredBySubDataAttribute", null, 0, -1,
                 PresenceCondition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
-        initEReference( getPresenceCondition_RefersToDoc(), this.getDoc(), this.getDoc_ReferredByPresenceCondition(),
-                "refersToDoc", null, 0, 1, PresenceCondition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getPresenceCondition_RefersToDescDoc(), this.getDoc(),
+                this.getDoc_ReferredByPresenceConditionAsDesc(), "refersToDescDoc", null, 0, 1, PresenceCondition.class,
+                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
+                !IS_DERIVED, !IS_ORDERED );
+        initEReference( getPresenceCondition_RefersToTitleDoc(), this.getDoc(),
+                this.getDoc_ReferredByPresenceConditionAsTitle(), "refersToTitleDoc", null, 0, 1,
+                PresenceCondition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( presenceConditionsEClass, PresenceConditions.class, "PresenceConditions", !IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionImpl.java
index 82a8552be93bdc52e88536198c03c472324a87a0..a3582c4901c228335bbc9da2fe3a1c00a818fb43 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionImpl.java
@@ -63,7 +63,8 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl#getReferredBySubDataObject <em>Referred By Sub Data Object</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl#getReferredByDataAttribute <em>Referred By Data Attribute</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl#getReferredBySubDataAttribute <em>Referred By Sub Data Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl#getRefersToDoc <em>Refers To Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl#getRefersToDescDoc <em>Refers To Desc Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl#getRefersToTitleDoc <em>Refers To Title Doc</em>}</li>
  * </ul>
  *
  * @generated
@@ -236,23 +237,42 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
     protected EList< SubDataAttribute > referredBySubDataAttribute;
 
     /**
-     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * The cached value of the '{@link #getRefersToDescDoc() <em>Refers To Desc Doc</em>}' reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRefersToDoc()
+     * @see #getRefersToDescDoc()
      * @generated
      * @ordered
      */
-    protected Doc refersToDoc;
+    protected Doc refersToDescDoc;
 
     /**
-     * This is true if the Refers To Doc reference has been set.
+     * This is true if the Refers To Desc Doc reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean refersToDocESet;
+    protected boolean refersToDescDocESet;
+
+    /**
+     * The cached value of the '{@link #getRefersToTitleDoc() <em>Refers To Title Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToTitleDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToTitleDoc;
+
+    /**
+     * This is true if the Refers To Title Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToTitleDocESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -717,8 +737,8 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
      * @generated
      */
     @Override
-    public Doc getRefersToDoc() {
-        return refersToDoc;
+    public Doc getRefersToDescDoc() {
+        return refersToDescDoc;
     }
 
     /**
@@ -726,14 +746,15 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
      * <!-- end-user-doc -->
      * @generated
      */
-    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
-        Doc oldRefersToDoc = refersToDoc;
-        refersToDoc = newRefersToDoc;
-        boolean oldRefersToDocESet = refersToDocESet;
-        refersToDocESet = true;
+    public NotificationChain basicSetRefersToDescDoc( Doc newRefersToDescDoc, NotificationChain msgs ) {
+        Doc oldRefersToDescDoc = refersToDescDoc;
+        refersToDescDoc = newRefersToDescDoc;
+        boolean oldRefersToDescDocESet = refersToDescDocESet;
+        refersToDescDocESet = true;
         if( eNotificationRequired() ) {
             ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
-                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc, !oldRefersToDocESet );
+                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC, oldRefersToDescDoc, newRefersToDescDoc,
+                    !oldRefersToDescDocESet );
             if( msgs == null )
                 msgs = notification;
             else
@@ -748,24 +769,25 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
      * @generated
      */
     @Override
-    public void setRefersToDoc( Doc newRefersToDoc ) {
-        if( newRefersToDoc != refersToDoc ) {
+    public void setRefersToDescDoc( Doc newRefersToDescDoc ) {
+        if( newRefersToDescDoc != refersToDescDoc ) {
             NotificationChain msgs = null;
-            if( refersToDoc != null )
-                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
-                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION, Doc.class, msgs );
-            if( newRefersToDoc != null )
-                msgs = ( ( InternalEObject ) newRefersToDoc ).eInverseAdd( this,
-                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION, Doc.class, msgs );
-            msgs = basicSetRefersToDoc( newRefersToDoc, msgs );
+            if( refersToDescDoc != null )
+                msgs = ( ( InternalEObject ) refersToDescDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC, Doc.class, msgs );
+            if( newRefersToDescDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDescDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC, Doc.class, msgs );
+            msgs = basicSetRefersToDescDoc( newRefersToDescDoc, msgs );
             if( msgs != null ) msgs.dispatch();
         }
         else {
-            boolean oldRefersToDocESet = refersToDocESet;
-            refersToDocESet = true;
+            boolean oldRefersToDescDocESet = refersToDescDocESet;
+            refersToDescDocESet = true;
             if( eNotificationRequired() )
-                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC,
-                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC, newRefersToDescDoc, newRefersToDescDoc,
+                        !oldRefersToDescDocESet ) );
         }
     }
 
@@ -774,14 +796,15 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
      * <!-- end-user-doc -->
      * @generated
      */
-    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
-        Doc oldRefersToDoc = refersToDoc;
-        refersToDoc = null;
-        boolean oldRefersToDocESet = refersToDocESet;
-        refersToDocESet = false;
+    public NotificationChain basicUnsetRefersToDescDoc( NotificationChain msgs ) {
+        Doc oldRefersToDescDoc = refersToDescDoc;
+        refersToDescDoc = null;
+        boolean oldRefersToDescDocESet = refersToDescDocESet;
+        refersToDescDocESet = false;
         if( eNotificationRequired() ) {
             ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
-                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC, oldRefersToDescDoc, null,
+                    oldRefersToDescDocESet );
             if( msgs == null )
                 msgs = notification;
             else
@@ -796,20 +819,20 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
      * @generated
      */
     @Override
-    public void unsetRefersToDoc() {
-        if( refersToDoc != null ) {
+    public void unsetRefersToDescDoc() {
+        if( refersToDescDoc != null ) {
             NotificationChain msgs = null;
-            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
-                    NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION, Doc.class, msgs );
-            msgs = basicUnsetRefersToDoc( msgs );
+            msgs = ( ( InternalEObject ) refersToDescDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC, Doc.class, msgs );
+            msgs = basicUnsetRefersToDescDoc( msgs );
             if( msgs != null ) msgs.dispatch();
         }
         else {
-            boolean oldRefersToDocESet = refersToDocESet;
-            refersToDocESet = false;
+            boolean oldRefersToDescDocESet = refersToDescDocESet;
+            refersToDescDocESet = false;
             if( eNotificationRequired() )
-                eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC,
-                        null, null, oldRefersToDocESet ) );
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC, null, null, oldRefersToDescDocESet ) );
         }
     }
 
@@ -819,8 +842,123 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
      * @generated
      */
     @Override
-    public boolean isSetRefersToDoc() {
-        return refersToDocESet;
+    public boolean isSetRefersToDescDoc() {
+        return refersToDescDocESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToTitleDoc() {
+        return refersToTitleDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToTitleDoc( Doc newRefersToTitleDoc, NotificationChain msgs ) {
+        Doc oldRefersToTitleDoc = refersToTitleDoc;
+        refersToTitleDoc = newRefersToTitleDoc;
+        boolean oldRefersToTitleDocESet = refersToTitleDocESet;
+        refersToTitleDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC, oldRefersToTitleDoc, newRefersToTitleDoc,
+                    !oldRefersToTitleDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToTitleDoc( Doc newRefersToTitleDoc ) {
+        if( newRefersToTitleDoc != refersToTitleDoc ) {
+            NotificationChain msgs = null;
+            if( refersToTitleDoc != null )
+                msgs = ( ( InternalEObject ) refersToTitleDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE, Doc.class, msgs );
+            if( newRefersToTitleDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToTitleDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE, Doc.class, msgs );
+            msgs = basicSetRefersToTitleDoc( newRefersToTitleDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToTitleDocESet = refersToTitleDocESet;
+            refersToTitleDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC, newRefersToTitleDoc, newRefersToTitleDoc,
+                        !oldRefersToTitleDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToTitleDoc( NotificationChain msgs ) {
+        Doc oldRefersToTitleDoc = refersToTitleDoc;
+        refersToTitleDoc = null;
+        boolean oldRefersToTitleDocESet = refersToTitleDocESet;
+        refersToTitleDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC, oldRefersToTitleDoc, null,
+                    oldRefersToTitleDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToTitleDoc() {
+        if( refersToTitleDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToTitleDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE, Doc.class, msgs );
+            msgs = basicUnsetRefersToTitleDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToTitleDocESet = refersToTitleDocESet;
+            refersToTitleDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC, null, null, oldRefersToTitleDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToTitleDoc() {
+        return refersToTitleDocESet;
     }
 
     /**
@@ -851,11 +989,16 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
         case NsdPackage.PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_ATTRIBUTE:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredBySubDataAttribute() )
                     .basicAdd( otherEnd, msgs );
-        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC:
-            if( refersToDoc != null )
-                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
-                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION, Doc.class, msgs );
-            return basicSetRefersToDoc( ( Doc ) otherEnd, msgs );
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC:
+            if( refersToDescDoc != null )
+                msgs = ( ( InternalEObject ) refersToDescDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_DESC, Doc.class, msgs );
+            return basicSetRefersToDescDoc( ( Doc ) otherEnd, msgs );
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC:
+            if( refersToTitleDoc != null )
+                msgs = ( ( InternalEObject ) refersToTitleDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION_AS_TITLE, Doc.class, msgs );
+            return basicSetRefersToTitleDoc( ( Doc ) otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -881,8 +1024,10 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
             return ( ( InternalEList< ? > ) getReferredByDataAttribute() ).basicRemove( otherEnd, msgs );
         case NsdPackage.PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_ATTRIBUTE:
             return ( ( InternalEList< ? > ) getReferredBySubDataAttribute() ).basicRemove( otherEnd, msgs );
-        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC:
-            return basicUnsetRefersToDoc( msgs );
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC:
+            return basicUnsetRefersToDescDoc( msgs );
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC:
+            return basicUnsetRefersToTitleDoc( msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -930,8 +1075,10 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
             return getReferredByDataAttribute();
         case NsdPackage.PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_ATTRIBUTE:
             return getReferredBySubDataAttribute();
-        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC:
-            return getRefersToDoc();
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC:
+            return getRefersToDescDoc();
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC:
+            return getRefersToTitleDoc();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -980,8 +1127,11 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
             getReferredBySubDataAttribute().clear();
             getReferredBySubDataAttribute().addAll( ( Collection< ? extends SubDataAttribute > ) newValue );
             return;
-        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC:
-            setRefersToDoc( ( Doc ) newValue );
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC:
+            setRefersToDescDoc( ( Doc ) newValue );
+            return;
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC:
+            setRefersToTitleDoc( ( Doc ) newValue );
             return;
         }
         super.eSet( featureID, newValue );
@@ -1025,8 +1175,11 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
         case NsdPackage.PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_ATTRIBUTE:
             unsetReferredBySubDataAttribute();
             return;
-        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC:
-            unsetRefersToDoc();
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC:
+            unsetRefersToDescDoc();
+            return;
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC:
+            unsetRefersToTitleDoc();
             return;
         }
         super.eUnset( featureID );
@@ -1060,8 +1213,10 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
             return isSetReferredByDataAttribute();
         case NsdPackage.PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_ATTRIBUTE:
             return isSetReferredBySubDataAttribute();
-        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC:
-            return isSetRefersToDoc();
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_DESC_DOC:
+            return isSetRefersToDescDoc();
+        case NsdPackage.PRESENCE_CONDITION__REFERS_TO_TITLE_DOC:
+            return isSetRefersToTitleDoc();
         }
         return super.eIsSet( featureID );
     }
@@ -1107,8 +1262,18 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
         if( isSetDescID() ) {
             if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
                 Doc doc = ( ( NsdResourceSetImpl ) this.eResource().getResourceSet() )
-                        .findDoc( new NsIdentification( getParentPresenceConditions().getParentNS() ), getDescID() );
-                if( doc != null ) setRefersToDoc( doc );
+                        .findDoc( new NsIdentification( getParentPresenceConditions().getParentNS() ),
+                                getDescID() );
+                if( doc != null ) setRefersToDescDoc( doc );
+            }
+        }
+
+        if( isSetTitleID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = ( ( NsdResourceSetImpl ) this.eResource().getResourceSet() )
+                        .findDoc( new NsIdentification( getParentPresenceConditions().getParentNS() ),
+                                getTitleID() );
+                if( doc != null ) setRefersToTitleDoc( doc );
             }
         }
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
index 58326e1d4f107f90ff0cd1c7080b0407a44dc782..dac04c13f7ad21a70c6bd8c956be3becbcb58902 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
@@ -2463,7 +2463,8 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
                     }
                     break;
                 case DefinedAttributeTypeKind.CONSTRUCTED_VALUE:
-                    ConstructedAttribute foundCA = rs.findConstructedAttribute( getType(), getNsIdentification(), console );
+                    ConstructedAttribute foundCA = rs.findConstructedAttribute( getType(), getNsIdentification(),
+                            console );
 
                     if( foundCA == null ) {
                         console.warning( messagePrefix + "ConstructedAttribute (name: " + getType() + ") not found" );