diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
index e5bdd099346d322ae1099965631997a088e43e67..f8e272852c4ee6939b5eca7db1a12f981dbbb2b7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
@@ -557,3 +557,19 @@ _UI_ServiceParameter_parentCDC_feature = Parent CDC
 _UI_ServiceTypeRealizations_parentServiceNS_feature = Parent Service NS
 _UI_SubDataAttribute_parentConstructedAttribute_feature = Parent Constructed Attribute
 _UI_SubDataObject_parentCDC_feature = Parent CDC
+_UI_Abbreviation_refersToDoc_feature = Refers To Doc
+_UI_BasicType_refersToDoc_feature = Refers To Doc
+_UI_Doc_ReferredByAgNSDesc_feature = Referred By Ag NS Desc
+_UI_Doc_referredByPresenceCondition_feature = Referred By Presence Condition
+_UI_Doc_referredByAgPresenceCondition_feature = Referred By Ag Presence Condition
+_UI_Doc_referredByAbbreviation_feature = Referred By Abbreviation
+_UI_Doc_referredByBasicType_feature = Referred By Basic Type
+_UI_Doc_referredByDocumentedClass_feature = Referred By Documented Class
+_UI_Doc_referredByFunctionalConstraint_feature = Referred By Functional Constraint
+_UI_Doc_referredByAgPresenceConditionDerivedStatistics_feature = Referred By Ag Presence Condition Derived Statistics
+_UI_DocumentedClass_refersToDoc_feature = Refers To Doc
+_UI_FunctionalConstraint_refersToDoc_feature = Refers To Doc
+_UI_PresenceCondition_refersToDoc_feature = Refers To Doc
+_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature = Refers To Pres Cond Args Doc
+_UI_AgPresenceConditionDerivedStatistics_refersToDsPresCondArgsDoc_feature = Refers To Ds Pres Cond Args Doc
+_UI_AgNSdesc_refersToDoc_feature = Refers To Doc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationItemProvider.java
index ce18071329aa1c5c2820509d8df3979c92ec8569..dce49e70ed4edcd2e17b2904e27a4f09822f3d41 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationItemProvider.java
@@ -62,6 +62,7 @@ public class AbbreviationItemProvider extends NsdObjectItemProvider {
 
             addDescIDPropertyDescriptor( object );
             addNamePropertyDescriptor( object );
+            addRefersToDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -110,6 +111,28 @@ public class AbbreviationItemProvider extends NsdObjectItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Abbreviation_refersToDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_Abbreviation_refersToDoc_feature",
+                                "_UI_Abbreviation_type" ),
+                        NsdPackage.Literals.ABBREVIATION__REFERS_TO_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This returns Abbreviation.gif.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSdescItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSdescItemProvider.java
index fdd82044a7a6f7d02258ee906839d9dfccc9a47e..cc2d537e9b10f469add890b27878c47060698fb9 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSdescItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSdescItemProvider.java
@@ -71,6 +71,7 @@ public class AgNSdescItemProvider extends ItemProviderAdapter implements IEditin
             super.getPropertyDescriptors( object );
 
             addDescIDPropertyDescriptor( object );
+            addRefersToDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -97,6 +98,28 @@ public class AgNSdescItemProvider extends ItemProviderAdapter implements IEditin
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_AgNSdesc_refersToDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSdesc_refersToDoc_feature",
+                                "_UI_AgNSdesc_type" ),
+                        NsdPackage.Literals.AG_NSDESC__REFERS_TO_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This returns the label text for the adapted class.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionDerivedStatisticsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionDerivedStatisticsItemProvider.java
index ed7308f07b425ab7f9e6a8110707f7c78460eb38..d5f2b1c291e57d624649a7514055c4eb82b305ab 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionDerivedStatisticsItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionDerivedStatisticsItemProvider.java
@@ -74,6 +74,7 @@ public class AgPresenceConditionDerivedStatisticsItemProvider extends ItemProvid
             addDsPresCondPropertyDescriptor( object );
             addDsPresCondArgsPropertyDescriptor( object );
             addDsPresCondArgsIDPropertyDescriptor( object );
+            addRefersToDsPresCondArgsDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -147,6 +148,29 @@ public class AgPresenceConditionDerivedStatisticsItemProvider extends ItemProvid
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Ds Pres Cond Args Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDsPresCondArgsDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_AgPresenceConditionDerivedStatistics_refersToDsPresCondArgsDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgPresenceConditionDerivedStatistics_refersToDsPresCondArgsDoc_feature",
+                                "_UI_AgPresenceConditionDerivedStatistics_type" ),
+                        NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This returns the label text for the adapted class.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionItemProvider.java
index 3744fa123773cbd658e8341698f0e1c7d5d44077..1ed3708542dd54f40e6f5ac2db1ca5a8b7ec5b56 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionItemProvider.java
@@ -73,6 +73,7 @@ public class AgPresenceConditionItemProvider extends ItemProviderAdapter impleme
             addPresCondPropertyDescriptor( object );
             addPresCondArgsPropertyDescriptor( object );
             addPresCondArgsIDPropertyDescriptor( object );
+            addRefersToPresCondArgsDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -143,6 +144,28 @@ public class AgPresenceConditionItemProvider extends ItemProviderAdapter impleme
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Pres Cond Args Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToPresCondArgsDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature", "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC,
+                true,
+                false,
+                true,
+                null,
+                null,
+                null ) );
+    }
+
     /**
      * This returns the label text for the adapted class.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypeItemProvider.java
index 12d91ab261fd4b0a5a3720f4666d2e6ef4e18f85..8a7aed69b529e90a26a741d4cbd48794aeb55eb7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypeItemProvider.java
@@ -63,6 +63,7 @@ public class BasicTypeItemProvider extends NsdObjectItemProvider {
             addDescIDPropertyDescriptor( object );
             addNamePropertyDescriptor( object );
             addReferredByDataAttributePropertyDescriptor( object );
+            addRefersToDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -133,6 +134,28 @@ public class BasicTypeItemProvider extends NsdObjectItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_BasicType_refersToDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_BasicType_refersToDoc_feature",
+                                "_UI_BasicType_type" ),
+                        NsdPackage.Literals.BASIC_TYPE__REFERS_TO_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This returns BasicType.gif.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataAttributeItemProvider.java
index 47afe21d7af59e20891513d0376cc504147cc29d..ca4cc8d39e14b5721cfa9b7afdd0a8919d64656d 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataAttributeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataAttributeItemProvider.java
@@ -64,6 +64,7 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
             addPresCondPropertyDescriptor( object );
             addPresCondArgsPropertyDescriptor( object );
             addPresCondArgsIDPropertyDescriptor( object );
+            addRefersToPresCondArgsDocPropertyDescriptor( object );
             addIsArrayPropertyDescriptor( object );
             addMaxIndexAttributePropertyDescriptor( object );
             addMinIndexPropertyDescriptor( object );
@@ -577,6 +578,28 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Pres Cond Args Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToPresCondArgsDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature", "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC,
+                true,
+                false,
+                true,
+                null,
+                null,
+                null ) );
+    }
+
     /**
      * This adds a property descriptor for the Qchg feature.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataObjectItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataObjectItemProvider.java
index 1244b906c27ff50e1055dc487a2c5cdf6625c144..2b079af652dfa916d72a15e862222a2933a158ce 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataObjectItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataObjectItemProvider.java
@@ -64,9 +64,11 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
             addPresCondPropertyDescriptor( object );
             addPresCondArgsPropertyDescriptor( object );
             addPresCondArgsIDPropertyDescriptor( object );
+            addRefersToPresCondArgsDocPropertyDescriptor( object );
             addDsPresCondPropertyDescriptor( object );
             addDsPresCondArgsPropertyDescriptor( object );
             addDsPresCondArgsIDPropertyDescriptor( object );
+            addRefersToDsPresCondArgsDocPropertyDescriptor( object );
             addUnderlyingTypePropertyDescriptor( object );
             addUnderlyingTypeKindPropertyDescriptor( object );
             addNamePropertyDescriptor( object );
@@ -148,6 +150,29 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Ds Pres Cond Args Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDsPresCondArgsDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_AgPresenceConditionDerivedStatistics_refersToDsPresCondArgsDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgPresenceConditionDerivedStatistics_refersToDsPresCondArgsDoc_feature",
+                                "_UI_AgPresenceConditionDerivedStatistics_type" ),
+                        NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This adds a property descriptor for the Name feature.
      * <!-- begin-user-doc -->
@@ -236,6 +261,28 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Pres Cond Args Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToPresCondArgsDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature", "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC,
+                true,
+                false,
+                true,
+                null,
+                null,
+                null ) );
+    }
+
     /**
      * This adds a property descriptor for the Transient feature.
      * <!-- begin-user-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 3e64233764955c72cc0ac7b98acd400d689f589f..5d6871be33cdcdbd206ef16a3dd716fccce3dea0 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
@@ -70,6 +70,14 @@ public class DocItemProvider extends NsdObjectItemProvider {
             super.getPropertyDescriptors( object );
 
             addIdPropertyDescriptor( object );
+            addReferredByAgNSDescPropertyDescriptor( object );
+            addReferredByPresenceConditionPropertyDescriptor( object );
+            addReferredByAgPresenceConditionPropertyDescriptor( object );
+            addReferredByAbbreviationPropertyDescriptor( object );
+            addReferredByBasicTypePropertyDescriptor( object );
+            addReferredByDocumentedClassPropertyDescriptor( object );
+            addReferredByFunctionalConstraintPropertyDescriptor( object );
+            addReferredByAgPresenceConditionDerivedStatisticsPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -95,6 +103,182 @@ public class DocItemProvider extends NsdObjectItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Referred By Ag NS Desc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByAgNSDescPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_ReferredByAgNSDesc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_Doc_ReferredByAgNSDesc_feature",
+                                "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_AG_NS_DESC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Referred By Presence Condition feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByPresenceConditionPropertyDescriptor( 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,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Referred By Ag Presence Condition feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByAgPresenceConditionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_referredByAgPresenceCondition_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_Doc_referredByAgPresenceCondition_feature", "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_AG_PRESENCE_CONDITION,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Referred By Abbreviation feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByAbbreviationPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_referredByAbbreviation_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_Doc_referredByAbbreviation_feature",
+                                "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_ABBREVIATION,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Referred By Basic Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByBasicTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_referredByBasicType_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_Doc_referredByBasicType_feature",
+                                "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_BASIC_TYPE,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Referred By Documented Class feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByDocumentedClassPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_referredByDocumentedClass_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_Doc_referredByDocumentedClass_feature",
+                                "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_DOCUMENTED_CLASS,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Referred By Functional Constraint feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByFunctionalConstraintPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_referredByFunctionalConstraint_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_Doc_referredByFunctionalConstraint_feature", "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Referred By Ag Presence Condition Derived Statistics feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByAgPresenceConditionDerivedStatisticsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_Doc_referredByAgPresenceConditionDerivedStatistics_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_Doc_referredByAgPresenceConditionDerivedStatistics_feature", "_UI_Doc_type" ),
+                        NsdPackage.Literals.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS,
+                        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/DocumentedClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentedClassItemProvider.java
index 4ee5549add7c34799da46a7d92efccc9c759bfac..4df36e418692043a6e6caf926973087784c11c34 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentedClassItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentedClassItemProvider.java
@@ -63,6 +63,7 @@ public class DocumentedClassItemProvider extends NsdObjectItemProvider {
             addDeprecatedPropertyDescriptor( object );
             addDescIDPropertyDescriptor( object );
             addInformativePropertyDescriptor( object );
+            addRefersToDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -133,6 +134,28 @@ public class DocumentedClassItemProvider extends NsdObjectItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_DocumentedClass_refersToDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_DocumentedClass_refersToDoc_feature",
+                                "_UI_DocumentedClass_type" ),
+                        NsdPackage.Literals.DOCUMENTED_CLASS__REFERS_TO_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This returns DocumentedClass.gif.
      * <!-- begin-user-doc -->
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 ceec1ddc9df4ae551566460e3a13da80398bed0c..48abfb633c8092515c75d3839be4d893b01d5bab 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,6 +67,7 @@ public class FunctionalConstraintItemProvider extends NsdObjectItemProvider {
             addDescIDPropertyDescriptor( object );
             addTitleIDPropertyDescriptor( object );
             addReferredByDataAttributePropertyDescriptor( object );
+            addRefersToDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -159,6 +160,28 @@ public class FunctionalConstraintItemProvider extends NsdObjectItemProvider {
                 null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDocPropertyDescriptor( 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,
+                        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/NSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSItemProvider.java
index a94fd7cb9edba7911a79295e59487f87bbc7879e..7ef5599e3bb3d0564578973ccf8f185326a4aa92 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSItemProvider.java
@@ -72,6 +72,7 @@ public class NSItemProvider extends CopyrightedItemProvider {
             addUmlDatePropertyDescriptor( object );
             addUmlVersionPropertyDescriptor( object );
             addDescIDPropertyDescriptor( object );
+            addRefersToDocPropertyDescriptor( object );
             addReferredByDependsOnPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
@@ -99,6 +100,28 @@ public class NSItemProvider extends CopyrightedItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_AgNSdesc_refersToDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSdesc_refersToDoc_feature",
+                                "_UI_AgNSdesc_type" ),
+                        NsdPackage.Literals.AG_NSDESC__REFERS_TO_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This adds a property descriptor for the Referred By Depends On feature.
      * <!-- begin-user-doc -->
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 caef59fcdd8e1275b81f2fee14cc1e0c43778d85..8ca9aadae9072dda448614a88edd3bbf41190ef5 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,6 +69,7 @@ public class PresenceConditionItemProvider extends NsdObjectItemProvider {
             addReferredBySubDataObjectPropertyDescriptor( object );
             addReferredByDataAttributePropertyDescriptor( object );
             addReferredBySubDataAttributePropertyDescriptor( object );
+            addRefersToDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -272,6 +273,28 @@ public class PresenceConditionItemProvider extends NsdObjectItemProvider {
                 null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDocPropertyDescriptor( 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,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This returns PresenceCondition.gif.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceDataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceDataAttributeItemProvider.java
index 3e796c799199a7ff51164907b38e80b15072c337..c6f4248874fb527ce72aa971346b1f158a2b30b8 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceDataAttributeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceDataAttributeItemProvider.java
@@ -64,6 +64,7 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
             addPresCondPropertyDescriptor( object );
             addPresCondArgsPropertyDescriptor( object );
             addPresCondArgsIDPropertyDescriptor( object );
+            addRefersToPresCondArgsDocPropertyDescriptor( object );
             addTypePropertyDescriptor( object );
             addTypeKindPropertyDescriptor( object );
             addUnderlyingTypePropertyDescriptor( object );
@@ -184,6 +185,28 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Pres Cond Args Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToPresCondArgsDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature", "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC,
+                true,
+                false,
+                true,
+                null,
+                null,
+                null ) );
+    }
+
     /**
      * This adds a property descriptor for the Type feature.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
index 602c1e6f1fdbf93516d0bee96574f20150721d60..ff4d35dd6390f5076bcd84a12545a7284e9bb513 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
@@ -72,6 +72,7 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
             addUmlDatePropertyDescriptor( object );
             addUmlVersionPropertyDescriptor( object );
             addDescIDPropertyDescriptor( object );
+            addRefersToDocPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -98,6 +99,28 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(),
+                        getString( "_UI_AgNSdesc_refersToDoc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSdesc_refersToDoc_feature",
+                                "_UI_AgNSdesc_type" ),
+                        NsdPackage.Literals.AG_NSDESC__REFERS_TO_DOC,
+                        true,
+                        false,
+                        true,
+                        null,
+                        null,
+                        null ) );
+    }
+
     /**
      * This adds a property descriptor for the Id feature.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataAttributeItemProvider.java
index 065407958b67ea3b79224bbca2daed319bba7a17..dd8e9cd8c9efa7deeb30843434109328c031a7cc 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataAttributeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataAttributeItemProvider.java
@@ -64,6 +64,7 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
             addPresCondPropertyDescriptor( object );
             addPresCondArgsPropertyDescriptor( object );
             addPresCondArgsIDPropertyDescriptor( object );
+            addRefersToPresCondArgsDocPropertyDescriptor( object );
             addIsArrayPropertyDescriptor( object );
             addMaxIndexAttributePropertyDescriptor( object );
             addMinIndexPropertyDescriptor( object );
@@ -321,6 +322,28 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Pres Cond Args Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToPresCondArgsDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature", "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC,
+                true,
+                false,
+                true,
+                null,
+                null,
+                null ) );
+    }
+
     /**
      * This adds a property descriptor for the Size Attribute feature.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataObjectItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataObjectItemProvider.java
index e67e95cb07ad4c944f6acce0fa53a88e06304cff..1c81aa1df78e57970b13315e2392fe7d69944290 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataObjectItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataObjectItemProvider.java
@@ -64,6 +64,7 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
             addPresCondPropertyDescriptor( object );
             addPresCondArgsPropertyDescriptor( object );
             addPresCondArgsIDPropertyDescriptor( object );
+            addRefersToPresCondArgsDocPropertyDescriptor( object );
             addIsArrayPropertyDescriptor( object );
             addMaxIndexAttributePropertyDescriptor( object );
             addMinIndexPropertyDescriptor( object );
@@ -234,6 +235,28 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
                         null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Pres Cond Args Doc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToPresCondArgsDocPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceCondition_refersToPresCondArgsDoc_feature", "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC,
+                true,
+                false,
+                true,
+                null,
+                null,
+                null ) );
+    }
+
     /**
      * This adds a property descriptor for the Size Attribute feature.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
index 968f3ef7cbb844091c7cbb6887ba3547cba5a9e6..ee3e1c7ea01e1055f95588525718e92245ae9f4d 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
@@ -142,6 +142,8 @@
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parentAbbreviations" ordered="false"
         eType="#//Abbreviations" unsettable="true" resolveProxies="false" eOpposite="#//Abbreviations/abbreviation"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDoc" ordered="false"
+        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByAbbreviation"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Abbreviations" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -403,6 +405,8 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="referredByDataAttribute"
         ordered="false" upperBound="-1" eType="#//DataAttribute" transient="true"
         unsettable="true" resolveProxies="false" eOpposite="#//DataAttribute/refersToBasicType"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDoc" ordered="false"
+        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByBasicType"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BasicTypes" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -898,6 +902,30 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="parentNSDoc" ordered="false"
         eType="#//NSDoc" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//NSDoc/doc"/>
+    <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"
+        ordered="false" upperBound="-1" eType="#//PresenceCondition" transient="true"
+        unsettable="true" resolveProxies="false" eOpposite="#//PresenceCondition/refersToDoc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByAgPresenceCondition"
+        ordered="false" upperBound="-1" eType="#//AgPresenceCondition" transient="true"
+        unsettable="true" resolveProxies="false" eOpposite="#//AgPresenceCondition/refersToPresCondArgsDoc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByAbbreviation"
+        ordered="false" upperBound="-1" eType="#//Abbreviation" transient="true" unsettable="true"
+        resolveProxies="false" eOpposite="#//Abbreviation/refersToDoc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByBasicType" ordered="false"
+        upperBound="-1" eType="#//BasicType" transient="true" unsettable="true" resolveProxies="false"
+        eOpposite="#//BasicType/refersToDoc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByDocumentedClass"
+        ordered="false" upperBound="-1" eType="#//DocumentedClass" transient="true"
+        unsettable="true" resolveProxies="false" eOpposite="#//DocumentedClass/refersToDoc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByFunctionalConstraint"
+        ordered="false" upperBound="-1" eType="#//FunctionalConstraint" transient="true"
+        unsettable="true" resolveProxies="false" eOpposite="#//FunctionalConstraint/refersToDoc"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByAgPresenceConditionDerivedStatistics"
+        ordered="false" upperBound="-1" eType="#//AgPresenceConditionDerivedStatistics"
+        transient="true" unsettable="true" resolveProxies="false" eOpposite="#//AgPresenceConditionDerivedStatistics/refersToDsPresCondArgsDoc"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DocumentedClass" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -925,6 +953,8 @@
         <details key="name" value="informative"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDoc" ordered="false"
+        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/referredByDocumentedClass"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="#//TitledClass">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1042,6 +1072,8 @@
     <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"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FunctionalConstraints" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1431,6 +1463,8 @@
     <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"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PresenceConditions" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1940,6 +1974,9 @@
         <details key="name" value="presCondArgsID"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToPresCondArgsDoc"
+        ordered="false" eType="#//Doc" transient="true" unsettable="true" resolveProxies="false"
+        eOpposite="#//Doc/referredByAgPresenceCondition"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="AgPresenceConditionDerivedStatistics"
       abstract="true">
@@ -1964,6 +2001,9 @@
         <details key="name" value="dsPresCondArgsID"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDsPresCondArgsDoc"
+        ordered="false" eType="#//Doc" transient="true" unsettable="true" resolveProxies="false"
+        eOpposite="#//Doc/referredByAgPresenceConditionDerivedStatistics"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="AgArray" abstract="true">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
@@ -2098,6 +2138,8 @@
         <details key="name" value="descID"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToDoc" ordered="false"
+        eType="#//Doc" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//Doc/ReferredByAgNSDesc"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="IRiseClipseConsole" instanceClassName="fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole"
       abstract="true" interface="true"/>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
index 5c8c4bccbb1d20d8c699960c6d38a631a43ab708..4868837c0b5a0ceefe6c93136ce4b2d7d1bb82f1 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
@@ -131,6 +131,7 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Abbreviation/descID"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Abbreviation/name"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//Abbreviation/parentAbbreviations"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//Abbreviation/refersToDoc"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//Abbreviations">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//Abbreviations/abbreviation"/>
@@ -164,6 +165,7 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//BasicType/name"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//BasicType/parentBasicTypes"/>
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//BasicType/referredByDataAttribute"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//BasicType/refersToDoc"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//BasicTypes">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//BasicTypes/basicType"/>
@@ -247,11 +249,20 @@
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Doc/any"/>
       <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/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/referredByAgPresenceConditionDerivedStatistics"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DocumentedClass">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DocumentedClass/deprecated"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DocumentedClass/descID"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DocumentedClass/informative"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//DocumentedClass/refersToDoc"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//Enumeration">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//Enumeration/literal"/>
@@ -272,6 +283,7 @@
       <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"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//FunctionalConstraints">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//FunctionalConstraints/functionalConstraint"/>
@@ -352,6 +364,7 @@
       <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"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//PresenceConditions">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//PresenceConditions/presenceCondition"/>
@@ -438,11 +451,13 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceCondition/presCond"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceCondition/presCondArgs"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceCondition/presCondArgsID"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//AgPresenceCondition/refersToPresCondArgsDoc"/>
     </genClasses>
     <genClasses image="false" ecoreClass="nsd.ecore#//AgPresenceConditionDerivedStatistics">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceConditionDerivedStatistics/dsPresCond"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceConditionDerivedStatistics/dsPresCondArgs"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceConditionDerivedStatistics/dsPresCondArgsID"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//AgPresenceConditionDerivedStatistics/refersToDsPresCondArgsDoc"/>
     </genClasses>
     <genClasses image="false" ecoreClass="nsd.ecore#//AgArray">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgArray/isArray"/>
@@ -474,6 +489,7 @@
     </genClasses>
     <genClasses image="false" ecoreClass="nsd.ecore#//AgNSdesc">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSdesc/descID"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//AgNSdesc/refersToDoc"/>
     </genClasses>
     <genClasses image="false" ecoreClass="nsd.ecore#//IRiseClipseConsole"/>
   </genPackages>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviation.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviation.java
index 80affbe2aa769cb133bc60450d484b8f79dcc711..390eec7af52f0799f3f72277e1bae3ae5ce629cd 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviation.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviation.java
@@ -31,6 +31,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getParentAbbreviations <em>Parent Abbreviations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getRefersToDoc <em>Refers To Doc</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAbbreviation()
@@ -164,4 +165,55 @@ public interface Abbreviation extends NsdObject {
      */
     void setParentAbbreviations( Abbreviations value );
 
