diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
index eb8b6347f16465243be4f4e5a80cd8dcf69f7361..eb90164effc06bdcbf5e48bedfedf42fedf1492e 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
@@ -384,3 +384,6 @@ _UI_PubStage_TS_literal = TS
 _UI_PubStage_TR_literal = TR
 _UI_PubStage_IS_literal = IS
 _UI_UndefinedAttributeTypeKind_undefined_literal = undefined
+_UI_NSDObjectWithVersionAndRelease_type = NSD Object With Version And Release
+_UI_NSDObjectWithVersionAndRelease_release_feature = Release
+_UI_NSDObjectWithVersionAndRelease_version_feature = Version
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 700e672963376706a4438bdb7f329d775a59b6de..f52266daac5967aabfe80748ed1500594c6af8f9 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
@@ -27,18 +27,9 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 /**
@@ -47,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class AppliesToTypeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class AppliesToTypeItemProvider extends NSDObjectWithVersionAndReleaseItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -72,9 +62,7 @@ public class AppliesToTypeItemProvider extends ItemProviderAdapter implements IE
 
             addIdPropertyDescriptor( object );
             addPublicationStagePropertyDescriptor( object );
-            addReleasePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
-            addVersionPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -111,22 +99,6 @@ public class AppliesToTypeItemProvider extends ItemProviderAdapter implements IE
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
-    /**
-     * 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_AppliesToType_release_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_AppliesToType_release_feature",
-                                "_UI_AppliesToType_type" ),
-                        NsdPackage.Literals.APPLIES_TO_TYPE__RELEASE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
-    }
-
     /**
      * This adds a property descriptor for the Revision feature.
      * <!-- begin-user-doc -->
@@ -143,22 +115,6 @@ public class AppliesToTypeItemProvider extends ItemProviderAdapter implements IE
                         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_AppliesToType_version_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_AppliesToType_version_feature",
-                                "_UI_AppliesToType_type" ),
-                        NsdPackage.Literals.APPLIES_TO_TYPE__VERSION, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
-    }
-
     /**
      * This returns AppliesToType.gif.
      * <!-- begin-user-doc -->
@@ -197,9 +153,7 @@ public class AppliesToTypeItemProvider extends ItemProviderAdapter implements IE
         switch( notification.getFeatureID( AppliesToType.class ) ) {
         case NsdPackage.APPLIES_TO_TYPE__ID:
         case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
-        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
         case NsdPackage.APPLIES_TO_TYPE__REVISION:
-        case NsdPackage.APPLIES_TO_TYPE__VERSION:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
@@ -218,15 +172,4 @@ public class AppliesToTypeItemProvider extends ItemProviderAdapter implements IE
         super.collectNewChildDescriptors( newChildDescriptors, object );
     }
 
-    /**
-     * Return the resource locator for this item provider's resources.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public ResourceLocator getResourceLocator() {
-        return NSDEditPlugin.INSTANCE;
-    }
-
 }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ChangesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ChangesItemProvider.java
index 57d3223ada4816e53ee0d4447d478db9fcba0a68..512b0926c411606f37ae7a21426f32b0dc6aa1b4 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ChangesItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ChangesItemProvider.java
@@ -27,18 +27,9 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 /**
@@ -47,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ChangesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ChangesItemProvider extends NSDObjectWithVersionAndReleaseItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -72,10 +62,8 @@ public class ChangesItemProvider extends ItemProviderAdapter implements IEditing
 
             addChangesIDPropertyDescriptor( object );
             addDatePropertyDescriptor( object );
-            addReleasePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
             addTissuesPropertyDescriptor( object );
-            addVersionPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -112,22 +100,6 @@ public class ChangesItemProvider extends ItemProviderAdapter implements IEditing
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
-    /**
-     * 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_Changes_release_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_Changes_release_feature",
-                                "_UI_Changes_type" ),
-                        NsdPackage.Literals.CHANGES__RELEASE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
-    }
-
     /**
      * This adds a property descriptor for the Revision feature.
      * <!-- begin-user-doc -->
@@ -160,22 +132,6 @@ public class ChangesItemProvider extends ItemProviderAdapter implements IEditing
                         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_Changes_version_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_Changes_version_feature",
-                                "_UI_Changes_type" ),
-                        NsdPackage.Literals.CHANGES__VERSION, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
-    }
-
     /**
      * This returns Changes.gif.
      * <!-- begin-user-doc -->
@@ -195,7 +151,8 @@ public class ChangesItemProvider extends ItemProviderAdapter implements IEditing
      */
     @Override
     public String getText( Object object ) {
-        String label = ( ( Changes ) object ).getChangesID();
+        Integer labelValue = ( ( Changes ) object ).getRelease();
+        String label = labelValue == null ? null : labelValue.toString();
         return label == null || label.length() == 0 ? getString( "_UI_Changes_type" )
                 : getString( "_UI_Changes_type" ) + " " + label;
     }
@@ -214,10 +171,8 @@ public class ChangesItemProvider extends ItemProviderAdapter implements IEditing
         switch( notification.getFeatureID( Changes.class ) ) {
         case NsdPackage.CHANGES__CHANGES_ID:
         case NsdPackage.CHANGES__DATE:
-        case NsdPackage.CHANGES__RELEASE:
         case NsdPackage.CHANGES__REVISION:
         case NsdPackage.CHANGES__TISSUES:
-        case NsdPackage.CHANGES__VERSION:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
@@ -236,15 +191,4 @@ public class ChangesItemProvider extends ItemProviderAdapter implements IEditing
         super.collectNewChildDescriptors( newChildDescriptors, object );
     }
 
-    /**
-     * Return the resource locator for this item provider's resources.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public ResourceLocator getResourceLocator() {
-        return NSDEditPlugin.INSTANCE;
-    }
-
 }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnTypeItemProvider.java
index 2d4a5e82b3ef4168ae9a35b310540a047b384daa..508a9d2be37df20c78061de108c7d5b46231e9db 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnTypeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnTypeItemProvider.java
@@ -27,18 +27,9 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 /**
@@ -47,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class DependsOnTypeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DependsOnTypeItemProvider extends NSDObjectWithVersionAndReleaseItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -72,9 +62,7 @@ public class DependsOnTypeItemProvider extends ItemProviderAdapter implements IE
 
             addIdPropertyDescriptor( object );
             addPublicationStagePropertyDescriptor( object );
-            addReleasePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
-            addVersionPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -111,22 +99,6 @@ public class DependsOnTypeItemProvider extends ItemProviderAdapter implements IE
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
-    /**
-     * 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_DependsOnType_release_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOnType_release_feature",
-                                "_UI_DependsOnType_type" ),
-                        NsdPackage.Literals.DEPENDS_ON_TYPE__RELEASE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
-    }
-
     /**
      * This adds a property descriptor for the Revision feature.
      * <!-- begin-user-doc -->
@@ -143,22 +115,6 @@ public class DependsOnTypeItemProvider extends ItemProviderAdapter implements IE
                         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_DependsOnType_version_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOnType_version_feature",
-                                "_UI_DependsOnType_type" ),
-                        NsdPackage.Literals.DEPENDS_ON_TYPE__VERSION, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
-    }
-
     /**
      * This returns DependsOnType.gif.
      * <!-- begin-user-doc -->
@@ -197,9 +153,7 @@ public class DependsOnTypeItemProvider extends ItemProviderAdapter implements IE
         switch( notification.getFeatureID( DependsOnType.class ) ) {
         case NsdPackage.DEPENDS_ON_TYPE__ID:
         case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
-        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
         case NsdPackage.DEPENDS_ON_TYPE__REVISION:
-        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
@@ -218,15 +172,4 @@ public class DependsOnTypeItemProvider extends ItemProviderAdapter implements IE
         super.collectNewChildDescriptors( newChildDescriptors, object );
     }
 
-    /**
-     * Return the resource locator for this item provider's resources.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public ResourceLocator getResourceLocator() {
-        return NSDEditPlugin.INSTANCE;
-    }
-
 }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDObjectWithVersionAndReleaseItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDObjectWithVersionAndReleaseItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..88aa73154b9d75790199f4ea46df4aa99db4265b
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDObjectWithVersionAndReleaseItemProvider.java
@@ -0,0 +1,169 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
+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.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NSDObjectWithVersionAndReleaseItemProvider extends ItemProviderAdapter
+        implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
+        IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NSDObjectWithVersionAndReleaseItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( 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_NSDObjectWithVersionAndRelease_release_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_release_feature",
+                        "_UI_NSDObjectWithVersionAndRelease_type" ),
+                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__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_NSDObjectWithVersionAndRelease_version_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_version_feature",
+                        "_UI_NSDObjectWithVersionAndRelease_type" ),
+                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        Integer labelValue = ( ( NSDObjectWithVersionAndRelease ) object ).getRelease();
+        String label = labelValue == null ? null : labelValue.toString();
+        return label == null || label.length() == 0 ? getString( "_UI_NSDObjectWithVersionAndRelease_type" )
+                : getString( "_UI_NSDObjectWithVersionAndRelease_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( NSDObjectWithVersionAndRelease.class ) ) {
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDocItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDocItemProvider.java
index 990e5612d84686d0f7fafaab23c579fc051e0e68..39e6971c1ecf846b76de59a3723834d3759030f3 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDocItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDocItemProvider.java
@@ -64,14 +64,14 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
             addIdPropertyDescriptor( object );
             addLangPropertyDescriptor( object );
             addPublicationStagePropertyDescriptor( object );
-            addReleasePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
             addUmlDatePropertyDescriptor( object );
             addUmlVersionPropertyDescriptor( object );
-            addVersionPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -129,13 +129,13 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addReleasePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NSDoc_release_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NSDoc_release_feature",
-                                "_UI_NSDoc_type" ),
-                        NsdPackage.Literals.NS_DOC__RELEASE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_NSDObjectWithVersionAndRelease_release_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_release_feature",
+                        "_UI_NSDObjectWithVersionAndRelease_type" ),
+                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -193,13 +193,13 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addVersionPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NSDoc_version_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NSDoc_version_feature",
-                                "_UI_NSDoc_type" ),
-                        NsdPackage.Literals.NS_DOC__VERSION, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_NSDObjectWithVersionAndRelease_version_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_version_feature",
+                        "_UI_NSDObjectWithVersionAndRelease_type" ),
+                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -268,14 +268,14 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( NSDoc.class ) ) {
+        case NsdPackage.NS_DOC__RELEASE:
+        case NsdPackage.NS_DOC__VERSION:
         case NsdPackage.NS_DOC__ID:
         case NsdPackage.NS_DOC__LANG:
         case NsdPackage.NS_DOC__PUBLICATION_STAGE:
-        case NsdPackage.NS_DOC__RELEASE:
         case NsdPackage.NS_DOC__REVISION:
         case NsdPackage.NS_DOC__UML_DATE:
         case NsdPackage.NS_DOC__UML_VERSION:
-        case NsdPackage.NS_DOC__VERSION:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         case NsdPackage.NS_DOC__DOC:
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 772754d712d53bc8359f42b62b6374d8fe76c784..11059ca5b79369e7c611440aad9f5de355db06b1 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
@@ -64,14 +64,14 @@ public class NSItemProvider extends CopyrightedItemProvider {
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
             addDescIDPropertyDescriptor( object );
             addIdPropertyDescriptor( object );
             addPublicationStagePropertyDescriptor( object );
-            addReleasePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
             addUmlDatePropertyDescriptor( object );
             addUmlVersionPropertyDescriptor( object );
-            addVersionPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -129,12 +129,13 @@ public class NSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addReleasePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NS_release_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_release_feature", "_UI_NS_type" ),
-                        NsdPackage.Literals.NS__RELEASE, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-                        null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_NSDObjectWithVersionAndRelease_release_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_release_feature",
+                        "_UI_NSDObjectWithVersionAndRelease_type" ),
+                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -189,12 +190,13 @@ public class NSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addVersionPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NS_version_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_version_feature", "_UI_NS_type" ),
-                        NsdPackage.Literals.NS__VERSION, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-                        null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_NSDObjectWithVersionAndRelease_version_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_version_feature",
+                        "_UI_NSDObjectWithVersionAndRelease_type" ),
+                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -272,14 +274,14 @@ public class NSItemProvider extends CopyrightedItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( NS.class ) ) {
+        case NsdPackage.NS__RELEASE:
+        case NsdPackage.NS__VERSION:
         case NsdPackage.NS__DESC_ID:
         case NsdPackage.NS__ID:
         case NsdPackage.NS__PUBLICATION_STAGE:
-        case NsdPackage.NS__RELEASE:
         case NsdPackage.NS__REVISION:
         case NsdPackage.NS__UML_DATE:
         case NsdPackage.NS__UML_VERSION:
-        case NsdPackage.NS__VERSION:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         case NsdPackage.NS__CHANGES:
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
index 95b7040c9cf62e9f4e33c57175ae3aa12c4c32fb..3095b29f9c505cb45e0264a85bb1604d4110cdec 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
@@ -64,14 +64,14 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
             addDescIDPropertyDescriptor( object );
             addIdPropertyDescriptor( object );
             addPublicationStagePropertyDescriptor( object );
-            addReleasePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
             addUmlDatePropertyDescriptor( object );
             addUmlVersionPropertyDescriptor( object );
-            addVersionPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -131,13 +131,13 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addReleasePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNS_release_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNS_release_feature",
-                                "_UI_ServiceNS_type" ),
-                        NsdPackage.Literals.SERVICE_NS__RELEASE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_NSDObjectWithVersionAndRelease_release_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_release_feature",
+                        "_UI_NSDObjectWithVersionAndRelease_type" ),
+                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -195,13 +195,13 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addVersionPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNS_version_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNS_version_feature",
-                                "_UI_ServiceNS_type" ),
-                        NsdPackage.Literals.SERVICE_NS__VERSION, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_NSDObjectWithVersionAndRelease_version_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_version_feature",
+                        "_UI_NSDObjectWithVersionAndRelease_type" ),
+                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -276,14 +276,14 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( ServiceNS.class ) ) {
+        case NsdPackage.SERVICE_NS__RELEASE:
+        case NsdPackage.SERVICE_NS__VERSION:
         case NsdPackage.SERVICE_NS__DESC_ID:
         case NsdPackage.SERVICE_NS__ID:
         case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
-        case NsdPackage.SERVICE_NS__RELEASE:
         case NsdPackage.SERVICE_NS__REVISION:
         case NsdPackage.SERVICE_NS__UML_DATE:
         case NsdPackage.SERVICE_NS__UML_VERSION:
-        case NsdPackage.SERVICE_NS__VERSION:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         case NsdPackage.SERVICE_NS__CHANGES:
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNsUsageItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNsUsageItemProvider.java
index fb6000a6f74bd0d7ccf76d5375eda0c8cc7595e4..4ae4d976247db74e27286ffcfd1f73c89069e1ae 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNsUsageItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNsUsageItemProvider.java
@@ -28,20 +28,11 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 /**
@@ -50,8 +41,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ServiceNsUsageItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ServiceNsUsageItemProvider extends NSDObjectWithVersionAndReleaseItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -75,9 +65,7 @@ public class ServiceNsUsageItemProvider extends ItemProviderAdapter implements I
 
             addIdPropertyDescriptor( object );
             addPublicationStagePropertyDescriptor( object );
-            addReleasePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
-            addVersionPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -114,22 +102,6 @@ public class ServiceNsUsageItemProvider extends ItemProviderAdapter implements I
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
-    /**
-     * 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_ServiceNsUsage_release_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNsUsage_release_feature",
-                                "_UI_ServiceNsUsage_type" ),
-                        NsdPackage.Literals.SERVICE_NS_USAGE__RELEASE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
-    }
-
     /**
      * This adds a property descriptor for the Revision feature.
      * <!-- begin-user-doc -->
@@ -146,22 +118,6 @@ public class ServiceNsUsageItemProvider extends ItemProviderAdapter implements I
                         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_ServiceNsUsage_version_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNsUsage_version_feature",
-                                "_UI_ServiceNsUsage_type" ),
-                        NsdPackage.Literals.SERVICE_NS_USAGE__VERSION, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, 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
@@ -230,9 +186,7 @@ public class ServiceNsUsageItemProvider extends ItemProviderAdapter implements I
         switch( notification.getFeatureID( ServiceNsUsage.class ) ) {
         case NsdPackage.SERVICE_NS_USAGE__ID:
         case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
-        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
         case NsdPackage.SERVICE_NS_USAGE__REVISION:
-        case NsdPackage.SERVICE_NS_USAGE__VERSION:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
@@ -257,15 +211,4 @@ public class ServiceNsUsageItemProvider extends ItemProviderAdapter implements I
                 NsdFactory.eINSTANCE.createAppliesToType() ) );
     }
 
-    /**
-     * Return the resource locator for this item provider's resources.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public ResourceLocator getResourceLocator() {
-        return NSDEditPlugin.INSTANCE;
-    }
-
 }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
index 9c5620ccb5dd96e6c2215b86faa5e9373c3d9a50..8c0d8995d1de70463924821e1710e516e8095453 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">
+  <eClassifiers xsi:type="ecore:EClass" name="AppliesToType" eSuperTypes="#//NSDObjectWithVersionAndRelease">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="AppliesTo_._type"/>
       <details key="kind" value="empty"/>
@@ -25,16 +25,6 @@
         <details key="name" value="publicationStage"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        defaultValueLiteral="1" unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="release"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         defaultValueLiteral="A" unsettable="true">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -45,19 +35,8 @@
         <details key="name" value="revision"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Version (year) of the namespace."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="version"/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DependsOnType">
+  <eClassifiers xsi:type="ecore:EClass" name="DependsOnType" eSuperTypes="#//NSDObjectWithVersionAndRelease">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="DependsOn_._type"/>
       <details key="kind" value="empty"/>
@@ -81,16 +60,6 @@
         <details key="name" value="publicationStage"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        defaultValueLiteral="1" unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="release"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         defaultValueLiteral="A" unsettable="true">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -101,17 +70,6 @@
         <details key="name" value="revision"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Version (year) of the namespace."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="version"/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -625,7 +583,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Changes">
+  <eClassifiers xsi:type="ecore:EClass" name="Changes" eSuperTypes="#//NSDObjectWithVersionAndRelease">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Namespace history, e.g., which version it is based on and which TISSUES it includes since then."/>
     </eAnnotations>
@@ -651,16 +609,6 @@
         <details key="name" value="date"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        defaultValueLiteral="1" unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Release of the namespace this NSD file is based on, per default 1."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="release"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         defaultValueLiteral="A" unsettable="true">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -680,17 +628,6 @@
         <details key="name" value="tissues"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Version of the namespace this NSD file is based on."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="version"/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ConstructedAttribute" eSuperTypes="#//TitledClass">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1476,7 +1413,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="NS" eSuperTypes="#//Copyrighted">
+  <eClassifiers xsi:type="ecore:EClass" name="NS" eSuperTypes="#//Copyrighted #//NSDObjectWithVersionAndRelease">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Definition of a namespace."/>
     </eAnnotations>
@@ -1622,16 +1559,6 @@
         <details key="name" value="publicationStage"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        defaultValueLiteral="1" unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="release"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         defaultValueLiteral="A" unsettable="true">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1660,19 +1587,8 @@
         <details key="name" value="umlVersion"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Version (year) of the namespace."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="version"/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="NSDoc" eSuperTypes="#//Copyrighted">
+  <eClassifiers xsi:type="ecore:EClass" name="NSDoc" eSuperTypes="#//Copyrighted #//NSDObjectWithVersionAndRelease">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="A non-empty list of tDoc elements."/>
     </eAnnotations>
@@ -1719,16 +1635,6 @@
         <details key="name" value="publicationStage"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        defaultValueLiteral="1" unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="release"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         defaultValueLiteral="A" unsettable="true">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1757,17 +1663,6 @@
         <details key="name" value="umlVersion"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Version (year) of the namespace."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="version"/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PresenceCondition">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2085,7 +1980,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceNS" eSuperTypes="#//Copyrighted">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceNS" eSuperTypes="#//Copyrighted #//NSDObjectWithVersionAndRelease">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Definition of a service namespace."/>
     </eAnnotations>
@@ -2198,16 +2093,6 @@
         <details key="name" value="publicationStage"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        defaultValueLiteral="1" unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="release"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         defaultValueLiteral="A" unsettable="true">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2236,19 +2121,8 @@
         <details key="name" value="umlVersion"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Version (year) of the namespace."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="version"/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceNsUsage">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceNsUsage" eSuperTypes="#//NSDObjectWithVersionAndRelease">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Describes the list of (domain) NS for which a ServiceNS is applicable."/>
     </eAnnotations>
@@ -2286,16 +2160,6 @@
         <details key="name" value="publicationStage"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        defaultValueLiteral="1" unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="release"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         defaultValueLiteral="A" unsettable="true">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2306,17 +2170,6 @@
         <details key="name" value="revision"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        unsettable="true">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Version (year) of the namespace."/>
-      </eAnnotations>
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="version"/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ServiceParameter" eSuperTypes="#//DocumentedClass">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -2757,4 +2610,21 @@
       <details key="baseType" value="tUndefinedAttributeTypeKind"/>
     </eAnnotations>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="NSDObjectWithVersionAndRelease" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+        defaultValueLiteral="1" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="release"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
 </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 03e783a6d4dc8084bd01a78d32b30089b89f3602..2162aef8d339515a4b088b2b6a3ce27c81ddcd71 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
@@ -110,16 +110,12 @@
     <genClasses ecoreClass="nsd.ecore#//AppliesToType">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/id"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/release"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/revision"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/version"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DependsOnType">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/id"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/release"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/revision"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/version"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DocumentRoot">
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DocumentRoot/mixed"/>
@@ -180,10 +176,8 @@
     <genClasses ecoreClass="nsd.ecore#//Changes">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/changesID"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/date"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/release"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/revision"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/tissues"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/version"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ConstructedAttribute">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//ConstructedAttribute/subDataAttribute"/>
@@ -297,22 +291,18 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/descID"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/id"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/release"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/revision"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/umlDate"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/umlVersion"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/version"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//NSDoc">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NSDoc/doc"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/id"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/lang"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/release"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/revision"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/umlDate"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/umlVersion"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/version"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//PresenceCondition">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//PresenceCondition/argument"/>
@@ -359,19 +349,15 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/descID"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/id"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/release"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/revision"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/umlDate"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/umlVersion"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/version"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ServiceNsUsage">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//ServiceNsUsage/appliesTo"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNsUsage/id"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNsUsage/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNsUsage/release"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNsUsage/revision"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNsUsage/version"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ServiceParameter">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceParameter/defaultValue"/>
@@ -424,5 +410,9 @@
     <genClasses ecoreClass="nsd.ecore#//TitledClass">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TitledClass/titleID"/>
     </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//NSDObjectWithVersionAndRelease">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDObjectWithVersionAndRelease/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDObjectWithVersionAndRelease/version"/>
+    </genClasses>
   </genPackages>
 </genmodel:GenModel>
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 c45c9d036a7263f90e07a0b6e497bf60314daec7..2b427bdb19459217a1295e1f976362047749bf98 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
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Applies To Type</b></em>'.
@@ -32,16 +30,14 @@ import org.eclipse.emf.ecore.EObject;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType()
  * @model extendedMetaData="name='AppliesTo_._type' kind='empty'"
  * @generated
  */
