diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
index 1be36d0ce2ec8c65bb7fc8cd5d60a749748ebb2d..11e48f59450de61ddf986804b33188e15e9e50f7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
@@ -478,3 +478,8 @@ _UI_AgUnderlyingType_underlyingTypeKind_feature = Underlying Type Kind
 _UI_AgUML_umlDate_feature = Uml Date
 _UI_AgUML_umlVersion_feature = Uml Version
 _UI_AgNSdesc_descID_feature = Desc ID
+_UI_IRiseClipseConsole_type = IRise Clipse Console
+_UI_DependsOn_refersToNS_feature = Refers To NS
+_UI_NS_referredByDependsOn_feature = Referred By Depends On
+_UI_AbstractLNClass_referredByAnyLNClass_feature = Referred By Any LN Class
+_UI_AnyLNClass_refersToAbstractLNClass_feature = Refers To Abstract LN Class
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbstractLNClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbstractLNClassItemProvider.java
index 5f921b21c3feb4f8423dfebbf0b292baec4320b1..f42e227c479793ef52e225a9d44479493dc86d8c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbstractLNClassItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbstractLNClassItemProvider.java
@@ -62,6 +62,7 @@ public class AbstractLNClassItemProvider extends AnyLNClassItemProvider {
             super.getPropertyDescriptors( object );
 
             addNamePropertyDescriptor( object );
+            addReferredByAnyLNClassPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -82,6 +83,22 @@ public class AbstractLNClassItemProvider extends AnyLNClassItemProvider {
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Referred By Any LN Class feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByAnyLNClassPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AbstractLNClass_referredByAnyLNClass_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AbstractLNClass_referredByAnyLNClass_feature",
+                        "_UI_AbstractLNClass_type" ),
+                NsdPackage.Literals.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS, true, false, true, null, null,
+                null ) );
+    }
+
     /**
      * This returns AbstractLNClass.gif.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AnyLNClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AnyLNClassItemProvider.java
index e6239ea1a804d09827543497431c0aba4127da55..46731a93e2ebe6c147380ba7fa8f4cee3a129f79 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AnyLNClassItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AnyLNClassItemProvider.java
@@ -65,6 +65,7 @@ public class AnyLNClassItemProvider extends TitledClassItemProvider {
             super.getPropertyDescriptors( object );
 
             addBasePropertyDescriptor( object );
+            addRefersToAbstractLNClassPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -85,6 +86,21 @@ public class AnyLNClassItemProvider extends TitledClassItemProvider {
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Refers To Abstract LN Class feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToAbstractLNClassPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AnyLNClass_refersToAbstractLNClass_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AnyLNClass_refersToAbstractLNClass_feature",
+                        "_UI_AnyLNClass_type" ),
+                NsdPackage.Literals.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS, 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/AppliesToTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AppliesToTypeItemProvider.java
index 9ab2f892114194924953ed1a9f4bdc03e84febc4..0ebd47951002fac76a4db1d87909fe71f6c07a6f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AppliesToTypeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AppliesToTypeItemProvider.java
@@ -38,7 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class AppliesToTypeItemProvider extends AgNSIdentificationItemProvider {
+public class AppliesToTypeItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -60,25 +60,93 @@ public class AppliesToTypeItemProvider extends AgNSIdentificationItemProvider {
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
-            addLineNumberPropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+            addIdPropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
 
     /**
-     * This adds a property descriptor for the Line Number feature.
+     * This adds a property descriptor for the Release feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected void addLineNumberPropertyDescriptor( Object object ) {
+    protected void addReleasePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NsdObject_lineNumber_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NsdObject_lineNumber_feature",
-                                "_UI_NsdObject_type" ),
-                        NsdPackage.Literals.NSD_OBJECT__LINE_NUMBER, true, false, false,
-                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_release_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_version_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_id_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_revision_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Publication Stage feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPublicationStagePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgNSIdentification_publicationStage_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_publicationStage_feature",
+                        "_UI_AgNSIdentification_type" ),
+                NsdPackage.Literals.AG_NS_IDENTIFICATION__PUBLICATION_STAGE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -117,7 +185,11 @@ public class AppliesToTypeItemProvider extends AgNSIdentificationItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( AppliesToType.class ) ) {
-        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnItemProvider.java
index 39f95be897bc12a08898d9a3000b23077141aed8..3caa128f85306fee1c3b32d6d8dc2703714ea27b 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnItemProvider.java
@@ -20,12 +20,16 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import java.util.Collection;
 import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
 
 /**
  * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn} object.
@@ -33,7 +37,7 @@ import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
  * <!-- end-user-doc -->
  * @generated
  */