+    /**
+     * 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#getReferredByAbbreviation <em>Referred By Abbreviation</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#getAbbreviation_RefersToDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAbbreviation
+     * @model opposite="referredByAbbreviation" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    Doc getRefersToDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getRefersToDoc <em>Refers To 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()
+     * @generated
+     */
+    void setRefersToDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToDoc()
+     * @see #getRefersToDoc()
+     * @see #setRefersToDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getRefersToDoc <em>Refers To 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)
+     * @generated
+     */
+    boolean isSetRefersToDoc();
+
 } // Abbreviation
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSdesc.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSdesc.java
index 64a32e203d6716a09dd51ea3fe35e4de86d5f2e7..e3e16a817ced662fc1eaaa4f35ef31b678599198 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSdesc.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSdesc.java
@@ -31,6 +31,7 @@ import org.eclipse.emf.ecore.EObject;
  * </p>
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getRefersToDoc <em>Refers To Doc</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgNSdesc()
@@ -92,4 +93,55 @@ public interface AgNSdesc extends EObject {
      */
     boolean isSetDescID();
 
+    /**
+     * 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#getReferredByAgNSDesc <em>Referred By Ag NS 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#getAgNSdesc_RefersToDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgNSDesc
+     * @model opposite="ReferredByAgNSDesc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    Doc getRefersToDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getRefersToDoc <em>Refers To 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()
+     * @generated
+     */
+    void setRefersToDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToDoc()
+     * @see #getRefersToDoc()
+     * @see #setRefersToDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getRefersToDoc <em>Refers To 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)
+     * @generated
+     */
+    boolean isSetRefersToDoc();
+
 } // AgNSdesc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceCondition.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceCondition.java
index 89846a790e2aaef0118a977d93a734fc8b6e7874..ce3ad3cac8d2811f1a07e32ee1fbef61fd90f573 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceCondition.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceCondition.java
@@ -33,6 +33,7 @@ import org.eclipse.emf.ecore.EObject;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceCondition()
@@ -203,4 +204,55 @@ public interface AgPresenceCondition extends EObject {
      */
     boolean isSetPresCondArgsID();
 
+    /**
+     * Returns the value of the '<em><b>Refers To Pres Cond Args Doc</b></em>' reference.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceCondition <em>Referred By Ag Presence Condition</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Refers To Pres Cond Args Doc</em>' reference.
+     * @see #isSetRefersToPresCondArgsDoc()
+     * @see #unsetRefersToPresCondArgsDoc()
+     * @see #setRefersToPresCondArgsDoc(Doc)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceCondition_RefersToPresCondArgsDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceCondition
+     * @model opposite="referredByAgPresenceCondition" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    Doc getRefersToPresCondArgsDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Refers To Pres Cond Args Doc</em>' reference.
+     * @see #isSetRefersToPresCondArgsDoc()
+     * @see #unsetRefersToPresCondArgsDoc()
+     * @see #getRefersToPresCondArgsDoc()
+     * @generated
+     */
+    void setRefersToPresCondArgsDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToPresCondArgsDoc()
+     * @see #getRefersToPresCondArgsDoc()
+     * @see #setRefersToPresCondArgsDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToPresCondArgsDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}' reference is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Refers To Pres Cond Args Doc</em>' reference is set.
+     * @see #unsetRefersToPresCondArgsDoc()
+     * @see #getRefersToPresCondArgsDoc()
+     * @see #setRefersToPresCondArgsDoc(Doc)
+     * @generated
+     */
+    boolean isSetRefersToPresCondArgsDoc();
+
 } // AgPresenceCondition
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceConditionDerivedStatistics.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceConditionDerivedStatistics.java
index 38819714fbb372c352eab43110dce646b3951c3d..e23d624611c807b84ea34fbc4468c525ddcf1b26 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceConditionDerivedStatistics.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceConditionDerivedStatistics.java
@@ -33,6 +33,7 @@ import org.eclipse.emf.ecore.EObject;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCond <em>Ds Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getRefersToDsPresCondArgsDoc <em>Refers To Ds Pres Cond Args Doc</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceConditionDerivedStatistics()
@@ -203,4 +204,55 @@ public interface AgPresenceConditionDerivedStatistics extends EObject {
      */
     boolean isSetDsPresCondArgsID();
 
+    /**
+     * Returns the value of the '<em><b>Refers To Ds Pres Cond Args Doc</b></em>' reference.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceConditionDerivedStatistics <em>Referred By Ag Presence Condition Derived Statistics</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Refers To Ds Pres Cond Args Doc</em>' reference.
+     * @see #isSetRefersToDsPresCondArgsDoc()
+     * @see #unsetRefersToDsPresCondArgsDoc()
+     * @see #setRefersToDsPresCondArgsDoc(Doc)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceConditionDerivedStatistics_RefersToDsPresCondArgsDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceConditionDerivedStatistics
+     * @model opposite="referredByAgPresenceConditionDerivedStatistics" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    Doc getRefersToDsPresCondArgsDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getRefersToDsPresCondArgsDoc <em>Refers To Ds Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Refers To Ds Pres Cond Args Doc</em>' reference.
+     * @see #isSetRefersToDsPresCondArgsDoc()
+     * @see #unsetRefersToDsPresCondArgsDoc()
+     * @see #getRefersToDsPresCondArgsDoc()
+     * @generated
+     */
+    void setRefersToDsPresCondArgsDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getRefersToDsPresCondArgsDoc <em>Refers To Ds Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToDsPresCondArgsDoc()
+     * @see #getRefersToDsPresCondArgsDoc()
+     * @see #setRefersToDsPresCondArgsDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToDsPresCondArgsDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getRefersToDsPresCondArgsDoc <em>Refers To Ds Pres Cond Args Doc</em>}' reference is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Refers To Ds Pres Cond Args Doc</em>' reference is set.
+     * @see #unsetRefersToDsPresCondArgsDoc()
+     * @see #getRefersToDsPresCondArgsDoc()
+     * @see #setRefersToDsPresCondArgsDoc(Doc)
+     * @generated
+     */
+    boolean isSetRefersToDsPresCondArgsDoc();
+
 } // AgPresenceConditionDerivedStatistics
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java
index b637337aaf0cf40fd7e41927be8e239ab750f036..fcd6d93a2e548f694137d642af48cbe01ac8e69f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java
@@ -34,6 +34,7 @@ import org.eclipse.emf.common.util.EList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getParentBasicTypes <em>Parent Basic Types</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getReferredByDataAttribute <em>Referred By Data Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getRefersToDoc <em>Refers To Doc</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getBasicType()
@@ -208,4 +209,55 @@ public interface BasicType 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#getReferredByBasicType <em>Referred By Basic Type</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#getBasicType_RefersToDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByBasicType
+     * @model opposite="referredByBasicType" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    Doc getRefersToDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getRefersToDoc <em>Refers To 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()
+     * @generated
+     */
+    void setRefersToDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToDoc()
+     * @see #getRefersToDoc()
+     * @see #setRefersToDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getRefersToDoc <em>Refers To 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)
+     * @generated
+     */
+    boolean isSetRefersToDoc();
+
 } // BasicType
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 5173d8134e96242fc969d9ca701ea18b64412c9d..4cd89bc7c7c78df0849d567c2ba2f19eddc33dbc 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
@@ -19,6 +19,7 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.util.FeatureMap;
 
 /**
@@ -35,6 +36,14 @@ import org.eclipse.emf.ecore.util.FeatureMap;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getAny <em>Any</em>}</li>
  *   <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#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#getReferredByAgPresenceConditionDerivedStatistics <em>Referred By Ag Presence Condition Derived Statistics</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc()
@@ -169,4 +178,300 @@ public interface Doc extends NsdObject {
      */
     void setParentNSDoc( NSDoc value );
 
+    /**
+     * Returns the value of the '<em><b>Referred By Ag NS Desc</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getRefersToDoc <em>Refers To Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Ag NS Desc</em>' reference list.
+     * @see #isSetReferredByAgNSDesc()
+     * @see #unsetReferredByAgNSDesc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByAgNSDesc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getRefersToDoc
+     * @model opposite="refersToDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< AgNSdesc > getReferredByAgNSDesc();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgNSDesc <em>Referred By Ag NS Desc</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByAgNSDesc()
+     * @see #getReferredByAgNSDesc()
+     * @generated
+     */
+    void unsetReferredByAgNSDesc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgNSDesc <em>Referred By Ag NS Desc</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Ag NS Desc</em>' reference list is set.
+     * @see #unsetReferredByAgNSDesc()
+     * @see #getReferredByAgNSDesc()
+     * @generated
+     */
+    boolean isSetReferredByAgNSDesc();
+
+    /**
+     * Returns the value of the '<em><b>Referred By Presence Condition</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>}'.
+     * <!-- 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"
+     * @generated
+     */
+    EList< PresenceCondition > getReferredByPresenceCondition();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByPresenceCondition <em>Referred By Presence Condition</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByPresenceCondition()
+     * @see #getReferredByPresenceCondition()
+     * @generated
+     */
+    void unsetReferredByPresenceCondition();
+
+    /**
+     * 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.
+     * <!-- 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()
+     * @generated
+     */
+    boolean isSetReferredByPresenceCondition();
+
+    /**
+     * Returns the value of the '<em><b>Referred By Ag Presence Condition</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Ag Presence Condition</em>' reference list.
+     * @see #isSetReferredByAgPresenceCondition()
+     * @see #unsetReferredByAgPresenceCondition()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByAgPresenceCondition()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getRefersToPresCondArgsDoc
+     * @model opposite="refersToPresCondArgsDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< AgPresenceCondition > getReferredByAgPresenceCondition();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceCondition <em>Referred By Ag Presence Condition</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByAgPresenceCondition()
+     * @see #getReferredByAgPresenceCondition()
+     * @generated
+     */
+    void unsetReferredByAgPresenceCondition();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceCondition <em>Referred By Ag Presence Condition</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Ag Presence Condition</em>' reference list is set.
+     * @see #unsetReferredByAgPresenceCondition()
+     * @see #getReferredByAgPresenceCondition()
+     * @generated
+     */
+    boolean isSetReferredByAgPresenceCondition();
+
+    /**
+     * Returns the value of the '<em><b>Referred By Abbreviation</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getRefersToDoc <em>Refers To Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Abbreviation</em>' reference list.
+     * @see #isSetReferredByAbbreviation()
+     * @see #unsetReferredByAbbreviation()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByAbbreviation()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getRefersToDoc
+     * @model opposite="refersToDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< Abbreviation > getReferredByAbbreviation();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAbbreviation <em>Referred By Abbreviation</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByAbbreviation()
+     * @see #getReferredByAbbreviation()
+     * @generated
+     */
+    void unsetReferredByAbbreviation();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAbbreviation <em>Referred By Abbreviation</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Abbreviation</em>' reference list is set.
+     * @see #unsetReferredByAbbreviation()
+     * @see #getReferredByAbbreviation()
+     * @generated
+     */
+    boolean isSetReferredByAbbreviation();
+
+    /**
+     * Returns the value of the '<em><b>Referred By Basic Type</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getRefersToDoc <em>Refers To Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Basic Type</em>' reference list.
+     * @see #isSetReferredByBasicType()
+     * @see #unsetReferredByBasicType()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByBasicType()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getRefersToDoc
+     * @model opposite="refersToDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< BasicType > getReferredByBasicType();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByBasicType <em>Referred By Basic Type</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByBasicType()
+     * @see #getReferredByBasicType()
+     * @generated
+     */
+    void unsetReferredByBasicType();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByBasicType <em>Referred By Basic Type</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Basic Type</em>' reference list is set.
+     * @see #unsetReferredByBasicType()
+     * @see #getReferredByBasicType()
+     * @generated
+     */
+    boolean isSetReferredByBasicType();
+
+    /**
+     * Returns the value of the '<em><b>Referred By Documented Class</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#getRefersToDoc <em>Refers To Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Documented Class</em>' reference list.
+     * @see #isSetReferredByDocumentedClass()
+     * @see #unsetReferredByDocumentedClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByDocumentedClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#getRefersToDoc
+     * @model opposite="refersToDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< DocumentedClass > getReferredByDocumentedClass();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByDocumentedClass <em>Referred By Documented Class</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByDocumentedClass()
+     * @see #getReferredByDocumentedClass()
+     * @generated
+     */
+    void unsetReferredByDocumentedClass();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByDocumentedClass <em>Referred By Documented Class</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Documented Class</em>' reference list is set.
+     * @see #unsetReferredByDocumentedClass()
+     * @see #getReferredByDocumentedClass()
+     * @generated
+     */
+    boolean isSetReferredByDocumentedClass();
+
+    /**
+     * Returns the value of the '<em><b>Referred By Functional Constraint</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>}'.
+     * <!-- 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"
+     * @generated
+     */
+    EList< FunctionalConstraint > getReferredByFunctionalConstraint();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByFunctionalConstraint <em>Referred By Functional Constraint</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByFunctionalConstraint()
+     * @see #getReferredByFunctionalConstraint()
+     * @generated
+     */
+    void unsetReferredByFunctionalConstraint();
+
+    /**
+     * 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.
+     * <!-- 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()
+     * @generated
+     */
+    boolean isSetReferredByFunctionalConstraint();
+
+    /**
+     * Returns the value of the '<em><b>Referred By Ag Presence Condition Derived Statistics</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getRefersToDsPresCondArgsDoc <em>Refers To Ds Pres Cond Args Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Ag Presence Condition Derived Statistics</em>' reference list.
+     * @see #isSetReferredByAgPresenceConditionDerivedStatistics()
+     * @see #unsetReferredByAgPresenceConditionDerivedStatistics()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDoc_ReferredByAgPresenceConditionDerivedStatistics()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getRefersToDsPresCondArgsDoc
+     * @model opposite="refersToDsPresCondArgsDoc" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< AgPresenceConditionDerivedStatistics > getReferredByAgPresenceConditionDerivedStatistics();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceConditionDerivedStatistics <em>Referred By Ag Presence Condition Derived Statistics</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByAgPresenceConditionDerivedStatistics()
+     * @see #getReferredByAgPresenceConditionDerivedStatistics()
+     * @generated
+     */
+    void unsetReferredByAgPresenceConditionDerivedStatistics();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceConditionDerivedStatistics <em>Referred By Ag Presence Condition Derived Statistics</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Ag Presence Condition Derived Statistics</em>' reference list is set.
+     * @see #unsetReferredByAgPresenceConditionDerivedStatistics()
+     * @see #getReferredByAgPresenceConditionDerivedStatistics()
+     * @generated
+     */
+    boolean isSetReferredByAgPresenceConditionDerivedStatistics();
+
 } // Doc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentedClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentedClass.java
index 2ca1329bcb712b8e133596b74d80e09fafc07b37..b5bdb3cf0825a263092d2e3c0abae7eafd047aa4 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentedClass.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentedClass.java
@@ -31,6 +31,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#isDeprecated <em>Deprecated</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#isInformative <em>Informative</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#getRefersToDoc <em>Refers To Doc</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentedClass()
@@ -190,4 +191,55 @@ public interface DocumentedClass extends NsdObject {
      */
     boolean isSetInformative();
 
+    /**
+     * 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#getReferredByDocumentedClass <em>Referred By Documented Class</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#getDocumentedClass_RefersToDoc()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByDocumentedClass
+     * @model opposite="referredByDocumentedClass" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    Doc getRefersToDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#getRefersToDoc <em>Refers To 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()
+     * @generated
+     */
+    void setRefersToDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToDoc()
+     * @see #getRefersToDoc()
+     * @see #setRefersToDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#getRefersToDoc <em>Refers To 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)
+     * @generated
+     */
+    boolean isSetRefersToDoc();
+
 } // DocumentedClass
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 37ffcac4c83c732812f9d6ccbb26d4ff043e39b3..2e883b13a6c269d02042257e78457c0a6a57139b 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,6 +36,7 @@ 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>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getFunctionalConstraint()
@@ -316,4 +317,55 @@ 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>}'.
+     * <!-- 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"
+     * @generated
+     */
+    Doc getRefersToDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To 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()
+     * @generated
+     */
+    void setRefersToDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToDoc()
+     * @see #getRefersToDoc()
+     * @see #setRefersToDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint#getRefersToDoc <em>Refers To 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)
+     * @generated
+     */
+    boolean isSetRefersToDoc();
+
 } // 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 fd44e7fc84ceb4f741fb0ec78272b59fc9726fc4..286a6af0ab7ac0b9cbad23dd186ad899df211dd5 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