-public interface AppliesToType extends EObject {
+public interface AppliesToType extends NSDObjectWithVersionAndRelease {
     /**
      * Returns the value of the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -125,60 +121,6 @@ public interface AppliesToType extends EObject {
      */
     boolean isSetPublicationStage();
 
-    /**
-     * Returns the value of the '<em><b>Release</b></em>' attribute.
-     * The default value is <code>"1"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Release of the namespace version and revision, by default 1.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #setRelease(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_Release()
-     * @model default="1" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='release'"
-     * @generated
-     */
-    Integer getRelease();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @generated
-     */
-    void setRelease( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    void unsetRelease();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Release</em>' attribute is set.
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    boolean isSetRelease();
-
     /**
      * Returns the value of the '<em><b>Revision</b></em>' attribute.
      * The default value is <code>"A"</code>.
@@ -233,57 +175,4 @@ public interface AppliesToType extends EObject {
      */
     boolean isSetRevision();
 
-    /**
-     * Returns the value of the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Version (year) of the namespace.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #setVersion(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_Version()
-     * @model unsettable="true" required="true"
-     *        extendedMetaData="kind='attribute' name='version'"
-     * @generated
-     */
-    Integer getVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @generated
-     */
-    void setVersion( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    void unsetVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Version</em>' attribute is set.
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    boolean isSetVersion();
-
 } // AppliesToType
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Changes.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Changes.java
index bdc3811ef90b03f2e5aad859838e7bb908b44562..1b11ca317e18176116a6d7a5012bb6574ead60b0 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Changes.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Changes.java
@@ -21,8 +21,6 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
 import javax.xml.datatype.XMLGregorianCalendar;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Changes</b></em>'.
@@ -38,17 +36,15 @@ import org.eclipse.emf.ecore.EObject;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getChangesID <em>Changes ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getDate <em>Date</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getTissues <em>Tissues</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getChanges()
  * @model extendedMetaData="name='tChanges' kind='empty'"
  * @generated
  */
-public interface Changes extends EObject {
+public interface Changes extends NSDObjectWithVersionAndRelease {
     /**
      * Returns the value of the '<em><b>Changes ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -100,60 +96,6 @@ public interface Changes extends EObject {
      */
     void setDate( XMLGregorianCalendar value );
 
-    /**
-     * Returns the value of the '<em><b>Release</b></em>' attribute.
-     * The default value is <code>"1"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Release of the namespace this NSD file is based on, per default 1.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #setRelease(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getChanges_Release()
-     * @model default="1" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='release'"
-     * @generated
-     */
-    Integer getRelease();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @generated
-     */
-    void setRelease( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    void unsetRelease();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRelease <em>Release</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Release</em>' attribute is set.
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    boolean isSetRelease();
-
     /**
      * Returns the value of the '<em><b>Revision</b></em>' attribute.
      * The default value is <code>"A"</code>.
@@ -233,57 +175,4 @@ public interface Changes extends EObject {
      */
     void setTissues( String value );
 
-    /**
-     * Returns the value of the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Version of the namespace this NSD file is based on.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #setVersion(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getChanges_Version()
-     * @model unsettable="true" required="true"
-     *        extendedMetaData="kind='attribute' name='version'"
-     * @generated
-     */
-    Integer getVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @generated
-     */
-    void setVersion( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    void unsetVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getVersion <em>Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Version</em>' attribute is set.
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    boolean isSetVersion();
-
 } // Changes
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOnType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOnType.java
index ec180860ee93dafd09c2e659a74b38cffb8b9f7c..89150a416ea39a9f8f7dcd8462b3084ea29c60ae 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOnType.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOnType.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Depends On Type</b></em>'.
@@ -32,16 +30,14 @@ import org.eclipse.emf.ecore.EObject;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType()
  * @model extendedMetaData="name='DependsOn_._type' kind='empty'"
  * @generated
  */
-public interface DependsOnType extends EObject {
+public interface DependsOnType extends NSDObjectWithVersionAndRelease {
     /**
      * Returns the value of the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -125,60 +121,6 @@ public interface DependsOnType extends EObject {
      */
     boolean isSetPublicationStage();
 
-    /**
-     * Returns the value of the '<em><b>Release</b></em>' attribute.
-     * The default value is <code>"1"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Release of the namespace version and revision, by default 1.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #setRelease(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType_Release()
-     * @model default="1" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='release'"
-     * @generated
-     */
-    Integer getRelease();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @generated
-     */
-    void setRelease( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    void unsetRelease();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Release</em>' attribute is set.
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    boolean isSetRelease();
-
     /**
      * Returns the value of the '<em><b>Revision</b></em>' attribute.
      * The default value is <code>"A"</code>.
@@ -233,57 +175,4 @@ public interface DependsOnType extends EObject {
      */
     boolean isSetRevision();
 
-    /**
-     * Returns the value of the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Version (year) of the namespace.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #setVersion(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType_Version()
-     * @model unsettable="true" required="true"
-     *        extendedMetaData="kind='attribute' name='version'"
-     * @generated
-     */
-    Integer getVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @generated
-     */
-    void setVersion( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    void unsetVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Version</em>' attribute is set.
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    boolean isSetVersion();
-
 } // DependsOnType
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 e632487562b56666deee29a8a7750524a1ef5957..be4da421c2a8282df8e1b4bf466dca5bf46c76c0 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
@@ -47,18 +47,16 @@ import javax.xml.datatype.XMLGregorianCalendar;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getUmlVersion <em>Uml Version</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS()
  * @model extendedMetaData="name='tNS' kind='elementOnly'"
  * @generated
  */
-public interface NS extends Copyrighted {
+public interface NS extends Copyrighted, NSDObjectWithVersionAndRelease {
     /**
      * Returns the value of the '<em><b>Changes</b></em>' containment reference.
      * <!-- begin-user-doc -->
@@ -427,60 +425,6 @@ public interface NS extends Copyrighted {
      */
     boolean isSetPublicationStage();
 
-    /**
-     * Returns the value of the '<em><b>Release</b></em>' attribute.
-     * The default value is <code>"1"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Release of the namespace version and revision, by default 1.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #setRelease(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS_Release()
-     * @model default="1" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='release'"
-     * @generated
-     */
-    Integer getRelease();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @generated
-     */
-    void setRelease( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    void unsetRelease();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRelease <em>Release</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Release</em>' attribute is set.
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    boolean isSetRelease();
-
     /**
      * Returns the value of the '<em><b>Revision</b></em>' attribute.
      * The default value is <code>"A"</code>.
@@ -587,57 +531,4 @@ public interface NS extends Copyrighted {
      */
     void setUmlVersion( String value );
 
-    /**
-     * Returns the value of the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Version (year) of the namespace.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #setVersion(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS_Version()
-     * @model unsettable="true" required="true"
-     *        extendedMetaData="kind='attribute' name='version'"
-     * @generated
-     */
-    Integer getVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @generated
-     */
-    void setVersion( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    void unsetVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getVersion <em>Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Version</em>' attribute is set.
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    boolean isSetVersion();
-
 } // NS
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDObjectWithVersionAndRelease.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDObjectWithVersionAndRelease.java
new file mode 100644
index 0000000000000000000000000000000000000000..187b313cef6fe99a2cd8c6919d2094318b2c99cd
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDObjectWithVersionAndRelease.java
@@ -0,0 +1,151 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>NSD Object With Version And Release</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDObjectWithVersionAndRelease()
+ * @model abstract="true"
+ * @generated
+ */
+public interface NSDObjectWithVersionAndRelease extends EObject {
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Release</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(Integer)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDObjectWithVersionAndRelease_Release()
+     * @model default="1" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    Integer getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @generated
+     */
+    void setRelease( Integer value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(Integer)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease <em>Release</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Release</em>' attribute is set.
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @see #setRelease(Integer)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Version</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(Integer)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDObjectWithVersionAndRelease_Version()
+     * @model unsettable="true" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    Integer getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( Integer value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(Integer)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(Integer)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // NSDObjectWithVersionAndRelease
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDoc.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDoc.java
index f046f45cad9214f2f8fde593e7f035fdba01f277..5dc111ee7094b853c09db404fc5c4bc70b8f1863 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDoc.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDoc.java
@@ -40,18 +40,16 @@ import org.eclipse.emf.common.util.EList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getLang <em>Lang</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getUmlVersion <em>Uml Version</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDoc()
  * @model extendedMetaData="name='tNSDoc' kind='elementOnly'"
  * @generated
  */
-public interface NSDoc extends Copyrighted {
+public interface NSDoc extends Copyrighted, NSDObjectWithVersionAndRelease {
     /**
      * Returns the value of the '<em><b>Doc</b></em>' containment reference list.
      * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc}.
@@ -177,60 +175,6 @@ public interface NSDoc extends Copyrighted {
      */
     boolean isSetPublicationStage();
 
-    /**
-     * Returns the value of the '<em><b>Release</b></em>' attribute.
-     * The default value is <code>"1"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Release of the namespace version and revision, by default 1.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #setRelease(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDoc_Release()
-     * @model default="1" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='release'"
-     * @generated
-     */
-    Integer getRelease();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @generated
-     */
-    void setRelease( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    void unsetRelease();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRelease <em>Release</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Release</em>' attribute is set.
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    boolean isSetRelease();
-
     /**
      * Returns the value of the '<em><b>Revision</b></em>' attribute.
      * The default value is <code>"A"</code>.
@@ -337,57 +281,4 @@ public interface NSDoc extends Copyrighted {
      */
     void setUmlVersion( String value );
 
-    /**
-     * Returns the value of the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Version (year) of the namespace.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #setVersion(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDoc_Version()
-     * @model unsettable="true" required="true"
-     *        extendedMetaData="kind='attribute' name='version'"
-     * @generated
-     */
-    Integer getVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @generated
-     */
-    void setVersion( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    void unsetVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getVersion <em>Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Version</em>' attribute is set.
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    boolean isSetVersion();
-
 } // NSDoc
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 85485ad106f37bda27218cb1bed44cf2b26e06c1..6897358560638402e8c9487044a8ee1a36ca7b73 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
@@ -78,6 +78,52 @@ public interface NsdPackage extends EPackage {
      */
     NsdPackage eINSTANCE = fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl.init();
 
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl <em>NSD Object With Version And Release</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNSDObjectWithVersionAndRelease()
+     * @generated
+     */
+    int NSD_OBJECT_WITH_VERSION_AND_RELEASE = 50;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE = 0;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION = 1;
+
+    /**
+     * The number of structural features of the '<em>NSD Object With Version And Release</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>NSD Object With Version And Release</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NSD_OBJECT_WITH_VERSION_AND_RELEASE_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 -->
@@ -89,49 +135,49 @@ public interface NsdPackage extends EPackage {
     int APPLIES_TO_TYPE = 0;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__ID = 0;
+    int APPLIES_TO_TYPE__RELEASE = NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__PUBLICATION_STAGE = 1;
+    int APPLIES_TO_TYPE__VERSION = NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__RELEASE = 2;
+    int APPLIES_TO_TYPE__ID = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__REVISION = 3;
+    int APPLIES_TO_TYPE__PUBLICATION_STAGE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__VERSION = 4;
+    int APPLIES_TO_TYPE__REVISION = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 2;
 
     /**
      * The number of structural features of the '<em>Applies To Type</em>' class.
@@ -140,7 +186,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE_FEATURE_COUNT = 5;
+    int APPLIES_TO_TYPE_FEATURE_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 3;
 
     /**
      * The number of operations of the '<em>Applies To Type</em>' class.
@@ -149,7 +195,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE_OPERATION_COUNT = 0;
+    int APPLIES_TO_TYPE_OPERATION_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT + 0;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl <em>Depends On Type</em>}' class.
@@ -162,49 +208,49 @@ public interface NsdPackage extends EPackage {
     int DEPENDS_ON_TYPE = 1;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_TYPE__ID = 0;
+    int DEPENDS_ON_TYPE__RELEASE = NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_TYPE__PUBLICATION_STAGE = 1;
+    int DEPENDS_ON_TYPE__VERSION = NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_TYPE__RELEASE = 2;
+    int DEPENDS_ON_TYPE__ID = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_TYPE__REVISION = 3;
+    int DEPENDS_ON_TYPE__PUBLICATION_STAGE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_TYPE__VERSION = 4;
+    int DEPENDS_ON_TYPE__REVISION = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 2;
 
     /**
      * The number of structural features of the '<em>Depends On Type</em>' class.
@@ -213,7 +259,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_TYPE_FEATURE_COUNT = 5;
+    int DEPENDS_ON_TYPE_FEATURE_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 3;
 
     /**
      * The number of operations of the '<em>Depends On Type</em>' class.
@@ -222,7 +268,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_TYPE_OPERATION_COUNT = 0;
+    int DEPENDS_ON_TYPE_OPERATION_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT + 0;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl <em>Document Root</em>}' class.
@@ -1150,58 +1196,58 @@ public interface NsdPackage extends EPackage {
     int CHANGES = 14;
 
     /**
-     * The feature id for the '<em><b>Changes ID</b></em>' attribute.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__CHANGES_ID = 0;
+    int CHANGES__RELEASE = NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
 
     /**
-     * The feature id for the '<em><b>Date</b></em>' attribute.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__DATE = 1;
+    int CHANGES__VERSION = NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Changes ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__RELEASE = 2;
+    int CHANGES__CHANGES_ID = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Date</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__REVISION = 3;
+    int CHANGES__DATE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Tissues</b></em>' attribute.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__TISSUES = 4;
+    int CHANGES__REVISION = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Tissues</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__VERSION = 5;
+    int CHANGES__TISSUES = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 3;
 
     /**
      * The number of structural features of the '<em>Changes</em>' class.
@@ -1210,7 +1256,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CHANGES_FEATURE_COUNT = 6;
+    int CHANGES_FEATURE_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 4;
 
     /**
      * The number of operations of the '<em>Changes</em>' class.
@@ -1219,7 +1265,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int CHANGES_OPERATION_COUNT = 0;
+    int CHANGES_OPERATION_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT + 0;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl <em>Constructed Attribute</em>}' class.
@@ -2417,6 +2463,24 @@ public interface NsdPackage extends EPackage {
      */
     int NS__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
 
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NS__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
+
     /**
      * The feature id for the '<em><b>Changes</b></em>' containment reference.
      * <!-- begin-user-doc -->
@@ -2424,7 +2488,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 0;
+    int NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 2;
 
     /**
      * The feature id for the '<em><b>Depends On</b></em>' containment reference.
@@ -2433,7 +2497,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 1;
+    int NS__DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 3;
 
     /**
      * The feature id for the '<em><b>Basic Types</b></em>' containment reference.
@@ -2442,7 +2506,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__BASIC_TYPES = COPYRIGHTED_FEATURE_COUNT + 2;
+    int NS__BASIC_TYPES = COPYRIGHTED_FEATURE_COUNT + 4;
 
     /**
      * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
@@ -2451,7 +2515,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 3;
+    int NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 5;
 
     /**
      * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
@@ -2460,7 +2524,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 4;
+    int NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 6;
 
     /**
      * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
@@ -2469,7 +2533,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 5;
+    int NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 7;
 
     /**
      * The feature id for the '<em><b>Enumerations</b></em>' containment reference.
@@ -2478,7 +2542,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__ENUMERATIONS = COPYRIGHTED_FEATURE_COUNT + 6;
+    int NS__ENUMERATIONS = COPYRIGHTED_FEATURE_COUNT + 8;
 
     /**
      * The feature id for the '<em><b>Constructed Attributes</b></em>' containment reference.
@@ -2487,7 +2551,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 7;
+    int NS__CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 9;
 
     /**
      * The feature id for the '<em><b>CD Cs</b></em>' containment reference.
@@ -2496,7 +2560,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__CD_CS = COPYRIGHTED_FEATURE_COUNT + 8;
+    int NS__CD_CS = COPYRIGHTED_FEATURE_COUNT + 10;
 
     /**
      * The feature id for the '<em><b>LN Classes</b></em>' containment reference.
@@ -2505,7 +2569,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__LN_CLASSES = COPYRIGHTED_FEATURE_COUNT + 9;
+    int NS__LN_CLASSES = COPYRIGHTED_FEATURE_COUNT + 11;
 
     /**
      * The feature id for the '<em><b>Desc ID</b></em>' attribute.
@@ -2514,7 +2578,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 10;
+    int NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 12;
 
     /**
      * The feature id for the '<em><b>Id</b></em>' attribute.
@@ -2523,7 +2587,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__ID = COPYRIGHTED_FEATURE_COUNT + 11;
+    int NS__ID = COPYRIGHTED_FEATURE_COUNT + 13;
 
     /**
      * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
@@ -2532,16 +2596,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 12;
-
-    /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int NS__RELEASE = COPYRIGHTED_FEATURE_COUNT + 13;
+    int NS__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 14;
 
     /**
      * The feature id for the '<em><b>Revision</b></em>' attribute.
@@ -2550,7 +2605,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__REVISION = COPYRIGHTED_FEATURE_COUNT + 14;
+    int NS__REVISION = COPYRIGHTED_FEATURE_COUNT + 15;
 
     /**
      * The feature id for the '<em><b>Uml Date</b></em>' attribute.
@@ -2559,7 +2614,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 15;
+    int NS__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 16;
 
     /**
      * The feature id for the '<em><b>Uml Version</b></em>' attribute.
@@ -2568,16 +2623,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 16;
-
-    /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    int NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 17;
+    int NS__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 17;
 
     /**
      * The number of structural features of the '<em>NS</em>' class.
@@ -2617,85 +2663,85 @@ public interface NsdPackage extends EPackage {
     int NS_DOC__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
 
     /**
-     * The feature id for the '<em><b>Doc</b></em>' containment reference list.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__DOC = COPYRIGHTED_FEATURE_COUNT + 0;
+    int NS_DOC__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__ID = COPYRIGHTED_FEATURE_COUNT + 1;
+    int NS_DOC__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Lang</b></em>' attribute.
+     * The feature id for the '<em><b>Doc</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__LANG = COPYRIGHTED_FEATURE_COUNT + 2;
+    int NS_DOC__DOC = COPYRIGHTED_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 3;
+    int NS_DOC__ID = COPYRIGHTED_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Lang</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__RELEASE = COPYRIGHTED_FEATURE_COUNT + 4;
+    int NS_DOC__LANG = COPYRIGHTED_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__REVISION = COPYRIGHTED_FEATURE_COUNT + 5;
+    int NS_DOC__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 6;
+    int NS_DOC__REVISION = COPYRIGHTED_FEATURE_COUNT + 6;
 
     /**
-     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 7;
+    int NS_DOC__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 7;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__VERSION = COPYRIGHTED_FEATURE_COUNT + 8;
+    int NS_DOC__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 8;
 
     /**
      * The number of structural features of the '<em>NS Doc</em>' class.
@@ -3192,139 +3238,139 @@ public interface NsdPackage extends EPackage {
     int SERVICE_NS__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
 
     /**
-     * The feature id for the '<em><b>Changes</b></em>' containment reference.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 0;
+    int SERVICE_NS__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 1;
+    int SERVICE_NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
+     * The feature id for the '<em><b>Changes</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 2;
+    int SERVICE_NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
+     * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 3;
+    int SERVICE_NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Service Type Realizations</b></em>' containment reference.
+     * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_TYPE_REALIZATIONS = COPYRIGHTED_FEATURE_COUNT + 4;
+    int SERVICE_NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Service Constructed Attributes</b></em>' containment reference.
+     * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 5;
+    int SERVICE_NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Service CD Cs</b></em>' containment reference.
+     * The feature id for the '<em><b>Service Type Realizations</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_CD_CS = COPYRIGHTED_FEATURE_COUNT + 6;
+    int SERVICE_NS__SERVICE_TYPE_REALIZATIONS = COPYRIGHTED_FEATURE_COUNT + 6;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Service Constructed Attributes</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 7;
+    int SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 7;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The feature id for the '<em><b>Service CD Cs</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__ID = COPYRIGHTED_FEATURE_COUNT + 8;
+    int SERVICE_NS__SERVICE_CD_CS = COPYRIGHTED_FEATURE_COUNT + 8;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 9;
+    int SERVICE_NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 9;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__RELEASE = COPYRIGHTED_FEATURE_COUNT + 10;
+    int SERVICE_NS__ID = COPYRIGHTED_FEATURE_COUNT + 10;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__REVISION = COPYRIGHTED_FEATURE_COUNT + 11;
+    int SERVICE_NS__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 11;
 
     /**
-     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 12;
+    int SERVICE_NS__REVISION = COPYRIGHTED_FEATURE_COUNT + 12;
 
     /**
-     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 13;
+    int SERVICE_NS__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 13;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 14;
+    int SERVICE_NS__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 14;
 
     /**
      * The number of structural features of the '<em>Service NS</em>' class.
@@ -3355,58 +3401,58 @@ public interface NsdPackage extends EPackage {
     int SERVICE_NS_USAGE = 43;
 
     /**
-     * The feature id for the '<em><b>Applies To</b></em>' containment reference list.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__APPLIES_TO = 0;
+    int SERVICE_NS_USAGE__RELEASE = NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__ID = 1;
+    int SERVICE_NS_USAGE__VERSION = NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Applies To</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__PUBLICATION_STAGE = 2;
+    int SERVICE_NS_USAGE__APPLIES_TO = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__RELEASE = 3;
+    int SERVICE_NS_USAGE__ID = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__REVISION = 4;
+    int SERVICE_NS_USAGE__PUBLICATION_STAGE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__VERSION = 5;
+    int SERVICE_NS_USAGE__REVISION = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 3;
 
     /**
      * The number of structural features of the '<em>Service Ns Usage</em>' class.
@@ -3415,7 +3461,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE_FEATURE_COUNT = 6;
+    int SERVICE_NS_USAGE_FEATURE_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 4;
 
     /**
      * The number of operations of the '<em>Service Ns Usage</em>' class.
@@ -3424,7 +3470,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE_OPERATION_COUNT = 0;
+    int SERVICE_NS_USAGE_OPERATION_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT + 0;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl <em>Service Parameter</em>}' class.
@@ -3997,7 +4043,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getACSIServicesKind()
      * @generated
      */
-    int ACSI_SERVICES_KIND = 50;
+    int ACSI_SERVICES_KIND = 51;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind <em>CB Kind</em>}' enum.
@@ -4007,7 +4053,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCBKind()
      * @generated
      */
-    int CB_KIND = 51;
+    int CB_KIND = 52;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind <em>Defined Attribute Type Kind</em>}' enum.
@@ -4017,7 +4063,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDefinedAttributeTypeKind()
      * @generated
      */
-    int DEFINED_ATTRIBUTE_TYPE_KIND = 52;
+    int DEFINED_ATTRIBUTE_TYPE_KIND = 53;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind <em>License Kind</em>}' enum.
@@ -4027,7 +4073,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicenseKind()
      * @generated
      */
-    int LICENSE_KIND = 53;
+    int LICENSE_KIND = 54;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage <em>Pub Stage</em>}' enum.
@@ -4037,7 +4083,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPubStage()
      * @generated
      */
-    int PUB_STAGE = 54;
+    int PUB_STAGE = 55;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind <em>Undefined Attribute Type Kind</em>}' enum.
@@ -4047,7 +4093,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getUndefinedAttributeTypeKind()
      * @generated
      */
-    int UNDEFINED_ATTRIBUTE_TYPE_KIND = 55;
+    int UNDEFINED_ATTRIBUTE_TYPE_KIND = 56;
 
     /**
      * The meta object id for the '<em>ACSI Services Kind Object</em>' data type.
@@ -4057,7 +4103,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getACSIServicesKindObject()
      * @generated
      */
-    int ACSI_SERVICES_KIND_OBJECT = 56;
+    int ACSI_SERVICES_KIND_OBJECT = 57;
 
     /**
      * The meta object id for the '<em>Attribute Type Kind</em>' data type.
@@ -4067,7 +4113,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAttributeTypeKind()
      * @generated
      */
-    int ATTRIBUTE_TYPE_KIND = 57;
+    int ATTRIBUTE_TYPE_KIND = 58;
 
     /**
      * The meta object id for the '<em>CB Kind Object</em>' data type.
@@ -4077,7 +4123,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCBKindObject()
      * @generated
      */
-    int CB_KIND_OBJECT = 58;
+    int CB_KIND_OBJECT = 59;
 
     /**
      * The meta object id for the '<em>Defined Attribute Type Kind Object</em>' data type.
@@ -4087,7 +4133,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDefinedAttributeTypeKindObject()
      * @generated
      */
-    int DEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 59;
+    int DEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 60;
 
     /**
      * The meta object id for the '<em>License Kind Object</em>' data type.
@@ -4097,7 +4143,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicenseKindObject()
      * @generated
      */
-    int LICENSE_KIND_OBJECT = 60;
+    int LICENSE_KIND_OBJECT = 61;
 
     /**
      * The meta object id for the '<em>Pub Stage Object</em>' data type.
@@ -4107,7 +4153,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPubStageObject()
      * @generated
      */
-    int PUB_STAGE_OBJECT = 61;
+    int PUB_STAGE_OBJECT = 62;
 
     /**
      * The meta object id for the '<em>Undefined Attribute Type Kind Object</em>' data type.
@@ -4117,7 +4163,7 @@ public interface NsdPackage extends EPackage {
      * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getUndefinedAttributeTypeKindObject()
      * @generated
      */
-    int UNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 62;
+    int UNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 63;
 
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType <em>Applies To Type</em>}'.
@@ -4151,17 +4197,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getAppliesToType_PublicationStage();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease()
-     * @see #getAppliesToType()
-     * @generated
-     */
-    EAttribute getAppliesToType_Release();
-
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision <em>Revision</em>}'.
      * <!-- begin-user-doc -->
@@ -4173,17 +4208,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getAppliesToType_Revision();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Version</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion()
-     * @see #getAppliesToType()
-     * @generated
-     */
-    EAttribute getAppliesToType_Version();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType <em>Depends On Type</em>}'.
      * <!-- begin-user-doc -->
@@ -4216,17 +4240,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getDependsOnType_PublicationStage();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease()
-     * @see #getDependsOnType()
-     * @generated
-     */
-    EAttribute getDependsOnType_Release();
-
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRevision <em>Revision</em>}'.
      * <!-- begin-user-doc -->
@@ -4238,17 +4251,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getDependsOnType_Revision();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Version</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion()
-     * @see #getDependsOnType()
-     * @generated
-     */
-    EAttribute getDependsOnType_Version();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot <em>Document Root</em>}'.
      * <!-- begin-user-doc -->
@@ -4753,17 +4755,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getChanges_Date();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRelease <em>Release</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRelease()
-     * @see #getChanges()
-     * @generated
-     */
-    EAttribute getChanges_Release();
-
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRevision <em>Revision</em>}'.
      * <!-- begin-user-doc -->
@@ -4786,17 +4777,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getChanges_Tissues();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getVersion <em>Version</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Version</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getVersion()
-     * @see #getChanges()
-     * @generated
-     */
-    EAttribute getChanges_Version();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttribute <em>Constructed Attribute</em>}'.
      * <!-- begin-user-doc -->
@@ -5812,17 +5792,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getNS_PublicationStage();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRelease <em>Release</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRelease()
-     * @see #getNS()
-     * @generated
-     */
-    EAttribute getNS_Release();
-
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRevision <em>Revision</em>}'.
      * <!-- begin-user-doc -->
@@ -5856,17 +5825,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getNS_UmlVersion();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getVersion <em>Version</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Version</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getVersion()
-     * @see #getNS()
-     * @generated
-     */
-    EAttribute getNS_Version();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc <em>NS Doc</em>}'.
      * <!-- begin-user-doc -->
@@ -5921,17 +5879,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getNSDoc_PublicationStage();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRelease <em>Release</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRelease()
-     * @see #getNSDoc()
-     * @generated
-     */
-    EAttribute getNSDoc_Release();
-
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRevision <em>Revision</em>}'.
      * <!-- begin-user-doc -->
@@ -5965,17 +5912,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getNSDoc_UmlVersion();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getVersion <em>Version</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Version</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getVersion()
-     * @see #getNSDoc()
-     * @generated
-     */
-    EAttribute getNSDoc_Version();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition <em>Presence Condition</em>}'.
      * <!-- begin-user-doc -->
@@ -6386,17 +6322,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getServiceNS_PublicationStage();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRelease <em>Release</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRelease()
-     * @see #getServiceNS()
-     * @generated
-     */
-    EAttribute getServiceNS_Release();
-
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRevision <em>Revision</em>}'.
      * <!-- begin-user-doc -->
@@ -6430,17 +6355,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getServiceNS_UmlVersion();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getVersion <em>Version</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Version</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getVersion()
-     * @see #getServiceNS()
-     * @generated
-     */
-    EAttribute getServiceNS_Version();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage <em>Service Ns Usage</em>}'.
      * <!-- begin-user-doc -->
@@ -6484,17 +6398,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getServiceNsUsage_PublicationStage();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRelease <em>Release</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRelease()
-     * @see #getServiceNsUsage()
-     * @generated
-     */
-    EAttribute getServiceNsUsage_Release();
-
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRevision <em>Revision</em>}'.
      * <!-- begin-user-doc -->