-public class DependsOnItemProvider extends AgNSIdentificationItemProvider {
+public class DependsOnItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -55,10 +59,111 @@ public class DependsOnItemProvider extends AgNSIdentificationItemProvider {
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+            addIdPropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
+            addRefersToNSPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
 
+    /**
+     * This adds a property descriptor for the Release feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReleasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_release_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_version_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_id_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_revision_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Publication Stage feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPublicationStagePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgNSIdentification_publicationStage_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_publicationStage_feature",
+                        "_UI_AgNSIdentification_type" ),
+                NsdPackage.Literals.AG_NS_IDENTIFICATION__PUBLICATION_STAGE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Refers To NS feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRefersToNSPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_DependsOn_refersToNS_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOn_refersToNS_feature",
+                                "_UI_DependsOn_type" ),
+                        NsdPackage.Literals.DEPENDS_ON__REFERS_TO_NS, true, false, true, null, null, null ) );
+    }
+
     /**
      * This returns DependsOn.gif.
      * <!-- begin-user-doc -->
@@ -93,6 +198,16 @@ public class DependsOnItemProvider extends AgNSIdentificationItemProvider {
     @Override
     public void notifyChanged( Notification notification ) {
         updateChildren( notification );
+
+        switch( notification.getFeatureID( DependsOn.class ) ) {
+        case NsdPackage.DEPENDS_ON__RELEASE:
+        case NsdPackage.DEPENDS_ON__VERSION:
+        case NsdPackage.DEPENDS_ON__ID:
+        case NsdPackage.DEPENDS_ON__REVISION:
+        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
         super.notifyChanged( notification );
     }
 
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 0049014b38899a494dcc9f07f8f4ff835cc68d17..1898b06883846fdbc50217ecddbf9bdf7365362c 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 );
+            addReferredByDependsOnPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -92,6 +93,21 @@ public class NSItemProvider extends CopyrightedItemProvider {
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
+    /**
+     * This adds a property descriptor for the Referred By Depends On feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReferredByDependsOnPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_NS_referredByDependsOn_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_referredByDependsOn_feature",
+                                "_UI_NS_type" ),
+                        NsdPackage.Literals.NS__REFERRED_BY_DEPENDS_ON, 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/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
index 073e4f8a2945900ac813946a9ced6432744d6790..c5adcb8b9203261dd281d2b7b82eb934dcd45337 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="nsd" nsURI="http://www.iec.ch/61850/2016/NSD" nsPrefix="nsd">
-  <eClassifiers xsi:type="ecore:EClass" name="AppliesToType" eSuperTypes="#//AgNSIdentification #//NsdObject">
+  <eClassifiers xsi:type="ecore:EClass" name="AppliesToType" eSuperTypes="#//NsdObject #//AgNSIdentification">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="AppliesTo_._type"/>
       <details key="kind" value="empty"/>
@@ -10,13 +10,15 @@
         eType="#//ServiceNsUsage" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceNsUsage/appliesTo"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DependsOn" eSuperTypes="#//AgNSIdentification">
+  <eClassifiers xsi:type="ecore:EClass" name="DependsOn" eSuperTypes="#//NsdObject #//AgNSIdentification">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="DependsOn_._type"/>
       <details key="kind" value="empty"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="nS" ordered="false" eType="#//NS"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//NS/dependsOn"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToNS" ordered="false"
+        eType="#//NS" transient="true" unsettable="true" resolveProxies="false" eOpposite="#//NS/referredByDependsOn"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -155,6 +157,8 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="lNClasses" ordered="false"
         eType="#//LNClasses" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//LNClasses/abstractLNClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByAnyLNClass" ordered="false"
+        upperBound="-1" eType="#//AnyLNClass" transient="true" unsettable="true" eOpposite="#//AnyLNClass/refersToAbstractLNClass"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="ACSIServicesKind">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -231,6 +235,7 @@
       <details key="name" value="tAnyLNClass"/>
       <details key="kind" value="elementOnly"/>
     </eAnnotations>
+    <eOperations name="getName" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="dataObject" ordered="false"
         upperBound="-1" eType="#//DataObject" unsettable="true" containment="true"
         resolveProxies="false" eOpposite="#//DataObject/anyLNClass">
@@ -247,6 +252,9 @@
         <details key="name" value="base"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersToAbstractLNClass"
+        ordered="false" eType="#//AbstractLNClass" transient="true" unsettable="true"
+        resolveProxies="false" eOpposite="#//AbstractLNClass/referredByAnyLNClass"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ApplicableServiceNS" eSuperTypes="#//Copyrighted">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1099,6 +1107,9 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="referredByDependsOn" ordered="false"
+        upperBound="-1" eType="#//DependsOn" transient="true" unsettable="true" resolveProxies="false"
+        eOpposite="#//DependsOn/refersToNS"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="NSDoc" eSuperTypes="#//Copyrighted #//AgNSIdentification #//AgUML">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1531,7 +1542,9 @@
     </eAnnotations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="NsdObject" abstract="true">
-    <eOperations name="buildExplicitLinks"/>
+    <eOperations name="buildExplicitLinks">
+      <eParameters name="console" eType="#//IRiseClipseConsole"/>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineNumber" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" transient="true"
         defaultValueLiteral="-1"/>
@@ -1754,4 +1767,6 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="IRiseClipseConsole" instanceClassName="fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole"
+      abstract="true" interface="true"/>
 </ecore:EPackage>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
index 44006450bb3a952b4bd3ea97318acea53b4860b2..b8e772889e7b175eb81c7eb3790614506e900b33 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
@@ -112,6 +112,7 @@
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DependsOn">
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//DependsOn/nS"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//DependsOn/refersToNS"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DocumentRoot">
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DocumentRoot/mixed"/>
@@ -139,10 +140,13 @@
     <genClasses ecoreClass="nsd.ecore#//AbstractLNClass">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AbstractLNClass/name"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//AbstractLNClass/lNClasses"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//AbstractLNClass/referredByAnyLNClass"/>
     </genClasses>
     <genClasses image="false" ecoreClass="nsd.ecore#//AnyLNClass">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//AnyLNClass/dataObject"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AnyLNClass/base"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//AnyLNClass/refersToAbstractLNClass"/>
+      <genOperations ecoreOperation="nsd.ecore#//AnyLNClass/getName"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ApplicableServiceNS">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//ApplicableServiceNS/serviceNsUsage"/>
@@ -292,6 +296,7 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NS/constructedAttributes"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NS/cDCs"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NS/lNClasses"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference nsd.ecore#//NS/referredByDependsOn"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//NSDoc">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NSDoc/doc"/>
@@ -367,7 +372,9 @@
     </genClasses>
     <genClasses image="false" ecoreClass="nsd.ecore#//NsdObject">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NsdObject/lineNumber"/>
-      <genOperations ecoreOperation="nsd.ecore#//NsdObject/buildExplicitLinks"/>
+      <genOperations ecoreOperation="nsd.ecore#//NsdObject/buildExplicitLinks">
+        <genParameters ecoreParameter="nsd.ecore#//NsdObject/buildExplicitLinks/console"/>
+      </genOperations>
     </genClasses>
     <genClasses image="false" ecoreClass="nsd.ecore#//AgNSIdentification">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSIdentification/release"/>
@@ -417,5 +424,6 @@
     <genClasses image="false" ecoreClass="nsd.ecore#//AgNSdesc">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSdesc/descID"/>
     </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//IRiseClipseConsole"/>
   </genPackages>
 </genmodel:GenModel>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AbstractLNClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AbstractLNClass.java
index 21b99e68ed85c9c1daa99333cada758653e79ac9..b38ce0e15d5283213a6d6149d7d8bd97b6d06366 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AbstractLNClass.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AbstractLNClass.java
@@ -19,6 +19,8 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
+import org.eclipse.emf.common.util.EList;
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Abstract LN Class</b></em>'.
@@ -30,6 +32,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getLNClasses <em>LN Classes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getReferredByAnyLNClass <em>Referred By Any LN Class</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAbstractLNClass()
@@ -115,4 +118,45 @@ public interface AbstractLNClass extends AnyLNClass {
      */
     void setLNClasses( LNClasses value );
 
+    /**
+     * Returns the value of the '<em><b>Referred By Any LN Class</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getRefersToAbstractLNClass <em>Refers To Abstract LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Referred By Any LN Class</em>' reference list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Any LN Class</em>' reference list.
+     * @see #isSetReferredByAnyLNClass()
+     * @see #unsetReferredByAnyLNClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAbstractLNClass_ReferredByAnyLNClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getRefersToAbstractLNClass
+     * @model opposite="refersToAbstractLNClass" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< AnyLNClass > getReferredByAnyLNClass();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getReferredByAnyLNClass <em>Referred By Any LN Class</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByAnyLNClass()
+     * @see #getReferredByAnyLNClass()
+     * @generated
+     */
+    void unsetReferredByAnyLNClass();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getReferredByAnyLNClass <em>Referred By Any LN Class</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Any LN Class</em>' reference list is set.
+     * @see #unsetReferredByAnyLNClass()
+     * @see #getReferredByAnyLNClass()
+     * @generated
+     */
+    boolean isSetReferredByAnyLNClass();
+
 } // AbstractLNClass
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AnyLNClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AnyLNClass.java
index a8ce94b488fc90c30682221edcdb5460dc0a97b8..ea0c6d2df17721bf350f32a917206b75c7a70fa6 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AnyLNClass.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AnyLNClass.java
@@ -32,6 +32,7 @@ import org.eclipse.emf.common.util.EList;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getDataObject <em>Data Object</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getBase <em>Base</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getRefersToAbstractLNClass <em>Refers To Abstract LN Class</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAnyLNClass()
@@ -128,4 +129,67 @@ public interface AnyLNClass extends TitledClass {
      */
     boolean isSetBase();
 
+    /**
+     * Returns the value of the '<em><b>Refers To Abstract LN Class</b></em>' reference.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getReferredByAnyLNClass <em>Referred By Any LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Refers To Abstract LN Class</em>' reference isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Refers To Abstract LN Class</em>' reference.
+     * @see #isSetRefersToAbstractLNClass()
+     * @see #unsetRefersToAbstractLNClass()
+     * @see #setRefersToAbstractLNClass(AbstractLNClass)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAnyLNClass_RefersToAbstractLNClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getReferredByAnyLNClass
+     * @model opposite="referredByAnyLNClass" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    AbstractLNClass getRefersToAbstractLNClass();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getRefersToAbstractLNClass <em>Refers To Abstract LN Class</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Refers To Abstract LN Class</em>' reference.
+     * @see #isSetRefersToAbstractLNClass()
+     * @see #unsetRefersToAbstractLNClass()
+     * @see #getRefersToAbstractLNClass()
+     * @generated
+     */
+    void setRefersToAbstractLNClass( AbstractLNClass value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getRefersToAbstractLNClass <em>Refers To Abstract LN Class</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToAbstractLNClass()
+     * @see #getRefersToAbstractLNClass()
+     * @see #setRefersToAbstractLNClass(AbstractLNClass)
+     * @generated
+     */
+    void unsetRefersToAbstractLNClass();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getRefersToAbstractLNClass <em>Refers To Abstract LN Class</em>}' reference is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Refers To Abstract LN Class</em>' reference is set.
+     * @see #unsetRefersToAbstractLNClass()
+     * @see #getRefersToAbstractLNClass()
+     * @see #setRefersToAbstractLNClass(AbstractLNClass)
+     * @generated
+     */
+    boolean isSetRefersToAbstractLNClass();
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @model kind="operation" dataType="org.eclipse.emf.ecore.xml.type.String"
+     * @generated
+     */
+    String getName();
+
 } // AnyLNClass
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AppliesToType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AppliesToType.java
index 661c0ae1718594ff319dc8345a30bfbec0160bec..6387171db3a562521a6ca7b0a31e1c2af00811e6 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AppliesToType.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AppliesToType.java
@@ -35,7 +35,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * @model extendedMetaData="name='AppliesTo_._type' kind='empty'"
  * @generated
  */
-public interface AppliesToType extends AgNSIdentification, NsdObject {
+public interface AppliesToType extends NsdObject, AgNSIdentification {
     /**
      * Returns the value of the '<em><b>Service Ns Usage</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getAppliesTo <em>Applies To</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOn.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOn.java
index 673199eff2e82d1a28ca108911b9f308d026a3a9..0c6e91cf94e272d958e24d1833276949ed4835ba 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOn.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOn.java
@@ -29,13 +29,14 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * </p>
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getNS <em>NS</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRefersToNS <em>Refers To NS</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOn()
  * @model extendedMetaData="name='DependsOn_._type' kind='empty'"
  * @generated
  */
-public interface DependsOn extends AgNSIdentification {
+public interface DependsOn extends NsdObject, AgNSIdentification {
     /**
      * Returns the value of the '<em><b>NS</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getDependsOn <em>Depends On</em>}'.
@@ -64,4 +65,59 @@ public interface DependsOn extends AgNSIdentification {
      */
     void setNS( NS value );
 
+    /**
+     * Returns the value of the '<em><b>Refers To NS</b></em>' reference.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getReferredByDependsOn <em>Referred By Depends On</em>}'.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Refers To NS</em>' reference isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Refers To NS</em>' reference.
+     * @see #isSetRefersToNS()
+     * @see #unsetRefersToNS()
+     * @see #setRefersToNS(NS)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOn_RefersToNS()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getReferredByDependsOn
+     * @model opposite="referredByDependsOn" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    NS getRefersToNS();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRefersToNS <em>Refers To NS</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Refers To NS</em>' reference.
+     * @see #isSetRefersToNS()
+     * @see #unsetRefersToNS()
+     * @see #getRefersToNS()
+     * @generated
+     */
+    void setRefersToNS( NS value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRefersToNS <em>Refers To NS</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRefersToNS()
+     * @see #getRefersToNS()
+     * @see #setRefersToNS(NS)
+     * @generated
+     */
+    void unsetRefersToNS();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRefersToNS <em>Refers To NS</em>}' reference is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Refers To NS</em>' reference is set.
+     * @see #unsetRefersToNS()
+     * @see #getRefersToNS()
+     * @see #setRefersToNS(NS)
+     * @generated
+     */
+    boolean isSetRefersToNS();
+
 } // DependsOn
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NS.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NS.java
index 04ea634f1466280cf33401f1c7d8ecfbc8185c66..2cffc9c757f2c29c2f8d5cde50863cb1aa56307d 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NS.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NS.java
@@ -19,6 +19,8 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
+import org.eclipse.emf.common.util.EList;
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>NS</b></em>'.
@@ -38,6 +40,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getConstructedAttributes <em>Constructed Attributes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getCDCs <em>CD Cs</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getLNClasses <em>LN Classes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getReferredByDependsOn <em>Referred By Depends On</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS()
@@ -565,4 +568,45 @@ public interface NS extends Copyrighted, AgNSIdentification, AgUML, AgNSdesc {
      */
     boolean isSetLNClasses();
 
+    /**
+     * Returns the value of the '<em><b>Referred By Depends On</b></em>' reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn}.
+     * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRefersToNS <em>Refers To NS</em>}'.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Referred By Depends On</em>' reference list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Referred By Depends On</em>' reference list.
+     * @see #isSetReferredByDependsOn()
+     * @see #unsetReferredByDependsOn()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS_ReferredByDependsOn()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRefersToNS
+     * @model opposite="refersToNS" resolveProxies="false" unsettable="true" transient="true" ordered="false"
+     * @generated
+     */
+    EList< DependsOn > getReferredByDependsOn();
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getReferredByDependsOn <em>Referred By Depends On</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetReferredByDependsOn()
+     * @see #getReferredByDependsOn()
+     * @generated
+     */
+    void unsetReferredByDependsOn();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getReferredByDependsOn <em>Referred By Depends On</em>}' reference list is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Referred By Depends On</em>' reference list is set.
+     * @see #unsetReferredByDependsOn()
+     * @see #getReferredByDependsOn()
+     * @generated
+     */
+    boolean isSetReferredByDependsOn();
+
 } // NS
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
index 05d073792b4468b6129c2cbeb1f0a1a9cc3f9693..7ef47df69fcb6839827bce6aa6408bd2295488bc 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
@@ -19,6 +19,7 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import org.eclipse.emf.ecore.EObject;
 
 /**
@@ -69,8 +70,8 @@ public interface NsdObject extends EObject {
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @model
+     * @model consoleType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.IRiseClipseConsole"
      * @generated
      */
-    void buildExplicitLinks();
+    void buildExplicitLinks( IRiseClipseConsole console );
 } // NsdObject
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 b748a7d10336f4fc931ed9c70b57dfb075be7712..41168699e34679628d4dc37259e0446eb260f0c1 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
@@ -89,69 +89,6 @@ public interface NsdPackage extends EPackage {
      */
     int AG_NS_IDENTIFICATION = 50;
 
-    /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int AG_NS_IDENTIFICATION__RELEASE = 0;
-
-    /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int AG_NS_IDENTIFICATION__VERSION = 1;
-
-    /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int AG_NS_IDENTIFICATION__ID = 2;
-
-    /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int AG_NS_IDENTIFICATION__REVISION = 3;
-
-    /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int AG_NS_IDENTIFICATION__PUBLICATION_STAGE = 4;
-
-    /**
-     * The number of structural features of the '<em>Ag NS Identification</em>' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int AG_NS_IDENTIFICATION_FEATURE_COUNT = 5;
-
-    /**
-     * The number of operations of the '<em>Ag NS Identification</em>' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int AG_NS_IDENTIFICATION_OPERATION_COUNT = 0;
-
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl <em>Applies To Type</em>}' class.
      * <!-- begin-user-doc -->
@@ -162,96 +99,6 @@ public interface NsdPackage extends EPackage {
      */
     int APPLIES_TO_TYPE = 0;
 
-    /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE__RELEASE = AG_NS_IDENTIFICATION__RELEASE;
-
-    /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE__VERSION = AG_NS_IDENTIFICATION__VERSION;
-
-    /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE__ID = AG_NS_IDENTIFICATION__ID;
-
-    /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE__REVISION = AG_NS_IDENTIFICATION__REVISION;
-
-    /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE__PUBLICATION_STAGE = AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
-
-    /**
-     * The feature id for the '<em><b>Line Number</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE__LINE_NUMBER = AG_NS_IDENTIFICATION_FEATURE_COUNT + 0;
-
-    /**
-     * The feature id for the '<em><b>Service Ns Usage</b></em>' container reference.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE__SERVICE_NS_USAGE = AG_NS_IDENTIFICATION_FEATURE_COUNT + 1;
-
-    /**
-     * The number of structural features of the '<em>Applies To Type</em>' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE_FEATURE_COUNT = AG_NS_IDENTIFICATION_FEATURE_COUNT + 2;
-
-    /**
-     * The operation id for the '<em>Build Explicit Links</em>' operation.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS = AG_NS_IDENTIFICATION_OPERATION_COUNT + 0;
-
-    /**
-     * The number of operations of the '<em>Applies To Type</em>' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int APPLIES_TO_TYPE_OPERATION_COUNT = AG_NS_IDENTIFICATION_OPERATION_COUNT + 1;
-
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl <em>Depends On</em>}' class.
      * <!-- begin-user-doc -->
@@ -262,168 +109,15 @@ public interface NsdPackage extends EPackage {
      */
     int DEPENDS_ON = 1;
 
-    /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DEPENDS_ON__RELEASE = AG_NS_IDENTIFICATION__RELEASE;
-
-    /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DEPENDS_ON__VERSION = AG_NS_IDENTIFICATION__VERSION;
-
-    /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DEPENDS_ON__ID = AG_NS_IDENTIFICATION__ID;
-
-    /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DEPENDS_ON__REVISION = AG_NS_IDENTIFICATION__REVISION;
-
-    /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DEPENDS_ON__PUBLICATION_STAGE = AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
-
-    /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DEPENDS_ON__NS = AG_NS_IDENTIFICATION_FEATURE_COUNT + 0;
-
-    /**
-     * The number of structural features of the '<em>Depends On</em>' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DEPENDS_ON_FEATURE_COUNT = AG_NS_IDENTIFICATION_FEATURE_COUNT + 1;
-
-    /**
-     * The number of operations of the '<em>Depends On</em>' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DEPENDS_ON_OPERATION_COUNT = AG_NS_IDENTIFICATION_OPERATION_COUNT + 0;
-
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl <em>Document Root</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDocumentRoot()
-     * @generated
-     */
-    int DOCUMENT_ROOT = 2;
-
-    /**
-     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DOCUMENT_ROOT__MIXED = 0;
-
-    /**
-     * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
-
-    /**
-     * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
-
-    /**
-     * The feature id for the '<em><b>Applicable Service NS</b></em>' containment reference.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DOCUMENT_ROOT__APPLICABLE_SERVICE_NS = 3;
-
-    /**
-     * The feature id for the '<em><b>NS</b></em>' containment reference.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DOCUMENT_ROOT__NS = 4;
-
-    /**
-     * The feature id for the '<em><b>NS Doc</b></em>' containment reference.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DOCUMENT_ROOT__NS_DOC = 5;
-
-    /**
-     * The feature id for the '<em><b>Service NS</b></em>' containment reference.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DOCUMENT_ROOT__SERVICE_NS = 6;
-
-    /**
-     * The number of structural features of the '<em>Document Root</em>' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int DOCUMENT_ROOT_FEATURE_COUNT = 7;
-
-    /**
-     * The number of operations of the '<em>Document Root</em>' class.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDocumentRoot()
      * @generated
-     * @ordered
      */
-    int DOCUMENT_ROOT_OPERATION_COUNT = 0;
+    int DOCUMENT_ROOT = 2;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeImpl <em>Service Type</em>}' class.
@@ -949,77 +643,347 @@ public interface NsdPackage extends EPackage {
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl <em>Ag Underlying Type</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgUnderlyingType()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgUnderlyingType()
+     * @generated
+     */
+    int AG_UNDERLYING_TYPE = 57;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl <em>Ag UML</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgUML()
+     * @generated
+     */
+    int AG_UML = 58;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl <em>Ag NSdesc</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgNSdesc()
+     * @generated
+     */
+    int AG_NSDESC = 59;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl <em>Object</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNsdObject()
+     * @generated
+     */
+    int NSD_OBJECT = 49;
+
+    /**
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NSD_OBJECT__LINE_NUMBER = 0;
+
+    /**
+     * The number of structural features of the '<em>Object</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NSD_OBJECT_FEATURE_COUNT = 1;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = 0;
+
+    /**
+     * The number of operations of the '<em>Object</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NSD_OBJECT_OPERATION_COUNT = 1;
+
+    /**
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__RELEASE = NSD_OBJECT_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__VERSION = NSD_OBJECT_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__ID = NSD_OBJECT_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__REVISION = NSD_OBJECT_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__PUBLICATION_STAGE = NSD_OBJECT_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Service Ns Usage</b></em>' container reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__SERVICE_NS_USAGE = NSD_OBJECT_FEATURE_COUNT + 5;
+
+    /**
+     * The number of structural features of the '<em>Applies To Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 6;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+
+    /**
+     * The number of operations of the '<em>Applies To Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON__RELEASE = NSD_OBJECT_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON__VERSION = NSD_OBJECT_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON__ID = NSD_OBJECT_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON__REVISION = NSD_OBJECT_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON__PUBLICATION_STAGE = NSD_OBJECT_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON__NS = NSD_OBJECT_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Refers To NS</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON__REFERS_TO_NS = NSD_OBJECT_FEATURE_COUNT + 6;
+
+    /**
+     * The number of structural features of the '<em>Depends On</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 7;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+
+    /**
+     * The number of operations of the '<em>Depends On</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__MIXED = 0;
+
+    /**
+     * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
      * @generated
+     * @ordered
      */
-    int AG_UNDERLYING_TYPE = 57;
+    int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl <em>Ag UML</em>}' class.
+     * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgUML()
      * @generated
+     * @ordered
      */
-    int AG_UML = 58;
+    int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl <em>Ag NSdesc</em>}' class.
+     * The feature id for the '<em><b>Applicable Service NS</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgNSdesc()
      * @generated
+     * @ordered
      */
-    int AG_NSDESC = 59;
+    int DOCUMENT_ROOT__APPLICABLE_SERVICE_NS = 3;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl <em>Object</em>}' class.
+     * The feature id for the '<em><b>NS</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNsdObject()
      * @generated