@@ -1122,6 +1122,15 @@ public interface NsdPackage extends EPackage {
      */
     int ABBREVIATION__PARENT_ABBREVIATIONS = NSD_OBJECT_FEATURE_COUNT + 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ABBREVIATION__REFERS_TO_DOC = NSD_OBJECT_FEATURE_COUNT + 3;
+
     /**
      * The number of structural features of the '<em>Abbreviation</em>' class.
      * <!-- begin-user-doc -->
@@ -1129,7 +1138,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ABBREVIATION_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
+    int ABBREVIATION_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 4;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -1266,6 +1275,15 @@ public interface NsdPackage extends EPackage {
      */
     int DOCUMENTED_CLASS__INFORMATIVE = NSD_OBJECT_FEATURE_COUNT + 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENTED_CLASS__REFERS_TO_DOC = NSD_OBJECT_FEATURE_COUNT + 3;
+
     /**
      * The number of structural features of the '<em>Documented Class</em>' class.
      * <!-- begin-user-doc -->
@@ -1273,7 +1291,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DOCUMENTED_CLASS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
+    int DOCUMENTED_CLASS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 4;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -1338,6 +1356,15 @@ public interface NsdPackage extends EPackage {
      */
     int TITLED_CLASS__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TITLED_CLASS__REFERS_TO_DOC = DOCUMENTED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -1419,6 +1446,15 @@ public interface NsdPackage extends EPackage {
      */
     int ANY_LN_CLASS__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ANY_LN_CLASS__REFERS_TO_DOC = TITLED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -1545,6 +1581,15 @@ public interface NsdPackage extends EPackage {
      */
     int ABSTRACT_LN_CLASS__INFORMATIVE = ANY_LN_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ABSTRACT_LN_CLASS__REFERS_TO_DOC = ANY_LN_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -1914,6 +1959,15 @@ public interface NsdPackage extends EPackage {
      */
     int BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE = NSD_OBJECT_FEATURE_COUNT + 3;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int BASIC_TYPE__REFERS_TO_DOC = NSD_OBJECT_FEATURE_COUNT + 4;
+
     /**
      * The number of structural features of the '<em>Basic Type</em>' class.
      * <!-- begin-user-doc -->
@@ -1921,7 +1975,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int BASIC_TYPE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 4;
+    int BASIC_TYPE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 5;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -2049,6 +2103,15 @@ public interface NsdPackage extends EPackage {
      */
     int CDC__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int CDC__REFERS_TO_DOC = TITLED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -2409,6 +2472,15 @@ public interface NsdPackage extends EPackage {
      */
     int CONSTRUCTED_ATTRIBUTE__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int CONSTRUCTED_ATTRIBUTE__REFERS_TO_DOC = TITLED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -2661,6 +2733,15 @@ public interface NsdPackage extends EPackage {
      */
     int DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DATA_ATTRIBUTE__REFERS_TO_DOC = DOCUMENTED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -2688,6 +2769,15 @@ public interface NsdPackage extends EPackage {
      */
     int DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Pres Cond Args Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
     /**
      * The feature id for the '<em><b>Is Array</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -2695,7 +2785,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int DATA_ATTRIBUTE__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
 
     /**
      * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
@@ -2704,7 +2794,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
 
     /**
      * The feature id for the '<em><b>Min Index</b></em>' attribute.
@@ -2713,7 +2803,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int DATA_ATTRIBUTE__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
 
     /**
      * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
@@ -2722,7 +2812,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int DATA_ATTRIBUTE__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
 
     /**
      * The feature id for the '<em><b>Dchg</b></em>' attribute.
@@ -2731,7 +2821,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__DCHG = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int DATA_ATTRIBUTE__DCHG = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
 
     /**
      * The feature id for the '<em><b>Dupd</b></em>' attribute.
@@ -2740,7 +2830,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__DUPD = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int DATA_ATTRIBUTE__DUPD = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
 
     /**
      * The feature id for the '<em><b>Qchg</b></em>' attribute.
@@ -2749,7 +2839,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__QCHG = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int DATA_ATTRIBUTE__QCHG = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
 
     /**
      * The feature id for the '<em><b>Type</b></em>' attribute.
@@ -2758,7 +2848,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
 
     /**
      * The feature id for the '<em><b>Type Kind</b></em>' attribute.
@@ -2767,7 +2857,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+    int DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
 
     /**
      * The feature id for the '<em><b>Default Value</b></em>' attribute.
@@ -2776,7 +2866,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+    int DATA_ATTRIBUTE__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
 
     /**
      * The feature id for the '<em><b>Max Value</b></em>' attribute.
@@ -2785,7 +2875,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
+    int DATA_ATTRIBUTE__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
 
     /**
      * The feature id for the '<em><b>Min Value</b></em>' attribute.
@@ -2794,7 +2884,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
+    int DATA_ATTRIBUTE__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
 
     /**
      * The feature id for the '<em><b>Fc</b></em>' attribute.
@@ -2803,7 +2893,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__FC = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
+    int DATA_ATTRIBUTE__FC = DOCUMENTED_CLASS_FEATURE_COUNT + 16;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -2812,7 +2902,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 16;
+    int DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 17;
 
     /**
      * The feature id for the '<em><b>Parent CDC</b></em>' container reference.
@@ -2821,7 +2911,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__PARENT_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 17;
+    int DATA_ATTRIBUTE__PARENT_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 18;
 
     /**
      * The feature id for the '<em><b>Referred By Sub Data Object As Size Attribute</b></em>' reference list.
@@ -2830,7 +2920,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERRED_BY_SUB_DATA_OBJECT_AS_SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 18;
+    int DATA_ATTRIBUTE__REFERRED_BY_SUB_DATA_OBJECT_AS_SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 19;
 
     /**
      * The feature id for the '<em><b>Referred By Sub Data Object As Max Index Attribute</b></em>' reference list.
@@ -2839,7 +2929,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERRED_BY_SUB_DATA_OBJECT_AS_MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 19;
+    int DATA_ATTRIBUTE__REFERRED_BY_SUB_DATA_OBJECT_AS_MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 20;
 
     /**
      * The feature id for the '<em><b>Refers To Functional Constraint</b></em>' reference.
@@ -2848,7 +2938,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERS_TO_FUNCTIONAL_CONSTRAINT = DOCUMENTED_CLASS_FEATURE_COUNT + 20;
+    int DATA_ATTRIBUTE__REFERS_TO_FUNCTIONAL_CONSTRAINT = DOCUMENTED_CLASS_FEATURE_COUNT + 21;
 
     /**
      * The feature id for the '<em><b>Refers To Presence Condition</b></em>' reference.
@@ -2857,7 +2947,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERS_TO_PRESENCE_CONDITION = DOCUMENTED_CLASS_FEATURE_COUNT + 21;
+    int DATA_ATTRIBUTE__REFERS_TO_PRESENCE_CONDITION = DOCUMENTED_CLASS_FEATURE_COUNT + 22;
 
     /**
      * The feature id for the '<em><b>Refers To Size Attribute</b></em>' reference.
@@ -2866,7 +2956,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERS_TO_SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 22;
+    int DATA_ATTRIBUTE__REFERS_TO_SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 23;
 
     /**
      * The feature id for the '<em><b>Refers To Max Index Attribute</b></em>' reference.
@@ -2875,7 +2965,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERS_TO_MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 23;
+    int DATA_ATTRIBUTE__REFERS_TO_MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 24;
 
     /**
      * The feature id for the '<em><b>Referred By Data Attribute As Size Attribute</b></em>' reference list.
@@ -2884,7 +2974,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERRED_BY_DATA_ATTRIBUTE_AS_SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 24;
+    int DATA_ATTRIBUTE__REFERRED_BY_DATA_ATTRIBUTE_AS_SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 25;
 
     /**
      * The feature id for the '<em><b>Referred By Data Attribute As Max Index Attribute</b></em>' reference list.
@@ -2893,7 +2983,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERRED_BY_DATA_ATTRIBUTE_AS_MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 25;
+    int DATA_ATTRIBUTE__REFERRED_BY_DATA_ATTRIBUTE_AS_MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 26;
 
     /**
      * The feature id for the '<em><b>Refers To Basic Type</b></em>' reference.
@@ -2902,7 +2992,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__REFERS_TO_BASIC_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 26;
+    int DATA_ATTRIBUTE__REFERS_TO_BASIC_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 27;
 
     /**
      * The number of structural features of the '<em>Data Attribute</em>' class.
@@ -2911,7 +3001,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 27;
+    int DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 28;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -2976,6 +3066,15 @@ public interface NsdPackage extends EPackage {
      */
     int DATA_OBJECT__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DATA_OBJECT__REFERS_TO_DOC = DOCUMENTED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -3003,6 +3102,15 @@ public interface NsdPackage extends EPackage {
      */
     int DATA_OBJECT__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Pres Cond Args Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
     /**
      * The feature id for the '<em><b>Ds Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -3010,7 +3118,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__DS_PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int DATA_OBJECT__DS_PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
 
     /**
      * The feature id for the '<em><b>Ds Pres Cond Args</b></em>' attribute.
@@ -3019,7 +3127,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__DS_PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int DATA_OBJECT__DS_PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
 
     /**
      * The feature id for the '<em><b>Ds Pres Cond Args ID</b></em>' attribute.
@@ -3028,7 +3136,16 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__DS_PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int DATA_OBJECT__DS_PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Refers To Ds Pres Cond Args Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
 
     /**
      * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
@@ -3037,7 +3154,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int DATA_OBJECT__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
 
     /**
      * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
@@ -3046,7 +3163,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int DATA_OBJECT__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -3055,7 +3172,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int DATA_OBJECT__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
 
     /**
      * The feature id for the '<em><b>Transient</b></em>' attribute.
@@ -3064,7 +3181,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__TRANSIENT = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int DATA_OBJECT__TRANSIENT = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
 
     /**
      * The feature id for the '<em><b>Type</b></em>' attribute.
@@ -3073,7 +3190,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int DATA_OBJECT__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
 
     /**
      * The feature id for the '<em><b>Parent Any LN Class</b></em>' container reference.
@@ -3082,7 +3199,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__PARENT_ANY_LN_CLASS = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+    int DATA_OBJECT__PARENT_ANY_LN_CLASS = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
 
     /**
      * The feature id for the '<em><b>Refers To CDC</b></em>' reference.
@@ -3091,7 +3208,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__REFERS_TO_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+    int DATA_OBJECT__REFERS_TO_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
 
     /**
      * The feature id for the '<em><b>Refers To Presence Condition</b></em>' reference.
@@ -3100,7 +3217,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__REFERS_TO_PRESENCE_CONDITION = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
+    int DATA_OBJECT__REFERS_TO_PRESENCE_CONDITION = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
 
     /**
      * The feature id for the '<em><b>Refers To Presence Condition Derived Statistics</b></em>' reference.
@@ -3109,7 +3226,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__REFERS_TO_PRESENCE_CONDITION_DERIVED_STATISTICS = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
+    int DATA_OBJECT__REFERS_TO_PRESENCE_CONDITION_DERIVED_STATISTICS = DOCUMENTED_CLASS_FEATURE_COUNT + 16;
 
     /**
      * The number of structural features of the '<em>Data Object</em>' class.
@@ -3118,7 +3235,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
+    int DATA_OBJECT_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 17;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -3264,6 +3381,78 @@ public interface NsdPackage extends EPackage {
      */
     int DOC__PARENT_NS_DOC = NSD_OBJECT_FEATURE_COUNT + 4;
 
+    /**
+     * The feature id for the '<em><b>Referred By Ag NS Desc</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    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.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOC__REFERRED_BY_PRESENCE_CONDITION = NSD_OBJECT_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Referred By Ag Presence Condition</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOC__REFERRED_BY_AG_PRESENCE_CONDITION = NSD_OBJECT_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Referred By Abbreviation</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOC__REFERRED_BY_ABBREVIATION = NSD_OBJECT_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Referred By Basic Type</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOC__REFERRED_BY_BASIC_TYPE = NSD_OBJECT_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Referred By Documented Class</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    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.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT = NSD_OBJECT_FEATURE_COUNT + 11;
+
+    /**
+     * The feature id for the '<em><b>Referred By Ag Presence Condition Derived Statistics</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS = NSD_OBJECT_FEATURE_COUNT + 12;
+
     /**
      * The number of structural features of the '<em>Doc</em>' class.
      * <!-- begin-user-doc -->
@@ -3271,7 +3460,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DOC_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 5;
+    int DOC_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 13;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -3336,6 +3525,15 @@ public interface NsdPackage extends EPackage {
      */
     int ENUMERATION__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ENUMERATION__REFERS_TO_DOC = TITLED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -3561,6 +3759,15 @@ 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.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC = NSD_OBJECT_FEATURE_COUNT + 6;
+
     /**
      * The number of structural features of the '<em>Functional Constraint</em>' class.
      * <!-- begin-user-doc -->
@@ -3568,7 +3775,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 6;
+    int FUNCTIONAL_CONSTRAINT_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 7;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -3786,6 +3993,15 @@ public interface NsdPackage extends EPackage {
      */
     int LITERAL__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int LITERAL__REFERS_TO_DOC = DOCUMENTED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Literal Val</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -3885,6 +4101,15 @@ public interface NsdPackage extends EPackage {
      */
     int LN_CLASS__INFORMATIVE = ANY_LN_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int LN_CLASS__REFERS_TO_DOC = ANY_LN_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -4236,6 +4461,15 @@ public interface NsdPackage extends EPackage {
      */
     int NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 7;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NS__REFERS_TO_DOC = COPYRIGHTED_FEATURE_COUNT + 8;
+
     /**
      * The feature id for the '<em><b>Changes</b></em>' containment reference.
      * <!-- begin-user-doc -->
@@ -4243,7 +4477,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 8;
+    int NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 9;
 
     /**
      * The feature id for the '<em><b>Depends On</b></em>' containment reference.
@@ -4252,7 +4486,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 9;
+    int NS__DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 10;
 
     /**
      * The feature id for the '<em><b>Basic Types</b></em>' containment reference.
@@ -4261,7 +4495,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__BASIC_TYPES = COPYRIGHTED_FEATURE_COUNT + 10;
+    int NS__BASIC_TYPES = COPYRIGHTED_FEATURE_COUNT + 11;
 
     /**
      * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
@@ -4270,7 +4504,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 11;
+    int NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 12;
 
     /**
      * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
@@ -4279,7 +4513,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 12;
+    int NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 13;
 
     /**
      * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
@@ -4288,7 +4522,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 13;
+    int NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 14;
 
     /**
      * The feature id for the '<em><b>Enumerations</b></em>' containment reference.
@@ -4297,7 +4531,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__ENUMERATIONS = COPYRIGHTED_FEATURE_COUNT + 14;
+    int NS__ENUMERATIONS = COPYRIGHTED_FEATURE_COUNT + 15;
 
     /**
      * The feature id for the '<em><b>Constructed Attributes</b></em>' containment reference.
@@ -4306,7 +4540,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 15;
+    int NS__CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 16;
 
     /**
      * The feature id for the '<em><b>CD Cs</b></em>' containment reference.
@@ -4315,7 +4549,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__CD_CS = COPYRIGHTED_FEATURE_COUNT + 16;
+    int NS__CD_CS = COPYRIGHTED_FEATURE_COUNT + 17;
 
     /**
      * The feature id for the '<em><b>LN Classes</b></em>' containment reference.
@@ -4324,7 +4558,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__LN_CLASSES = COPYRIGHTED_FEATURE_COUNT + 17;
+    int NS__LN_CLASSES = COPYRIGHTED_FEATURE_COUNT + 18;
 
     /**
      * The feature id for the '<em><b>Referred By Depends On</b></em>' reference list.
@@ -4333,7 +4567,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__REFERRED_BY_DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 18;
+    int NS__REFERRED_BY_DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 19;
 
     /**
      * The number of structural features of the '<em>NS</em>' class.
@@ -4342,7 +4576,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 19;
+    int NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 20;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -4650,6 +4884,15 @@ 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.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int PRESENCE_CONDITION__REFERS_TO_DOC = NSD_OBJECT_FEATURE_COUNT + 10;
+
     /**
      * The number of structural features of the '<em>Presence Condition</em>' class.
      * <!-- begin-user-doc -->
@@ -4657,7 +4900,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 10;
+    int PRESENCE_CONDITION_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 11;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -4938,6 +5181,15 @@ public interface NsdPackage extends EPackage {
      */
     int SERVICE_CONSTRUCTED_ATTRIBUTE__INFORMATIVE = CONSTRUCTED_ATTRIBUTE__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__REFERS_TO_DOC = CONSTRUCTED_ATTRIBUTE__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -5136,6 +5388,15 @@ public interface NsdPackage extends EPackage {
      */
     int SERVICE_DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_DATA_ATTRIBUTE__REFERS_TO_DOC = DOCUMENTED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -5163,6 +5424,15 @@ public interface NsdPackage extends EPackage {
      */
     int SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Pres Cond Args Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
     /**
      * The feature id for the '<em><b>Type</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -5170,7 +5440,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int SERVICE_DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
 
     /**
      * The feature id for the '<em><b>Type Kind</b></em>' attribute.
@@ -5179,7 +5449,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int SERVICE_DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
 
     /**
      * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
@@ -5188,7 +5458,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
 
     /**
      * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
@@ -5197,7 +5467,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
 
     /**
      * The feature id for the '<em><b>Fc</b></em>' attribute.
@@ -5206,7 +5476,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__FC = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int SERVICE_DATA_ATTRIBUTE__FC = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -5215,7 +5485,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int SERVICE_DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
 
     /**
      * The feature id for the '<em><b>Parent Service CDC</b></em>' container reference.
@@ -5224,7 +5494,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__PARENT_SERVICE_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int SERVICE_DATA_ATTRIBUTE__PARENT_SERVICE_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
 
     /**
      * The number of structural features of the '<em>Service Data Attribute</em>' class.
@@ -5233,7 +5503,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int SERVICE_DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -5352,6 +5622,15 @@ public interface NsdPackage extends EPackage {
      */
     int SERVICE_NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 7;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__REFERS_TO_DOC = COPYRIGHTED_FEATURE_COUNT + 8;
+
     /**
      * The feature id for the '<em><b>Changes</b></em>' containment reference.
      * <!-- begin-user-doc -->
@@ -5359,7 +5638,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 8;
+    int SERVICE_NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 9;
 
     /**
      * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
@@ -5368,7 +5647,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 9;
+    int SERVICE_NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 10;
 
     /**
      * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
@@ -5377,7 +5656,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 10;
+    int SERVICE_NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 11;
 
     /**
      * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
@@ -5386,7 +5665,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 11;
+    int SERVICE_NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 12;
 
     /**
      * The feature id for the '<em><b>Service Type Realizations</b></em>' containment reference.
@@ -5395,7 +5674,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_TYPE_REALIZATIONS = COPYRIGHTED_FEATURE_COUNT + 12;
+    int SERVICE_NS__SERVICE_TYPE_REALIZATIONS = COPYRIGHTED_FEATURE_COUNT + 13;
 
     /**
      * The feature id for the '<em><b>Service Constructed Attributes</b></em>' containment reference.
@@ -5404,7 +5683,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 13;
+    int SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 14;
 
     /**
      * The feature id for the '<em><b>Service CD Cs</b></em>' containment reference.
@@ -5413,7 +5692,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_CD_CS = COPYRIGHTED_FEATURE_COUNT + 14;
+    int SERVICE_NS__SERVICE_CD_CS = COPYRIGHTED_FEATURE_COUNT + 15;
 
     /**
      * The number of structural features of the '<em>Service NS</em>' class.
@@ -5422,7 +5701,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 15;
+    int SERVICE_NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 16;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -5595,6 +5874,15 @@ public interface NsdPackage extends EPackage {
      */
     int SERVICE_PARAMETER__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__REFERS_TO_DOC = DOCUMENTED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Type</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -5793,6 +6081,15 @@ public interface NsdPackage extends EPackage {
      */
     int SUB_DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__REFERS_TO_DOC = DOCUMENTED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -5820,6 +6117,15 @@ public interface NsdPackage extends EPackage {
      */
     int SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Pres Cond Args Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
     /**
      * The feature id for the '<em><b>Is Array</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -5827,7 +6133,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int SUB_DATA_ATTRIBUTE__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
 
     /**
      * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
@@ -5836,7 +6142,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
 
     /**
      * The feature id for the '<em><b>Min Index</b></em>' attribute.
@@ -5845,7 +6151,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int SUB_DATA_ATTRIBUTE__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
 
     /**
      * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
@@ -5854,7 +6160,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
 
     /**
      * The feature id for the '<em><b>Type</b></em>' attribute.
@@ -5863,7 +6169,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int SUB_DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
 
     /**
      * The feature id for the '<em><b>Type Kind</b></em>' attribute.
@@ -5872,7 +6178,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int SUB_DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
 
     /**
      * The feature id for the '<em><b>Default Value</b></em>' attribute.
@@ -5881,7 +6187,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int SUB_DATA_ATTRIBUTE__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
 
     /**
      * The feature id for the '<em><b>Max Value</b></em>' attribute.
@@ -5890,7 +6196,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int SUB_DATA_ATTRIBUTE__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
 
     /**
      * The feature id for the '<em><b>Min Value</b></em>' attribute.
@@ -5899,7 +6205,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+    int SUB_DATA_ATTRIBUTE__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -5908,7 +6214,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+    int SUB_DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
 
     /**
      * The feature id for the '<em><b>Parent Constructed Attribute</b></em>' container reference.
@@ -5917,7 +6223,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__PARENT_CONSTRUCTED_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
+    int SUB_DATA_ATTRIBUTE__PARENT_CONSTRUCTED_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
 
     /**
      * The feature id for the '<em><b>Refers To Presence Condition</b></em>' reference.
@@ -5926,7 +6232,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__REFERS_TO_PRESENCE_CONDITION = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
+    int SUB_DATA_ATTRIBUTE__REFERS_TO_PRESENCE_CONDITION = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
 
     /**
      * The number of structural features of the '<em>Sub Data Attribute</em>' class.
@@ -5935,7 +6241,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
+    int SUB_DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 16;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -6000,6 +6306,15 @@ public interface NsdPackage extends EPackage {
      */
     int SUB_DATA_OBJECT__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__REFERS_TO_DOC = DOCUMENTED_CLASS__REFERS_TO_DOC;
+
     /**
      * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -6027,6 +6342,15 @@ public interface NsdPackage extends EPackage {
      */
     int SUB_DATA_OBJECT__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Pres Cond Args Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
     /**
      * The feature id for the '<em><b>Is Array</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -6034,7 +6358,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int SUB_DATA_OBJECT__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
 
     /**
      * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
@@ -6043,7 +6367,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
 
     /**
      * The feature id for the '<em><b>Min Index</b></em>' attribute.
@@ -6052,7 +6376,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int SUB_DATA_OBJECT__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
 
     /**
      * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
@@ -6061,7 +6385,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int SUB_DATA_OBJECT__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
 
     /**
      * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
@@ -6070,7 +6394,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int SUB_DATA_OBJECT__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
 
     /**
      * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
@@ -6079,7 +6403,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -6088,7 +6412,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int SUB_DATA_OBJECT__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
 
     /**
      * The feature id for the '<em><b>Type</b></em>' attribute.
@@ -6097,7 +6421,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int SUB_DATA_OBJECT__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
 
     /**
      * The feature id for the '<em><b>Parent CDC</b></em>' container reference.
@@ -6106,7 +6430,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__PARENT_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+    int SUB_DATA_OBJECT__PARENT_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
 
     /**
      * The feature id for the '<em><b>Refers To CDC</b></em>' reference.
@@ -6115,7 +6439,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__REFERS_TO_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+    int SUB_DATA_OBJECT__REFERS_TO_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
 
     /**
      * The feature id for the '<em><b>Refers To Presence Condition</b></em>' reference.
@@ -6124,7 +6448,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__REFERS_TO_PRESENCE_CONDITION = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
+    int SUB_DATA_OBJECT__REFERS_TO_PRESENCE_CONDITION = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
 
     /**
      * The feature id for the '<em><b>Refers To Size Attribute</b></em>' reference.
@@ -6133,7 +6457,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__REFERS_TO_SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
+    int SUB_DATA_OBJECT__REFERS_TO_SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
 
     /**
      * The feature id for the '<em><b>Refers To Max Index Attribute</b></em>' reference.
@@ -6142,7 +6466,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__REFERS_TO_MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
+    int SUB_DATA_OBJECT__REFERS_TO_MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 16;
 
     /**
      * The number of structural features of the '<em>Sub Data Object</em>' class.
@@ -6151,7 +6475,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 16;
+    int SUB_DATA_OBJECT_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 17;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -6261,6 +6585,15 @@ public interface NsdPackage extends EPackage {
      */
     int AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID = 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Pres Cond Args Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC = 3;
+
     /**
      * The number of structural features of the '<em>Ag Presence Condition</em>' class.
      * <!-- begin-user-doc -->
@@ -6268,7 +6601,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int AG_PRESENCE_CONDITION_FEATURE_COUNT = 3;
+    int AG_PRESENCE_CONDITION_FEATURE_COUNT = 4;
 
     /**
      * The number of operations of the '<em>Ag Presence Condition</em>' class.
@@ -6306,6 +6639,15 @@ public interface NsdPackage extends EPackage {
      */
     int AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID = 2;
 
+    /**
+     * The feature id for the '<em><b>Refers To Ds Pres Cond Args Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC = 3;
+
     /**
      * The number of structural features of the '<em>Ag Presence Condition Derived Statistics</em>' class.
      * <!-- begin-user-doc -->
@@ -6313,7 +6655,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int AG_PRESENCE_CONDITION_DERIVED_STATISTICS_FEATURE_COUNT = 3;
+    int AG_PRESENCE_CONDITION_DERIVED_STATISTICS_FEATURE_COUNT = 4;
 
     /**
      * The number of operations of the '<em>Ag Presence Condition Derived Statistics</em>' class.
@@ -6603,6 +6945,15 @@ public interface NsdPackage extends EPackage {
      */
     int AG_NSDESC__DESC_ID = 0;
 
+    /**
+     * The feature id for the '<em><b>Refers To Doc</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NSDESC__REFERS_TO_DOC = 1;
+
     /**
      * The number of structural features of the '<em>Ag NSdesc</em>' class.
      * <!-- begin-user-doc -->
@@ -6610,7 +6961,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int AG_NSDESC_FEATURE_COUNT = 1;
+    int AG_NSDESC_FEATURE_COUNT = 2;
 
     /**
      * The number of operations of the '<em>Ag NSdesc</em>' class.
@@ -6994,6 +7345,17 @@ public interface NsdPackage extends EPackage {
      */
     EReference getAbbreviation_ParentAbbreviations();
 
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation#getRefersToDoc <em>Refers To 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.Abbreviation#getRefersToDoc()
+     * @see #getAbbreviation()
+     * @generated
+     */
+    EReference getAbbreviation_RefersToDoc();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviations <em>Abbreviations</em>}'.
      * <!-- begin-user-doc -->
@@ -7283,6 +7645,17 @@ public interface NsdPackage extends EPackage {
      */
     EReference getBasicType_ReferredByDataAttribute();
 
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType#getRefersToDoc <em>Refers To 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.BasicType#getRefersToDoc()
+     * @see #getBasicType()
+     * @generated
+     */
+    EReference getBasicType_RefersToDoc();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicTypes <em>Basic Types</em>}'.
      * <!-- begin-user-doc -->
@@ -8052,6 +8425,94 @@ public interface NsdPackage extends EPackage {
      */
     EReference getDoc_ParentNSDoc();
 
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgNSDesc <em>Referred By Ag NS Desc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Ag NS Desc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgNSDesc()
+     * @see #getDoc()
+     * @generated
+     */
+    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>}'.
+     * <!-- 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()
+     * @see #getDoc()
+     * @generated
+     */
+    EReference getDoc_ReferredByPresenceCondition();
+
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceCondition <em>Referred By Ag Presence Condition</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Ag Presence Condition</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceCondition()
+     * @see #getDoc()
+     * @generated
+     */
+    EReference getDoc_ReferredByAgPresenceCondition();
+
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAbbreviation <em>Referred By Abbreviation</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Abbreviation</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAbbreviation()
+     * @see #getDoc()
+     * @generated
+     */
+    EReference getDoc_ReferredByAbbreviation();
+
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByBasicType <em>Referred By Basic Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Basic Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByBasicType()
+     * @see #getDoc()
+     * @generated
+     */
+    EReference getDoc_ReferredByBasicType();
+
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByDocumentedClass <em>Referred By Documented Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Documented Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByDocumentedClass()
+     * @see #getDoc()
+     * @generated
+     */
+    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>}'.
+     * <!-- 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()
+     * @see #getDoc()
+     * @generated
+     */
+    EReference getDoc_ReferredByFunctionalConstraint();
+
+    /**
+     * 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>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Ag Presence Condition Derived Statistics</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc#getReferredByAgPresenceConditionDerivedStatistics()
+     * @see #getDoc()
+     * @generated
+     */
+    EReference getDoc_ReferredByAgPresenceConditionDerivedStatistics();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass <em>Documented Class</em>}'.
      * <!-- begin-user-doc -->
@@ -8095,6 +8556,17 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getDocumentedClass_Informative();
 
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass#getRefersToDoc <em>Refers To 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.DocumentedClass#getRefersToDoc()
+     * @see #getDocumentedClass()
+     * @generated
+     */
+    EReference getDocumentedClass_RefersToDoc();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Enumeration <em>Enumeration</em>}'.
      * <!-- begin-user-doc -->
@@ -8279,6 +8751,17 @@ 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>}'.
+     * <!-- 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()
+     * @see #getFunctionalConstraint()
+     * @generated
+     */
+    EReference getFunctionalConstraint_RefersToDoc();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraints <em>Functional Constraints</em>}'.
      * <!-- begin-user-doc -->
@@ -8881,6 +9364,17 @@ 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>}'.
+     * <!-- 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()
+     * @see #getPresenceCondition()
+     * @generated
+     */
+    EReference getPresenceCondition_RefersToDoc();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions <em>Presence Conditions</em>}'.
      * <!-- begin-user-doc -->
@@ -9601,6 +10095,17 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getAgPresenceCondition_PresCondArgsID();
 
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference '<em>Refers To Pres Cond Args Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getRefersToPresCondArgsDoc()
+     * @see #getAgPresenceCondition()
+     * @generated
+     */
+    EReference getAgPresenceCondition_RefersToPresCondArgsDoc();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics <em>Ag Presence Condition Derived Statistics</em>}'.
      * <!-- begin-user-doc -->
@@ -9644,6 +10149,17 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getAgPresenceConditionDerivedStatistics_DsPresCondArgsID();
 
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getRefersToDsPresCondArgsDoc <em>Refers To Ds Pres Cond Args Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference '<em>Refers To Ds Pres Cond Args Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getRefersToDsPresCondArgsDoc()
+     * @see #getAgPresenceConditionDerivedStatistics()
+     * @generated
+     */
+    EReference getAgPresenceConditionDerivedStatistics_RefersToDsPresCondArgsDoc();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray <em>Ag Array</em>}'.
      * <!-- begin-user-doc -->
@@ -9901,6 +10417,17 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getAgNSdesc_DescID();
 
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getRefersToDoc <em>Refers To 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.AgNSdesc#getRefersToDoc()
+     * @see #getAgNSdesc()
+     * @generated
+     */
+    EReference getAgNSdesc_RefersToDoc();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole <em>IRise Clipse Console</em>}'.
      * <!-- begin-user-doc -->
@@ -10249,6 +10776,14 @@ public interface NsdPackage extends EPackage {
          */
         EReference ABBREVIATION__PARENT_ABBREVIATIONS = eINSTANCE.getAbbreviation_ParentAbbreviations();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference ABBREVIATION__REFERS_TO_DOC = eINSTANCE.getAbbreviation_RefersToDoc();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationsImpl <em>Abbreviations</em>}' class.
          * <!-- begin-user-doc -->
@@ -10478,6 +11013,14 @@ public interface NsdPackage extends EPackage {
          */
         EReference BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE = eINSTANCE.getBasicType_ReferredByDataAttribute();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference BASIC_TYPE__REFERS_TO_DOC = eINSTANCE.getBasicType_RefersToDoc();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypesImpl <em>Basic Types</em>}' class.
          * <!-- begin-user-doc -->
@@ -11082,6 +11625,71 @@ public interface NsdPackage extends EPackage {
          */
         EReference DOC__PARENT_NS_DOC = eINSTANCE.getDoc_ParentNSDoc();
 
+        /**
+         * The meta object literal for the '<em><b>Referred By Ag NS Desc</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        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.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOC__REFERRED_BY_PRESENCE_CONDITION = eINSTANCE.getDoc_ReferredByPresenceCondition();
+
+        /**
+         * The meta object literal for the '<em><b>Referred By Ag Presence Condition</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOC__REFERRED_BY_AG_PRESENCE_CONDITION = eINSTANCE.getDoc_ReferredByAgPresenceCondition();
+
+        /**
+         * The meta object literal for the '<em><b>Referred By Abbreviation</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOC__REFERRED_BY_ABBREVIATION = eINSTANCE.getDoc_ReferredByAbbreviation();
+
+        /**
+         * The meta object literal for the '<em><b>Referred By Basic Type</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOC__REFERRED_BY_BASIC_TYPE = eINSTANCE.getDoc_ReferredByBasicType();
+
+        /**
+         * The meta object literal for the '<em><b>Referred By Documented Class</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        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.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT = eINSTANCE.getDoc_ReferredByFunctionalConstraint();
+
+        /**
+         * The meta object literal for the '<em><b>Referred By Ag Presence Condition Derived Statistics</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS = eINSTANCE
+                .getDoc_ReferredByAgPresenceConditionDerivedStatistics();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl <em>Documented Class</em>}' class.
          * <!-- begin-user-doc -->
@@ -11116,6 +11724,14 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute DOCUMENTED_CLASS__INFORMATIVE = eINSTANCE.getDocumentedClass_Informative();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOCUMENTED_CLASS__REFERS_TO_DOC = eINSTANCE.getDocumentedClass_RefersToDoc();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationImpl <em>Enumeration</em>}' class.
          * <!-- begin-user-doc -->
@@ -11261,6 +11877,14 @@ public interface NsdPackage extends EPackage {
         EReference FUNCTIONAL_CONSTRAINT__REFERRED_BY_DATA_ATTRIBUTE = eINSTANCE
                 .getFunctionalConstraint_ReferredByDataAttribute();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC = eINSTANCE.getFunctionalConstraint_RefersToDoc();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintsImpl <em>Functional Constraints</em>}' class.
          * <!-- begin-user-doc -->
@@ -11737,6 +12361,14 @@ public interface NsdPackage extends EPackage {
         EReference PRESENCE_CONDITION__REFERRED_BY_SUB_DATA_ATTRIBUTE = eINSTANCE
                 .getPresenceCondition_ReferredBySubDataAttribute();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference PRESENCE_CONDITION__REFERS_TO_DOC = eINSTANCE.getPresenceCondition_RefersToDoc();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionsImpl <em>Presence Conditions</em>}' class.
          * <!-- begin-user-doc -->
@@ -12317,6 +12949,15 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID = eINSTANCE.getAgPresenceCondition_PresCondArgsID();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Pres Cond Args Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC = eINSTANCE
+                .getAgPresenceCondition_RefersToPresCondArgsDoc();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl <em>Ag Presence Condition Derived Statistics</em>}' class.
          * <!-- begin-user-doc -->
@@ -12354,6 +12995,15 @@ public interface NsdPackage extends EPackage {
         EAttribute AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID = eINSTANCE
                 .getAgPresenceConditionDerivedStatistics_DsPresCondArgsID();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Ds Pres Cond Args Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC = eINSTANCE
+                .getAgPresenceConditionDerivedStatistics_RefersToDsPresCondArgsDoc();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl <em>Ag Array</em>}' class.
          * <!-- begin-user-doc -->
@@ -12560,6 +13210,14 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute AG_NSDESC__DESC_ID = eINSTANCE.getAgNSdesc_DescID();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Doc</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference AG_NSDESC__REFERS_TO_DOC = eINSTANCE.getAgNSdesc_RefersToDoc();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole <em>IRise Clipse Console</em>}' class.
          * <!-- begin-user-doc -->
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 3d51b838bc92f664e4655200d79b018685551f22..8f406e7972ecce04c40443c13f306e7c292ff8a3 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,6 +40,7 @@ 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>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getPresenceCondition()
@@ -478,4 +479,55 @@ 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>}'.
+     * <!-- 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"
+     * @generated
+     */
+    Doc getRefersToDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To 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()
+     * @generated
+     */
+    void setRefersToDoc( Doc value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToDoc()
+     * @see #getRefersToDoc()
+     * @see #setRefersToDoc(Doc)
+     * @generated
+     */
+    void unsetRefersToDoc();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition#getRefersToDoc <em>Refers To 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)
+     * @generated
+     */
+    boolean isSetRefersToDoc();
+
 } // PresenceCondition
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationImpl.java
index bd09b9f8e355ab7cd3f49461cabf2925585f6de8..2c636c76a5cb00664d81afee7616516644ec26f0 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationImpl.java
@@ -21,7 +21,10 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import org.eclipse.emf.common.notify.Notification;
 
@@ -43,6 +46,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationImpl#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationImpl#getParentAbbreviations <em>Parent Abbreviations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationImpl#getRefersToDoc <em>Refers To Doc</em>}</li>
  * </ul>
  *
  * @generated
@@ -106,6 +110,25 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
      */
     protected boolean nameESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDoc;
+
+    /**
+     * This is true if the Refers To Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDocESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -278,6 +301,118 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
                     newParentAbbreviations, newParentAbbreviations ) );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDoc() {
+        return refersToDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = newRefersToDoc;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.ABBREVIATION__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc, !oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDoc( Doc newRefersToDoc ) {
+        if( newRefersToDoc != refersToDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_ABBREVIATION, Doc.class, msgs );
+            if( newRefersToDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_ABBREVIATION, Doc.class, msgs );
+            msgs = basicSetRefersToDoc( newRefersToDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.ABBREVIATION__REFERS_TO_DOC,
+                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = null;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.ABBREVIATION__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDoc() {
+        if( refersToDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_ABBREVIATION,
+                    Doc.class, msgs );
+            msgs = basicUnsetRefersToDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.ABBREVIATION__REFERS_TO_DOC, null,
+                        null, oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDoc() {
+        return refersToDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -290,6 +425,11 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
             if( eInternalContainer() != null )
                 msgs = eBasicRemoveFromContainer( msgs );
             return basicSetParentAbbreviations( ( Abbreviations ) otherEnd, msgs );
+        case NsdPackage.ABBREVIATION__REFERS_TO_DOC:
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_ABBREVIATION, Doc.class, msgs );
+            return basicSetRefersToDoc( ( Doc ) otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -304,6 +444,8 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
         switch( featureID ) {
         case NsdPackage.ABBREVIATION__PARENT_ABBREVIATIONS:
             return basicSetParentAbbreviations( null, msgs );
+        case NsdPackage.ABBREVIATION__REFERS_TO_DOC:
+            return basicUnsetRefersToDoc( msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -337,6 +479,8 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
             return getName();
         case NsdPackage.ABBREVIATION__PARENT_ABBREVIATIONS:
             return getParentAbbreviations();
+        case NsdPackage.ABBREVIATION__REFERS_TO_DOC:
+            return getRefersToDoc();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -358,6 +502,9 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
         case NsdPackage.ABBREVIATION__PARENT_ABBREVIATIONS:
             setParentAbbreviations( ( Abbreviations ) newValue );
             return;
+        case NsdPackage.ABBREVIATION__REFERS_TO_DOC:
+            setRefersToDoc( ( Doc ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -379,6 +526,9 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
         case NsdPackage.ABBREVIATION__PARENT_ABBREVIATIONS:
             setParentAbbreviations( ( Abbreviations ) null );
             return;
+        case NsdPackage.ABBREVIATION__REFERS_TO_DOC:
+            unsetRefersToDoc();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -397,6 +547,8 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
             return isSetName();
         case NsdPackage.ABBREVIATION__PARENT_ABBREVIATIONS:
             return getParentAbbreviations() != null;
+        case NsdPackage.ABBREVIATION__REFERS_TO_DOC:
+            return isSetRefersToDoc();
         }
         return super.eIsSet( featureID );
     }
@@ -425,4 +577,18 @@ public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
         return result.toString();
     }
 
+    @Override
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
+        
+        if( isSetDescID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getDescID() );
+                if( doc != null ) setRefersToDoc( doc );
+            }
+        }
+
+        return false;
+    }
+
 } //AbbreviationImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSdescImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSdescImpl.java
index 4be12683c63d1cbe66d79269318defc42e795280..ff28a49ab9c2440184be9a2f0ebabe3bc2588aa3 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSdescImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSdescImpl.java
@@ -20,12 +20,15 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
@@ -38,6 +41,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  * </p>
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl#getRefersToDoc <em>Refers To Doc</em>}</li>
  * </ul>
  *
  * @generated
@@ -72,6 +76,25 @@ public abstract class AgNSdescImpl extends MinimalEObjectImpl.Container implemen
      */
     protected boolean descIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDoc;
+
+    /**
+     * This is true if the Refers To Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDocESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -143,6 +166,149 @@ public abstract class AgNSdescImpl extends MinimalEObjectImpl.Container implemen
         return descIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDoc() {
+        return refersToDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = newRefersToDoc;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.AG_NSDESC__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc, !oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDoc( Doc newRefersToDoc ) {
+        if( newRefersToDoc != refersToDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            if( newRefersToDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDoc ).eInverseAdd( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            msgs = basicSetRefersToDoc( newRefersToDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.AG_NSDESC__REFERS_TO_DOC,
+                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = null;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.AG_NSDESC__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDoc() {
+        if( refersToDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                    Doc.class, msgs );
+            msgs = basicUnsetRefersToDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_NSDESC__REFERS_TO_DOC, null,
+                        null, oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDoc() {
+        return refersToDocESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.AG_NSDESC__REFERS_TO_DOC:
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            return basicSetRefersToDoc( ( Doc ) otherEnd, msgs );
+        }
+        return super.eInverseAdd( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.AG_NSDESC__REFERS_TO_DOC:
+            return basicUnsetRefersToDoc( msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -153,6 +319,8 @@ public abstract class AgNSdescImpl extends MinimalEObjectImpl.Container implemen
         switch( featureID ) {
         case NsdPackage.AG_NSDESC__DESC_ID:
             return getDescID();
+        case NsdPackage.AG_NSDESC__REFERS_TO_DOC:
+            return getRefersToDoc();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -168,6 +336,9 @@ public abstract class AgNSdescImpl extends MinimalEObjectImpl.Container implemen
         case NsdPackage.AG_NSDESC__DESC_ID:
             setDescID( ( String ) newValue );
             return;
+        case NsdPackage.AG_NSDESC__REFERS_TO_DOC:
+            setRefersToDoc( ( Doc ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -183,6 +354,9 @@ public abstract class AgNSdescImpl extends MinimalEObjectImpl.Container implemen
         case NsdPackage.AG_NSDESC__DESC_ID:
             unsetDescID();
             return;
+        case NsdPackage.AG_NSDESC__REFERS_TO_DOC:
+            unsetRefersToDoc();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -197,6 +371,8 @@ public abstract class AgNSdescImpl extends MinimalEObjectImpl.Container implemen
         switch( featureID ) {
         case NsdPackage.AG_NSDESC__DESC_ID:
             return isSetDescID();
+        case NsdPackage.AG_NSDESC__REFERS_TO_DOC:
+            return isSetRefersToDoc();
         }
         return super.eIsSet( featureID );
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionDerivedStatisticsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionDerivedStatisticsImpl.java
index 310c9dbc005c1ad1ec08a49292e43d21e256acc9..7718df5093dec425cc676198f4ede7d28f3e19a9 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionDerivedStatisticsImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionDerivedStatisticsImpl.java
@@ -20,12 +20,15 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
@@ -40,6 +43,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl#getDsPresCond <em>Ds Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl#getRefersToDsPresCondArgsDoc <em>Refers To Ds Pres Cond Args Doc</em>}</li>
  * </ul>
  *
  * @generated
@@ -133,6 +137,25 @@ public abstract class AgPresenceConditionDerivedStatisticsImpl extends MinimalEO
      */
     protected boolean dsPresCondArgsIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToDsPresCondArgsDoc() <em>Refers To Ds Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDsPresCondArgsDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDsPresCondArgsDoc;
+
+    /**
+     * This is true if the Refers To Ds Pres Cond Args Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDsPresCondArgsDocESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -314,6 +337,155 @@ public abstract class AgPresenceConditionDerivedStatisticsImpl extends MinimalEO
         return dsPresCondArgsIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDsPresCondArgsDoc() {
+        return refersToDsPresCondArgsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDsPresCondArgsDoc( Doc newRefersToDsPresCondArgsDoc,
+            NotificationChain msgs ) {
+        Doc oldRefersToDsPresCondArgsDoc = refersToDsPresCondArgsDoc;
+        refersToDsPresCondArgsDoc = newRefersToDsPresCondArgsDoc;
+        boolean oldRefersToDsPresCondArgsDocESet = refersToDsPresCondArgsDocESet;
+        refersToDsPresCondArgsDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC,
+                    oldRefersToDsPresCondArgsDoc, newRefersToDsPresCondArgsDoc, !oldRefersToDsPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDsPresCondArgsDoc( Doc newRefersToDsPresCondArgsDoc ) {
+        if( newRefersToDsPresCondArgsDoc != refersToDsPresCondArgsDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDsPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToDsPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS, Doc.class, msgs );
+            if( newRefersToDsPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDsPresCondArgsDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS, Doc.class, msgs );
+            msgs = basicSetRefersToDsPresCondArgsDoc( newRefersToDsPresCondArgsDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDsPresCondArgsDocESet = refersToDsPresCondArgsDocESet;
+            refersToDsPresCondArgsDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC,
+                        newRefersToDsPresCondArgsDoc, newRefersToDsPresCondArgsDoc,
+                        !oldRefersToDsPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDsPresCondArgsDoc( NotificationChain msgs ) {
+        Doc oldRefersToDsPresCondArgsDoc = refersToDsPresCondArgsDoc;
+        refersToDsPresCondArgsDoc = null;
+        boolean oldRefersToDsPresCondArgsDocESet = refersToDsPresCondArgsDocESet;
+        refersToDsPresCondArgsDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC,
+                    oldRefersToDsPresCondArgsDoc, null, oldRefersToDsPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDsPresCondArgsDoc() {
+        if( refersToDsPresCondArgsDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDsPresCondArgsDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS, Doc.class, msgs );
+            msgs = basicUnsetRefersToDsPresCondArgsDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDsPresCondArgsDocESet = refersToDsPresCondArgsDocESet;
+            refersToDsPresCondArgsDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC, null,
+                        null, oldRefersToDsPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDsPresCondArgsDoc() {
+        return refersToDsPresCondArgsDocESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            if( refersToDsPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToDsPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS, Doc.class, msgs );
+            return basicSetRefersToDsPresCondArgsDoc( ( Doc ) otherEnd, msgs );
+        }
+        return super.eInverseAdd( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            return basicUnsetRefersToDsPresCondArgsDoc( msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -328,6 +500,8 @@ public abstract class AgPresenceConditionDerivedStatisticsImpl extends MinimalEO
             return getDsPresCondArgs();
         case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
             return getDsPresCondArgsID();
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            return getRefersToDsPresCondArgsDoc();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -349,6 +523,9 @@ public abstract class AgPresenceConditionDerivedStatisticsImpl extends MinimalEO
         case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
             setDsPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            setRefersToDsPresCondArgsDoc( ( Doc ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -370,6 +547,9 @@ public abstract class AgPresenceConditionDerivedStatisticsImpl extends MinimalEO
         case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
             unsetDsPresCondArgsID();
             return;
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            unsetRefersToDsPresCondArgsDoc();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -388,6 +568,8 @@ public abstract class AgPresenceConditionDerivedStatisticsImpl extends MinimalEO
             return isSetDsPresCondArgs();
         case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
             return isSetDsPresCondArgsID();
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            return isSetRefersToDsPresCondArgsDoc();
         }
         return super.eIsSet( featureID );
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionImpl.java
index 09d6747f5e670e473b63558381b49597af4b4009..5d9f195a25c1c2e700115d234fd7603402f1a328 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionImpl.java
@@ -20,12 +20,15 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
@@ -40,6 +43,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}</li>
  * </ul>
  *
  * @generated
@@ -132,6 +136,25 @@ public abstract class AgPresenceConditionImpl extends MinimalEObjectImpl.Contain
      */
     protected boolean presCondArgsIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToPresCondArgsDoc() <em>Refers To Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToPresCondArgsDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToPresCondArgsDoc;
+
+    /**
+     * This is true if the Refers To Pres Cond Args Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToPresCondArgsDocESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -308,6 +331,153 @@ public abstract class AgPresenceConditionImpl extends MinimalEObjectImpl.Contain
         return presCondArgsIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc, NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = newRefersToPresCondArgsDoc;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc,
+                    newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc ) {
+        if( newRefersToPresCondArgsDoc != refersToPresCondArgsDoc ) {
+            NotificationChain msgs = null;
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            if( newRefersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToPresCondArgsDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicSetRefersToPresCondArgsDoc( newRefersToPresCondArgsDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC, newRefersToPresCondArgsDoc,
+                        newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToPresCondArgsDoc( NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = null;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc, null,
+                    oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToPresCondArgsDoc() {
+        if( refersToPresCondArgsDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicUnsetRefersToPresCondArgsDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC, null, null,
+                        oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDocESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            return basicSetRefersToPresCondArgsDoc( ( Doc ) otherEnd, msgs );
+        }
+        return super.eInverseAdd( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+            return basicUnsetRefersToPresCondArgsDoc( msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -322,6 +492,8 @@ public abstract class AgPresenceConditionImpl extends MinimalEObjectImpl.Contain
             return getPresCondArgs();
         case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
+        case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+            return getRefersToPresCondArgsDoc();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -343,6 +515,9 @@ public abstract class AgPresenceConditionImpl extends MinimalEObjectImpl.Contain
         case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
             setPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+            setRefersToPresCondArgsDoc( ( Doc ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -364,6 +539,9 @@ public abstract class AgPresenceConditionImpl extends MinimalEObjectImpl.Contain
         case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
             unsetPresCondArgsID();
             return;
+        case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+            unsetRefersToPresCondArgsDoc();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -382,6 +560,8 @@ public abstract class AgPresenceConditionImpl extends MinimalEObjectImpl.Contain
             return isSetPresCondArgs();
         case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
+        case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+            return isSetRefersToPresCondArgsDoc();
         }
         return super.eIsSet( featureID );
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java
index a8df985ddb82ea423cc485d278c07b96d03459f9..562c4919c77562f4d4c51297a5444ddd459ff5b6 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java
@@ -22,7 +22,10 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicTypes;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
@@ -49,6 +52,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypeImpl#getParentBasicTypes <em>Parent Basic Types</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypeImpl#getReferredByDataAttribute <em>Referred By Data Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypeImpl#getRefersToDoc <em>Refers To Doc</em>}</li>
  * </ul>
  *
  * @generated
@@ -122,6 +126,25 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
      */
     protected EList< DataAttribute > referredByDataAttribute;
 
+    /**
+     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDoc;
+
+    /**
+     * This is true if the Refers To Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDocESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -328,6 +351,118 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
         return referredByDataAttribute != null && ( ( InternalEList.Unsettable< ? > ) referredByDataAttribute ).isSet();
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDoc() {
+        return refersToDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = newRefersToDoc;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.BASIC_TYPE__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc, !oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDoc( Doc newRefersToDoc ) {
+        if( newRefersToDoc != refersToDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_BASIC_TYPE,
+                        Doc.class, msgs );
+            if( newRefersToDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDoc ).eInverseAdd( this, NsdPackage.DOC__REFERRED_BY_BASIC_TYPE,
+                        Doc.class, msgs );
+            msgs = basicSetRefersToDoc( newRefersToDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.BASIC_TYPE__REFERS_TO_DOC,
+                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = null;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.BASIC_TYPE__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDoc() {
+        if( refersToDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_BASIC_TYPE,
+                    Doc.class, msgs );
+            msgs = basicUnsetRefersToDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.BASIC_TYPE__REFERS_TO_DOC, null,
+                        null, oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDoc() {
+        return refersToDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -344,6 +479,11 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
         case NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByDataAttribute() )
                     .basicAdd( otherEnd, msgs );
+        case NsdPackage.BASIC_TYPE__REFERS_TO_DOC:
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_BASIC_TYPE,
+                        Doc.class, msgs );
+            return basicSetRefersToDoc( ( Doc ) otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -360,6 +500,8 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
             return basicSetParentBasicTypes( null, msgs );
         case NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE:
             return ( ( InternalEList< ? > ) getReferredByDataAttribute() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.BASIC_TYPE__REFERS_TO_DOC:
+            return basicUnsetRefersToDoc( msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -395,6 +537,8 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
             return getParentBasicTypes();
         case NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE:
             return getReferredByDataAttribute();
+        case NsdPackage.BASIC_TYPE__REFERS_TO_DOC:
+            return getRefersToDoc();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -421,6 +565,9 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
             getReferredByDataAttribute().clear();
             getReferredByDataAttribute().addAll( ( Collection< ? extends DataAttribute > ) newValue );
             return;
+        case NsdPackage.BASIC_TYPE__REFERS_TO_DOC:
+            setRefersToDoc( ( Doc ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -445,6 +592,9 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
         case NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE:
             unsetReferredByDataAttribute();
             return;
+        case NsdPackage.BASIC_TYPE__REFERS_TO_DOC:
+            unsetRefersToDoc();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -465,6 +615,8 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
             return getParentBasicTypes() != null;
         case NsdPackage.BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE:
             return isSetReferredByDataAttribute();
+        case NsdPackage.BASIC_TYPE__REFERS_TO_DOC:
+            return isSetRefersToDoc();
         }
         return super.eIsSet( featureID );
     }
@@ -493,4 +645,18 @@ public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
         return result.toString();
     }
 
+    @Override
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
+        
+        if( isSetDescID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getDescID() );
+                if( doc != null ) setRefersToDoc( doc );
+            }
+        }
+
+        return false;
+    }
+
 } //BasicTypeImpl
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 11b0f13fcffe0c0847917539c519e4fe5d23ca1c..ec07a6ece45f9598d3a4383736ad3d3d6d058ea8 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
@@ -28,6 +28,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
@@ -35,6 +36,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
 import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import java.math.BigDecimal;
@@ -65,6 +67,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isIsArray <em>Is Array</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMinIndex <em>Min Index</em>}</li>
@@ -181,6 +184,25 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
      */
     protected boolean presCondArgsIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToPresCondArgsDoc() <em>Refers To Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToPresCondArgsDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToPresCondArgsDoc;
+
+    /**
+     * This is true if the Refers To Pres Cond Args Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToPresCondArgsDocESet;
+
     /**
      * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -1464,6 +1486,122 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
         return presCondArgsIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc, NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = newRefersToPresCondArgsDoc;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc,
+                    newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc ) {
+        if( newRefersToPresCondArgsDoc != refersToPresCondArgsDoc ) {
+            NotificationChain msgs = null;
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            if( newRefersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToPresCondArgsDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicSetRefersToPresCondArgsDoc( newRefersToPresCondArgsDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, newRefersToPresCondArgsDoc,
+                        newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToPresCondArgsDoc( NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = null;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc, null,
+                    oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToPresCondArgsDoc() {
+        if( refersToPresCondArgsDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicUnsetRefersToPresCondArgsDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, null, null,
+                        oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2421,6 +2559,11 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
     @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            return basicSetRefersToPresCondArgsDoc( ( Doc ) otherEnd, msgs );
         case NsdPackage.DATA_ATTRIBUTE__PARENT_CDC:
             if( eInternalContainer() != null )
                 msgs = eBasicRemoveFromContainer( msgs );
@@ -2477,6 +2620,8 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
     @Override
     public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return basicUnsetRefersToPresCondArgsDoc( msgs );
         case NsdPackage.DATA_ATTRIBUTE__PARENT_CDC:
             return basicSetParentCDC( null, msgs );
         case NsdPackage.DATA_ATTRIBUTE__REFERRED_BY_SUB_DATA_OBJECT_AS_SIZE_ATTRIBUTE:
@@ -2531,6 +2676,8 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
             return getPresCondArgs();
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
+        case NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return getRefersToPresCondArgsDoc();
         case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
             return isIsArray();
         case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
@@ -2601,6 +2748,9 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             setPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            setRefersToPresCondArgsDoc( ( Doc ) newValue );
+            return;
         case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
             setIsArray( ( Boolean ) newValue );
             return;
@@ -2700,6 +2850,9 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             unsetPresCondArgsID();
             return;
+        case NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            unsetRefersToPresCondArgsDoc();
+            return;
         case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
             unsetIsArray();
             return;
@@ -2790,6 +2943,8 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
             return isSetPresCondArgs();
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
+        case NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return isSetRefersToPresCondArgsDoc();
         case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
             return isSetIsArray();
         case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
@@ -2857,6 +3012,8 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
             case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            case NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -2927,6 +3084,8 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
                 return NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS;
             case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
                 return NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID;
+            case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -3178,6 +3337,13 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
                         + getRefersToBasicType().getParentBasicTypes().getParentNS().getId() + ")" );
             }
         }
+        
+        if( isSetPresCondArgsID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getPresCondArgsID() );
+                if( doc != null ) setRefersToPresCondArgsDoc( doc );
+            }
+        }
 
         return false;
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
index 30c0d5daf1f8bec2adef14b5e7cfd79beaf07ab7..35febc98794249e5bb6dead6d7128b1e1374842c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
@@ -26,10 +26,12 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
 import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -52,9 +54,11 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getDsPresCond <em>Ds Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getRefersToDsPresCondArgsDoc <em>Refers To Ds Pres Cond Args Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getUnderlyingType <em>Underlying Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getName <em>Name</em>}</li>
@@ -156,6 +160,25 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
      */
     protected boolean presCondArgsIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToPresCondArgsDoc() <em>Refers To Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToPresCondArgsDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToPresCondArgsDoc;
+
+    /**
+     * This is true if the Refers To Pres Cond Args Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToPresCondArgsDocESet;
+
     /**
      * The default value of the '{@link #getDsPresCond() <em>Ds Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -243,6 +266,25 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
      */
     protected boolean dsPresCondArgsIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToDsPresCondArgsDoc() <em>Refers To Ds Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDsPresCondArgsDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDsPresCondArgsDoc;
+
+    /**
+     * This is true if the Refers To Ds Pres Cond Args Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDsPresCondArgsDocESet;
+
     /**
      * The default value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -620,6 +662,123 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         return dsPresCondArgsIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDsPresCondArgsDoc() {
+        return refersToDsPresCondArgsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDsPresCondArgsDoc( Doc newRefersToDsPresCondArgsDoc,
+            NotificationChain msgs ) {
+        Doc oldRefersToDsPresCondArgsDoc = refersToDsPresCondArgsDoc;
+        refersToDsPresCondArgsDoc = newRefersToDsPresCondArgsDoc;
+        boolean oldRefersToDsPresCondArgsDocESet = refersToDsPresCondArgsDocESet;
+        refersToDsPresCondArgsDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC, oldRefersToDsPresCondArgsDoc,
+                    newRefersToDsPresCondArgsDoc, !oldRefersToDsPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDsPresCondArgsDoc( Doc newRefersToDsPresCondArgsDoc ) {
+        if( newRefersToDsPresCondArgsDoc != refersToDsPresCondArgsDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDsPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToDsPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS, Doc.class, msgs );
+            if( newRefersToDsPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDsPresCondArgsDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS, Doc.class, msgs );
+            msgs = basicSetRefersToDsPresCondArgsDoc( newRefersToDsPresCondArgsDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDsPresCondArgsDocESet = refersToDsPresCondArgsDocESet;
+            refersToDsPresCondArgsDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC, newRefersToDsPresCondArgsDoc,
+                        newRefersToDsPresCondArgsDoc, !oldRefersToDsPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDsPresCondArgsDoc( NotificationChain msgs ) {
+        Doc oldRefersToDsPresCondArgsDoc = refersToDsPresCondArgsDoc;
+        refersToDsPresCondArgsDoc = null;
+        boolean oldRefersToDsPresCondArgsDocESet = refersToDsPresCondArgsDocESet;
+        refersToDsPresCondArgsDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC, oldRefersToDsPresCondArgsDoc, null,
+                    oldRefersToDsPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDsPresCondArgsDoc() {
+        if( refersToDsPresCondArgsDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDsPresCondArgsDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS, Doc.class, msgs );
+            msgs = basicUnsetRefersToDsPresCondArgsDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDsPresCondArgsDocESet = refersToDsPresCondArgsDocESet;
+            refersToDsPresCondArgsDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC, null, null,
+                        oldRefersToDsPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDsPresCondArgsDoc() {
+        return refersToDsPresCondArgsDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -828,6 +987,122 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         return presCondArgsIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc, NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = newRefersToPresCondArgsDoc;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc,
+                    newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc ) {
+        if( newRefersToPresCondArgsDoc != refersToPresCondArgsDoc ) {
+            NotificationChain msgs = null;
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            if( newRefersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToPresCondArgsDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicSetRefersToPresCondArgsDoc( newRefersToPresCondArgsDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC, newRefersToPresCondArgsDoc,
+                        newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToPresCondArgsDoc( NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = null;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc, null,
+                    oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToPresCondArgsDoc() {
+        if( refersToPresCondArgsDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicUnsetRefersToPresCondArgsDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC, null, null,
+                        oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1446,6 +1721,16 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
     @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            return basicSetRefersToPresCondArgsDoc( ( Doc ) otherEnd, msgs );
+        case NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            if( refersToDsPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToDsPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS, Doc.class, msgs );
+            return basicSetRefersToDsPresCondArgsDoc( ( Doc ) otherEnd, msgs );
         case NsdPackage.DATA_OBJECT__PARENT_ANY_LN_CLASS:
             if( eInternalContainer() != null )
                 msgs = eBasicRemoveFromContainer( msgs );
@@ -1478,6 +1763,10 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
     @Override
     public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            return basicUnsetRefersToPresCondArgsDoc( msgs );
+        case NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            return basicUnsetRefersToDsPresCondArgsDoc( msgs );
         case NsdPackage.DATA_OBJECT__PARENT_ANY_LN_CLASS:
             return basicSetParentAnyLNClass( null, msgs );
         case NsdPackage.DATA_OBJECT__REFERS_TO_CDC:
@@ -1519,12 +1808,16 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
             return getPresCondArgs();
         case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
+        case NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            return getRefersToPresCondArgsDoc();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
             return getDsPresCond();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS:
             return getDsPresCondArgs();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
             return getDsPresCondArgsID();
+        case NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            return getRefersToDsPresCondArgsDoc();
         case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
             return getUnderlyingType();
         case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
@@ -1564,6 +1857,9 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
             setPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            setRefersToPresCondArgsDoc( ( Doc ) newValue );
+            return;
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
             setDsPresCond( ( String ) newValue );
             return;
@@ -1573,6 +1869,9 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
             setDsPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            setRefersToDsPresCondArgsDoc( ( Doc ) newValue );
+            return;
         case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
             setUnderlyingType( ( String ) newValue );
             return;
@@ -1621,6 +1920,9 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
             unsetPresCondArgsID();
             return;
+        case NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            unsetRefersToPresCondArgsDoc();
+            return;
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
             unsetDsPresCond();
             return;
@@ -1630,6 +1932,9 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
             unsetDsPresCondArgsID();
             return;
+        case NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            unsetRefersToDsPresCondArgsDoc();
+            return;
         case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
             unsetUnderlyingType();
             return;
@@ -1675,12 +1980,16 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
             return isSetPresCondArgs();
         case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
+        case NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            return isSetRefersToPresCondArgsDoc();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
             return isSetDsPresCond();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS:
             return isSetDsPresCondArgs();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
             return isSetDsPresCondArgsID();
+        case NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+            return isSetRefersToDsPresCondArgsDoc();
         case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
             return isSetUnderlyingType();
         case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
@@ -1718,6 +2027,8 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
             case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            case NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1730,6 +2041,8 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
                 return NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS;
             case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
                 return NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID;
+            case NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+                return NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1762,6 +2075,8 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
                 return NsdPackage.DATA_OBJECT__PRES_COND_ARGS;
             case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
                 return NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID;
+            case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1774,6 +2089,8 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
                 return NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS;
             case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
                 return NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID;
+            case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC:
+                return NsdPackage.DATA_OBJECT__REFERS_TO_DS_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1913,11 +2230,27 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
                 console.verbose( "PresenceCondition (name: " + getDsPresCond() + ") refers by DataObject (name: "
                         + getName() + ") in NS (id:" + getParentAnyLNClass().getParentLNClasses().getParentNS().getId()
                         + ") found in NS (id:"
-                        + getRefersToPresenceConditionDerivedStatistics().getParentPresenceConditions().getParentNS().getId()
+                        + getRefersToPresenceConditionDerivedStatistics().getParentPresenceConditions().getParentNS()
+                                .getId()
                         + ")" );
             }
         }
-        return false;
+
+        if( isSetPresCondArgsID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getPresCondArgsID() );
+                if( doc != null ) setRefersToPresCondArgsDoc( doc );
+            }
+        }
+
+        if( isSetDsPresCondArgsID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getDsPresCondArgsID() );
+                if( doc != null ) setRefersToDsPresCondArgsDoc( doc );
+            }
+        }
+
+       return false;
     }
 
 } //DataObjectImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
index b804d3ea7bd09f1caaa4ac205a88519afe1926a8..d6f1457ee21c52fc7f3ff8305075987677b144a0 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
@@ -912,7 +912,8 @@ public class DependsOnImpl extends NsdObjectImpl implements DependsOn {
         NS ns = ( ( NsdResourceSetImpl ) eResource().getResourceSet() ).getNS( getId() );
         if( ns == null ) {
             console.error(
-                    "NS (id: " + getId() + ") and refers by DependsOn in NS (id:" + getParentNS().getId() + ") is unknown" );
+                    "NS (id: " + getId() + ") and refers by DependsOn in NS (id:" + getParentNS().getId()
+                            + ") is unknown" );
         }
         else {
             setRefersToNS( ns );
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 1d80f037ee199ba2c2c1a111307dc2682881afa8..e3f726ff512e91d76240f63ed4ad3abc8ab13149 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
@@ -19,18 +19,29 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition;
+import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EObjectWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.FeatureMap;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -48,6 +59,14 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl#getAny <em>Any</em>}</li>
  *   <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#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#getReferredByAgPresenceConditionDerivedStatistics <em>Referred By Ag Presence Condition Derived Statistics</em>}</li>
  * </ul>
  *
  * @generated
@@ -92,6 +111,86 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      */
     protected boolean idESet;
 
+    /**
+     * The cached value of the '{@link #getReferredByAgNSDesc() <em>Referred By Ag NS Desc</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByAgNSDesc()
+     * @generated
+     * @ordered
+     */
+    protected EList< AgNSdesc > referredByAgNSDesc;
+
+    /**
+     * The cached value of the '{@link #getReferredByPresenceCondition() <em>Referred By Presence Condition</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByPresenceCondition()
+     * @generated
+     * @ordered
+     */
+    protected EList< PresenceCondition > referredByPresenceCondition;
+
+    /**
+     * The cached value of the '{@link #getReferredByAgPresenceCondition() <em>Referred By Ag Presence Condition</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByAgPresenceCondition()
+     * @generated
+     * @ordered
+     */
+    protected EList< AgPresenceCondition > referredByAgPresenceCondition;
+
+    /**
+     * The cached value of the '{@link #getReferredByAbbreviation() <em>Referred By Abbreviation</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByAbbreviation()
+     * @generated
+     * @ordered
+     */
+    protected EList< Abbreviation > referredByAbbreviation;
+
+    /**
+     * The cached value of the '{@link #getReferredByBasicType() <em>Referred By Basic Type</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByBasicType()
+     * @generated
+     * @ordered
+     */
+    protected EList< BasicType > referredByBasicType;
+
+    /**
+     * The cached value of the '{@link #getReferredByDocumentedClass() <em>Referred By Documented Class</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByDocumentedClass()
+     * @generated
+     * @ordered
+     */
+    protected EList< DocumentedClass > referredByDocumentedClass;
+
+    /**
+     * The cached value of the '{@link #getReferredByFunctionalConstraint() <em>Referred By Functional Constraint</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByFunctionalConstraint()
+     * @generated
+     * @ordered
+     */
+    protected EList< FunctionalConstraint > referredByFunctionalConstraint;
+
+    /**
+     * The cached value of the '{@link #getReferredByAgPresenceConditionDerivedStatistics() <em>Referred By Ag Presence Condition Derived Statistics</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByAgPresenceConditionDerivedStatistics()
+     * @generated
+     * @ordered
+     */
+    protected EList< AgPresenceConditionDerivedStatistics > referredByAgPresenceConditionDerivedStatistics;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -247,12 +346,324 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      * @generated
      */
     @Override
+    public EList< AgNSdesc > getReferredByAgNSDesc() {
+        if( referredByAgNSDesc == null ) {
+            referredByAgNSDesc = new EObjectWithInverseEList.Unsettable< AgNSdesc >( AgNSdesc.class, this,
+                    NsdPackage.DOC__REFERRED_BY_AG_NS_DESC, NsdPackage.AG_NSDESC__REFERS_TO_DOC );
+        }
+        return referredByAgNSDesc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByAgNSDesc() {
+        if( referredByAgNSDesc != null ) ( ( InternalEList.Unsettable< ? > ) referredByAgNSDesc ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByAgNSDesc() {
+        return referredByAgNSDesc != null && ( ( InternalEList.Unsettable< ? > ) referredByAgNSDesc ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-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 );
+        }
+        return referredByPresenceCondition;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByPresenceCondition() {
+        if( referredByPresenceCondition != null )
+            ( ( InternalEList.Unsettable< ? > ) referredByPresenceCondition ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByPresenceCondition() {
+        return referredByPresenceCondition != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByPresenceCondition ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< AgPresenceCondition > getReferredByAgPresenceCondition() {
+        if( referredByAgPresenceCondition == null ) {
+            referredByAgPresenceCondition = new EObjectWithInverseEList.Unsettable< AgPresenceCondition >(
+                    AgPresenceCondition.class, this, NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION,
+                    NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC );
+        }
+        return referredByAgPresenceCondition;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByAgPresenceCondition() {
+        if( referredByAgPresenceCondition != null )
+            ( ( InternalEList.Unsettable< ? > ) referredByAgPresenceCondition ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByAgPresenceCondition() {
+        return referredByAgPresenceCondition != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByAgPresenceCondition ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< Abbreviation > getReferredByAbbreviation() {
+        if( referredByAbbreviation == null ) {
+            referredByAbbreviation = new EObjectWithInverseEList.Unsettable< Abbreviation >( Abbreviation.class, this,
+                    NsdPackage.DOC__REFERRED_BY_ABBREVIATION, NsdPackage.ABBREVIATION__REFERS_TO_DOC );
+        }
+        return referredByAbbreviation;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByAbbreviation() {
+        if( referredByAbbreviation != null ) ( ( InternalEList.Unsettable< ? > ) referredByAbbreviation ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByAbbreviation() {
+        return referredByAbbreviation != null && ( ( InternalEList.Unsettable< ? > ) referredByAbbreviation ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< BasicType > getReferredByBasicType() {
+        if( referredByBasicType == null ) {
+            referredByBasicType = new EObjectWithInverseEList.Unsettable< BasicType >( BasicType.class, this,
+                    NsdPackage.DOC__REFERRED_BY_BASIC_TYPE, NsdPackage.BASIC_TYPE__REFERS_TO_DOC );
+        }
+        return referredByBasicType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByBasicType() {
+        if( referredByBasicType != null ) ( ( InternalEList.Unsettable< ? > ) referredByBasicType ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByBasicType() {
+        return referredByBasicType != null && ( ( InternalEList.Unsettable< ? > ) referredByBasicType ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< DocumentedClass > getReferredByDocumentedClass() {
+        if( referredByDocumentedClass == null ) {
+            referredByDocumentedClass = new EObjectWithInverseEList.Unsettable< DocumentedClass >(
+                    DocumentedClass.class, this, NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS,
+                    NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC );
+        }
+        return referredByDocumentedClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByDocumentedClass() {
+        if( referredByDocumentedClass != null ) ( ( InternalEList.Unsettable< ? > ) referredByDocumentedClass ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByDocumentedClass() {
+        return referredByDocumentedClass != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByDocumentedClass ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-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 );
+        }
+        return referredByFunctionalConstraint;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByFunctionalConstraint() {
+        if( referredByFunctionalConstraint != null )
+            ( ( InternalEList.Unsettable< ? > ) referredByFunctionalConstraint ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByFunctionalConstraint() {
+        return referredByFunctionalConstraint != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByFunctionalConstraint ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< AgPresenceConditionDerivedStatistics > getReferredByAgPresenceConditionDerivedStatistics() {
+        if( referredByAgPresenceConditionDerivedStatistics == null ) {
+            referredByAgPresenceConditionDerivedStatistics = new EObjectWithInverseEList.Unsettable< AgPresenceConditionDerivedStatistics >(
+                    AgPresenceConditionDerivedStatistics.class, this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS,
+                    NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC );
+        }
+        return referredByAgPresenceConditionDerivedStatistics;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByAgPresenceConditionDerivedStatistics() {
+        if( referredByAgPresenceConditionDerivedStatistics != null )
+            ( ( InternalEList.Unsettable< ? > ) referredByAgPresenceConditionDerivedStatistics ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByAgPresenceConditionDerivedStatistics() {
+        return referredByAgPresenceConditionDerivedStatistics != null
+                && ( ( InternalEList.Unsettable< ? > ) referredByAgPresenceConditionDerivedStatistics ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
         case NsdPackage.DOC__PARENT_NS_DOC:
             if( eInternalContainer() != null )
                 msgs = eBasicRemoveFromContainer( msgs );
             return basicSetParentNSDoc( ( NSDoc ) otherEnd, msgs );
+        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() )
+                    .basicAdd( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByAgPresenceCondition() )
+                    .basicAdd( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByAbbreviation() )
+                    .basicAdd( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_BASIC_TYPE:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByBasicType() )
+                    .basicAdd( otherEnd, msgs );
+        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() )
+                    .basicAdd( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByAgPresenceConditionDerivedStatistics() )
+                    .basicAdd( otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -273,6 +684,23 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return ( ( InternalEList< ? > ) getAny() ).basicRemove( otherEnd, msgs );
         case NsdPackage.DOC__PARENT_NS_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_AG_PRESENCE_CONDITION:
+            return ( ( InternalEList< ? > ) getReferredByAgPresenceCondition() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
+            return ( ( InternalEList< ? > ) getReferredByAbbreviation() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOC__REFERRED_BY_BASIC_TYPE:
+            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_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
+            return ( ( InternalEList< ? > ) getReferredByAgPresenceConditionDerivedStatistics() ).basicRemove( otherEnd,
+                    msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -312,6 +740,22 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return getId();
         case NsdPackage.DOC__PARENT_NS_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_AG_PRESENCE_CONDITION:
+            return getReferredByAgPresenceCondition();
+        case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
+            return getReferredByAbbreviation();
+        case NsdPackage.DOC__REFERRED_BY_BASIC_TYPE:
+            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_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
+            return getReferredByAgPresenceConditionDerivedStatistics();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -321,6 +765,7 @@ public class DocImpl extends NsdObjectImpl implements Doc {
      * <!-- end-user-doc -->
      * @generated
      */
+    @SuppressWarnings( "unchecked" )
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
@@ -339,6 +784,39 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         case NsdPackage.DOC__PARENT_NS_DOC:
             setParentNSDoc( ( NSDoc ) newValue );
             return;
+        case NsdPackage.DOC__REFERRED_BY_AG_NS_DESC:
+            getReferredByAgNSDesc().clear();
+            getReferredByAgNSDesc().addAll( ( Collection< ? extends AgNSdesc > ) newValue );
+            return;
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION:
+            getReferredByPresenceCondition().clear();
+            getReferredByPresenceCondition().addAll( ( Collection< ? extends PresenceCondition > ) newValue );
+            return;
+        case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
+            getReferredByAgPresenceCondition().clear();
+            getReferredByAgPresenceCondition().addAll( ( Collection< ? extends AgPresenceCondition > ) newValue );
+            return;
+        case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
+            getReferredByAbbreviation().clear();
+            getReferredByAbbreviation().addAll( ( Collection< ? extends Abbreviation > ) newValue );
+            return;
+        case NsdPackage.DOC__REFERRED_BY_BASIC_TYPE:
+            getReferredByBasicType().clear();
+            getReferredByBasicType().addAll( ( Collection< ? extends BasicType > ) newValue );
+            return;
+        case NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS:
+            getReferredByDocumentedClass().clear();
+            getReferredByDocumentedClass().addAll( ( Collection< ? extends DocumentedClass > ) newValue );
+            return;
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT:
+            getReferredByFunctionalConstraint().clear();
+            getReferredByFunctionalConstraint().addAll( ( Collection< ? extends FunctionalConstraint > ) newValue );
+            return;
+        case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
+            getReferredByAgPresenceConditionDerivedStatistics().clear();
+            getReferredByAgPresenceConditionDerivedStatistics()
+                    .addAll( ( Collection< ? extends AgPresenceConditionDerivedStatistics > ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -366,6 +844,30 @@ public class DocImpl extends NsdObjectImpl implements Doc {
         case NsdPackage.DOC__PARENT_NS_DOC:
             setParentNSDoc( ( NSDoc ) null );
             return;
+        case NsdPackage.DOC__REFERRED_BY_AG_NS_DESC:
+            unsetReferredByAgNSDesc();
+            return;
+        case NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION:
+            unsetReferredByPresenceCondition();
+            return;
+        case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION:
+            unsetReferredByAgPresenceCondition();
+            return;
+        case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
+            unsetReferredByAbbreviation();
+            return;
+        case NsdPackage.DOC__REFERRED_BY_BASIC_TYPE:
+            unsetReferredByBasicType();
+            return;
+        case NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS:
+            unsetReferredByDocumentedClass();
+            return;
+        case NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT:
+            unsetReferredByFunctionalConstraint();
+            return;
+        case NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
+            unsetReferredByAgPresenceConditionDerivedStatistics();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -388,6 +890,22 @@ public class DocImpl extends NsdObjectImpl implements Doc {
             return isSetId();
         case NsdPackage.DOC__PARENT_NS_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_AG_PRESENCE_CONDITION:
+            return isSetReferredByAgPresenceCondition();
+        case NsdPackage.DOC__REFERRED_BY_ABBREVIATION:
+            return isSetReferredByAbbreviation();
+        case NsdPackage.DOC__REFERRED_BY_BASIC_TYPE:
+            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_AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
+            return isSetReferredByAgPresenceConditionDerivedStatistics();
         }
         return super.eIsSet( featureID );
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentedClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentedClassImpl.java
index d619dc1bbaaa2bc49e2546df6e988cf5e25f06aa..f763e73deb094f233eb7ee51db16f0d1023e6095 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentedClassImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentedClassImpl.java
@@ -19,13 +19,18 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentedClass;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
@@ -39,6 +44,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl#isDeprecated <em>Deprecated</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl#isInformative <em>Informative</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl#getRefersToDoc <em>Refers To Doc</em>}</li>
  * </ul>
  *
  * @generated
@@ -131,6 +137,25 @@ public class DocumentedClassImpl extends NsdObjectImpl implements DocumentedClas
      */
     protected boolean informativeESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDoc;
+
+    /**
+     * This is true if the Refers To Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDocESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -306,6 +331,149 @@ public class DocumentedClassImpl extends NsdObjectImpl implements DocumentedClas
         return informativeESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDoc() {
+        return refersToDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = newRefersToDoc;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc, !oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDoc( Doc newRefersToDoc ) {
+        if( newRefersToDoc != refersToDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS, Doc.class, msgs );
+            if( newRefersToDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS, Doc.class, msgs );
+            msgs = basicSetRefersToDoc( newRefersToDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC,
+                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = null;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDoc() {
+        if( refersToDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS, Doc.class, msgs );
+            msgs = basicUnsetRefersToDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC,
+                        null, null, oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDoc() {
+        return refersToDocESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC:
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_DOCUMENTED_CLASS, Doc.class, msgs );
+            return basicSetRefersToDoc( ( Doc ) otherEnd, msgs );
+        }
+        return super.eInverseAdd( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC:
+            return basicUnsetRefersToDoc( msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -320,6 +488,8 @@ public class DocumentedClassImpl extends NsdObjectImpl implements DocumentedClas
             return getDescID();
         case NsdPackage.DOCUMENTED_CLASS__INFORMATIVE:
             return isInformative();
+        case NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC:
+            return getRefersToDoc();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -341,6 +511,9 @@ public class DocumentedClassImpl extends NsdObjectImpl implements DocumentedClas
         case NsdPackage.DOCUMENTED_CLASS__INFORMATIVE:
             setInformative( ( Boolean ) newValue );
             return;
+        case NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC:
+            setRefersToDoc( ( Doc ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -362,6 +535,9 @@ public class DocumentedClassImpl extends NsdObjectImpl implements DocumentedClas
         case NsdPackage.DOCUMENTED_CLASS__INFORMATIVE:
             unsetInformative();
             return;
+        case NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC:
+            unsetRefersToDoc();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -380,6 +556,8 @@ public class DocumentedClassImpl extends NsdObjectImpl implements DocumentedClas
             return isSetDescID();
         case NsdPackage.DOCUMENTED_CLASS__INFORMATIVE:
             return isSetInformative();
+        case NsdPackage.DOCUMENTED_CLASS__REFERS_TO_DOC:
+            return isSetRefersToDoc();
         }
         return super.eIsSet( featureID );
     }
@@ -413,4 +591,18 @@ public class DocumentedClassImpl extends NsdObjectImpl implements DocumentedClas
         return result.toString();
     }
 
+    @Override
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
+        
+        if( isSetDescID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getDescID() );
+                if( doc != null ) setRefersToDoc( doc );
+            }
+        }
+
+        return false;
+    }
+
 } //DocumentedClassImpl
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 39dce4dd9b54d0b2ae3e87d23192051f6e75ff93..e9ff7a216d3c791a4c83ccd684f6129fb6b57808 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
@@ -21,9 +21,12 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ApplicableServices;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraints;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
@@ -52,6 +55,7 @@ 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>
  * </ul>
  *
  * @generated
@@ -173,6 +177,25 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
      */
     protected EList< DataAttribute > referredByDataAttribute;
 
+    /**
+     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDoc;
+
+    /**
+     * This is true if the Refers To Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDocESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -550,6 +573,119 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
         return referredByDataAttribute != null && ( ( InternalEList.Unsettable< ? > ) referredByDataAttribute ).isSet();
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDoc() {
+        return refersToDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = newRefersToDoc;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc,
+                    !oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDoc( Doc newRefersToDoc ) {
+        if( newRefersToDoc != refersToDoc ) {
+            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( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC,
+                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = null;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDoc() {
+        if( refersToDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_FUNCTIONAL_CONSTRAINT, Doc.class, msgs );
+            msgs = basicUnsetRefersToDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.FUNCTIONAL_CONSTRAINT__REFERS_TO_DOC, null, null, oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDoc() {
+        return refersToDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -571,6 +707,11 @@ 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 );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -589,6 +730,8 @@ 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 );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -628,6 +771,8 @@ 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();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -660,6 +805,9 @@ 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 );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -690,6 +838,9 @@ 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();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -714,6 +865,8 @@ 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();
         }
         return super.eIsSet( featureID );
     }
@@ -747,4 +900,18 @@ public class FunctionalConstraintImpl extends NsdObjectImpl implements Functiona
         return result.toString();
     }
 
+    @Override
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
+        
+        if( isSetDescID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getDescID() );
+                if( doc != null ) setRefersToDoc( doc );
+            }
+        }
+
+        return false;
+    }
+
 } //FunctionalConstraintImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
index a842df72e285597f6f3b0894990189952da95fe0..2d1bc065b860ed7b1ffcf46c64838f44d5b49100 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
@@ -30,6 +30,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDCs;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttributes;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Enumeration;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Enumerations;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraint;
@@ -40,6 +41,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
 import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Collection;
@@ -72,6 +74,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getUmlVersion <em>Uml Version</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getRefersToDoc <em>Refers To Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getChanges <em>Changes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getDependsOn <em>Depends On</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getBasicTypes <em>Basic Types</em>}</li>
@@ -320,6 +323,25 @@ public class NSImpl extends CopyrightedImpl implements NS {
      */
     protected boolean descIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDoc;
+
+    /**
+     * This is true if the Refers To Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDocESet;
+
     /**
      * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
      * <!-- begin-user-doc -->
@@ -1869,6 +1891,118 @@ public class NSImpl extends CopyrightedImpl implements NS {
         return descIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDoc() {
+        return refersToDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = newRefersToDoc;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.NS__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc, !oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDoc( Doc newRefersToDoc ) {
+        if( newRefersToDoc != refersToDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            if( newRefersToDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDoc ).eInverseAdd( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            msgs = basicSetRefersToDoc( newRefersToDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.NS__REFERS_TO_DOC, newRefersToDoc,
+                        newRefersToDoc, !oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = null;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.NS__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDoc() {
+        if( refersToDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                    Doc.class, msgs );
+            msgs = basicUnsetRefersToDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.NS__REFERS_TO_DOC, null, null,
+                        oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDoc() {
+        return refersToDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2189,6 +2323,11 @@ public class NSImpl extends CopyrightedImpl implements NS {
     @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.NS__REFERS_TO_DOC:
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            return basicSetRefersToDoc( ( Doc ) otherEnd, msgs );
         case NsdPackage.NS__CHANGES:
             if( changes != null )
                 msgs = ( ( InternalEObject ) changes ).eInverseRemove( this,
@@ -2306,6 +2445,8 @@ public class NSImpl extends CopyrightedImpl implements NS {
     @Override
     public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.NS__REFERS_TO_DOC:
+            return basicUnsetRefersToDoc( msgs );
         case NsdPackage.NS__CHANGES:
             return basicUnsetChanges( msgs );
         case NsdPackage.NS__DEPENDS_ON:
@@ -2356,6 +2497,8 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return getUmlVersion();
         case NsdPackage.NS__DESC_ID:
             return getDescID();
+        case NsdPackage.NS__REFERS_TO_DOC:
+            return getRefersToDoc();
         case NsdPackage.NS__CHANGES:
             return getChanges();
         case NsdPackage.NS__DEPENDS_ON:
@@ -2415,6 +2558,9 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__DESC_ID:
             setDescID( ( String ) newValue );
             return;
+        case NsdPackage.NS__REFERS_TO_DOC:
+            setRefersToDoc( ( Doc ) newValue );
+            return;
         case NsdPackage.NS__CHANGES:
             setChanges( ( Changes ) newValue );
             return;
@@ -2485,6 +2631,9 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__DESC_ID:
             unsetDescID();
             return;
+        case NsdPackage.NS__REFERS_TO_DOC:
+            unsetRefersToDoc();
+            return;
         case NsdPackage.NS__CHANGES:
             unsetChanges();
             return;
@@ -2546,6 +2695,8 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return isSetUmlVersion();
         case NsdPackage.NS__DESC_ID:
             return isSetDescID();
+        case NsdPackage.NS__REFERS_TO_DOC:
+            return isSetRefersToDoc();
         case NsdPackage.NS__CHANGES:
             return isSetChanges();
         case NsdPackage.NS__DEPENDS_ON:
@@ -2609,6 +2760,8 @@ public class NSImpl extends CopyrightedImpl implements NS {
             switch( derivedFeatureID ) {
             case NsdPackage.NS__DESC_ID:
                 return NsdPackage.AG_NSDESC__DESC_ID;
+            case NsdPackage.NS__REFERS_TO_DOC:
+                return NsdPackage.AG_NSDESC__REFERS_TO_DOC;
             default:
                 return -1;
             }
@@ -2653,6 +2806,8 @@ public class NSImpl extends CopyrightedImpl implements NS {
             switch( baseFeatureID ) {
             case NsdPackage.AG_NSDESC__DESC_ID:
                 return NsdPackage.NS__DESC_ID;
+            case NsdPackage.AG_NSDESC__REFERS_TO_DOC:
+                return NsdPackage.NS__REFERS_TO_DOC;
             default:
                 return -1;
             }
@@ -2736,4 +2891,18 @@ public class NSImpl extends CopyrightedImpl implements NS {
         return result.toString();
     }
 
+    @Override
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
+        
+        if( isSetDescID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getDescID() );
+                if( doc != null ) setRefersToDoc( doc );
+            }
+        }
+
+        return false;
+    }
+
 } //NSImpl
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 9d85ba5db8278b284f3751837fb77d14cee06acb..114aac1ec8a372df9ea635a0057af30bc13d2d4b 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
@@ -904,6 +904,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) abbreviationEClass.getEStructuralFeatures().get( 2 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getAbbreviation_RefersToDoc() {
+        return ( EReference ) abbreviationEClass.getEStructuralFeatures().get( 3 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1174,6 +1184,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) basicTypeEClass.getEStructuralFeatures().get( 3 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getBasicType_RefersToDoc() {
+        return ( EReference ) basicTypeEClass.getEStructuralFeatures().get( 4 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1884,6 +1904,86 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) docEClass.getEStructuralFeatures().get( 4 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByAgNSDesc() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByPresenceCondition() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByAgPresenceCondition() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByAbbreviation() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByBasicType() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 9 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByDocumentedClass() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 10 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByFunctionalConstraint() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 11 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDoc_ReferredByAgPresenceConditionDerivedStatistics() {
+        return ( EReference ) docEClass.getEStructuralFeatures().get( 12 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1924,6 +2024,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) documentedClassEClass.getEStructuralFeatures().get( 2 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDocumentedClass_RefersToDoc() {
+        return ( EReference ) documentedClassEClass.getEStructuralFeatures().get( 3 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2094,6 +2204,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) functionalConstraintEClass.getEStructuralFeatures().get( 5 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getFunctionalConstraint_RefersToDoc() {
+        return ( EReference ) functionalConstraintEClass.getEStructuralFeatures().get( 6 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2654,6 +2774,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) presenceConditionEClass.getEStructuralFeatures().get( 9 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getPresenceCondition_RefersToDoc() {
+        return ( EReference ) presenceConditionEClass.getEStructuralFeatures().get( 10 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -3324,6 +3454,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) agPresenceConditionEClass.getEStructuralFeatures().get( 2 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getAgPresenceCondition_RefersToPresCondArgsDoc() {
+        return ( EReference ) agPresenceConditionEClass.getEStructuralFeatures().get( 3 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -3364,6 +3504,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) agPresenceConditionDerivedStatisticsEClass.getEStructuralFeatures().get( 2 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getAgPresenceConditionDerivedStatistics_RefersToDsPresCondArgsDoc() {
+        return ( EReference ) agPresenceConditionDerivedStatisticsEClass.getEStructuralFeatures().get( 3 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -3604,6 +3754,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) agNSdescEClass.getEStructuralFeatures().get( 0 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getAgNSdesc_RefersToDoc() {
+        return ( EReference ) agNSdescEClass.getEStructuralFeatures().get( 1 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -3797,6 +3957,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( abbreviationEClass, ABBREVIATION__DESC_ID );
         createEAttribute( abbreviationEClass, ABBREVIATION__NAME );
         createEReference( abbreviationEClass, ABBREVIATION__PARENT_ABBREVIATIONS );
+        createEReference( abbreviationEClass, ABBREVIATION__REFERS_TO_DOC );
 
         abbreviationsEClass = createEClass( ABBREVIATIONS );
         createEReference( abbreviationsEClass, ABBREVIATIONS__ABBREVIATION );
@@ -3830,6 +3991,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( basicTypeEClass, BASIC_TYPE__NAME );
         createEReference( basicTypeEClass, BASIC_TYPE__PARENT_BASIC_TYPES );
         createEReference( basicTypeEClass, BASIC_TYPE__REFERRED_BY_DATA_ATTRIBUTE );
+        createEReference( basicTypeEClass, BASIC_TYPE__REFERS_TO_DOC );
 
         basicTypesEClass = createEClass( BASIC_TYPES );
         createEReference( basicTypesEClass, BASIC_TYPES__BASIC_TYPE );
@@ -3913,11 +4075,20 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( docEClass, DOC__ANY );
         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_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_AG_PRESENCE_CONDITION_DERIVED_STATISTICS );
 
         documentedClassEClass = createEClass( DOCUMENTED_CLASS );
         createEAttribute( documentedClassEClass, DOCUMENTED_CLASS__DEPRECATED );
         createEAttribute( documentedClassEClass, DOCUMENTED_CLASS__DESC_ID );
         createEAttribute( documentedClassEClass, DOCUMENTED_CLASS__INFORMATIVE );
+        createEReference( documentedClassEClass, DOCUMENTED_CLASS__REFERS_TO_DOC );
 
         enumerationEClass = createEClass( ENUMERATION );
         createEReference( enumerationEClass, ENUMERATION__LITERAL );
@@ -3938,6 +4109,7 @@ 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 );
 
         functionalConstraintsEClass = createEClass( FUNCTIONAL_CONSTRAINTS );
         createEReference( functionalConstraintsEClass, FUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT );
@@ -4003,6 +4175,7 @@ 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 );
 
         presenceConditionsEClass = createEClass( PRESENCE_CONDITIONS );
         createEReference( presenceConditionsEClass, PRESENCE_CONDITIONS__PRESENCE_CONDITION );
@@ -4088,6 +4261,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( agPresenceConditionEClass, AG_PRESENCE_CONDITION__PRES_COND );
         createEAttribute( agPresenceConditionEClass, AG_PRESENCE_CONDITION__PRES_COND_ARGS );
         createEAttribute( agPresenceConditionEClass, AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID );
+        createEReference( agPresenceConditionEClass, AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC );
 
         agPresenceConditionDerivedStatisticsEClass = createEClass( AG_PRESENCE_CONDITION_DERIVED_STATISTICS );
         createEAttribute( agPresenceConditionDerivedStatisticsEClass,
@@ -4096,6 +4270,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS );
         createEAttribute( agPresenceConditionDerivedStatisticsEClass,
                 AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID );
+        createEReference( agPresenceConditionDerivedStatisticsEClass,
+                AG_PRESENCE_CONDITION_DERIVED_STATISTICS__REFERS_TO_DS_PRES_COND_ARGS_DOC );
 
         agArrayEClass = createEClass( AG_ARRAY );
         createEAttribute( agArrayEClass, AG_ARRAY__IS_ARRAY );
@@ -4127,6 +4303,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
 
         agNSdescEClass = createEClass( AG_NSDESC );
         createEAttribute( agNSdescEClass, AG_NSDESC__DESC_ID );
+        createEReference( agNSdescEClass, AG_NSDESC__REFERS_TO_DOC );
 
         iRiseClipseConsoleEClass = createEClass( IRISE_CLIPSE_CONSOLE );
 
@@ -4317,6 +4494,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 this.getAbbreviations_Abbreviation(), "parentAbbreviations", null, 0, 1, Abbreviation.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
                 IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getAbbreviation_RefersToDoc(), this.getDoc(), this.getDoc_ReferredByAbbreviation(),
+                "refersToDoc", null, 0, 1, Abbreviation.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( abbreviationsEClass, Abbreviations.class, "Abbreviations", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4402,6 +4582,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 this.getDataAttribute_RefersToBasicType(), "referredByDataAttribute", null, 0, -1, BasicType.class,
                 IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
                 !IS_DERIVED, !IS_ORDERED );
+        initEReference( getBasicType_RefersToDoc(), this.getDoc(), this.getDoc_ReferredByBasicType(), "refersToDoc",
+                null, 0, 1, BasicType.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( basicTypesEClass, BasicTypes.class, "BasicTypes", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4620,6 +4803,36 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getDoc_ParentNSDoc(), this.getNSDoc(), this.getNSDoc_Doc(), "parentNSDoc", 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_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_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,
+                IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getDoc_ReferredByAbbreviation(), this.getAbbreviation(), this.getAbbreviation_RefersToDoc(),
+                "referredByAbbreviation", 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_ReferredByBasicType(), this.getBasicType(), this.getBasicType_RefersToDoc(),
+                "referredByBasicType", 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_ReferredByDocumentedClass(), this.getDocumentedClass(),
+                this.getDocumentedClass_RefersToDoc(), "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_ReferredByAgPresenceConditionDerivedStatistics(),
+                this.getAgPresenceConditionDerivedStatistics(),
+                this.getAgPresenceConditionDerivedStatistics_RefersToDsPresCondArgsDoc(),
+                "referredByAgPresenceConditionDerivedStatistics", 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 );
@@ -4632,6 +4845,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getDocumentedClass_Informative(), theXMLTypePackage.getBoolean(), "informative", "false", 0, 1,
                 DocumentedClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
+        initEReference( getDocumentedClass_RefersToDoc(), this.getDoc(), this.getDoc_ReferredByDocumentedClass(),
+                "refersToDoc", null, 0, 1, DocumentedClass.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( enumerationEClass, Enumeration.class, "Enumeration", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4687,6 +4903,10 @@ 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 );
 
         initEClass( functionalConstraintsEClass, FunctionalConstraints.class, "FunctionalConstraints", !IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
@@ -4870,6 +5090,9 @@ 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 );
 
         initEClass( presenceConditionsEClass, PresenceConditions.class, "PresenceConditions", !IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
@@ -5090,6 +5313,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getAgPresenceCondition_PresCondArgsID(), ecorePackage.getEString(), "presCondArgsID", null, 0,
                 1, AgPresenceCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
                 IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getAgPresenceCondition_RefersToPresCondArgsDoc(), this.getDoc(),
+                this.getDoc_ReferredByAgPresenceCondition(), "refersToPresCondArgsDoc", null, 0, 1,
+                AgPresenceCondition.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( agPresenceConditionDerivedStatisticsEClass, AgPresenceConditionDerivedStatistics.class,
                 "AgPresenceConditionDerivedStatistics", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
@@ -5102,6 +5329,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getAgPresenceConditionDerivedStatistics_DsPresCondArgsID(), ecorePackage.getEString(),
                 "dsPresCondArgsID", null, 0, 1, AgPresenceConditionDerivedStatistics.class, !IS_TRANSIENT, !IS_VOLATILE,
                 IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getAgPresenceConditionDerivedStatistics_RefersToDsPresCondArgsDoc(), this.getDoc(),
+                this.getDoc_ReferredByAgPresenceConditionDerivedStatistics(), "refersToDsPresCondArgsDoc", null, 0, 1,
+                AgPresenceConditionDerivedStatistics.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( agArrayEClass, AgArray.class, "AgArray", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
         initEAttribute( getAgArray_IsArray(), theXMLTypePackage.getBoolean(), "isArray", "false", 0, 1, AgArray.class,
@@ -5162,6 +5393,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 IS_GENERATED_INSTANCE_CLASS );
         initEAttribute( getAgNSdesc_DescID(), ecorePackage.getEString(), "descID", null, 0, 1, AgNSdesc.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getAgNSdesc_RefersToDoc(), this.getDoc(), this.getDoc_ReferredByAgNSDesc(), "refersToDoc", null,
+                0, 1, AgNSdesc.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( iRiseClipseConsoleEClass, IRiseClipseConsole.class, "IRiseClipseConsole", 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 4c90d000559f32805781d9b38e07fd4aa7247b62..3489f1e9de01513c42c430c364b2292dd43e25c2 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
@@ -21,12 +21,16 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
+
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
@@ -58,6 +62,7 @@ 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>
  * </ul>
  *
  * @generated
@@ -229,6 +234,25 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
      */
     protected EList< SubDataAttribute > referredBySubDataAttribute;
 
+    /**
+     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDoc;
+
+    /**
+     * This is true if the Refers To Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDocESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -686,6 +710,118 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
                 && ( ( InternalEList.Unsettable< ? > ) referredBySubDataAttribute ).isSet();
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDoc() {
+        return refersToDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = newRefersToDoc;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc, !oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDoc( Doc newRefersToDoc ) {
+        if( newRefersToDoc != refersToDoc ) {
+            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( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC,
+                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = null;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDoc() {
+        if( refersToDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicUnsetRefersToDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.PRESENCE_CONDITION__REFERS_TO_DOC,
+                        null, null, oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDoc() {
+        return refersToDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -714,6 +850,11 @@ 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 );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -739,6 +880,8 @@ 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 );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -786,6 +929,8 @@ 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();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -834,6 +979,9 @@ 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 );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -876,6 +1024,9 @@ 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();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -908,6 +1059,8 @@ 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();
         }
         return super.eIsSet( featureID );
     }
@@ -946,4 +1099,18 @@ public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCond
         return result.toString();
     }
 
+    @Override
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
+        
+        if( isSetDescID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getDescID() );
+                if( doc != null ) setRefersToDoc( doc );
+            }
+        }
+
+        return false;
+    }
+
 } //PresenceConditionImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceDataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceDataAttributeImpl.java
index 6e73f61303dc4c86f7e241e01adcc2eb6750e285..bf6661b49102bed01fa87875698e6a607890e2f0 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceDataAttributeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceDataAttributeImpl.java
@@ -23,10 +23,13 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceCDC;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import org.eclipse.emf.common.notify.Notification;
 
@@ -50,6 +53,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getType <em>Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getTypeKind <em>Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getUnderlyingType <em>Underlying Type</em>}</li>
@@ -149,6 +153,25 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
      */
     protected boolean presCondArgsIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToPresCondArgsDoc() <em>Refers To Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToPresCondArgsDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToPresCondArgsDoc;
+
+    /**
+     * This is true if the Refers To Pres Cond Args Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToPresCondArgsDocESet;
+
     /**
      * The default value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -653,6 +676,122 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
         return presCondArgsIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc, NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = newRefersToPresCondArgsDoc;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc,
+                    newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc ) {
+        if( newRefersToPresCondArgsDoc != refersToPresCondArgsDoc ) {
+            NotificationChain msgs = null;
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            if( newRefersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToPresCondArgsDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicSetRefersToPresCondArgsDoc( newRefersToPresCondArgsDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, newRefersToPresCondArgsDoc,
+                        newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToPresCondArgsDoc( NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = null;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc, null,
+                    oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToPresCondArgsDoc() {
+        if( refersToPresCondArgsDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicUnsetRefersToPresCondArgsDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, null, null,
+                        oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -872,6 +1011,11 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
     @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            return basicSetRefersToPresCondArgsDoc( ( Doc ) otherEnd, msgs );
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PARENT_SERVICE_CDC:
             if( eInternalContainer() != null )
                 msgs = eBasicRemoveFromContainer( msgs );
@@ -888,6 +1032,8 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
     @Override
     public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return basicUnsetRefersToPresCondArgsDoc( msgs );
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PARENT_SERVICE_CDC:
             return basicSetParentServiceCDC( null, msgs );
         }
@@ -923,6 +1069,8 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
             return getPresCondArgs();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return getRefersToPresCondArgsDoc();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE:
             return getType();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE_KIND:
@@ -958,6 +1106,9 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             setPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            setRefersToPresCondArgsDoc( ( Doc ) newValue );
+            return;
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE:
             setType( ( String ) newValue );
             return;
@@ -1000,6 +1151,9 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             unsetPresCondArgsID();
             return;
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            unsetRefersToPresCondArgsDoc();
+            return;
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE:
             unsetType();
             return;
@@ -1039,6 +1193,8 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
             return isSetPresCondArgs();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return isSetRefersToPresCondArgsDoc();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE:
             return isSetType();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE_KIND:
@@ -1072,6 +1228,8 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
             case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            case NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1114,6 +1272,8 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
                 return NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS;
             case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
                 return NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID;
+            case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.SERVICE_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1200,4 +1360,18 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
         return result.toString();
     }
 
+    @Override
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
+        
+        if( isSetPresCondArgsID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getPresCondArgsID() );
+                if( doc != null ) setRefersToPresCondArgsDoc( doc );
+            }
+        }
+
+        return false;
+    }
+
 } //ServiceDataAttributeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
index 054633fcef67a5ecac9e34d14432373b809844d5..848d742ec255ee4b1c6f24c3c6ca618608592c51 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
@@ -24,6 +24,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraints;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
@@ -32,6 +33,8 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceCDCs;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceConstructedAttributes;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import javax.xml.datatype.XMLGregorianCalendar;
 
@@ -59,6 +62,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getUmlVersion <em>Uml Version</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getRefersToDoc <em>Refers To Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getChanges <em>Changes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getFunctionalConstraints <em>Functional Constraints</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getPresenceConditions <em>Presence Conditions</em>}</li>
@@ -303,6 +307,25 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
      */
     protected boolean descIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToDoc() <em>Refers To Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToDoc;
+
+    /**
+     * This is true if the Refers To Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToDocESet;
+
     /**
      * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
      * <!-- begin-user-doc -->
@@ -1310,6 +1333,118 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         return descIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToDoc() {
+        return refersToDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToDoc( Doc newRefersToDoc, NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = newRefersToDoc;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.SERVICE_NS__REFERS_TO_DOC, oldRefersToDoc, newRefersToDoc, !oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToDoc( Doc newRefersToDoc ) {
+        if( newRefersToDoc != refersToDoc ) {
+            NotificationChain msgs = null;
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            if( newRefersToDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToDoc ).eInverseAdd( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            msgs = basicSetRefersToDoc( newRefersToDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.SERVICE_NS__REFERS_TO_DOC,
+                        newRefersToDoc, newRefersToDoc, !oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToDoc( NotificationChain msgs ) {
+        Doc oldRefersToDoc = refersToDoc;
+        refersToDoc = null;
+        boolean oldRefersToDocESet = refersToDocESet;
+        refersToDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.SERVICE_NS__REFERS_TO_DOC, oldRefersToDoc, null, oldRefersToDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToDoc() {
+        if( refersToDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                    Doc.class, msgs );
+            msgs = basicUnsetRefersToDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToDocESet = refersToDocESet;
+            refersToDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.SERVICE_NS__REFERS_TO_DOC, null,
+                        null, oldRefersToDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToDoc() {
+        return refersToDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1630,6 +1765,11 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
     @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_NS__REFERS_TO_DOC:
+            if( refersToDoc != null )
+                msgs = ( ( InternalEObject ) refersToDoc ).eInverseRemove( this, NsdPackage.DOC__REFERRED_BY_AG_NS_DESC,
+                        Doc.class, msgs );
+            return basicSetRefersToDoc( ( Doc ) otherEnd, msgs );
         case NsdPackage.SERVICE_NS__CHANGES:
             if( changes != null )
                 msgs = ( ( InternalEObject ) changes ).eInverseRemove( this,
@@ -1729,6 +1869,8 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
     @Override
     public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_NS__REFERS_TO_DOC:
+            return basicUnsetRefersToDoc( msgs );
         case NsdPackage.SERVICE_NS__CHANGES:
             return basicUnsetChanges( msgs );
         case NsdPackage.SERVICE_NS__FUNCTIONAL_CONSTRAINTS:
@@ -1771,6 +1913,8 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             return getUmlVersion();
         case NsdPackage.SERVICE_NS__DESC_ID:
             return getDescID();
+        case NsdPackage.SERVICE_NS__REFERS_TO_DOC:
+            return getRefersToDoc();
         case NsdPackage.SERVICE_NS__CHANGES:
             return getChanges();
         case NsdPackage.SERVICE_NS__FUNCTIONAL_CONSTRAINTS:
@@ -1821,6 +1965,9 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__DESC_ID:
             setDescID( ( String ) newValue );
             return;
+        case NsdPackage.SERVICE_NS__REFERS_TO_DOC:
+            setRefersToDoc( ( Doc ) newValue );
+            return;
         case NsdPackage.SERVICE_NS__CHANGES:
             setChanges( ( Changes ) newValue );
             return;
@@ -1878,6 +2025,9 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__DESC_ID:
             unsetDescID();
             return;
+        case NsdPackage.SERVICE_NS__REFERS_TO_DOC:
+            unsetRefersToDoc();
+            return;
         case NsdPackage.SERVICE_NS__CHANGES:
             unsetChanges();
             return;
@@ -1927,6 +2077,8 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             return isSetUmlVersion();
         case NsdPackage.SERVICE_NS__DESC_ID:
             return isSetDescID();
+        case NsdPackage.SERVICE_NS__REFERS_TO_DOC:
+            return isSetRefersToDoc();
         case NsdPackage.SERVICE_NS__CHANGES:
             return isSetChanges();
         case NsdPackage.SERVICE_NS__FUNCTIONAL_CONSTRAINTS:
@@ -1982,6 +2134,8 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             switch( derivedFeatureID ) {
             case NsdPackage.SERVICE_NS__DESC_ID:
                 return NsdPackage.AG_NSDESC__DESC_ID;
+            case NsdPackage.SERVICE_NS__REFERS_TO_DOC:
+                return NsdPackage.AG_NSDESC__REFERS_TO_DOC;
             default:
                 return -1;
             }
@@ -2026,6 +2180,8 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             switch( baseFeatureID ) {
             case NsdPackage.AG_NSDESC__DESC_ID:
                 return NsdPackage.SERVICE_NS__DESC_ID;
+            case NsdPackage.AG_NSDESC__REFERS_TO_DOC:
+                return NsdPackage.SERVICE_NS__REFERS_TO_DOC;
             default:
                 return -1;
             }
@@ -2087,4 +2243,18 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         return result.toString();
     }
 
+    @Override
+    public boolean buildExplicitLinks( IRiseClipseConsole console, boolean forceUpdate ) {
+        if( super.buildExplicitLinks( console, forceUpdate ) ) return true;
+        
+        if( isSetDescID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getDescID() );
+                if( doc != null ) setRefersToDoc( doc );
+            }
+        }
+
+        return false;
+    }
+
 } //ServiceNSImpl
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 3452e3c7c40f86f634d301ea702a4f4f7c378030..b3df570d4797e0e5e3d413fdcd9afffe01e354f4 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
@@ -24,11 +24,13 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
 import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import java.math.BigDecimal;
@@ -55,6 +57,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#isIsArray <em>Is Array</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMinIndex <em>Min Index</em>}</li>
@@ -159,6 +162,25 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
      */
     protected boolean presCondArgsIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToPresCondArgsDoc() <em>Refers To Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToPresCondArgsDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToPresCondArgsDoc;
+
+    /**
+     * This is true if the Refers To Pres Cond Args Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToPresCondArgsDocESet;
+
     /**
      * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -1059,6 +1081,122 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
         return presCondArgsIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc, NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = newRefersToPresCondArgsDoc;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc,
+                    newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc ) {
+        if( newRefersToPresCondArgsDoc != refersToPresCondArgsDoc ) {
+            NotificationChain msgs = null;
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            if( newRefersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToPresCondArgsDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicSetRefersToPresCondArgsDoc( newRefersToPresCondArgsDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, newRefersToPresCondArgsDoc,
+                        newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToPresCondArgsDoc( NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = null;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc, null,
+                    oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToPresCondArgsDoc() {
+        if( refersToPresCondArgsDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicUnsetRefersToPresCondArgsDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC, null, null,
+                        oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1340,6 +1478,11 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
     @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            return basicSetRefersToPresCondArgsDoc( ( Doc ) otherEnd, msgs );
         case NsdPackage.SUB_DATA_ATTRIBUTE__PARENT_CONSTRUCTED_ATTRIBUTE:
             if( eInternalContainer() != null )
                 msgs = eBasicRemoveFromContainer( msgs );
@@ -1361,6 +1504,8 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
     @Override
     public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return basicUnsetRefersToPresCondArgsDoc( msgs );
         case NsdPackage.SUB_DATA_ATTRIBUTE__PARENT_CONSTRUCTED_ATTRIBUTE:
             return basicSetParentConstructedAttribute( null, msgs );
         case NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRESENCE_CONDITION:
@@ -1398,6 +1543,8 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
             return getPresCondArgs();
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return getRefersToPresCondArgsDoc();
         case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
             return isIsArray();
         case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
@@ -1443,6 +1590,9 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             setPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            setRefersToPresCondArgsDoc( ( Doc ) newValue );
+            return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
             setIsArray( ( Boolean ) newValue );
             return;
@@ -1500,6 +1650,9 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             unsetPresCondArgsID();
             return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            unsetRefersToPresCondArgsDoc();
+            return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
             unsetIsArray();
             return;
@@ -1554,6 +1707,8 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
             return isSetPresCondArgs();
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+            return isSetRefersToPresCondArgsDoc();
         case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
             return isSetIsArray();
         case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
@@ -1597,6 +1752,8 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
             case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1655,6 +1812,8 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
                 return NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS;
             case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
                 return NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID;
+            case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1801,6 +1960,13 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
             }
         }
 
+        if( isSetPresCondArgsID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getPresCondArgsID() );
+                if( doc != null ) setRefersToPresCondArgsDoc( doc );
+            }
+        }
+
         return false;
     }
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
index 59d078dc0357cdd9ad7df361adc15be0f48e051f..03384d7067c25efc069ad694684db99eeb655c9e 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
@@ -25,10 +25,12 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceSetImpl;
 import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -51,6 +53,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getRefersToPresCondArgsDoc <em>Refers To Pres Cond Args Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#isIsArray <em>Is Array</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getMinIndex <em>Min Index</em>}</li>
@@ -156,6 +159,25 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
      */
     protected boolean presCondArgsIDESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToPresCondArgsDoc() <em>Refers To Pres Cond Args Doc</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToPresCondArgsDoc()
+     * @generated
+     * @ordered
+     */
+    protected Doc refersToPresCondArgsDoc;
+
+    /**
+     * This is true if the Refers To Pres Cond Args Doc reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToPresCondArgsDocESet;
+
     /**
      * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -847,6 +869,122 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
         return presCondArgsIDESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Doc getRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc, NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = newRefersToPresCondArgsDoc;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc,
+                    newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToPresCondArgsDoc( Doc newRefersToPresCondArgsDoc ) {
+        if( newRefersToPresCondArgsDoc != refersToPresCondArgsDoc ) {
+            NotificationChain msgs = null;
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            if( newRefersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) newRefersToPresCondArgsDoc ).eInverseAdd( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicSetRefersToPresCondArgsDoc( newRefersToPresCondArgsDoc, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = true;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.SET,
+                        NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC, newRefersToPresCondArgsDoc,
+                        newRefersToPresCondArgsDoc, !oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToPresCondArgsDoc( NotificationChain msgs ) {
+        Doc oldRefersToPresCondArgsDoc = refersToPresCondArgsDoc;
+        refersToPresCondArgsDoc = null;
+        boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+        refersToPresCondArgsDocESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC, oldRefersToPresCondArgsDoc, null,
+                    oldRefersToPresCondArgsDocESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToPresCondArgsDoc() {
+        if( refersToPresCondArgsDoc != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                    NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            msgs = basicUnsetRefersToPresCondArgsDoc( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToPresCondArgsDocESet = refersToPresCondArgsDocESet;
+            refersToPresCondArgsDocESet = false;
+            if( eNotificationRequired() )
+                eNotify( new ENotificationImpl( this, Notification.UNSET,
+                        NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC, null, null,
+                        oldRefersToPresCondArgsDocESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToPresCondArgsDoc() {
+        return refersToPresCondArgsDocESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1578,6 +1716,11 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
     @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            if( refersToPresCondArgsDoc != null )
+                msgs = ( ( InternalEObject ) refersToPresCondArgsDoc ).eInverseRemove( this,
+                        NsdPackage.DOC__REFERRED_BY_AG_PRESENCE_CONDITION, Doc.class, msgs );
+            return basicSetRefersToPresCondArgsDoc( ( Doc ) otherEnd, msgs );
         case NsdPackage.SUB_DATA_OBJECT__PARENT_CDC:
             if( eInternalContainer() != null )
                 msgs = eBasicRemoveFromContainer( msgs );
@@ -1616,6 +1759,8 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
     @Override
     public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
+        case NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            return basicUnsetRefersToPresCondArgsDoc( msgs );
         case NsdPackage.SUB_DATA_OBJECT__PARENT_CDC:
             return basicSetParentCDC( null, msgs );
         case NsdPackage.SUB_DATA_OBJECT__REFERS_TO_CDC:
@@ -1658,6 +1803,8 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
             return getPresCondArgs();
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
+        case NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            return getRefersToPresCondArgsDoc();
         case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
             return isIsArray();
         case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
@@ -1705,6 +1852,9 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
             setPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            setRefersToPresCondArgsDoc( ( Doc ) newValue );
+            return;
         case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
             setIsArray( ( Boolean ) newValue );
             return;
@@ -1765,6 +1915,9 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
             unsetPresCondArgsID();
             return;
+        case NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            unsetRefersToPresCondArgsDoc();
+            return;
         case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
             unsetIsArray();
             return;
@@ -1822,6 +1975,8 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
             return isSetPresCondArgs();
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
+        case NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+            return isSetRefersToPresCondArgsDoc();
         case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
             return isSetIsArray();
         case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
@@ -1867,6 +2022,8 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
             case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
                 return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            case NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -1913,6 +2070,8 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
                 return NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS;
             case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
                 return NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID;
+            case NsdPackage.AG_PRESENCE_CONDITION__REFERS_TO_PRES_COND_ARGS_DOC:
+                return NsdPackage.SUB_DATA_OBJECT__REFERS_TO_PRES_COND_ARGS_DOC;
             default:
                 return -1;
             }
@@ -2095,6 +2254,13 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
             }
         }
 
+        if( isSetPresCondArgsID() ) {
+            if( this.eResource().getResourceSet() instanceof NsdResourceSetImpl ) {
+                Doc doc = (( NsdResourceSetImpl ) this.eResource().getResourceSet() ).findDoc( getPresCondArgsID() );
+                if( doc != null ) setRefersToPresCondArgsDoc( doc );
+            }
+        }
+
         return false;
     }
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
index b2f72334ef78308572d8df97d8465084a837e8e0..c6e97aca0ae004157bcde0d8fcf469a9cf16a62c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
@@ -23,13 +23,17 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.eclipse.emf.ecore.resource.Resource;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClass;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClasses;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc;
 import fr.centralesupelec.edf.riseclipse.util.AbstractRiseClipseConsole;
 import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import fr.centralesupelec.edf.riseclipse.util.RiseClipseResourceSet;
@@ -38,11 +42,13 @@ import fr.centralesupelec.edf.riseclipse.util.RiseClipseResourceSet;
 public class NsdResourceSetImpl extends RiseClipseResourceSet {
     
     private Map< String, NS > nsdResources;
+    private Map< String, NSDoc > nsdocResources;
 
     public NsdResourceSetImpl( boolean strictContent, IRiseClipseConsole console ) {
         super( strictContent, console );
         
-        nsdResources = new HashMap< String, NS >();
+        nsdResources = new HashMap<>();
+        nsdocResources = new HashMap<>();
     }
 
     @Override
@@ -60,18 +66,29 @@ public class NsdResourceSetImpl extends RiseClipseResourceSet {
             return;
         }
         DocumentRoot root = (DocumentRoot) resource.getContents().get( 0 );
-        if( ! ( root.getNS() instanceof NS )) {
-            AbstractRiseClipseConsole.getConsole().error( "The file " + resource.getURI() + " is not an NSD file" );
-            this.getResources().remove( resource );
+        if( root.getNS() != null ) {
+            NS ns = ( NS ) root.getNS();
+            if( nsdResources.get( ns.getId() ) != null ) {
+                AbstractRiseClipseConsole.getConsole().error( "There is already an NSD file with is " + ns.getId() + ", " + resource.getURI() + " is ignored" );
+                this.getResources().remove( resource );
+                return;
+            }
+            nsdResources.put( ns.getId(), ns );
             return;
         }
-        NS ns = ( NS ) root.getNS();
-        if( nsdResources.get( ns.getId() ) != null ) {
-            AbstractRiseClipseConsole.getConsole().error( "There is already an NSD file with is " + ns.getId() + ", " + resource.getURI() + " is ignored" );
-            this.getResources().remove( resource );
+        if( root.getNSDoc() != null ) {
+            NSDoc nsdoc = ( NSDoc ) root.getNSDoc();
+            if( nsdocResources.get( nsdoc.getId() ) != null ) {
+                AbstractRiseClipseConsole.getConsole().error( "There is already an NSDoc file with is " + nsdoc.getId() + ", " + resource.getURI() + " is ignored" );
+                this.getResources().remove( resource );
+                return;
+            }
+            nsdocResources.put( nsdoc.getId(), nsdoc );
             return;
         }
-        nsdResources.put( ns.getId(), ns );
+        AbstractRiseClipseConsole.getConsole().error( "The file " + resource.getURI() + " is not an NSD file" );
+        this.getResources().remove( resource );
+        return;
     }
 
     /* (non-Javadoc)
@@ -116,8 +133,9 @@ public class NsdResourceSetImpl extends RiseClipseResourceSet {
         for( Resource resource : getResources() ) {
             if( resource instanceof NsdResourceImpl ) {
                 DocumentRoot root = (DocumentRoot) resource.getContents().get( 0 );
-                NS ns = ( NS ) root.getNS();
-                ns.buildExplicitLinks( console, true );
+                if( root.getNS() != null ) {
+                    root.getNS().buildExplicitLinks( console, true );
+                }
             }
         }
         
@@ -233,28 +251,33 @@ public class NsdResourceSetImpl extends RiseClipseResourceSet {
      */
     
     public Stream< LNClass > getLNClassStream() {
-        if( nsdResources.isEmpty() ) {
-            return null;
-        }
-        Stream< LNClass > lnClassStream = null;
+        Stream< LNClass > lnClassStream = Stream.empty();
         Iterator< NS > it = nsdResources.values().iterator();
         while( it.hasNext() ) {
             LNClasses lnClasses = it.next().getLNClasses();
             if( lnClasses != null ) {
-                if( lnClassStream == null ) {
-                    lnClassStream = lnClasses.getLNClass().stream();
-                }
-                else {
-                    // Warning: Resource leak: 'lnClassStream' is not closed at this location ??
-                    //lnClassStream = Stream.concat( lnClassStream, lnClasses.getLNClass().stream() );
-                    Stream< LNClass > tmp = Stream.concat( lnClassStream, lnClasses.getLNClass().stream() );
-                    lnClassStream = tmp;
-                }
+                // Warning: Resource leak: 'lnClassStream' is not closed at this location ??
+                //lnClassStream = Stream.concat( lnClassStream, lnClasses.getLNClass().stream() );
+                Stream< LNClass > tmp = Stream.concat( lnClassStream, lnClasses.getLNClass().stream() );
+                lnClassStream = tmp;
             }
         }
         return lnClassStream;
     }
 
+    public Doc findDoc( String id ) {
+        for( NSDoc nsdoc : nsdocResources.values() ) {
+            Optional< Doc > doc = nsdoc
+                    .getDoc()
+                    .stream()
+                    .filter( d -> d.getId().equals( id ))
+                    .findFirst();
+            if( doc.isPresent() ) {
+                return doc.get();
+            }
+        }
+        return null;
+    }
 }