@@ -6506,17 +6409,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getServiceNsUsage_Revision();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getVersion <em>Version</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Version</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getVersion()
-     * @see #getServiceNsUsage()
-     * @generated
-     */
-    EAttribute getServiceNsUsage_Version();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter <em>Service Parameter</em>}'.
      * <!-- begin-user-doc -->
@@ -7006,6 +6898,38 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getTitledClass_TitleID();
 
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease <em>NSD Object With Version And Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>NSD Object With Version And Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease
+     * @generated
+     */
+    EClass getNSDObjectWithVersionAndRelease();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease <em>Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease()
+     * @see #getNSDObjectWithVersionAndRelease()
+     * @generated
+     */
+    EAttribute getNSDObjectWithVersionAndRelease_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion()
+     * @see #getNSDObjectWithVersionAndRelease()
+     * @generated
+     */
+    EAttribute getNSDObjectWithVersionAndRelease_Version();
+
     /**
      * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind <em>ACSI Services Kind</em>}'.
      * <!-- begin-user-doc -->
@@ -7202,14 +7126,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute APPLIES_TO_TYPE__PUBLICATION_STAGE = eINSTANCE.getAppliesToType_PublicationStage();
 
-        /**
-         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute APPLIES_TO_TYPE__RELEASE = eINSTANCE.getAppliesToType_Release();
-
         /**
          * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
@@ -7218,14 +7134,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute APPLIES_TO_TYPE__REVISION = eINSTANCE.getAppliesToType_Revision();
 
-        /**
-         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute APPLIES_TO_TYPE__VERSION = eINSTANCE.getAppliesToType_Version();
-
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl <em>Depends On Type</em>}' class.
          * <!-- begin-user-doc -->
@@ -7252,14 +7160,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute DEPENDS_ON_TYPE__PUBLICATION_STAGE = eINSTANCE.getDependsOnType_PublicationStage();
 
-        /**
-         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute DEPENDS_ON_TYPE__RELEASE = eINSTANCE.getDependsOnType_Release();
-
         /**
          * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
@@ -7268,14 +7168,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute DEPENDS_ON_TYPE__REVISION = eINSTANCE.getDependsOnType_Revision();
 
-        /**
-         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute DEPENDS_ON_TYPE__VERSION = eINSTANCE.getDependsOnType_Version();
-
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl <em>Document Root</em>}' class.
          * <!-- begin-user-doc -->
@@ -7678,14 +7570,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute CHANGES__DATE = eINSTANCE.getChanges_Date();
 
-        /**
-         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CHANGES__RELEASE = eINSTANCE.getChanges_Release();
-
         /**
          * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
@@ -7702,14 +7586,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute CHANGES__TISSUES = eINSTANCE.getChanges_Tissues();
 
-        /**
-         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CHANGES__VERSION = eINSTANCE.getChanges_Version();
-
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl <em>Constructed Attribute</em>}' class.
          * <!-- begin-user-doc -->
@@ -8502,14 +8378,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute NS__PUBLICATION_STAGE = eINSTANCE.getNS_PublicationStage();
 
-        /**
-         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS__RELEASE = eINSTANCE.getNS_Release();
-
         /**
          * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
@@ -8534,14 +8402,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute NS__UML_VERSION = eINSTANCE.getNS_UmlVersion();
 
-        /**
-         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS__VERSION = eINSTANCE.getNS_Version();
-
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl <em>NS Doc</em>}' class.
          * <!-- begin-user-doc -->
@@ -8584,14 +8444,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute NS_DOC__PUBLICATION_STAGE = eINSTANCE.getNSDoc_PublicationStage();
 
-        /**
-         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS_DOC__RELEASE = eINSTANCE.getNSDoc_Release();
-
         /**
          * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
@@ -8616,14 +8468,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute NS_DOC__UML_VERSION = eINSTANCE.getNSDoc_UmlVersion();
 
-        /**
-         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS_DOC__VERSION = eINSTANCE.getNSDoc_Version();
-
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl <em>Presence Condition</em>}' class.
          * <!-- begin-user-doc -->
@@ -8947,14 +8791,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute SERVICE_NS__PUBLICATION_STAGE = eINSTANCE.getServiceNS_PublicationStage();
 
-        /**
-         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute SERVICE_NS__RELEASE = eINSTANCE.getServiceNS_Release();
-
         /**
          * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
@@ -8979,14 +8815,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute SERVICE_NS__UML_VERSION = eINSTANCE.getServiceNS_UmlVersion();
 
-        /**
-         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute SERVICE_NS__VERSION = eINSTANCE.getServiceNS_Version();
-
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl <em>Service Ns Usage</em>}' class.
          * <!-- begin-user-doc -->
@@ -9021,14 +8849,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute SERVICE_NS_USAGE__PUBLICATION_STAGE = eINSTANCE.getServiceNsUsage_PublicationStage();
 
-        /**
-         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute SERVICE_NS_USAGE__RELEASE = eINSTANCE.getServiceNsUsage_Release();
-
         /**
          * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
@@ -9037,14 +8857,6 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute SERVICE_NS_USAGE__REVISION = eINSTANCE.getServiceNsUsage_Revision();
 
-        /**
-         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute SERVICE_NS_USAGE__VERSION = eINSTANCE.getServiceNsUsage_Version();
-
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl <em>Service Parameter</em>}' class.
          * <!-- begin-user-doc -->
@@ -9418,6 +9230,32 @@ public interface NsdPackage extends EPackage {
          */
         EAttribute TITLED_CLASS__TITLE_ID = eINSTANCE.getTitledClass_TitleID();
 
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl <em>NSD Object With Version And Release</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNSDObjectWithVersionAndRelease()
+         * @generated
+         */
+        EClass NSD_OBJECT_WITH_VERSION_AND_RELEASE = eINSTANCE.getNSDObjectWithVersionAndRelease();
+
+        /**
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE = eINSTANCE.getNSDObjectWithVersionAndRelease_Release();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION = eINSTANCE.getNSDObjectWithVersionAndRelease_Version();
+
         /**
          * 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/ServiceNS.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNS.java
index 6430b16e653ccc7c9df7af089744d2cdc2ae482a..b2515ef053a984206c17e56675e50ea1fa3bfd97 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNS.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNS.java
@@ -44,18 +44,16 @@ import javax.xml.datatype.XMLGregorianCalendar;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlVersion <em>Uml Version</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS()
  * @model extendedMetaData="name='tServiceNS' kind='elementOnly'"
  * @generated
  */