+     * @ordered
      */
-    int NSD_OBJECT = 49;
+    int DOCUMENT_ROOT__NS = 4;
 
     /**
-     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * The feature id for the '<em><b>NS Doc</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NSD_OBJECT__LINE_NUMBER = 0;
+    int DOCUMENT_ROOT__NS_DOC = 5;
 
     /**
-     * The number of structural features of the '<em>Object</em>' class.
+     * The feature id for the '<em><b>Service NS</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NSD_OBJECT_FEATURE_COUNT = 1;
+    int DOCUMENT_ROOT__SERVICE_NS = 6;
 
     /**
-     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * The number of structural features of the '<em>Document Root</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NSD_OBJECT___BUILD_EXPLICIT_LINKS = 0;
+    int DOCUMENT_ROOT_FEATURE_COUNT = 7;
 
     /**
-     * The number of operations of the '<em>Object</em>' class.
+     * The number of operations of the '<em>Document Root</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NSD_OBJECT_OPERATION_COUNT = 1;
+    int DOCUMENT_ROOT_OPERATION_COUNT = 0;
 
     /**
      * The feature id for the '<em><b>Line Number</b></em>' attribute.
@@ -1064,7 +1028,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_TYPE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int SERVICE_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service Type</em>' class.
@@ -1127,7 +1091,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ABBREVIATION___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int ABBREVIATION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Abbreviation</em>' class.
@@ -1190,7 +1154,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ABBREVIATIONS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int ABBREVIATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Abbreviations</em>' class.
@@ -1253,7 +1217,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Documented Class</em>' class.
@@ -1325,7 +1289,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int TITLED_CLASS___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+    int TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Titled Class</em>' class.
@@ -1399,6 +1363,15 @@ public interface NsdPackage extends EPackage {
      */
     int ANY_LN_CLASS__BASE = TITLED_CLASS_FEATURE_COUNT + 1;
 
+    /**
+     * The feature id for the '<em><b>Refers To Abstract LN Class</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS = TITLED_CLASS_FEATURE_COUNT + 2;
+
     /**
      * The number of structural features of the '<em>Any LN Class</em>' class.
      * <!-- begin-user-doc -->
@@ -1406,7 +1379,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ANY_LN_CLASS_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 2;
+    int ANY_LN_CLASS_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 3;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -1415,7 +1388,16 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ANY_LN_CLASS___BUILD_EXPLICIT_LINKS = TITLED_CLASS___BUILD_EXPLICIT_LINKS;
+    int ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+
+    /**
+     * The operation id for the '<em>Get Name</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ANY_LN_CLASS___GET_NAME = TITLED_CLASS_OPERATION_COUNT + 0;
 
     /**
      * The number of operations of the '<em>Any LN Class</em>' class.
@@ -1424,7 +1406,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ANY_LN_CLASS_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
+    int ANY_LN_CLASS_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 1;
 
     /**
      * The feature id for the '<em><b>Line Number</b></em>' attribute.
@@ -1489,6 +1471,15 @@ public interface NsdPackage extends EPackage {
      */
     int ABSTRACT_LN_CLASS__BASE = ANY_LN_CLASS__BASE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Abstract LN Class</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ABSTRACT_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS = ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS;
+
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -1507,6 +1498,15 @@ public interface NsdPackage extends EPackage {
      */
     int ABSTRACT_LN_CLASS__LN_CLASSES = ANY_LN_CLASS_FEATURE_COUNT + 1;
 
+    /**
+     * The feature id for the '<em><b>Referred By Any LN Class</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS = ANY_LN_CLASS_FEATURE_COUNT + 2;
+
     /**
      * The number of structural features of the '<em>Abstract LN Class</em>' class.
      * <!-- begin-user-doc -->
@@ -1514,7 +1514,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ABSTRACT_LN_CLASS_FEATURE_COUNT = ANY_LN_CLASS_FEATURE_COUNT + 2;
+    int ABSTRACT_LN_CLASS_FEATURE_COUNT = ANY_LN_CLASS_FEATURE_COUNT + 3;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -1523,7 +1523,16 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ABSTRACT_LN_CLASS___BUILD_EXPLICIT_LINKS = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS;
+    int ABSTRACT_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+
+    /**
+     * The operation id for the '<em>Get Name</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int ABSTRACT_LN_CLASS___GET_NAME = ANY_LN_CLASS___GET_NAME;
 
     /**
      * The number of operations of the '<em>Abstract LN Class</em>' class.
@@ -1568,7 +1577,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int COPYRIGHTED___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Copyrighted</em>' class.
@@ -1640,7 +1649,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICE_NS___BUILD_EXPLICIT_LINKS = COPYRIGHTED___BUILD_EXPLICIT_LINKS;
+    int APPLICABLE_SERVICE_NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Applicable Service NS</em>' class.
@@ -1703,7 +1712,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int APPLICABLE_SERVICES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Applicable Services</em>' class.
@@ -1766,7 +1775,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int BASIC_TYPE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int BASIC_TYPE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Basic Type</em>' class.
@@ -1820,7 +1829,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int BASIC_TYPES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int BASIC_TYPES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Basic Types</em>' class.
@@ -1973,7 +1982,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CDC___BUILD_EXPLICIT_LINKS = TITLED_CLASS___BUILD_EXPLICIT_LINKS;
+    int CDC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>CDC</em>' class.
@@ -2027,7 +2036,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CD_CS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int CD_CS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>CD Cs</em>' class.
@@ -2135,7 +2144,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CHANGES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int CHANGES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Changes</em>' class.
@@ -2243,7 +2252,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS = TITLED_CLASS___BUILD_EXPLICIT_LINKS;
+    int CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Constructed Attribute</em>' class.
@@ -2297,7 +2306,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Constructed Attributes</em>' class.
@@ -2360,7 +2369,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int COPYRIGHT_NOTICE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int COPYRIGHT_NOTICE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Copyright Notice</em>' class.
@@ -2585,7 +2594,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+    int DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Data Attribute</em>' class.
@@ -2756,7 +2765,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_OBJECT___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+    int DATA_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Data Object</em>' class.
@@ -2810,7 +2819,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DATA_SET_MEMBER_OF___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int DATA_SET_MEMBER_OF___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Data Set Member Of</em>' class.
@@ -2891,7 +2900,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DOC___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int DOC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Doc</em>' class.
@@ -2999,7 +3008,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ENUMERATION___BUILD_EXPLICIT_LINKS = TITLED_CLASS___BUILD_EXPLICIT_LINKS;
+    int ENUMERATION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = TITLED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Enumeration</em>' class.
@@ -3053,7 +3062,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int ENUMERATIONS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int ENUMERATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Enumerations</em>' class.
@@ -3134,7 +3143,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int FUNCTIONAL_CONSTRAINT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Functional Constraint</em>' class.
@@ -3197,7 +3206,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINTS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int FUNCTIONAL_CONSTRAINTS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Functional Constraints</em>' class.
@@ -3269,7 +3278,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int LICENSE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int LICENSE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>License</em>' class.
@@ -3359,7 +3368,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int LITERAL___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+    int LITERAL___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Literal</em>' class.
@@ -3433,6 +3442,15 @@ public interface NsdPackage extends EPackage {
      */
     int LN_CLASS__BASE = ANY_LN_CLASS__BASE;
 
+    /**
+     * The feature id for the '<em><b>Refers To Abstract LN Class</b></em>' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS = ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS;
+
     /**
      * The feature id for the '<em><b>Can Have LOG</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -3485,7 +3503,16 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int LN_CLASS___BUILD_EXPLICIT_LINKS = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS;
+    int LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
+
+    /**
+     * The operation id for the '<em>Get Name</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int LN_CLASS___GET_NAME = ANY_LN_CLASS___GET_NAME;
 
     /**
      * The number of operations of the '<em>LN Class</em>' class.
@@ -3548,7 +3575,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int LN_CLASSES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int LN_CLASSES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>LN Classes</em>' class.
@@ -3602,7 +3629,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NOTICE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int NOTICE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Notice</em>' class.
@@ -3793,6 +3820,15 @@ public interface NsdPackage extends EPackage {
      */
     int NS__LN_CLASSES = COPYRIGHTED_FEATURE_COUNT + 17;
 
+    /**
+     * The feature id for the '<em><b>Referred By Depends On</b></em>' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NS__REFERRED_BY_DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 18;
+
     /**
      * The number of structural features of the '<em>NS</em>' class.
      * <!-- begin-user-doc -->
@@ -3800,7 +3836,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 18;
+    int NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 19;
 
     /**
      * The operation id for the '<em>Build Explicit Links</em>' operation.
@@ -3809,7 +3845,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS___BUILD_EXPLICIT_LINKS = COPYRIGHTED___BUILD_EXPLICIT_LINKS;
+    int NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>NS</em>' class.
@@ -3935,7 +3971,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS_DOC___BUILD_EXPLICIT_LINKS = COPYRIGHTED___BUILD_EXPLICIT_LINKS;
+    int NS_DOC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>NS Doc</em>' class.
@@ -4016,7 +4052,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int PRESENCE_CONDITION___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Presence Condition</em>' class.
@@ -4079,7 +4115,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITIONS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int PRESENCE_CONDITIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Presence Conditions</em>' class.
@@ -4151,7 +4187,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_CDC___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int SERVICE_CDC___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service CDC</em>' class.
@@ -4205,7 +4241,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_CD_CS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int SERVICE_CD_CS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service CD Cs</em>' class.
@@ -4331,7 +4367,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS = CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service Constructed Attribute</em>' class.
@@ -4385,7 +4421,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service Constructed Attributes</em>' class.
@@ -4538,7 +4574,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+    int SERVICE_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service Data Attribute</em>' class.
@@ -4718,7 +4754,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS___BUILD_EXPLICIT_LINKS = COPYRIGHTED___BUILD_EXPLICIT_LINKS;
+    int SERVICE_NS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = COPYRIGHTED___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service NS</em>' class.
@@ -4817,7 +4853,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int SERVICE_NS_USAGE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service Ns Usage</em>' class.
@@ -4943,7 +4979,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+    int SERVICE_PARAMETER___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service Parameter</em>' class.
@@ -4997,7 +5033,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_TYPE_REALIZATIONS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+    int SERVICE_TYPE_REALIZATIONS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Service Type Realizations</em>' class.
@@ -5186,7 +5222,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+    int SUB_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Sub Data Attribute</em>' class.
@@ -5357,7 +5393,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+    int SUB_DATA_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE;
 
     /**
      * The number of operations of the '<em>Sub Data Object</em>' class.
@@ -5368,6 +5404,69 @@ public interface NsdPackage extends EPackage {
      */
     int SUB_DATA_OBJECT_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
 
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION__RELEASE = 0;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION__VERSION = 1;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION__ID = 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION__REVISION = 3;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION__PUBLICATION_STAGE = 4;
+
+    /**
+     * The number of structural features of the '<em>Ag NS Identification</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION_FEATURE_COUNT = 5;
+
+    /**
+     * The number of operations of the '<em>Ag NS Identification</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION_OPERATION_COUNT = 0;
+
     /**
      * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -5755,6 +5854,34 @@ public interface NsdPackage extends EPackage {
      */
     int AG_NSDESC_OPERATION_COUNT = 0;
 
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole <em>IRise Clipse Console</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getIRiseClipseConsole()
+     * @generated
+     */
+    int IRISE_CLIPSE_CONSOLE = 60;
+
+    /**
+     * The number of structural features of the '<em>IRise Clipse Console</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int IRISE_CLIPSE_CONSOLE_FEATURE_COUNT = 0;
+
+    /**
+     * The number of operations of the '<em>IRise Clipse Console</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int IRISE_CLIPSE_CONSOLE_OPERATION_COUNT = 0;
+
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind <em>ACSI Services Kind</em>}' enum.
      * <!-- begin-user-doc -->
@@ -5763,7 +5890,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getACSIServicesKind()
      * @generated
      */
-    int ACSI_SERVICES_KIND = 60;
+    int ACSI_SERVICES_KIND = 61;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind <em>CB Kind</em>}' enum.
@@ -5773,7 +5900,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCBKind()
      * @generated
      */