-public interface ServiceNS extends Copyrighted {
+public interface ServiceNS extends Copyrighted, NSDObjectWithVersionAndRelease {
     /**
      * Returns the value of the '<em><b>Changes</b></em>' containment reference.
      * <!-- begin-user-doc -->
@@ -346,60 +344,6 @@ public interface ServiceNS extends Copyrighted {
      */
     boolean isSetPublicationStage();
 
-    /**
-     * Returns the value of the '<em><b>Release</b></em>' attribute.
-     * The default value is <code>"1"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Release of the namespace version and revision, by default 1.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #setRelease(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS_Release()
-     * @model default="1" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='release'"
-     * @generated
-     */
-    Integer getRelease();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @generated
-     */
-    void setRelease( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    void unsetRelease();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRelease <em>Release</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Release</em>' attribute is set.
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    boolean isSetRelease();
-
     /**
      * Returns the value of the '<em><b>Revision</b></em>' attribute.
      * The default value is <code>"A"</code>.
@@ -506,57 +450,4 @@ public interface ServiceNS extends Copyrighted {
      */
     void setUmlVersion( String value );
 
-    /**
-     * Returns the value of the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Version (year) of the namespace.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #setVersion(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS_Version()
-     * @model unsettable="true" required="true"
-     *        extendedMetaData="kind='attribute' name='version'"
-     * @generated
-     */
-    Integer getVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @generated
-     */
-    void setVersion( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    void unsetVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getVersion <em>Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Version</em>' attribute is set.
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    boolean isSetVersion();
-
 } // ServiceNS
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNsUsage.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNsUsage.java
index a6567991cd409e4712a57c04d59a7fb3ee4573de..82b543bcf28034813102bcb77ed4e42cd018d462 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNsUsage.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNsUsage.java
@@ -21,8 +21,6 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
 import org.eclipse.emf.common.util.EList;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Service Ns Usage</b></em>'.
@@ -39,16 +37,14 @@ import org.eclipse.emf.ecore.EObject;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getAppliesTo <em>Applies To</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNsUsage()
  * @model extendedMetaData="name='tServiceNsUsage' kind='elementOnly'"
  * @generated
  */
-public interface ServiceNsUsage extends EObject {
+public interface ServiceNsUsage extends NSDObjectWithVersionAndRelease {
     /**
      * Returns the value of the '<em><b>Applies To</b></em>' containment reference list.
      * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType}.
@@ -148,60 +144,6 @@ public interface ServiceNsUsage extends EObject {
      */
     boolean isSetPublicationStage();
 
-    /**
-     * Returns the value of the '<em><b>Release</b></em>' attribute.
-     * The default value is <code>"1"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Release of the namespace version and revision, by default 1.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #setRelease(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNsUsage_Release()
-     * @model default="1" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='release'"
-     * @generated
-     */
-    Integer getRelease();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @generated
-     */
-    void setRelease( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    void unsetRelease();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRelease <em>Release</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Release</em>' attribute is set.
-     * @see #unsetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    boolean isSetRelease();
-
     /**
      * Returns the value of the '<em><b>Revision</b></em>' attribute.
      * The default value is <code>"A"</code>.
@@ -256,57 +198,4 @@ public interface ServiceNsUsage extends EObject {
      */
     boolean isSetRevision();
 
-    /**
-     * Returns the value of the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * <!-- begin-model-doc -->
-     * Version (year) of the namespace.
-     * <!-- end-model-doc -->
-     * @return the value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #setVersion(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNsUsage_Version()
-     * @model unsettable="true" required="true"
-     *        extendedMetaData="kind='attribute' name='version'"
-     * @generated
-     */
-    Integer getVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @generated
-     */
-    void setVersion( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    void unsetVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getVersion <em>Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Version</em>' attribute is set.
-     * @see #unsetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    boolean isSetVersion();
-
 } // ServiceNsUsage
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 3b16444aa6085e5bc3f18b011c273404d92dd210..6192b05073bc99fd38ee91b9be59c82b6bd826bc 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
@@ -28,7 +28,6 @@ import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 /**
  * <!-- begin-user-doc -->
@@ -40,14 +39,12 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  * <ul>
  *   <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#getPublicationStage <em>Publication Stage</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#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements AppliesToType {
+public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implements AppliesToType {
     /**
      * The default value of the '{@link #getId() <em>Id</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -97,35 +94,6 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
      */
     protected boolean publicationStageESet;
 
-    /**
-     * 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 #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -155,35 +123,6 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
      */
     protected boolean revisionESet;
 
-    /**
-     * 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;
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -278,56 +217,6 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
         return publicationStageESet;
     }
 
-    /**
-     * <!-- 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.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 -->
@@ -378,56 +267,6 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
         return revisionESet;
     }
 
-    /**
-     * <!-- 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 -->
@@ -440,12 +279,8 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
             return getId();
         case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
             return getPublicationStage();
-        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
-            return getRelease();
         case NsdPackage.APPLIES_TO_TYPE__REVISION:
             return getRevision();
-        case NsdPackage.APPLIES_TO_TYPE__VERSION:
-            return getVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -464,15 +299,9 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
         case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
             setPublicationStage( ( PubStage ) newValue );
             return;
-        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
-            setRelease( ( Integer ) newValue );
-            return;
         case NsdPackage.APPLIES_TO_TYPE__REVISION:
             setRevision( ( String ) newValue );
             return;
-        case NsdPackage.APPLIES_TO_TYPE__VERSION:
-            setVersion( ( Integer ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -491,15 +320,9 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
         case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
             unsetPublicationStage();
             return;
-        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
-            unsetRelease();
-            return;
         case NsdPackage.APPLIES_TO_TYPE__REVISION:
             unsetRevision();
             return;
-        case NsdPackage.APPLIES_TO_TYPE__VERSION:
-            unsetVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -516,12 +339,8 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
             return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
         case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
             return isSetPublicationStage();
-        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
-            return isSetRelease();
         case NsdPackage.APPLIES_TO_TYPE__REVISION:
             return isSetRevision();
-        case NsdPackage.APPLIES_TO_TYPE__VERSION:
-            return isSetVersion();
         }
         return super.eIsSet( featureID );
     }
@@ -543,21 +362,11 @@ public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements A
             result.append( publicationStage );
         else
             result.append( "<unset>" );
-        result.append( ", release: " );
-        if( releaseESet )
-            result.append( release );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
         else
             result.append( "<unset>" );
-        result.append( ", version: " );
-        if( versionESet )
-            result.append( version );
-        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/ChangesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ChangesImpl.java
index fa8c520ea06c3ae471ecbe80b17bd5cd7d8f6d08..5da44d434ba941507de38bb585e70be060e0a566 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ChangesImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ChangesImpl.java
@@ -29,7 +29,6 @@ import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 /**
  * <!-- begin-user-doc -->
@@ -41,15 +40,13 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getChangesID <em>Changes ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getDate <em>Date</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getTissues <em>Tissues</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes {
+public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements Changes {
     /**
      * The default value of the '{@link #getChangesID() <em>Changes ID</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -90,35 +87,6 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
      */
     protected XMLGregorianCalendar date = DATE_EDEFAULT;
 
-    /**
-     * 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 #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -168,35 +136,6 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
      */
     protected String tissues = TISSUES_EDEFAULT;
 
-    /**
-     * 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;
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -262,56 +201,6 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
             eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.CHANGES__DATE, oldDate, date ) );
     }
 
-    /**
-     * <!-- 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.CHANGES__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.CHANGES__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public boolean isSetRelease() {
-        return releaseESet;
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -385,56 +274,6 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
                 new ENotificationImpl( this, Notification.SET, NsdPackage.CHANGES__TISSUES, oldTissues, tissues ) );
     }
 
-    /**
-     * <!-- 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.CHANGES__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.CHANGES__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public boolean isSetVersion() {
-        return versionESet;
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -447,14 +286,10 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
             return getChangesID();
         case NsdPackage.CHANGES__DATE:
             return getDate();
-        case NsdPackage.CHANGES__RELEASE:
-            return getRelease();
         case NsdPackage.CHANGES__REVISION:
             return getRevision();
         case NsdPackage.CHANGES__TISSUES:
             return getTissues();
-        case NsdPackage.CHANGES__VERSION:
-            return getVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -473,18 +308,12 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
         case NsdPackage.CHANGES__DATE:
             setDate( ( XMLGregorianCalendar ) newValue );
             return;
-        case NsdPackage.CHANGES__RELEASE:
-            setRelease( ( Integer ) newValue );
-            return;
         case NsdPackage.CHANGES__REVISION:
             setRevision( ( String ) newValue );
             return;
         case NsdPackage.CHANGES__TISSUES:
             setTissues( ( String ) newValue );
             return;
-        case NsdPackage.CHANGES__VERSION:
-            setVersion( ( Integer ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -503,18 +332,12 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
         case NsdPackage.CHANGES__DATE:
             setDate( DATE_EDEFAULT );
             return;
-        case NsdPackage.CHANGES__RELEASE:
-            unsetRelease();
-            return;
         case NsdPackage.CHANGES__REVISION:
             unsetRevision();
             return;
         case NsdPackage.CHANGES__TISSUES:
             setTissues( TISSUES_EDEFAULT );
             return;
-        case NsdPackage.CHANGES__VERSION:
-            unsetVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -531,14 +354,10 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
             return CHANGES_ID_EDEFAULT == null ? changesID != null : !CHANGES_ID_EDEFAULT.equals( changesID );
         case NsdPackage.CHANGES__DATE:
             return DATE_EDEFAULT == null ? date != null : !DATE_EDEFAULT.equals( date );
-        case NsdPackage.CHANGES__RELEASE:
-            return isSetRelease();
         case NsdPackage.CHANGES__REVISION:
             return isSetRevision();
         case NsdPackage.CHANGES__TISSUES:
             return TISSUES_EDEFAULT == null ? tissues != null : !TISSUES_EDEFAULT.equals( tissues );
-        case NsdPackage.CHANGES__VERSION:
-            return isSetVersion();
         }
         return super.eIsSet( featureID );
     }
@@ -557,11 +376,6 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
         result.append( changesID );
         result.append( ", date: " );
         result.append( date );
-        result.append( ", release: " );
-        if( releaseESet )
-            result.append( release );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
@@ -569,11 +383,6 @@ public class ChangesImpl extends MinimalEObjectImpl.Container implements Changes
             result.append( "<unset>" );
         result.append( ", tissues: " );
         result.append( tissues );
-        result.append( ", version: " );
-        if( versionESet )
-            result.append( version );
-        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/DependsOnTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnTypeImpl.java
index 6ce9c950c159c997073f4f5cd69554138dd33310..d7ac589347f7d7f1d8b57aa9bce0e920f77c808c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnTypeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnTypeImpl.java
@@ -28,7 +28,6 @@ import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 /**
  * <!-- begin-user-doc -->
@@ -40,14 +39,12 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements DependsOnType {
+public class DependsOnTypeImpl extends NSDObjectWithVersionAndReleaseImpl implements DependsOnType {
     /**
      * The default value of the '{@link #getId() <em>Id</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -97,35 +94,6 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
      */
     protected boolean publicationStageESet;
 
-    /**
-     * 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 #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -155,35 +123,6 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
      */
     protected boolean revisionESet;
 
-    /**
-     * 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;
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -278,56 +217,6 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
         return publicationStageESet;
     }
 
-    /**
-     * <!-- 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_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.DEPENDS_ON_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 -->
@@ -378,56 +267,6 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
         return revisionESet;
     }
 
-    /**
-     * <!-- 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_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.DEPENDS_ON_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 -->
@@ -440,12 +279,8 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
             return getId();
         case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
             return getPublicationStage();
-        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
-            return getRelease();
         case NsdPackage.DEPENDS_ON_TYPE__REVISION:
             return getRevision();
-        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
-            return getVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -464,15 +299,9 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
         case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
             setPublicationStage( ( PubStage ) newValue );
             return;
-        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
-            setRelease( ( Integer ) newValue );
-            return;
         case NsdPackage.DEPENDS_ON_TYPE__REVISION:
             setRevision( ( String ) newValue );
             return;
-        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
-            setVersion( ( Integer ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -491,15 +320,9 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
         case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
             unsetPublicationStage();
             return;
-        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
-            unsetRelease();
-            return;
         case NsdPackage.DEPENDS_ON_TYPE__REVISION:
             unsetRevision();
             return;
-        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
-            unsetVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -516,12 +339,8 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
             return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
         case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
             return isSetPublicationStage();
-        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
-            return isSetRelease();
         case NsdPackage.DEPENDS_ON_TYPE__REVISION:
             return isSetRevision();
-        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
-            return isSetVersion();
         }
         return super.eIsSet( featureID );
     }
@@ -543,21 +362,11 @@ public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements D
             result.append( publicationStage );
         else
             result.append( "<unset>" );
-        result.append( ", release: " );
-        if( releaseESet )
-            result.append( release );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
         else
             result.append( "<unset>" );
-        result.append( ", version: " );
-        if( versionESet )
-            result.append( version );
-        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/NSDObjectWithVersionAndReleaseImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDObjectWithVersionAndReleaseImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..55839db82b796926d2c072afa278e3a1ac2864f4
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDObjectWithVersionAndReleaseImpl.java
@@ -0,0 +1,319 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>NSD Object With Version And Release</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectImpl.Container
+        implements NSDObjectWithVersionAndRelease {
+    /**
+     * 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;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected NSDObjectWithVersionAndReleaseImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE;
+    }
+
+    /**
+     * <!-- 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.NSD_OBJECT_WITH_VERSION_AND_RELEASE__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.NSD_OBJECT_WITH_VERSION_AND_RELEASE__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.NSD_OBJECT_WITH_VERSION_AND_RELEASE__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.NSD_OBJECT_WITH_VERSION_AND_RELEASE__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 Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+            return getRelease();
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+            return isSetRelease();
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- 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( ')' );
+        return result.toString();
+    }
+
+} //NSDObjectWithVersionAndReleaseImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDocImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDocImpl.java
index a048f4be54711560746975cb105630bf79c02018..7bb3ad5c8bc56c1218ffb57eecd3b885b39bc1a5 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDocImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDocImpl.java
@@ -20,6 +20,7 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
@@ -49,20 +50,78 @@ import org.eclipse.emf.ecore.util.InternalEList;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getVersion <em>Version</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getDoc <em>Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getLang <em>Lang</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getUmlVersion <em>Uml Version</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @generated
  */
 public class NSDocImpl extends CopyrightedImpl implements NSDoc {
+    /**
+     * 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 cached value of the '{@link #getDoc() <em>Doc</em>}' containment reference list.
      * <!-- begin-user-doc -->
@@ -142,35 +201,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
      */
     protected boolean publicationStageESet;
 
-    /**
-     * 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 #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -240,35 +270,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
      */
     protected String umlVersion = UML_VERSION_EDEFAULT;
 
-    /**
-     * 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;
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -617,6 +618,10 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
+        case NsdPackage.NS_DOC__RELEASE:
+            return getRelease();
+        case NsdPackage.NS_DOC__VERSION:
+            return getVersion();
         case NsdPackage.NS_DOC__DOC:
             return getDoc();
         case NsdPackage.NS_DOC__ID:
@@ -625,16 +630,12 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
             return getLang();
         case NsdPackage.NS_DOC__PUBLICATION_STAGE:
             return getPublicationStage();
-        case NsdPackage.NS_DOC__RELEASE:
-            return getRelease();
         case NsdPackage.NS_DOC__REVISION:
             return getRevision();
         case NsdPackage.NS_DOC__UML_DATE:
             return getUmlDate();
         case NsdPackage.NS_DOC__UML_VERSION:
             return getUmlVersion();
-        case NsdPackage.NS_DOC__VERSION:
-            return getVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -648,6 +649,12 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
+        case NsdPackage.NS_DOC__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.NS_DOC__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
         case NsdPackage.NS_DOC__DOC:
             getDoc().clear();
             getDoc().addAll( ( Collection< ? extends Doc > ) newValue );
@@ -661,9 +668,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
         case NsdPackage.NS_DOC__PUBLICATION_STAGE:
             setPublicationStage( ( PubStage ) newValue );
             return;
-        case NsdPackage.NS_DOC__RELEASE:
-            setRelease( ( Integer ) newValue );
-            return;
         case NsdPackage.NS_DOC__REVISION:
             setRevision( ( String ) newValue );
             return;
@@ -673,9 +677,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
         case NsdPackage.NS_DOC__UML_VERSION:
             setUmlVersion( ( String ) newValue );
             return;
-        case NsdPackage.NS_DOC__VERSION:
-            setVersion( ( Integer ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -688,6 +689,12 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.NS_DOC__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.NS_DOC__VERSION:
+            unsetVersion();
+            return;
         case NsdPackage.NS_DOC__DOC:
             getDoc().clear();
             return;
@@ -700,9 +707,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
         case NsdPackage.NS_DOC__PUBLICATION_STAGE:
             unsetPublicationStage();
             return;
-        case NsdPackage.NS_DOC__RELEASE:
-            unsetRelease();
-            return;
         case NsdPackage.NS_DOC__REVISION:
             unsetRevision();
             return;
@@ -712,9 +716,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
         case NsdPackage.NS_DOC__UML_VERSION:
             setUmlVersion( UML_VERSION_EDEFAULT );
             return;
-        case NsdPackage.NS_DOC__VERSION:
-            unsetVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -727,6 +728,10 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.NS_DOC__RELEASE:
+            return isSetRelease();
+        case NsdPackage.NS_DOC__VERSION:
+            return isSetVersion();
         case NsdPackage.NS_DOC__DOC:
             return doc != null && !doc.isEmpty();
         case NsdPackage.NS_DOC__ID:
@@ -735,20 +740,56 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
             return LANG_EDEFAULT == null ? lang != null : !LANG_EDEFAULT.equals( lang );
         case NsdPackage.NS_DOC__PUBLICATION_STAGE:
             return isSetPublicationStage();
-        case NsdPackage.NS_DOC__RELEASE:
-            return isSetRelease();
         case NsdPackage.NS_DOC__REVISION:
             return isSetRevision();
         case NsdPackage.NS_DOC__UML_DATE:
             return UML_DATE_EDEFAULT == null ? umlDate != null : !UML_DATE_EDEFAULT.equals( umlDate );
         case NsdPackage.NS_DOC__UML_VERSION:
             return UML_VERSION_EDEFAULT == null ? umlVersion != null : !UML_VERSION_EDEFAULT.equals( umlVersion );
-        case NsdPackage.NS_DOC__VERSION:
-            return isSetVersion();
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.NS_DOC__RELEASE:
+                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+            case NsdPackage.NS_DOC__VERSION:
+                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+            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 == NSDObjectWithVersionAndRelease.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+                return NsdPackage.NS_DOC__RELEASE;
+            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+                return NsdPackage.NS_DOC__VERSION;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -759,7 +800,17 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (id: " );
+        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: " );
         result.append( id );
         result.append( ", lang: " );
         result.append( lang );
@@ -768,11 +819,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
             result.append( publicationStage );
         else
             result.append( "<unset>" );
-        result.append( ", release: " );
-        if( releaseESet )
-            result.append( release );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
@@ -782,11 +828,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
         result.append( umlDate );
         result.append( ", umlVersion: " );
         result.append( umlVersion );
-        result.append( ", version: " );
-        if( versionESet )
-            result.append( version );
-        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/NSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
index 893ac2a6fa9888fadb9e7fec2e7bf1f3832d0cf7..7895fe7adeb77f2baa85fdab1b2ea32c91a7f6ab 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
@@ -29,6 +29,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Enumerations;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraints;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClasses;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
@@ -51,6 +52,8 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getVersion <em>Version</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getChanges <em>Changes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getDependsOn <em>Depends On</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getBasicTypes <em>Basic Types</em>}</li>
@@ -64,16 +67,72 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getUmlVersion <em>Uml Version</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @generated
  */
 public class NSImpl extends CopyrightedImpl implements NS {
+    /**
+     * 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 cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
      * <!-- begin-user-doc -->
@@ -243,35 +302,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
      */
     protected boolean publicationStageESet;
 
-    /**
-     * 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 #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -341,35 +371,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
      */
     protected String umlVersion = UML_VERSION_EDEFAULT;
 
-    /**
-     * 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;
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1215,6 +1216,10 @@ public class NSImpl extends CopyrightedImpl implements NS {
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
+        case NsdPackage.NS__RELEASE:
+            return getRelease();
+        case NsdPackage.NS__VERSION:
+            return getVersion();
         case NsdPackage.NS__CHANGES:
             return getChanges();
         case NsdPackage.NS__DEPENDS_ON:
@@ -1241,16 +1246,12 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return getId();
         case NsdPackage.NS__PUBLICATION_STAGE:
             return getPublicationStage();
-        case NsdPackage.NS__RELEASE:
-            return getRelease();
         case NsdPackage.NS__REVISION:
             return getRevision();
         case NsdPackage.NS__UML_DATE:
             return getUmlDate();
         case NsdPackage.NS__UML_VERSION:
             return getUmlVersion();
-        case NsdPackage.NS__VERSION:
-            return getVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -1263,6 +1264,12 @@ public class NSImpl extends CopyrightedImpl implements NS {
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
+        case NsdPackage.NS__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.NS__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
         case NsdPackage.NS__CHANGES:
             setChanges( ( Changes ) newValue );
             return;
@@ -1302,9 +1309,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__PUBLICATION_STAGE:
             setPublicationStage( ( PubStage ) newValue );
             return;
-        case NsdPackage.NS__RELEASE:
-            setRelease( ( Integer ) newValue );
-            return;
         case NsdPackage.NS__REVISION:
             setRevision( ( String ) newValue );
             return;
@@ -1314,9 +1318,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__UML_VERSION:
             setUmlVersion( ( String ) newValue );
             return;
-        case NsdPackage.NS__VERSION:
-            setVersion( ( Integer ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -1329,6 +1330,12 @@ public class NSImpl extends CopyrightedImpl implements NS {
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.NS__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.NS__VERSION:
+            unsetVersion();
+            return;
         case NsdPackage.NS__CHANGES:
             setChanges( ( Changes ) null );
             return;
@@ -1368,9 +1375,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__PUBLICATION_STAGE:
             unsetPublicationStage();
             return;
-        case NsdPackage.NS__RELEASE:
-            unsetRelease();
-            return;
         case NsdPackage.NS__REVISION:
             unsetRevision();
             return;
@@ -1380,9 +1384,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__UML_VERSION:
             setUmlVersion( UML_VERSION_EDEFAULT );
             return;
-        case NsdPackage.NS__VERSION:
-            unsetVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -1395,6 +1396,10 @@ public class NSImpl extends CopyrightedImpl implements NS {
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.NS__RELEASE:
+            return isSetRelease();
+        case NsdPackage.NS__VERSION:
+            return isSetVersion();
         case NsdPackage.NS__CHANGES:
             return changes != null;
         case NsdPackage.NS__DEPENDS_ON:
@@ -1421,20 +1426,56 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
         case NsdPackage.NS__PUBLICATION_STAGE:
             return isSetPublicationStage();
-        case NsdPackage.NS__RELEASE:
-            return isSetRelease();
         case NsdPackage.NS__REVISION:
             return isSetRevision();
         case NsdPackage.NS__UML_DATE:
             return UML_DATE_EDEFAULT == null ? umlDate != null : !UML_DATE_EDEFAULT.equals( umlDate );
         case NsdPackage.NS__UML_VERSION:
             return UML_VERSION_EDEFAULT == null ? umlVersion != null : !UML_VERSION_EDEFAULT.equals( umlVersion );
-        case NsdPackage.NS__VERSION:
-            return isSetVersion();
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.NS__RELEASE:
+                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+            case NsdPackage.NS__VERSION:
+                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+            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 == NSDObjectWithVersionAndRelease.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+                return NsdPackage.NS__RELEASE;
+            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+                return NsdPackage.NS__VERSION;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1445,7 +1486,17 @@ public class NSImpl extends CopyrightedImpl implements NS {
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (descID: " );
+        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( ", descID: " );
         result.append( descID );
         result.append( ", id: " );
         result.append( id );
@@ -1454,11 +1505,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
             result.append( publicationStage );
         else
             result.append( "<unset>" );
-        result.append( ", release: " );
-        if( releaseESet )
-            result.append( release );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
@@ -1468,11 +1514,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
         result.append( umlDate );
         result.append( ", umlVersion: " );
         result.append( umlVersion );
-        result.append( ", version: " );
-        if( versionESet )
-            result.append( version );
-        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/NsdPackageImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java
index 0a21e8c6576bac58e5772a6aa608956de0e61083..5656b9f9390abd53f0b98f0daae2d2dfc82e8fca 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
@@ -53,6 +53,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClasses;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.License;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Literal;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Notice;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
@@ -449,6 +450,13 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     private EClass titledClassEClass = null;
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass nsdObjectWithVersionAndReleaseEClass = null;
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -644,16 +652,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 1 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getAppliesToType_Release() {
-        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 2 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -661,17 +659,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getAppliesToType_Revision() {
-        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 3 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getAppliesToType_Version() {
-        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 4 );
+        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -704,16 +692,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 1 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDependsOnType_Release() {
-        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 2 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -721,17 +699,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getDependsOnType_Revision() {
-        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 3 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDependsOnType_Version() {
-        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 4 );
+        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -1204,16 +1172,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 1 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getChanges_Release() {
-        return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 2 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1221,7 +1179,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getChanges_Revision() {
-        return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 3 );
+        return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -1231,17 +1189,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getChanges_Tissues() {
-        return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 4 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getChanges_Version() {
-        return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 5 );
+        return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 3 );
     }
 
     /**
@@ -2184,16 +2132,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 12 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNS_Release() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 13 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2201,7 +2139,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getNS_Revision() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 14 );
+        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 13 );
     }
 
     /**
@@ -2211,7 +2149,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getNS_UmlDate() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 15 );
+        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 14 );
     }
 
     /**
@@ -2221,17 +2159,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getNS_UmlVersion() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 16 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNS_Version() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 17 );
+        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 15 );
     }
 
     /**
@@ -2284,16 +2212,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 3 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNSDoc_Release() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 4 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2301,7 +2219,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getNSDoc_Revision() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 5 );
+        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 4 );
     }
 
     /**
@@ -2311,7 +2229,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getNSDoc_UmlDate() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 6 );
+        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 5 );
     }
 
     /**
@@ -2321,17 +2239,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getNSDoc_UmlVersion() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 7 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNSDoc_Version() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 8 );
+        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 6 );
     }
 
     /**
@@ -2714,16 +2622,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 9 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getServiceNS_Release() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 10 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2731,7 +2629,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getServiceNS_Revision() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 11 );
+        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 10 );
     }
 
     /**
@@ -2741,7 +2639,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getServiceNS_UmlDate() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 12 );
+        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 11 );
     }
 
     /**
@@ -2751,17 +2649,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getServiceNS_UmlVersion() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 13 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getServiceNS_Version() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 14 );
+        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 12 );
     }
 
     /**
@@ -2804,16 +2692,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) serviceNsUsageEClass.getEStructuralFeatures().get( 2 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getServiceNsUsage_Release() {
-        return ( EAttribute ) serviceNsUsageEClass.getEStructuralFeatures().get( 3 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2821,17 +2699,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getServiceNsUsage_Revision() {
-        return ( EAttribute ) serviceNsUsageEClass.getEStructuralFeatures().get( 4 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getServiceNsUsage_Version() {
-        return ( EAttribute ) serviceNsUsageEClass.getEStructuralFeatures().get( 5 );
+        return ( EAttribute ) serviceNsUsageEClass.getEStructuralFeatures().get( 3 );
     }
 
     /**
@@ -3284,6 +3152,36 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EAttribute ) titledClassEClass.getEStructuralFeatures().get( 0 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getNSDObjectWithVersionAndRelease() {
+        return nsdObjectWithVersionAndReleaseEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getNSDObjectWithVersionAndRelease_Release() {
+        return ( EAttribute ) nsdObjectWithVersionAndReleaseEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getNSDObjectWithVersionAndRelease_Version() {
+        return ( EAttribute ) nsdObjectWithVersionAndReleaseEClass.getEStructuralFeatures().get( 1 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -3446,16 +3344,12 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         appliesToTypeEClass = createEClass( APPLIES_TO_TYPE );
         createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__ID );
         createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__PUBLICATION_STAGE );
-        createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__RELEASE );
         createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__REVISION );
-        createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__VERSION );
 
         dependsOnTypeEClass = createEClass( DEPENDS_ON_TYPE );
         createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__ID );
         createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__PUBLICATION_STAGE );
-        createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__RELEASE );
         createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__REVISION );
-        createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__VERSION );
 
         documentRootEClass = createEClass( DOCUMENT_ROOT );
         createEAttribute( documentRootEClass, DOCUMENT_ROOT__MIXED );
@@ -3516,10 +3410,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         changesEClass = createEClass( CHANGES );
         createEAttribute( changesEClass, CHANGES__CHANGES_ID );
         createEAttribute( changesEClass, CHANGES__DATE );
-        createEAttribute( changesEClass, CHANGES__RELEASE );
         createEAttribute( changesEClass, CHANGES__REVISION );
         createEAttribute( changesEClass, CHANGES__TISSUES );
-        createEAttribute( changesEClass, CHANGES__VERSION );
 
         constructedAttributeEClass = createEClass( CONSTRUCTED_ATTRIBUTE );
         createEReference( constructedAttributeEClass, CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE );
@@ -3633,22 +3525,18 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( nsEClass, NS__DESC_ID );
         createEAttribute( nsEClass, NS__ID );
         createEAttribute( nsEClass, NS__PUBLICATION_STAGE );
-        createEAttribute( nsEClass, NS__RELEASE );
         createEAttribute( nsEClass, NS__REVISION );
         createEAttribute( nsEClass, NS__UML_DATE );
         createEAttribute( nsEClass, NS__UML_VERSION );
-        createEAttribute( nsEClass, NS__VERSION );
 
         nsDocEClass = createEClass( NS_DOC );
         createEReference( nsDocEClass, NS_DOC__DOC );
         createEAttribute( nsDocEClass, NS_DOC__ID );
         createEAttribute( nsDocEClass, NS_DOC__LANG );
         createEAttribute( nsDocEClass, NS_DOC__PUBLICATION_STAGE );
-        createEAttribute( nsDocEClass, NS_DOC__RELEASE );
         createEAttribute( nsDocEClass, NS_DOC__REVISION );
         createEAttribute( nsDocEClass, NS_DOC__UML_DATE );
         createEAttribute( nsDocEClass, NS_DOC__UML_VERSION );
-        createEAttribute( nsDocEClass, NS_DOC__VERSION );
 
         presenceConditionEClass = createEClass( PRESENCE_CONDITION );
         createEAttribute( presenceConditionEClass, PRESENCE_CONDITION__ARGUMENT );
@@ -3696,19 +3584,15 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( serviceNSEClass, SERVICE_NS__DESC_ID );
         createEAttribute( serviceNSEClass, SERVICE_NS__ID );
         createEAttribute( serviceNSEClass, SERVICE_NS__PUBLICATION_STAGE );
-        createEAttribute( serviceNSEClass, SERVICE_NS__RELEASE );
         createEAttribute( serviceNSEClass, SERVICE_NS__REVISION );
         createEAttribute( serviceNSEClass, SERVICE_NS__UML_DATE );
         createEAttribute( serviceNSEClass, SERVICE_NS__UML_VERSION );
-        createEAttribute( serviceNSEClass, SERVICE_NS__VERSION );
 
         serviceNsUsageEClass = createEClass( SERVICE_NS_USAGE );
         createEReference( serviceNsUsageEClass, SERVICE_NS_USAGE__APPLIES_TO );
         createEAttribute( serviceNsUsageEClass, SERVICE_NS_USAGE__ID );
         createEAttribute( serviceNsUsageEClass, SERVICE_NS_USAGE__PUBLICATION_STAGE );
-        createEAttribute( serviceNsUsageEClass, SERVICE_NS_USAGE__RELEASE );
         createEAttribute( serviceNsUsageEClass, SERVICE_NS_USAGE__REVISION );
-        createEAttribute( serviceNsUsageEClass, SERVICE_NS_USAGE__VERSION );
 
         serviceParameterEClass = createEClass( SERVICE_PARAMETER );
         createEAttribute( serviceParameterEClass, SERVICE_PARAMETER__DEFAULT_VALUE );
@@ -3761,6 +3645,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         titledClassEClass = createEClass( TITLED_CLASS );
         createEAttribute( titledClassEClass, TITLED_CLASS__TITLE_ID );
 
+        nsdObjectWithVersionAndReleaseEClass = createEClass( NSD_OBJECT_WITH_VERSION_AND_RELEASE );
+        createEAttribute( nsdObjectWithVersionAndReleaseEClass, NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE );
+        createEAttribute( nsdObjectWithVersionAndReleaseEClass, NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION );
+
         // Create enums
         acsiServicesKindEEnum = createEEnum( ACSI_SERVICES_KIND );
         cbKindEEnum = createEEnum( CB_KIND );
@@ -3811,10 +3699,13 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         // Set bounds for type parameters
 
         // Add supertypes to classes
+        appliesToTypeEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
+        dependsOnTypeEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
         abstractLNClassEClass.getESuperTypes().add( this.getAnyLNClass() );
         anyLNClassEClass.getESuperTypes().add( this.getTitledClass() );
         applicableServiceNSEClass.getESuperTypes().add( this.getCopyrighted() );
         cdcEClass.getESuperTypes().add( this.getTitledClass() );
+        changesEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
         constructedAttributeEClass.getESuperTypes().add( this.getTitledClass() );
         dataAttributeEClass.getESuperTypes().add( this.getDocumentedClass() );
         dataObjectEClass.getESuperTypes().add( this.getDocumentedClass() );
@@ -3822,10 +3713,14 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         literalEClass.getESuperTypes().add( this.getDocumentedClass() );
         lnClassEClass.getESuperTypes().add( this.getAnyLNClass() );
         nsEClass.getESuperTypes().add( this.getCopyrighted() );
+        nsEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
         nsDocEClass.getESuperTypes().add( this.getCopyrighted() );
+        nsDocEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
         serviceConstructedAttributeEClass.getESuperTypes().add( this.getConstructedAttribute() );
         serviceDataAttributeEClass.getESuperTypes().add( this.getDocumentedClass() );
         serviceNSEClass.getESuperTypes().add( this.getCopyrighted() );
+        serviceNSEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
+        serviceNsUsageEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
         serviceParameterEClass.getESuperTypes().add( this.getDocumentedClass() );
         subDataAttributeEClass.getESuperTypes().add( this.getDocumentedClass() );
         subDataObjectEClass.getESuperTypes().add( this.getDocumentedClass() );
@@ -3840,15 +3735,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getAppliesToType_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
                 AppliesToType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getAppliesToType_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1,
-                AppliesToType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getAppliesToType_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1,
                 AppliesToType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getAppliesToType_Version(), ecorePackage.getEIntegerObject(), "version", null, 1, 1,
-                AppliesToType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
 
         initEClass( dependsOnTypeEClass, DependsOnType.class, "DependsOnType", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -3858,15 +3747,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getDependsOnType_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
                 DependsOnType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDependsOnType_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1,
-                DependsOnType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getDependsOnType_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1,
                 DependsOnType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDependsOnType_Version(), ecorePackage.getEIntegerObject(), "version", null, 1, 1,
-                DependsOnType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
 
         initEClass( documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4003,15 +3886,11 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getChanges_Date(), theXMLTypePackage.getDate(), "date", null, 0, 1, Changes.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
                 IS_ORDERED );
-        initEAttribute( getChanges_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1, Changes.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEAttribute( getChanges_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1, Changes.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEAttribute( getChanges_Tissues(), ecorePackage.getEString(), "tissues", null, 0, 1, Changes.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
                 IS_ORDERED );
-        initEAttribute( getChanges_Version(), ecorePackage.getEIntegerObject(), "version", null, 1, 1, Changes.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
         initEClass( constructedAttributeEClass, ConstructedAttribute.class, "ConstructedAttribute", !IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
@@ -4280,9 +4159,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getNS_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
                 fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNS_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1,
-                fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEAttribute( getNS_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1,
                 fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
@@ -4292,9 +4168,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getNS_UmlVersion(), ecorePackage.getEString(), "umlVersion", null, 0, 1,
                 fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNS_Version(), ecorePackage.getEIntegerObject(), "version", null, 1, 1,
-                fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
         initEClass( nsDocEClass, NSDoc.class, "NSDoc", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
         initEReference( getNSDoc_Doc(), this.getDoc(), null, "doc", null, 1, -1, NSDoc.class, !IS_TRANSIENT,
@@ -4307,8 +4180,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 IS_ORDERED );
         initEAttribute( getNSDoc_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1, NSDoc.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNSDoc_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1, NSDoc.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEAttribute( getNSDoc_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1, NSDoc.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEAttribute( getNSDoc_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1, NSDoc.class,
@@ -4317,8 +4188,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getNSDoc_UmlVersion(), ecorePackage.getEString(), "umlVersion", null, 0, 1, NSDoc.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
                 IS_ORDERED );
-        initEAttribute( getNSDoc_Version(), ecorePackage.getEIntegerObject(), "version", null, 1, 1, NSDoc.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
         initEClass( presenceConditionEClass, PresenceCondition.class, "PresenceCondition", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4433,8 +4302,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getServiceNS_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
                 ServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNS_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1, ServiceNS.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEAttribute( getServiceNS_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1, ServiceNS.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEAttribute( getServiceNS_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1, ServiceNS.class,
@@ -4443,9 +4310,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getServiceNS_UmlVersion(), ecorePackage.getEString(), "umlVersion", null, 0, 1, ServiceNS.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
                 IS_ORDERED );
-        initEAttribute( getServiceNS_Version(), ecorePackage.getEIntegerObject(), "version", null, 1, 1,
-                ServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
 
         initEClass( serviceNsUsageEClass, ServiceNsUsage.class, "ServiceNsUsage", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4458,15 +4322,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getServiceNsUsage_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
                 ServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNsUsage_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1,
-                ServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getServiceNsUsage_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1,
                 ServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNsUsage_Version(), ecorePackage.getEIntegerObject(), "version", null, 1, 1,
-                ServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
 
         initEClass( serviceParameterEClass, ServiceParameter.class, "ServiceParameter", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4603,6 +4461,15 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
                 IS_ORDERED );
 
+        initEClass( nsdObjectWithVersionAndReleaseEClass, NSDObjectWithVersionAndRelease.class,
+                "NSDObjectWithVersionAndRelease", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getNSDObjectWithVersionAndRelease_Release(), ecorePackage.getEIntegerObject(), "release", "1",
+                0, 1, NSDObjectWithVersionAndRelease.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE,
+                !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getNSDObjectWithVersionAndRelease_Version(), ecorePackage.getEIntegerObject(), "version", null,
+                1, 1, NSDObjectWithVersionAndRelease.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE,
+                !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
         // Initialize enums and add enum literals
         initEEnum( acsiServicesKindEEnum, ACSIServicesKind.class, "ACSIServicesKind" );
         addEEnumLiteral( acsiServicesKindEEnum, ACSIServicesKind.ASSOCIATE );
@@ -4731,16 +4598,12 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         addAnnotation( getAppliesToType_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
         addAnnotation( getAppliesToType_PublicationStage(), source,
                 new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getAppliesToType_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
         addAnnotation( getAppliesToType_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
-        addAnnotation( getAppliesToType_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
         addAnnotation( dependsOnTypeEClass, source, new String[] { "name", "DependsOn_._type", "kind", "empty" } );
         addAnnotation( getDependsOnType_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
         addAnnotation( getDependsOnType_PublicationStage(), source,
                 new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getDependsOnType_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
         addAnnotation( getDependsOnType_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
-        addAnnotation( getDependsOnType_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
         addAnnotation( documentRootEClass, source, new String[] { "name", "", "kind", "mixed" } );
         addAnnotation( getDocumentRoot_Mixed(), source, new String[] { "kind", "elementWildcard", "name", ":mixed" } );
         addAnnotation( getDocumentRoot_XMLNSPrefixMap(), source,
@@ -4819,10 +4682,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         addAnnotation( changesEClass, source, new String[] { "name", "tChanges", "kind", "empty" } );
         addAnnotation( getChanges_ChangesID(), source, new String[] { "kind", "attribute", "name", "changesID" } );
         addAnnotation( getChanges_Date(), source, new String[] { "kind", "attribute", "name", "date" } );
-        addAnnotation( getChanges_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
         addAnnotation( getChanges_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
         addAnnotation( getChanges_Tissues(), source, new String[] { "kind", "attribute", "name", "tissues" } );
-        addAnnotation( getChanges_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
         addAnnotation( constructedAttributeEClass, source,
                 new String[] { "name", "tConstructedAttribute", "kind", "elementOnly" } );
         addAnnotation( getConstructedAttribute_SubDataAttribute(), source,
@@ -4968,11 +4829,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         addAnnotation( getNS_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
         addAnnotation( getNS_PublicationStage(), source,
                 new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getNS_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
         addAnnotation( getNS_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
         addAnnotation( getNS_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
         addAnnotation( getNS_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
-        addAnnotation( getNS_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
         addAnnotation( nsDocEClass, source, new String[] { "name", "tNSDoc", "kind", "elementOnly" } );
         addAnnotation( getNSDoc_Doc(), source,
                 new String[] { "kind", "element", "name", "Doc", "namespace", "##targetNamespace" } );
@@ -4980,11 +4839,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         addAnnotation( getNSDoc_Lang(), source, new String[] { "kind", "attribute", "name", "lang" } );
         addAnnotation( getNSDoc_PublicationStage(), source,
                 new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getNSDoc_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
         addAnnotation( getNSDoc_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
         addAnnotation( getNSDoc_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
         addAnnotation( getNSDoc_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
-        addAnnotation( getNSDoc_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
         addAnnotation( presenceConditionEClass, source,
                 new String[] { "name", "tPresenceCondition", "kind", "empty" } );
         addAnnotation( getPresenceCondition_Argument(), source,
@@ -5052,11 +4909,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         addAnnotation( getServiceNS_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
         addAnnotation( getServiceNS_PublicationStage(), source,
                 new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getServiceNS_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
         addAnnotation( getServiceNS_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
         addAnnotation( getServiceNS_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
         addAnnotation( getServiceNS_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
-        addAnnotation( getServiceNS_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
         addAnnotation( serviceNsUsageEClass, source,
                 new String[] { "name", "tServiceNsUsage", "kind", "elementOnly" } );
         addAnnotation( getServiceNsUsage_AppliesTo(), source,
@@ -5064,9 +4919,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         addAnnotation( getServiceNsUsage_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
         addAnnotation( getServiceNsUsage_PublicationStage(), source,
                 new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getServiceNsUsage_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
         addAnnotation( getServiceNsUsage_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
-        addAnnotation( getServiceNsUsage_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
         addAnnotation( serviceParameterEClass, source, new String[] { "name", "tServiceParameter", "kind", "empty" } );
         addAnnotation( getServiceParameter_DefaultValue(), source,
                 new String[] { "kind", "attribute", "name", "defaultValue" } );
@@ -5143,6 +4996,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 new String[] { "name", "tUndefinedAttributeTypeKind" } );
         addAnnotation( undefinedAttributeTypeKindObjectEDataType, source, new String[] { "name",
                 "tUndefinedAttributeTypeKind:Object", "baseType", "tUndefinedAttributeTypeKind" } );
+        addAnnotation( getNSDObjectWithVersionAndRelease_Release(), source,
+                new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getNSDObjectWithVersionAndRelease_Version(), source,
+                new String[] { "kind", "attribute", "name", "version" } );
     }
 
 } //NsdPackageImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
index aaa6e9057056047dc2216cb023df872bde48d889..75650fd3b1b96c38b800cd8f59513708d181edc8 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
@@ -22,6 +22,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviations;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraints;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
@@ -48,6 +49,8 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getVersion <em>Version</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getChanges <em>Changes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getFunctionalConstraints <em>Functional Constraints</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getPresenceConditions <em>Presence Conditions</em>}</li>
@@ -58,16 +61,72 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getUmlVersion <em>Uml Version</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @generated
  */
 public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
+    /**
+     * 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 cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
      * <!-- begin-user-doc -->
@@ -207,35 +266,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
      */
     protected boolean publicationStageESet;
 
-    /**
-     * 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 #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -305,35 +335,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
      */
     protected String umlVersion = UML_VERSION_EDEFAULT;
 
-    /**
-     * 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;
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1038,6 +1039,10 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_NS__RELEASE:
+            return getRelease();
+        case NsdPackage.SERVICE_NS__VERSION:
+            return getVersion();
         case NsdPackage.SERVICE_NS__CHANGES:
             return getChanges();
         case NsdPackage.SERVICE_NS__FUNCTIONAL_CONSTRAINTS:
@@ -1058,16 +1063,12 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             return getId();
         case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
             return getPublicationStage();
-        case NsdPackage.SERVICE_NS__RELEASE:
-            return getRelease();
         case NsdPackage.SERVICE_NS__REVISION:
             return getRevision();
         case NsdPackage.SERVICE_NS__UML_DATE:
             return getUmlDate();
         case NsdPackage.SERVICE_NS__UML_VERSION:
             return getUmlVersion();
-        case NsdPackage.SERVICE_NS__VERSION:
-            return getVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -1080,6 +1081,12 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_NS__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.SERVICE_NS__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
         case NsdPackage.SERVICE_NS__CHANGES:
             setChanges( ( Changes ) newValue );
             return;
@@ -1110,9 +1117,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
             setPublicationStage( ( PubStage ) newValue );
             return;
-        case NsdPackage.SERVICE_NS__RELEASE:
-            setRelease( ( Integer ) newValue );
-            return;
         case NsdPackage.SERVICE_NS__REVISION:
             setRevision( ( String ) newValue );
             return;
@@ -1122,9 +1126,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__UML_VERSION:
             setUmlVersion( ( String ) newValue );
             return;
-        case NsdPackage.SERVICE_NS__VERSION:
-            setVersion( ( Integer ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -1137,6 +1138,12 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_NS__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.SERVICE_NS__VERSION:
+            unsetVersion();
+            return;
         case NsdPackage.SERVICE_NS__CHANGES:
             setChanges( ( Changes ) null );
             return;
@@ -1167,9 +1174,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
             unsetPublicationStage();
             return;
-        case NsdPackage.SERVICE_NS__RELEASE:
-            unsetRelease();
-            return;
         case NsdPackage.SERVICE_NS__REVISION:
             unsetRevision();
             return;
@@ -1179,9 +1183,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__UML_VERSION:
             setUmlVersion( UML_VERSION_EDEFAULT );
             return;
-        case NsdPackage.SERVICE_NS__VERSION:
-            unsetVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -1194,6 +1195,10 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_NS__RELEASE:
+            return isSetRelease();
+        case NsdPackage.SERVICE_NS__VERSION:
+            return isSetVersion();
         case NsdPackage.SERVICE_NS__CHANGES:
             return changes != null;
         case NsdPackage.SERVICE_NS__FUNCTIONAL_CONSTRAINTS:
@@ -1214,20 +1219,56 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
         case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
             return isSetPublicationStage();
-        case NsdPackage.SERVICE_NS__RELEASE:
-            return isSetRelease();
         case NsdPackage.SERVICE_NS__REVISION:
             return isSetRevision();
         case NsdPackage.SERVICE_NS__UML_DATE:
             return UML_DATE_EDEFAULT == null ? umlDate != null : !UML_DATE_EDEFAULT.equals( umlDate );
         case NsdPackage.SERVICE_NS__UML_VERSION:
             return UML_VERSION_EDEFAULT == null ? umlVersion != null : !UML_VERSION_EDEFAULT.equals( umlVersion );
-        case NsdPackage.SERVICE_NS__VERSION:
-            return isSetVersion();
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_NS__RELEASE:
+                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+            case NsdPackage.SERVICE_NS__VERSION:
+                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+            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 == NSDObjectWithVersionAndRelease.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+                return NsdPackage.SERVICE_NS__RELEASE;
+            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+                return NsdPackage.SERVICE_NS__VERSION;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1238,7 +1279,17 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (descID: " );
+        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( ", descID: " );
         result.append( descID );
         result.append( ", id: " );
         result.append( id );
@@ -1247,11 +1298,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             result.append( publicationStage );
         else
             result.append( "<unset>" );
-        result.append( ", release: " );
-        if( releaseESet )
-            result.append( release );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
@@ -1261,11 +1307,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         result.append( umlDate );
         result.append( ", umlVersion: " );
         result.append( umlVersion );
-        result.append( ", version: " );
-        if( versionESet )
-            result.append( version );
-        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/ServiceNsUsageImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNsUsageImpl.java
index 41929f1506d35470767814a4be9e7b865e2ffe47..2f21152ef99f134100b608127ad29804a48609ab 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNsUsageImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNsUsageImpl.java
@@ -35,8 +35,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
@@ -51,14 +49,12 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getAppliesTo <em>Applies To</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements ServiceNsUsage {
+public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl implements ServiceNsUsage {
     /**
      * The cached value of the '{@link #getAppliesTo() <em>Applies To</em>}' containment reference list.
      * <!-- begin-user-doc -->
@@ -118,35 +114,6 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
      */
     protected boolean publicationStageESet;
 
-    /**
-     * 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 #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -176,35 +143,6 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
      */
     protected boolean revisionESet;
 
-    /**
-     * 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;
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -313,56 +251,6 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
         return publicationStageESet;
     }
 
-    /**
-     * <!-- 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.SERVICE_NS_USAGE__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.SERVICE_NS_USAGE__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public boolean isSetRelease() {
-        return releaseESet;
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -413,56 +301,6 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
         return revisionESet;
     }
 
-    /**
-     * <!-- 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.SERVICE_NS_USAGE__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.SERVICE_NS_USAGE__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public boolean isSetVersion() {
-        return versionESet;
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -491,12 +329,8 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
             return getId();
         case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
             return getPublicationStage();
-        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
-            return getRelease();
         case NsdPackage.SERVICE_NS_USAGE__REVISION:
             return getRevision();
-        case NsdPackage.SERVICE_NS_USAGE__VERSION:
-            return getVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -520,15 +354,9 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
         case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
             setPublicationStage( ( PubStage ) newValue );
             return;
-        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
-            setRelease( ( Integer ) newValue );
-            return;
         case NsdPackage.SERVICE_NS_USAGE__REVISION:
             setRevision( ( String ) newValue );
             return;
-        case NsdPackage.SERVICE_NS_USAGE__VERSION:
-            setVersion( ( Integer ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -550,15 +378,9 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
         case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
             unsetPublicationStage();
             return;
-        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
-            unsetRelease();
-            return;
         case NsdPackage.SERVICE_NS_USAGE__REVISION:
             unsetRevision();
             return;
-        case NsdPackage.SERVICE_NS_USAGE__VERSION:
-            unsetVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -577,12 +399,8 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
             return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
         case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
             return isSetPublicationStage();
-        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
-            return isSetRelease();
         case NsdPackage.SERVICE_NS_USAGE__REVISION:
             return isSetRevision();
-        case NsdPackage.SERVICE_NS_USAGE__VERSION:
-            return isSetVersion();
         }
         return super.eIsSet( featureID );
     }
@@ -604,21 +422,11 @@ public class ServiceNsUsageImpl extends MinimalEObjectImpl.Container implements
             result.append( publicationStage );
         else
             result.append( "<unset>" );
-        result.append( ", release: " );
-        if( releaseESet )
-            result.append( release );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
         else
             result.append( "<unset>" );
-        result.append( ", version: " );
-        if( versionESet )
-            result.append( version );
-        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/util/NsdAdapterFactory.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdAdapterFactory.java
index 49dc7141776a73e0a147604e7a88046962fd957a..5ab53687ed2a3e4664692d3d9a7d8eacb9c5e130 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
@@ -333,6 +333,11 @@ public class NsdAdapterFactory extends AdapterFactoryImpl {
             return createTitledClassAdapter();
         }
 
+        @Override
+        public Adapter caseNSDObjectWithVersionAndRelease( NSDObjectWithVersionAndRelease object ) {
+            return createNSDObjectWithVersionAndReleaseAdapter();
+        }
+
         @Override
         public Adapter defaultCase( EObject object ) {
             return createEObjectAdapter();
@@ -1052,6 +1057,20 @@ public class NsdAdapterFactory extends AdapterFactoryImpl {
         return null;
     }
 
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease <em>NSD Object With Version And Release</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.iec61850.nsd.NSDObjectWithVersionAndRelease
+     * @generated
+     */
+    public Adapter createNSDObjectWithVersionAndReleaseAdapter() {
+        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/NsdSwitch.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdSwitch.java
index c0beba6ba8accbd7530644cdf5a909e2767d78de..1d6b61ddeaf37847131338e5b5786deffe30211d 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
@@ -86,12 +86,14 @@ public class NsdSwitch< T > extends Switch< T > {
         case NsdPackage.APPLIES_TO_TYPE: {
             AppliesToType appliesToType = ( AppliesToType ) theEObject;
             T result = caseAppliesToType( appliesToType );
+            if( result == null ) result = caseNSDObjectWithVersionAndRelease( appliesToType );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.DEPENDS_ON_TYPE: {
             DependsOnType dependsOnType = ( DependsOnType ) theEObject;
             T result = caseDependsOnType( dependsOnType );
+            if( result == null ) result = caseNSDObjectWithVersionAndRelease( dependsOnType );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -178,6 +180,7 @@ public class NsdSwitch< T > extends Switch< T > {
         case NsdPackage.CHANGES: {
             Changes changes = ( Changes ) theEObject;
             T result = caseChanges( changes );
+            if( result == null ) result = caseNSDObjectWithVersionAndRelease( changes );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -303,6 +306,7 @@ public class NsdSwitch< T > extends Switch< T > {
             NS ns = ( NS ) theEObject;
             T result = caseNS( ns );
             if( result == null ) result = caseCopyrighted( ns );
+            if( result == null ) result = caseNSDObjectWithVersionAndRelease( ns );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -310,6 +314,7 @@ public class NsdSwitch< T > extends Switch< T > {
             NSDoc nsDoc = ( NSDoc ) theEObject;
             T result = caseNSDoc( nsDoc );
             if( result == null ) result = caseCopyrighted( nsDoc );
+            if( result == null ) result = caseNSDObjectWithVersionAndRelease( nsDoc );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -363,12 +368,14 @@ public class NsdSwitch< T > extends Switch< T > {
             ServiceNS serviceNS = ( ServiceNS ) theEObject;
             T result = caseServiceNS( serviceNS );
             if( result == null ) result = caseCopyrighted( serviceNS );
+            if( result == null ) result = caseNSDObjectWithVersionAndRelease( serviceNS );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.SERVICE_NS_USAGE: {
             ServiceNsUsage serviceNsUsage = ( ServiceNsUsage ) theEObject;
             T result = caseServiceNsUsage( serviceNsUsage );
+            if( result == null ) result = caseNSDObjectWithVersionAndRelease( serviceNsUsage );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -412,6 +419,12 @@ public class NsdSwitch< T > extends Switch< T > {
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE: {
+            NSDObjectWithVersionAndRelease nsdObjectWithVersionAndRelease = ( NSDObjectWithVersionAndRelease ) theEObject;
+            T result = caseNSDObjectWithVersionAndRelease( nsdObjectWithVersionAndRelease );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
         default:
             return defaultCase( theEObject );
         }
@@ -1167,6 +1180,21 @@ public class NsdSwitch< T > extends Switch< T > {
         return null;
     }
 
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>NSD Object With Version And Release</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>NSD Object With Version And Release</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseNSDObjectWithVersionAndRelease( NSDObjectWithVersionAndRelease 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 5cef92ecaa256b07e71a8fb24398a56e136fe60f..e3d00b4da7abcc4ed8d8c34c6eac58e51e4d940e 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
@@ -206,6 +206,9 @@ public class NsdValidator extends EObjectValidator {
             return validateSubDataObject( ( SubDataObject ) value, diagnostics, context );
         case NsdPackage.TITLED_CLASS:
             return validateTitledClass( ( TitledClass ) value, diagnostics, context );
+        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE:
+            return validateNSDObjectWithVersionAndRelease( ( NSDObjectWithVersionAndRelease ) value, diagnostics,
+                    context );
         case NsdPackage.ACSI_SERVICES_KIND:
             return validateACSIServicesKind( ( ACSIServicesKind ) value, diagnostics, context );
         case NsdPackage.CB_KIND:
@@ -728,6 +731,17 @@ public class NsdValidator extends EObjectValidator {
         return validate_EveryDefaultConstraint( titledClass, diagnostics, context );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateNSDObjectWithVersionAndRelease(
+            NSDObjectWithVersionAndRelease nsdObjectWithVersionAndRelease, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( nsdObjectWithVersionAndRelease, diagnostics, context );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->