-    int CB_KIND = 61;
+    int CB_KIND = 62;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind <em>Defined Attribute Type Kind</em>}' enum.
@@ -5783,7 +5910,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDefinedAttributeTypeKind()
      * @generated
      */
-    int DEFINED_ATTRIBUTE_TYPE_KIND = 62;
+    int DEFINED_ATTRIBUTE_TYPE_KIND = 63;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind <em>License Kind</em>}' enum.
@@ -5793,7 +5920,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicenseKind()
      * @generated
      */
-    int LICENSE_KIND = 63;
+    int LICENSE_KIND = 64;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage <em>Pub Stage</em>}' enum.
@@ -5803,7 +5930,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPubStage()
      * @generated
      */
-    int PUB_STAGE = 64;
+    int PUB_STAGE = 65;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind <em>Undefined Attribute Type Kind</em>}' enum.
@@ -5813,7 +5940,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getUndefinedAttributeTypeKind()
      * @generated
      */
-    int UNDEFINED_ATTRIBUTE_TYPE_KIND = 65;
+    int UNDEFINED_ATTRIBUTE_TYPE_KIND = 66;
 
     /**
      * The meta object id for the '<em>ACSI Services Kind Object</em>' data type.
@@ -5823,7 +5950,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getACSIServicesKindObject()
      * @generated
      */
-    int ACSI_SERVICES_KIND_OBJECT = 66;
+    int ACSI_SERVICES_KIND_OBJECT = 67;
 
     /**
      * The meta object id for the '<em>Attribute Type Kind</em>' data type.
@@ -5833,7 +5960,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAttributeTypeKind()
      * @generated
      */
-    int ATTRIBUTE_TYPE_KIND = 67;
+    int ATTRIBUTE_TYPE_KIND = 68;
 
     /**
      * The meta object id for the '<em>CB Kind Object</em>' data type.
@@ -5843,7 +5970,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCBKindObject()
      * @generated
      */
-    int CB_KIND_OBJECT = 68;
+    int CB_KIND_OBJECT = 69;
 
     /**
      * The meta object id for the '<em>Defined Attribute Type Kind Object</em>' data type.
@@ -5853,7 +5980,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDefinedAttributeTypeKindObject()
      * @generated
      */
-    int DEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 69;
+    int DEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 70;
 
     /**
      * The meta object id for the '<em>License Kind Object</em>' data type.
@@ -5863,7 +5990,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicenseKindObject()
      * @generated
      */
-    int LICENSE_KIND_OBJECT = 70;
+    int LICENSE_KIND_OBJECT = 71;
 
     /**
      * The meta object id for the '<em>Pub Stage Object</em>' data type.
@@ -5873,7 +6000,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPubStageObject()
      * @generated
      */
-    int PUB_STAGE_OBJECT = 71;
+    int PUB_STAGE_OBJECT = 72;
 
     /**
      * The meta object id for the '<em>Undefined Attribute Type Kind Object</em>' data type.
@@ -5883,7 +6010,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getUndefinedAttributeTypeKindObject()
      * @generated
      */
-    int UNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 72;
+    int UNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 73;
 
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType <em>Applies To Type</em>}'.
@@ -5927,6 +6054,17 @@ public interface NsdPackage extends EPackage {
      */
     EReference getDependsOn_NS();
 
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRefersToNS <em>Refers To NS</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference '<em>Refers To NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRefersToNS()
+     * @see #getDependsOn()
+     * @generated
+     */
+    EReference getDependsOn_RefersToNS();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot <em>Document Root</em>}'.
      * <!-- begin-user-doc -->
@@ -6164,6 +6302,17 @@ public interface NsdPackage extends EPackage {
      */
     EReference getAbstractLNClass_LNClasses();
 
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getReferredByAnyLNClass <em>Referred By Any LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Any LN Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass#getReferredByAnyLNClass()
+     * @see #getAbstractLNClass()
+     * @generated
+     */
+    EReference getAbstractLNClass_ReferredByAnyLNClass();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass <em>Any LN Class</em>}'.
      * <!-- begin-user-doc -->
@@ -6196,6 +6345,27 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getAnyLNClass_Base();
 
+    /**
+     * Returns the meta object for the reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getRefersToAbstractLNClass <em>Refers To Abstract LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference '<em>Refers To Abstract LN Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getRefersToAbstractLNClass()
+     * @see #getAnyLNClass()
+     * @generated
+     */
+    EReference getAnyLNClass_RefersToAbstractLNClass();
+
+    /**
+     * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getName() <em>Get Name</em>}' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the '<em>Get Name</em>' operation.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getName()
+     * @generated
+     */
+    EOperation getAnyLNClass__GetName();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ApplicableServiceNS <em>Applicable Service NS</em>}'.
      * <!-- begin-user-doc -->
@@ -7523,6 +7693,17 @@ public interface NsdPackage extends EPackage {
      */
     EReference getNS_LNClasses();
 
+    /**
+     * Returns the meta object for the reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getReferredByDependsOn <em>Referred By Depends On</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the reference list '<em>Referred By Depends On</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getReferredByDependsOn()
+     * @see #getNS()
+     * @generated
+     */
+    EReference getNS_ReferredByDependsOn();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc <em>NS Doc</em>}'.
      * <!-- begin-user-doc -->
@@ -8157,14 +8338,14 @@ public interface NsdPackage extends EPackage {
     EAttribute getNsdObject_LineNumber();
 
     /**
-     * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks() <em>Build Explicit Links</em>}' operation.
+     * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks(fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole) <em>Build Explicit Links</em>}' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @return the meta object for the '<em>Build Explicit Links</em>' operation.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks(fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole)
      * @generated
      */
-    EOperation getNsdObject__BuildExplicitLinks();
+    EOperation getNsdObject__BuildExplicitLinks__IRiseClipseConsole();
 
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification <em>Ag NS Identification</em>}'.
@@ -8574,6 +8755,17 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getAgNSdesc_DescID();
 
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole <em>IRise Clipse Console</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>IRise Clipse Console</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole
+     * @model instanceClass="fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole"
+     * @generated
+     */
+    EClass getIRiseClipseConsole();
+
     /**
      * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind <em>ACSI Services Kind</em>}'.
      * <!-- begin-user-doc -->
@@ -8777,6 +8969,14 @@ public interface NsdPackage extends EPackage {
          */
         EReference DEPENDS_ON__NS = eINSTANCE.getDependsOn_NS();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To NS</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DEPENDS_ON__REFERS_TO_NS = eINSTANCE.getDependsOn_RefersToNS();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl <em>Document Root</em>}' class.
          * <!-- begin-user-doc -->
@@ -8963,6 +9163,14 @@ public interface NsdPackage extends EPackage {
          */
         EReference ABSTRACT_LN_CLASS__LN_CLASSES = eINSTANCE.getAbstractLNClass_LNClasses();
 
+        /**
+         * The meta object literal for the '<em><b>Referred By Any LN Class</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS = eINSTANCE.getAbstractLNClass_ReferredByAnyLNClass();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AnyLNClassImpl <em>Any LN Class</em>}' class.
          * <!-- begin-user-doc -->
@@ -8989,6 +9197,22 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute ANY_LN_CLASS__BASE = eINSTANCE.getAnyLNClass_Base();
 
+        /**
+         * The meta object literal for the '<em><b>Refers To Abstract LN Class</b></em>' reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS = eINSTANCE.getAnyLNClass_RefersToAbstractLNClass();
+
+        /**
+         * The meta object literal for the '<em><b>Get Name</b></em>' operation.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EOperation ANY_LN_CLASS___GET_NAME = eINSTANCE.getAnyLNClass__GetName();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServiceNSImpl <em>Applicable Service NS</em>}' class.
          * <!-- begin-user-doc -->
@@ -10030,6 +10254,14 @@ public interface NsdPackage extends EPackage {
          */
         EReference NS__LN_CLASSES = eINSTANCE.getNS_LNClasses();
 
+        /**
+         * The meta object literal for the '<em><b>Referred By Depends On</b></em>' reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference NS__REFERRED_BY_DEPENDS_ON = eINSTANCE.getNS_ReferredByDependsOn();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl <em>NS Doc</em>}' class.
          * <!-- begin-user-doc -->
@@ -10544,7 +10776,8 @@ public interface NsdPackage extends EPackage {
          * <!-- end-user-doc -->
          * @generated
          */
-        EOperation NSD_OBJECT___BUILD_EXPLICIT_LINKS = eINSTANCE.getNsdObject__BuildExplicitLinks();
+        EOperation NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE = eINSTANCE
+                .getNsdObject__BuildExplicitLinks__IRiseClipseConsole();
 
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl <em>Ag NS Identification</em>}' class.
@@ -10873,6 +11106,16 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute AG_NSDESC__DESC_ID = eINSTANCE.getAgNSdesc_DescID();
 
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole <em>IRise Clipse Console</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getIRiseClipseConsole()
+         * @generated
+         */
+        EClass IRISE_CLIPSE_CONSOLE = eINSTANCE.getIRiseClipseConsole();
+
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind <em>ACSI Services Kind</em>}' enum.
          * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbstractLNClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbstractLNClassImpl.java
index 4a0b285bf1cbcedf53e51f8b0626e20329ffd22d..bab18874c9a21bd1afa3808afaaf35da22aaad42 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbstractLNClassImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbstractLNClassImpl.java
@@ -20,17 +20,22 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClasses;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
+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.EObjectWithInverseResolvingEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
 
 /**
  * <!-- begin-user-doc -->
@@ -42,6 +47,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbstractLNClassImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbstractLNClassImpl#getLNClasses <em>LN Classes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbstractLNClassImpl#getReferredByAnyLNClass <em>Referred By Any LN Class</em>}</li>
  * </ul>
  *
  * @generated
@@ -76,6 +82,16 @@ public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNCla
      */
     protected boolean nameESet;
 
+    /**
+     * The cached value of the '{@link #getReferredByAnyLNClass() <em>Referred By Any LN Class</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByAnyLNClass()
+     * @generated
+     * @ordered
+     */
+    protected EList< AnyLNClass > referredByAnyLNClass;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -194,11 +210,50 @@ public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNCla
      * @generated
      */
     @Override
+    public EList< AnyLNClass > getReferredByAnyLNClass() {
+        if( referredByAnyLNClass == null ) {
+            referredByAnyLNClass = new EObjectWithInverseResolvingEList.Unsettable< AnyLNClass >( AnyLNClass.class,
+                    this, NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS,
+                    NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS );
+        }
+        return referredByAnyLNClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByAnyLNClass() {
+        if( referredByAnyLNClass != null ) ( ( InternalEList.Unsettable< ? > ) referredByAnyLNClass ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByAnyLNClass() {
+        return referredByAnyLNClass != null && ( ( InternalEList.Unsettable< ? > ) referredByAnyLNClass ).isSet();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
         case NsdPackage.ABSTRACT_LN_CLASS__LN_CLASSES:
             if( eInternalContainer() != null ) msgs = eBasicRemoveFromContainer( msgs );
             return basicSetLNClasses( ( LNClasses ) otherEnd, msgs );
+        case NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByAnyLNClass() )
+                    .basicAdd( otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -213,6 +268,8 @@ public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNCla
         switch( featureID ) {
         case NsdPackage.ABSTRACT_LN_CLASS__LN_CLASSES:
             return basicSetLNClasses( null, msgs );
+        case NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS:
+            return ( ( InternalEList< ? > ) getReferredByAnyLNClass() ).basicRemove( otherEnd, msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -244,6 +301,8 @@ public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNCla
             return getName();
         case NsdPackage.ABSTRACT_LN_CLASS__LN_CLASSES:
             return getLNClasses();
+        case NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS:
+            return getReferredByAnyLNClass();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -253,6 +312,7 @@ public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNCla
      * <!-- end-user-doc -->
      * @generated
      */
+    @SuppressWarnings( "unchecked" )
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
@@ -262,6 +322,10 @@ public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNCla
         case NsdPackage.ABSTRACT_LN_CLASS__LN_CLASSES:
             setLNClasses( ( LNClasses ) newValue );
             return;
+        case NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS:
+            getReferredByAnyLNClass().clear();
+            getReferredByAnyLNClass().addAll( ( Collection< ? extends AnyLNClass > ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -280,6 +344,9 @@ public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNCla
         case NsdPackage.ABSTRACT_LN_CLASS__LN_CLASSES:
             setLNClasses( ( LNClasses ) null );
             return;
+        case NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS:
+            unsetReferredByAnyLNClass();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -296,6 +363,8 @@ public class AbstractLNClassImpl extends AnyLNClassImpl implements AbstractLNCla
             return isSetName();
         case NsdPackage.ABSTRACT_LN_CLASS__LN_CLASSES:
             return getLNClasses() != null;
+        case NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS:
+            return isSetReferredByAnyLNClass();
         }
         return super.eIsSet( featureID );
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AnyLNClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AnyLNClassImpl.java
index 10409b1f6d246a89f74edcebca9a028cd2a336de..f04c4cc3c101ca8a3d0461ba9ad8530dab078271 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AnyLNClassImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AnyLNClassImpl.java
@@ -19,10 +19,14 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClasses;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
+import java.lang.reflect.InvocationTargetException;
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -47,6 +51,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AnyLNClassImpl#getDataObject <em>Data Object</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AnyLNClassImpl#getBase <em>Base</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AnyLNClassImpl#getRefersToAbstractLNClass <em>Refers To Abstract LN Class</em>}</li>
  * </ul>
  *
  * @generated
@@ -91,6 +96,25 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
      */
     protected boolean baseESet;
 
+    /**
+     * The cached value of the '{@link #getRefersToAbstractLNClass() <em>Refers To Abstract LN Class</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToAbstractLNClass()
+     * @generated
+     * @ordered
+     */
+    protected AbstractLNClass refersToAbstractLNClass;
+
+    /**
+     * This is true if the Refers To Abstract LN Class reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToAbstractLNClassESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -194,6 +218,133 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
         return baseESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public AbstractLNClass getRefersToAbstractLNClass() {
+        return refersToAbstractLNClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToAbstractLNClass( AbstractLNClass newRefersToAbstractLNClass,
+            NotificationChain msgs ) {
+        AbstractLNClass oldRefersToAbstractLNClass = refersToAbstractLNClass;
+        refersToAbstractLNClass = newRefersToAbstractLNClass;
+        boolean oldRefersToAbstractLNClassESet = refersToAbstractLNClassESet;
+        refersToAbstractLNClassESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS, oldRefersToAbstractLNClass,
+                    newRefersToAbstractLNClass, !oldRefersToAbstractLNClassESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToAbstractLNClass( AbstractLNClass newRefersToAbstractLNClass ) {
+        if( newRefersToAbstractLNClass != refersToAbstractLNClass ) {
+            NotificationChain msgs = null;
+            if( refersToAbstractLNClass != null )
+                msgs = ( ( InternalEObject ) refersToAbstractLNClass ).eInverseRemove( this,
+                        NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS, AbstractLNClass.class, msgs );
+            if( newRefersToAbstractLNClass != null )
+                msgs = ( ( InternalEObject ) newRefersToAbstractLNClass ).eInverseAdd( this,
+                        NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS, AbstractLNClass.class, msgs );
+            msgs = basicSetRefersToAbstractLNClass( newRefersToAbstractLNClass, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToAbstractLNClassESet = refersToAbstractLNClassESet;
+            refersToAbstractLNClassESet = true;
+            if( eNotificationRequired() ) eNotify(
+                    new ENotificationImpl( this, Notification.SET, NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS,
+                            newRefersToAbstractLNClass, newRefersToAbstractLNClass, !oldRefersToAbstractLNClassESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToAbstractLNClass( NotificationChain msgs ) {
+        AbstractLNClass oldRefersToAbstractLNClass = refersToAbstractLNClass;
+        refersToAbstractLNClass = null;
+        boolean oldRefersToAbstractLNClassESet = refersToAbstractLNClassESet;
+        refersToAbstractLNClassESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS, oldRefersToAbstractLNClass, null,
+                    oldRefersToAbstractLNClassESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToAbstractLNClass() {
+        if( refersToAbstractLNClass != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToAbstractLNClass ).eInverseRemove( this,
+                    NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS, AbstractLNClass.class, msgs );
+            msgs = basicUnsetRefersToAbstractLNClass( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToAbstractLNClassESet = refersToAbstractLNClassESet;
+            refersToAbstractLNClassESet = false;
+            if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS, null, null,
+                    oldRefersToAbstractLNClassESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToAbstractLNClass() {
+        return refersToAbstractLNClassESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        // TODO: implement this method
+        // Ensure that you remove @generated or mark it @generated NOT
+        throw new UnsupportedOperationException();
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -206,6 +357,11 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
         case NsdPackage.ANY_LN_CLASS__DATA_OBJECT:
             return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getDataObject() ).basicAdd( otherEnd,
                     msgs );
+        case NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS:
+            if( refersToAbstractLNClass != null )
+                msgs = ( ( InternalEObject ) refersToAbstractLNClass ).eInverseRemove( this,
+                        NsdPackage.ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS, AbstractLNClass.class, msgs );
+            return basicSetRefersToAbstractLNClass( ( AbstractLNClass ) otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -220,6 +376,8 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
         switch( featureID ) {
         case NsdPackage.ANY_LN_CLASS__DATA_OBJECT:
             return ( ( InternalEList< ? > ) getDataObject() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS:
+            return basicUnsetRefersToAbstractLNClass( msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -236,6 +394,8 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
             return getDataObject();
         case NsdPackage.ANY_LN_CLASS__BASE:
             return getBase();
+        case NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS:
+            return getRefersToAbstractLNClass();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -256,6 +416,9 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
         case NsdPackage.ANY_LN_CLASS__BASE:
             setBase( ( String ) newValue );
             return;
+        case NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS:
+            setRefersToAbstractLNClass( ( AbstractLNClass ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -274,6 +437,9 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
         case NsdPackage.ANY_LN_CLASS__BASE:
             unsetBase();
             return;
+        case NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS:
+            unsetRefersToAbstractLNClass();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -290,10 +456,26 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
             return isSetDataObject();
         case NsdPackage.ANY_LN_CLASS__BASE:
             return isSetBase();
+        case NsdPackage.ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS:
+            return isSetRefersToAbstractLNClass();
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eInvoke( int operationID, EList< ? > arguments ) throws InvocationTargetException {
+        switch( operationID ) {
+        case NsdPackage.ANY_LN_CLASS___GET_NAME:
+            return getName();
+        }
+        return super.eInvoke( operationID, arguments );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -313,4 +495,26 @@ public abstract class AnyLNClassImpl extends TitledClassImpl implements AnyLNCla
         return result.toString();
     }
 
+    /* Implicit link
+     *   AnyLNClass.base                    -> AbstractLNClass  
+     */
+    @Override
+    public void buildExplicitLinks( IRiseClipseConsole console ) {
+        super.buildExplicitLinks( console );
+        if( !baseESet ) return;
+
+        LNClasses lNClasses = ( LNClasses ) eContainer();
+        EList< AbstractLNClass > l = lNClasses.getAbstractLNClass();
+        setRefersToAbstractLNClass( l.stream()
+                .filter( abstractLNClass -> abstractLNClass.getName().equals( getBase() ) ).findAny().orElse( null ) );
+        if( getRefersToAbstractLNClass() == null ) {
+            console.error( "AbstractLNClass (name: " + getBase() + ") refers by AnyLNClass (name: " + getName()
+                    + ") in NS (id:" + lNClasses.getNS().getId() + ") is unknown" );
+        }
+        else {
+            console.info( "AbstractLNClass (name: " + getBase() + ") refers by AnyLNClass (name: " + getName()
+                    + ") in NS (id:" + lNClasses.getNS().getId() + ") found" );
+        }
+    }
+
 } //AnyLNClassImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AppliesToTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AppliesToTypeImpl.java
index ad1ea28a79bbb56db2f19b9c1df4a0e9913609f1..cd28eb2fd305aca2281094ad434858415bb7675a 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AppliesToTypeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AppliesToTypeImpl.java
@@ -19,15 +19,14 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType;
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage;
-import java.lang.reflect.InvocationTargetException;
 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;
@@ -42,32 +41,161 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getLineNumber <em>Line Number</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getVersion <em>Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getPublicationStage <em>Publication Stage</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getServiceNsUsage <em>Service Ns Usage</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class AppliesToTypeImpl extends AgNSIdentificationImpl implements AppliesToType {
+public class AppliesToTypeImpl extends NsdObjectImpl implements AppliesToType {
     /**
-     * The default value of the '{@link #getLineNumber() <em>Line Number</em>}' attribute.
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getLineNumber()
+     * @see #getRelease()
      * @generated
      * @ordered
      */
-    protected static final int LINE_NUMBER_EDEFAULT = -1;
+    protected static final Integer RELEASE_EDEFAULT = new Integer( 1 );
 
     /**
-     * The cached value of the '{@link #getLineNumber() <em>Line Number</em>}' attribute.
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getLineNumber()
+     * @see #getRelease()
      * @generated
      * @ordered
      */
-    protected int lineNumber = LINE_NUMBER_EDEFAULT;
+    protected Integer release = RELEASE_EDEFAULT;
+
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final Integer VERSION_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected Integer version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+
+    /**
+     * This is true if the Id attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean idESet;
+
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+
+    /**
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
+
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected PubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+
+    /**
+     * This is true if the Publication Stage attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean publicationStageESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -94,8 +222,8 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
      * @generated
      */
     @Override
-    public int getLineNumber() {
-        return lineNumber;
+    public Integer getRelease() {
+        return release;
     }
 
     /**
@@ -104,11 +232,240 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
      * @generated
      */
     @Override
-    public void setLineNumber( int newLineNumber ) {
-        int oldLineNumber = lineNumber;
-        lineNumber = newLineNumber;
+    public void setRelease( Integer newRelease ) {
+        Integer oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
         if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
-                NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER, oldLineNumber, lineNumber ) );
+                NsdPackage.APPLIES_TO_TYPE__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        Integer oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.APPLIES_TO_TYPE__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Integer getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( Integer newVersion ) {
+        Integer oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.APPLIES_TO_TYPE__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        Integer oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.APPLIES_TO_TYPE__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        boolean oldIdESet = idESet;
+        idESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.APPLIES_TO_TYPE__ID, oldId, id, !oldIdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetId() {
+        String oldId = id;
+        boolean oldIdESet = idESet;
+        id = ID_EDEFAULT;
+        idESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.APPLIES_TO_TYPE__ID, oldId, ID_EDEFAULT, oldIdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetId() {
+        return idESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.APPLIES_TO_TYPE__REVISION, oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.APPLIES_TO_TYPE__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public PubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( PubStage newPublicationStage ) {
+        PubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE,
+                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        PubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE,
+                    oldPublicationStage, PUBLICATION_STAGE_EDEFAULT, oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPublicationStage() {
+        return publicationStageESet;
     }
 
     /**
@@ -156,18 +513,6 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
                 NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE, newServiceNsUsage, newServiceNsUsage ) );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public void buildExplicitLinks() {
-        // TODO: implement this method
-        // Ensure that you remove @generated or mark it @generated NOT
-        throw new UnsupportedOperationException();
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -220,8 +565,16 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
-        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
-            return getLineNumber();
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+            return getRelease();
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            return getVersion();
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+            return getId();
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+            return getRevision();
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+            return getPublicationStage();
         case NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE:
             return getServiceNsUsage();
         }
@@ -236,8 +589,20 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
-        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
-            setLineNumber( ( Integer ) newValue );
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+            setPublicationStage( ( PubStage ) newValue );
             return;
         case NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE:
             setServiceNsUsage( ( ServiceNsUsage ) newValue );
@@ -254,8 +619,20 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
-            setLineNumber( LINE_NUMBER_EDEFAULT );
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            unsetVersion();
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+            unsetId();
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+            unsetPublicationStage();
             return;
         case NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE:
             setServiceNsUsage( ( ServiceNsUsage ) null );
@@ -272,8 +649,16 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
-            return lineNumber != LINE_NUMBER_EDEFAULT;
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+            return isSetRelease();
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            return isSetVersion();
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+            return isSetId();
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+            return isSetRevision();
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+            return isSetPublicationStage();
         case NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE:
             return getServiceNsUsage() != null;
         }
@@ -287,10 +672,18 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
      */
     @Override
     public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
-        if( baseClass == NsdObject.class ) {
+        if( baseClass == AgNSIdentification.class ) {
             switch( derivedFeatureID ) {
-            case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
-                return NsdPackage.NSD_OBJECT__LINE_NUMBER;
+            case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+                return NsdPackage.AG_NS_IDENTIFICATION__RELEASE;
+            case NsdPackage.APPLIES_TO_TYPE__VERSION:
+                return NsdPackage.AG_NS_IDENTIFICATION__VERSION;
+            case NsdPackage.APPLIES_TO_TYPE__ID:
+                return NsdPackage.AG_NS_IDENTIFICATION__ID;
+            case NsdPackage.APPLIES_TO_TYPE__REVISION:
+                return NsdPackage.AG_NS_IDENTIFICATION__REVISION;
+            case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+                return NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
             default:
                 return -1;
             }
@@ -305,10 +698,18 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
      */
     @Override
     public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
-        if( baseClass == NsdObject.class ) {
+        if( baseClass == AgNSIdentification.class ) {
             switch( baseFeatureID ) {
-            case NsdPackage.NSD_OBJECT__LINE_NUMBER:
-                return NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER;
+            case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
+                return NsdPackage.APPLIES_TO_TYPE__RELEASE;
+            case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
+                return NsdPackage.APPLIES_TO_TYPE__VERSION;
+            case NsdPackage.AG_NS_IDENTIFICATION__ID:
+                return NsdPackage.APPLIES_TO_TYPE__ID;
+            case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+                return NsdPackage.APPLIES_TO_TYPE__REVISION;
+            case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+                return NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE;
             default:
                 return -1;
             }
@@ -316,39 +717,6 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
         return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public int eDerivedOperationID( int baseOperationID, Class< ? > baseClass ) {
-        if( baseClass == NsdObject.class ) {
-            switch( baseOperationID ) {
-            case NsdPackage.NSD_OBJECT___BUILD_EXPLICIT_LINKS:
-                return NsdPackage.APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS;
-            default:
-                return -1;
-            }
-        }
-        return super.eDerivedOperationID( baseOperationID, baseClass );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public Object eInvoke( int operationID, EList< ? > arguments ) throws InvocationTargetException {
-        switch( operationID ) {
-        case NsdPackage.APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS:
-            buildExplicitLinks();
-            return null;
-        }
-        return super.eInvoke( operationID, arguments );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -359,8 +727,31 @@ public class AppliesToTypeImpl extends AgNSIdentificationImpl implements Applies
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (lineNumber: " );
-        result.append( lineNumber );
+        result.append( " (release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ", id: " );
+        if( idESet )
+            result.append( id );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
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 68c90f9242065beb03b6587921e024f83b14a4d9..0a4650b0f9da163ab9db5a3464d9fa1aea11c507 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
@@ -19,9 +19,14 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+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 org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
@@ -39,12 +44,167 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getVersion <em>Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getPublicationStage <em>Publication Stage</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getNS <em>NS</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getRefersToNS <em>Refers To NS</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
+public class DependsOnImpl extends NsdObjectImpl implements DependsOn {
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final Integer RELEASE_EDEFAULT = new Integer( 1 );
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected Integer release = RELEASE_EDEFAULT;
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final Integer VERSION_EDEFAULT = null;
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected Integer version = VERSION_EDEFAULT;
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+    /**
+     * This is true if the Id attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean idESet;
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+    /**
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected PubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+    /**
+     * This is true if the Publication Stage attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean publicationStageESet;
+
+    /**
+     * The cached value of the '{@link #getRefersToNS() <em>Refers To NS</em>}' reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRefersToNS()
+     * @generated
+     * @ordered
+     */
+    protected NS refersToNS;
+    /**
+     * This is true if the Refers To NS reference has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean refersToNSESet;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -64,6 +224,258 @@ public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
         return NsdPackage.Literals.DEPENDS_ON;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Integer getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( Integer newRelease ) {
+        Integer oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.DEPENDS_ON__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        Integer oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.DEPENDS_ON__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Integer getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( Integer newVersion ) {
+        Integer oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.DEPENDS_ON__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        Integer oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.DEPENDS_ON__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        boolean oldIdESet = idESet;
+        idESet = true;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.DEPENDS_ON__ID, oldId, id, !oldIdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetId() {
+        String oldId = id;
+        boolean oldIdESet = idESet;
+        id = ID_EDEFAULT;
+        idESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.DEPENDS_ON__ID, oldId, ID_EDEFAULT, oldIdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetId() {
+        return idESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.DEPENDS_ON__REVISION, oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.DEPENDS_ON__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public PubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( PubStage newPublicationStage ) {
+        PubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.DEPENDS_ON__PUBLICATION_STAGE,
+                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        PubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.DEPENDS_ON__PUBLICATION_STAGE,
+                    oldPublicationStage, PUBLICATION_STAGE_EDEFAULT, oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPublicationStage() {
+        return publicationStageESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -106,6 +518,114 @@ public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
             eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.DEPENDS_ON__NS, newNS, newNS ) );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NS getRefersToNS() {
+        return refersToNS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetRefersToNS( NS newRefersToNS, NotificationChain msgs ) {
+        NS oldRefersToNS = refersToNS;
+        refersToNS = newRefersToNS;
+        boolean oldRefersToNSESet = refersToNSESet;
+        refersToNSESet = true;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.DEPENDS_ON__REFERS_TO_NS, oldRefersToNS, newRefersToNS, !oldRefersToNSESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRefersToNS( NS newRefersToNS ) {
+        if( newRefersToNS != refersToNS ) {
+            NotificationChain msgs = null;
+            if( refersToNS != null ) msgs = ( ( InternalEObject ) refersToNS ).eInverseRemove( this,
+                    NsdPackage.NS__REFERRED_BY_DEPENDS_ON, NS.class, msgs );
+            if( newRefersToNS != null ) msgs = ( ( InternalEObject ) newRefersToNS ).eInverseAdd( this,
+                    NsdPackage.NS__REFERRED_BY_DEPENDS_ON, NS.class, msgs );
+            msgs = basicSetRefersToNS( newRefersToNS, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToNSESet = refersToNSESet;
+            refersToNSESet = true;
+            if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.DEPENDS_ON__REFERS_TO_NS, newRefersToNS, newRefersToNS, !oldRefersToNSESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicUnsetRefersToNS( NotificationChain msgs ) {
+        NS oldRefersToNS = refersToNS;
+        refersToNS = null;
+        boolean oldRefersToNSESet = refersToNSESet;
+        refersToNSESet = false;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.DEPENDS_ON__REFERS_TO_NS, oldRefersToNS, null, oldRefersToNSESet );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRefersToNS() {
+        if( refersToNS != null ) {
+            NotificationChain msgs = null;
+            msgs = ( ( InternalEObject ) refersToNS ).eInverseRemove( this, NsdPackage.NS__REFERRED_BY_DEPENDS_ON,
+                    NS.class, msgs );
+            msgs = basicUnsetRefersToNS( msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else {
+            boolean oldRefersToNSESet = refersToNSESet;
+            refersToNSESet = false;
+            if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                    NsdPackage.DEPENDS_ON__REFERS_TO_NS, null, null, oldRefersToNSESet ) );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRefersToNS() {
+        return refersToNSESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -117,6 +637,10 @@ public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
         case NsdPackage.DEPENDS_ON__NS:
             if( eInternalContainer() != null ) msgs = eBasicRemoveFromContainer( msgs );
             return basicSetNS( ( NS ) otherEnd, msgs );
+        case NsdPackage.DEPENDS_ON__REFERS_TO_NS:
+            if( refersToNS != null ) msgs = ( ( InternalEObject ) refersToNS ).eInverseRemove( this,
+                    NsdPackage.NS__REFERRED_BY_DEPENDS_ON, NS.class, msgs );
+            return basicSetRefersToNS( ( NS ) otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -131,6 +655,8 @@ public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
         switch( featureID ) {
         case NsdPackage.DEPENDS_ON__NS:
             return basicSetNS( null, msgs );
+        case NsdPackage.DEPENDS_ON__REFERS_TO_NS:
+            return basicUnsetRefersToNS( msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -157,8 +683,20 @@ public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
+        case NsdPackage.DEPENDS_ON__RELEASE:
+            return getRelease();
+        case NsdPackage.DEPENDS_ON__VERSION:
+            return getVersion();
+        case NsdPackage.DEPENDS_ON__ID:
+            return getId();
+        case NsdPackage.DEPENDS_ON__REVISION:
+            return getRevision();
+        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
+            return getPublicationStage();
         case NsdPackage.DEPENDS_ON__NS:
             return getNS();
+        case NsdPackage.DEPENDS_ON__REFERS_TO_NS:
+            return getRefersToNS();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -171,9 +709,27 @@ public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
+        case NsdPackage.DEPENDS_ON__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.DEPENDS_ON__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        case NsdPackage.DEPENDS_ON__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.DEPENDS_ON__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
+            setPublicationStage( ( PubStage ) newValue );
+            return;
         case NsdPackage.DEPENDS_ON__NS:
             setNS( ( NS ) newValue );
             return;
+        case NsdPackage.DEPENDS_ON__REFERS_TO_NS:
+            setRefersToNS( ( NS ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -186,9 +742,27 @@ public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.DEPENDS_ON__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.DEPENDS_ON__VERSION:
+            unsetVersion();
+            return;
+        case NsdPackage.DEPENDS_ON__ID:
+            unsetId();
+            return;
+        case NsdPackage.DEPENDS_ON__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
         case NsdPackage.DEPENDS_ON__NS:
             setNS( ( NS ) null );
             return;
+        case NsdPackage.DEPENDS_ON__REFERS_TO_NS:
+            unsetRefersToNS();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -201,10 +775,131 @@ public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.DEPENDS_ON__RELEASE:
+            return isSetRelease();
+        case NsdPackage.DEPENDS_ON__VERSION:
+            return isSetVersion();
+        case NsdPackage.DEPENDS_ON__ID:
+            return isSetId();
+        case NsdPackage.DEPENDS_ON__REVISION:
+            return isSetRevision();
+        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
+            return isSetPublicationStage();
         case NsdPackage.DEPENDS_ON__NS:
             return getNS() != null;
+        case NsdPackage.DEPENDS_ON__REFERS_TO_NS:
+            return isSetRefersToNS();
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgNSIdentification.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DEPENDS_ON__RELEASE:
+                return NsdPackage.AG_NS_IDENTIFICATION__RELEASE;
+            case NsdPackage.DEPENDS_ON__VERSION:
+                return NsdPackage.AG_NS_IDENTIFICATION__VERSION;
+            case NsdPackage.DEPENDS_ON__ID:
+                return NsdPackage.AG_NS_IDENTIFICATION__ID;
+            case NsdPackage.DEPENDS_ON__REVISION:
+                return NsdPackage.AG_NS_IDENTIFICATION__REVISION;
+            case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
+                return NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgNSIdentification.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
+                return NsdPackage.DEPENDS_ON__RELEASE;
+            case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
+                return NsdPackage.DEPENDS_ON__VERSION;
+            case NsdPackage.AG_NS_IDENTIFICATION__ID:
+                return NsdPackage.DEPENDS_ON__ID;
+            case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+                return NsdPackage.DEPENDS_ON__REVISION;
+            case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+                return NsdPackage.DEPENDS_ON__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ", id: " );
+        if( idESet )
+            result.append( id );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+    /* Implicit link
+     *   DependsOn.id                       -> NS.id
+     */
+    @Override
+    public void buildExplicitLinks( IRiseClipseConsole console ) {
+        super.buildExplicitLinks( console );
+
+        NsdResourceSetImpl resourceSet = ( NsdResourceSetImpl ) eResource().getResourceSet();
+        setRefersToNS( resourceSet.getNS( getId() ) );
+        if( getRefersToNS() == null ) {
+            console.error(
+                    "NS (id: " + getId() + ") and refers by DependsOn in NS (id:" + getNS().getId() + ") is unknown" );
+        }
+        else {
+            console.info( "NS (id: " + getId() + ") and refers by DependsOn in NS (id:" + getNS().getId() + ") found" );
+        }
+    }
+
 } //DependsOnImpl
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 4e3f8c45fc1581cb0b6e8835cbea8653ac6f58ef..ad36eb805bf359103ecadc9668a84908d14ab27a 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
@@ -35,16 +35,19 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
-
+import java.util.Collection;
 import javax.xml.datatype.XMLGregorianCalendar;
 
 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.EObjectWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 
 /**
  * <!-- begin-user-doc -->
@@ -72,6 +75,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getConstructedAttributes <em>Constructed Attributes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getCDCs <em>CD Cs</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getLNClasses <em>LN Classes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getReferredByDependsOn <em>Referred By Depends On</em>}</li>
  * </ul>
  *
  * @generated
@@ -499,6 +503,16 @@ public class NSImpl extends CopyrightedImpl implements NS {
      */
     protected boolean lNClassesESet;
 
+    /**
+     * The cached value of the '{@link #getReferredByDependsOn() <em>Referred By Depends On</em>}' reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getReferredByDependsOn()
+     * @generated
+     * @ordered
+     */
+    protected EList< DependsOn > referredByDependsOn;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1607,6 +1621,40 @@ public class NSImpl extends CopyrightedImpl implements NS {
         return lNClassesESet;
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< DependsOn > getReferredByDependsOn() {
+        if( referredByDependsOn == null ) {
+            referredByDependsOn = new EObjectWithInverseEList.Unsettable< DependsOn >( DependsOn.class, this,
+                    NsdPackage.NS__REFERRED_BY_DEPENDS_ON, NsdPackage.DEPENDS_ON__REFERS_TO_NS );
+        }
+        return referredByDependsOn;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetReferredByDependsOn() {
+        if( referredByDependsOn != null ) ( ( InternalEList.Unsettable< ? > ) referredByDependsOn ).unset();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetReferredByDependsOn() {
+        return referredByDependsOn != null && ( ( InternalEList.Unsettable< ? > ) referredByDependsOn ).isSet();
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1963,6 +2011,7 @@ public class NSImpl extends CopyrightedImpl implements NS {
      * <!-- end-user-doc -->
      * @generated
      */
+    @SuppressWarnings( "unchecked" )
     @Override
     public NotificationChain eInverseAdd( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
         switch( featureID ) {
@@ -2006,6 +2055,9 @@ public class NSImpl extends CopyrightedImpl implements NS {
             if( lNClasses != null ) msgs = ( ( InternalEObject ) lNClasses ).eInverseRemove( this,
                     EOPPOSITE_FEATURE_BASE - NsdPackage.NS__LN_CLASSES, null, msgs );
             return basicSetLNClasses( ( LNClasses ) otherEnd, msgs );
+        case NsdPackage.NS__REFERRED_BY_DEPENDS_ON:
+            return ( ( InternalEList< InternalEObject > ) ( InternalEList< ? > ) getReferredByDependsOn() )
+                    .basicAdd( otherEnd, msgs );
         }
         return super.eInverseAdd( otherEnd, featureID, msgs );
     }
@@ -2088,6 +2140,8 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return basicUnsetCDCs( msgs );
         case NsdPackage.NS__LN_CLASSES:
             return basicUnsetLNClasses( msgs );
+        case NsdPackage.NS__REFERRED_BY_DEPENDS_ON:
+            return ( ( InternalEList< ? > ) getReferredByDependsOn() ).basicRemove( otherEnd, msgs );
         }
         return super.eInverseRemove( otherEnd, featureID, msgs );
     }
@@ -2136,6 +2190,8 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return getCDCs();
         case NsdPackage.NS__LN_CLASSES:
             return getLNClasses();
+        case NsdPackage.NS__REFERRED_BY_DEPENDS_ON:
+            return getReferredByDependsOn();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -2145,6 +2201,7 @@ public class NSImpl extends CopyrightedImpl implements NS {
      * <!-- end-user-doc -->
      * @generated
      */
+    @SuppressWarnings( "unchecked" )
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
@@ -2202,6 +2259,10 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__LN_CLASSES:
             setLNClasses( ( LNClasses ) newValue );
             return;
+        case NsdPackage.NS__REFERRED_BY_DEPENDS_ON:
+            getReferredByDependsOn().clear();
+            getReferredByDependsOn().addAll( ( Collection< ? extends DependsOn > ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -2268,6 +2329,9 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__LN_CLASSES:
             unsetLNClasses();
             return;
+        case NsdPackage.NS__REFERRED_BY_DEPENDS_ON:
+            unsetReferredByDependsOn();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -2316,6 +2380,8 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return isSetCDCs();
         case NsdPackage.NS__LN_CLASSES:
             return isSetLNClasses();
+        case NsdPackage.NS__REFERRED_BY_DEPENDS_ON:
+            return isSetReferredByDependsOn();
         }
         return super.eIsSet( featureID );
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java
index 9f174fc8d14e32ff8c3fe4e25fdfacc9b775e4b8..1fd5f9c579549c4d8b264534144bc9c513576b27 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java
@@ -22,11 +22,13 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import java.lang.reflect.InvocationTargetException;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.ecore.EClass;
-
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
@@ -108,13 +110,18 @@ public abstract class NsdObjectImpl extends MinimalEObjectImpl.Container impleme
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @generated
+     * @generated NOT
      */
     @Override
-    public void buildExplicitLinks() {
-        // TODO: implement this method
-        // Ensure that you remove @generated or mark it @generated NOT
-        throw new UnsupportedOperationException();
+    public void buildExplicitLinks( IRiseClipseConsole console ) {
+        TreeIterator< EObject > it = eAllContents();
+        while( it.hasNext() ) {
+            EObject o = it.next();
+            if( o instanceof NsdObject ) {
+                ( ( NsdObject ) o ).buildExplicitLinks( console );
+            }
+        }
+        return;
     }
 
     /**
@@ -183,8 +190,8 @@ public abstract class NsdObjectImpl extends MinimalEObjectImpl.Container impleme
     @Override
     public Object eInvoke( int operationID, EList< ? > arguments ) throws InvocationTargetException {
         switch( operationID ) {
-        case NsdPackage.NSD_OBJECT___BUILD_EXPLICIT_LINKS:
-            buildExplicitLinks();
+        case NsdPackage.NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE:
+            buildExplicitLinks( ( IRiseClipseConsole ) arguments.get( 0 ) );
             return null;
         }
         return super.eInvoke( operationID, arguments );
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 ac3e2d9535562d64ac6c8e27ec26b97307084495..86de77af68e5fe3bb6af809332a9f4db13a8b17f 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
@@ -88,6 +88,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdValidator;
 
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import org.eclipse.emf.common.util.Enumerator;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -530,6 +531,13 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     private EClass agNSdescEClass = null;
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass iRiseClipseConsoleEClass = null;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -735,6 +743,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) dependsOnEClass.getEStructuralFeatures().get( 0 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDependsOn_RefersToNS() {
+        return ( EReference ) dependsOnEClass.getEStructuralFeatures().get( 1 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -955,6 +973,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) abstractLNClassEClass.getEStructuralFeatures().get( 1 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getAbstractLNClass_ReferredByAnyLNClass() {
+        return ( EReference ) abstractLNClassEClass.getEStructuralFeatures().get( 2 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -985,6 +1013,26 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) anyLNClassEClass.getEStructuralFeatures().get( 1 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getAnyLNClass_RefersToAbstractLNClass() {
+        return ( EReference ) anyLNClassEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EOperation getAnyLNClass__GetName() {
+        return anyLNClassEClass.getEOperations().get( 0 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2215,6 +2263,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) nsEClass.getEStructuralFeatures().get( 9 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getNS_ReferredByDependsOn() {
+        return ( EReference ) nsEClass.getEStructuralFeatures().get( 10 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2811,7 +2869,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EOperation getNsdObject__BuildExplicitLinks() {
+    public EOperation getNsdObject__BuildExplicitLinks__IRiseClipseConsole() {
         return nsdObjectEClass.getEOperations().get( 0 );
     }
 
@@ -3195,6 +3253,16 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) agNSdescEClass.getEStructuralFeatures().get( 0 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getIRiseClipseConsole() {
+        return iRiseClipseConsoleEClass;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -3359,6 +3427,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
 
         dependsOnEClass = createEClass( DEPENDS_ON );
         createEReference( dependsOnEClass, DEPENDS_ON__NS );
+        createEReference( dependsOnEClass, DEPENDS_ON__REFERS_TO_NS );
 
         documentRootEClass = createEClass( DOCUMENT_ROOT );
         createEAttribute( documentRootEClass, DOCUMENT_ROOT__MIXED );
@@ -3386,10 +3455,13 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         abstractLNClassEClass = createEClass( ABSTRACT_LN_CLASS );
         createEAttribute( abstractLNClassEClass, ABSTRACT_LN_CLASS__NAME );
         createEReference( abstractLNClassEClass, ABSTRACT_LN_CLASS__LN_CLASSES );
+        createEReference( abstractLNClassEClass, ABSTRACT_LN_CLASS__REFERRED_BY_ANY_LN_CLASS );
 
         anyLNClassEClass = createEClass( ANY_LN_CLASS );
         createEReference( anyLNClassEClass, ANY_LN_CLASS__DATA_OBJECT );
         createEAttribute( anyLNClassEClass, ANY_LN_CLASS__BASE );
+        createEReference( anyLNClassEClass, ANY_LN_CLASS__REFERS_TO_ABSTRACT_LN_CLASS );
+        createEOperation( anyLNClassEClass, ANY_LN_CLASS___GET_NAME );
 
         applicableServiceNSEClass = createEClass( APPLICABLE_SERVICE_NS );
         createEReference( applicableServiceNSEClass, APPLICABLE_SERVICE_NS__SERVICE_NS_USAGE );
@@ -3539,6 +3611,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEReference( nsEClass, NS__CONSTRUCTED_ATTRIBUTES );
         createEReference( nsEClass, NS__CD_CS );
         createEReference( nsEClass, NS__LN_CLASSES );
+        createEReference( nsEClass, NS__REFERRED_BY_DEPENDS_ON );
 
         nsDocEClass = createEClass( NS_DOC );
         createEReference( nsDocEClass, NS_DOC__DOC );
@@ -3616,7 +3689,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
 
         nsdObjectEClass = createEClass( NSD_OBJECT );
         createEAttribute( nsdObjectEClass, NSD_OBJECT__LINE_NUMBER );
-        createEOperation( nsdObjectEClass, NSD_OBJECT___BUILD_EXPLICIT_LINKS );
+        createEOperation( nsdObjectEClass, NSD_OBJECT___BUILD_EXPLICIT_LINKS__IRISECLIPSECONSOLE );
 
         agNSIdentificationEClass = createEClass( AG_NS_IDENTIFICATION );
         createEAttribute( agNSIdentificationEClass, AG_NS_IDENTIFICATION__RELEASE );
@@ -3669,6 +3742,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         agNSdescEClass = createEClass( AG_NSDESC );
         createEAttribute( agNSdescEClass, AG_NSDESC__DESC_ID );
 
+        iRiseClipseConsoleEClass = createEClass( IRISE_CLIPSE_CONSOLE );
+
         // Create enums
         acsiServicesKindEEnum = createEEnum( ACSI_SERVICES_KIND );
         cbKindEEnum = createEEnum( CB_KIND );
@@ -3719,8 +3794,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         // Set bounds for type parameters
 
         // Add supertypes to classes
-        appliesToTypeEClass.getESuperTypes().add( this.getAgNSIdentification() );
         appliesToTypeEClass.getESuperTypes().add( this.getNsdObject() );
+        appliesToTypeEClass.getESuperTypes().add( this.getAgNSIdentification() );
+        dependsOnEClass.getESuperTypes().add( this.getNsdObject() );
         dependsOnEClass.getESuperTypes().add( this.getAgNSIdentification() );
         serviceTypeEClass.getESuperTypes().add( this.getNsdObject() );
         abbreviationEClass.getESuperTypes().add( this.getNsdObject() );
@@ -3808,6 +3884,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getDependsOn_NS(), this.getNS(), this.getNS_DependsOn(), "nS", null, 0, 1, DependsOn.class,
                 IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
                 IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getDependsOn_RefersToNS(), this.getNS(), this.getNS_ReferredByDependsOn(), "refersToNS", null,
+                0, 1, DependsOn.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -3870,6 +3949,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getAbstractLNClass_LNClasses(), this.getLNClasses(), this.getLNClasses_AbstractLNClass(),
                 "lNClasses", null, 0, 1, AbstractLNClass.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getAbstractLNClass_ReferredByAnyLNClass(), this.getAnyLNClass(),
+                this.getAnyLNClass_RefersToAbstractLNClass(), "referredByAnyLNClass", null, 0, -1,
+                AbstractLNClass.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+                IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( anyLNClassEClass, AnyLNClass.class, "AnyLNClass", IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -3878,6 +3961,13 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
         initEAttribute( getAnyLNClass_Base(), ecorePackage.getEString(), "base", null, 0, 1, AnyLNClass.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getAnyLNClass_RefersToAbstractLNClass(), this.getAbstractLNClass(),
+                this.getAbstractLNClass_ReferredByAnyLNClass(), "refersToAbstractLNClass", null, 0, 1, AnyLNClass.class,
+                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
+                !IS_DERIVED, !IS_ORDERED );
+
+        initEOperation( getAnyLNClass__GetName(), theXMLTypePackage.getString(), "getName", 0, 1, IS_UNIQUE,
+                IS_ORDERED );
 
         initEClass( applicableServiceNSEClass, ApplicableServiceNS.class, "ApplicableServiceNS", !IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
@@ -4235,6 +4325,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getNS_LNClasses(), this.getLNClasses(), this.getLNClasses_NS(), "lNClasses", null, 0, 1,
                 fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEReference( getNS_ReferredByDependsOn(), this.getDependsOn(), this.getDependsOn_RefersToNS(),
+                "referredByDependsOn", null, 0, -1, fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class,
+                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
+                !IS_DERIVED, !IS_ORDERED );
 
         initEClass( nsDocEClass, NSDoc.class, "NSDoc", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
         initEReference( getNSDoc_Doc(), this.getDoc(), this.getDoc_NSDoc(), "doc", null, 0, -1, NSDoc.class,
@@ -4422,7 +4516,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getNsdObject_LineNumber(), ecorePackage.getEInt(), "lineNumber", "-1", 1, 1, NsdObject.class,
                 IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
-        initEOperation( getNsdObject__BuildExplicitLinks(), null, "buildExplicitLinks", 0, 1, IS_UNIQUE, IS_ORDERED );
+        EOperation op = initEOperation( getNsdObject__BuildExplicitLinks__IRiseClipseConsole(), null,
+                "buildExplicitLinks", 0, 1, IS_UNIQUE, IS_ORDERED );
+        addEParameter( op, this.getIRiseClipseConsole(), "console", 0, 1, IS_UNIQUE, IS_ORDERED );
 
         initEClass( agNSIdentificationEClass, AgNSIdentification.class, "AgNSIdentification", IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
@@ -4526,6 +4622,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         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 );
 
+        initEClass( iRiseClipseConsoleEClass, IRiseClipseConsole.class, "IRiseClipseConsole", IS_ABSTRACT, IS_INTERFACE,
+                !IS_GENERATED_INSTANCE_CLASS );
+
         // Initialize enums and add enum literals
         initEEnum( acsiServicesKindEEnum, ACSIServicesKind.class, "ACSIServicesKind" );
         addEEnumLiteral( acsiServicesKindEEnum, ACSIServicesKind.ASSOCIATE );
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdAdapterFactory.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdAdapterFactory.java
index 0a2fe0264453ea6de40789ac7a39e41c335b999b..1b40e9d7c61de43b7e27de577e950791980b41d9 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdAdapterFactory.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdAdapterFactory.java
@@ -21,6 +21,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.*;
 
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
 
@@ -383,6 +384,11 @@ public class NsdAdapterFactory extends AdapterFactoryImpl {
             return createAgNSdescAdapter();
         }
 
+        @Override
+        public Adapter caseIRiseClipseConsole( IRiseClipseConsole object ) {
+            return createIRiseClipseConsoleAdapter();
+        }
+
         @Override
         public Adapter defaultCase( EObject object ) {
             return createEObjectAdapter();
@@ -1242,6 +1248,20 @@ public class NsdAdapterFactory extends AdapterFactoryImpl {
         return null;
     }
 
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole <em>IRise Clipse Console</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole
+     * @generated
+     */
+    public Adapter createIRiseClipseConsoleAdapter() {
+        return null;
+    }
+
     /**
      * Creates a new adapter for the default case.
      * <!-- begin-user-doc -->
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 c13261f0aed48e934a090553518ad67ec8be39e2..a6627b621780992b141ecf03f96413e74f1f7e55 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
@@ -29,16 +29,17 @@ import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
 import fr.centralesupelec.edf.riseclipse.util.AbstractRiseClipseConsole;
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 
 
 public class NsdResourceSetImpl extends ResourceSetImpl {
     
-    private Map< String, NsdResourceImpl > nsdResources;
+    private Map< String, NS > nsdResources;
 
     public NsdResourceSetImpl() {
         super();
         
-        nsdResources = new HashMap< String, NsdResourceImpl >();
+        nsdResources = new HashMap< String, NS >();
     }
 
     @Override
@@ -67,7 +68,7 @@ public class NsdResourceSetImpl extends ResourceSetImpl {
             this.getResources().remove( resource );
             return;
         }
-        nsdResources.put( ns.getId(), ( NsdResourceImpl  ) resource );
+        nsdResources.put( ns.getId(), ns );
     }
 
     /*
@@ -144,8 +145,8 @@ public class NsdResourceSetImpl extends ResourceSetImpl {
      *   
      *   
      * The following links are implicit:
-     *   DependsOn.id                       -> NS.id
-     *   AnyLNClass.base                    -> AbstractLNClass  
+     *   DependsOn.id                       -> NS.id                                DONE
+     *   AnyLNClass.base                    -> AbstractLNClass                      DONE
      *   DataObject.type                    -> CDC.name
      *   DataObject.presCond                -> PresenceCondition.name
      *   DataObject.dsPresCond              -> PresenceCondition.name
@@ -169,9 +170,17 @@ public class NsdResourceSetImpl extends ResourceSetImpl {
      *   ServiceTypeRealization.fc          -> FunctionalConstraint.abbreviation    ? ServiceTypeRealization is not a name of a type but a name of a refence
      *   ServiceTypeRealization.presCond    -> PresenceCondition.name               ? idem
      */
-    public void createExplicitLinks() {
-        //for( resource : get)
+    public void buildExplicitLinks( IRiseClipseConsole console ) {
+        for( Resource resource : getResources() ) {
+            DocumentRoot root = (DocumentRoot) resource.getContents().get( 0 );
+            NS ns = ( NS ) root.getNS();
+            ns.buildExplicitLinks( console );
+        }
         
     }
 
+    public NS getNS( String id ) {
+        return nsdResources.get( id );
+    }
+
 }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdSwitch.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdSwitch.java
index ade822b8c80e5a9e57a6bae6ae673923e3f93e07..98ad8b816701fed2fce920c263727e5eeb9e3c14 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdSwitch.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdSwitch.java
@@ -21,6 +21,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.*;
 
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 
@@ -86,14 +87,15 @@ public class NsdSwitch< T > extends Switch< T > {
         case NsdPackage.APPLIES_TO_TYPE: {
             AppliesToType appliesToType = ( AppliesToType ) theEObject;
             T result = caseAppliesToType( appliesToType );
-            if( result == null ) result = caseAgNSIdentification( appliesToType );
             if( result == null ) result = caseNsdObject( appliesToType );
+            if( result == null ) result = caseAgNSIdentification( appliesToType );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.DEPENDS_ON: {
             DependsOn dependsOn = ( DependsOn ) theEObject;
             T result = caseDependsOn( dependsOn );
+            if( result == null ) result = caseNsdObject( dependsOn );
             if( result == null ) result = caseAgNSIdentification( dependsOn );
             if( result == null ) result = defaultCase( theEObject );
             return result;
@@ -551,6 +553,12 @@ public class NsdSwitch< T > extends Switch< T > {
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
+        case NsdPackage.IRISE_CLIPSE_CONSOLE: {
+            IRiseClipseConsole iRiseClipseConsole = ( IRiseClipseConsole ) theEObject;
+            T result = caseIRiseClipseConsole( iRiseClipseConsole );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
         default:
             return defaultCase( theEObject );
         }
@@ -1456,6 +1464,21 @@ public class NsdSwitch< T > extends Switch< T > {
         return null;
     }
 
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>IRise Clipse Console</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>IRise Clipse Console</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseIRiseClipseConsole( IRiseClipseConsole object ) {
+        return null;
+    }
+
     /**
      * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdValidator.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdValidator.java
index df407f5e02a869f35f6a1b2a182d569897102683..ce713aa08dec8bc3e180ec8d9db8c5d698ada89d 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdValidator.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdValidator.java
@@ -21,6 +21,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.*;
 
+import fr.centralesupelec.edf.riseclipse.util.IRiseClipseConsole;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -29,6 +30,7 @@ import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.Enumerator;
 import org.eclipse.emf.common.util.ResourceLocator;
 
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 
 import org.eclipse.emf.ecore.util.EObjectValidator;
@@ -227,6 +229,8 @@ public class NsdValidator extends EObjectValidator {
             return validateAgUML( ( AgUML ) value, diagnostics, context );
         case NsdPackage.AG_NSDESC:
             return validateAgNSdesc( ( AgNSdesc ) value, diagnostics, context );
+        case NsdPackage.IRISE_CLIPSE_CONSOLE:
+            return validateIRiseClipseConsole( ( IRiseClipseConsole ) value, diagnostics, context );
         case NsdPackage.ACSI_SERVICES_KIND:
             return validateACSIServicesKind( ( ACSIServicesKind ) value, diagnostics, context );
         case NsdPackage.CB_KIND:
@@ -846,6 +850,16 @@ public class NsdValidator extends EObjectValidator {
         return validate_EveryDefaultConstraint( agNSdesc, diagnostics, context );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateIRiseClipseConsole( IRiseClipseConsole iRiseClipseConsole, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( ( EObject ) iRiseClipseConsole, diagnostics, context );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->