diff --git a/tools.descartes.dni.core/model/DNIMM3.xcore b/tools.descartes.dni.core/model/DNIMM3.xcore
index b138be7aaa8ced3e50a9e5db8260921b130ece21..b5d9a87836a135c28038bb3cefea52162d6e01ac 100644
--- a/tools.descartes.dni.core/model/DNIMM3.xcore
+++ b/tools.descartes.dni.core/model/DNIMM3.xcore
@@ -2,9 +2,8 @@
 @Ecore(invocationDelegates="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
 	settingDelegates="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
 	validationDelegates="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot")
-@GenModel(modelDirectory="/tools.descartes.dni.core/src",
-	editDirectory="/tools.descartes.dni.core/src", editorDirectory="/tools.descartes.dni.core/src",
-	fileExtensions="dni", prefix="DNI")
+@GenModel(modelDirectory="/tools.descartes.dni.core/src", editDirectory="/tools.descartes.dni.core/src",
+	editorDirectory="/tools.descartes.dni.core/src", fileExtensions="dni", prefix="DNI")
 package tools.descartes.dni.dnimm3
 
 import org.eclipse.emf.ecore.util.EcoreUtil
@@ -433,7 +432,7 @@ class EntityTypes {
 	contains ITypedEntity[] types
 }
 
-interface ITypedEntity extends NamedElement {
+interface ITypedEntity extends NamedElement, Identifier {
 }
 
 class NodeType extends ITypedEntity {
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
index 227bc10da23e0e4773471b09fd24cc18945031d3..56bfef335e7a258d3489075f45487c11203c8f17 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
@@ -3896,6 +3896,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int ITYPED_ENTITY__DESCRIPTION = NAMED_ELEMENT__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ITYPED_ENTITY__UID = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ITYPED_ENTITY__UID_GENERATED = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
 	/**
 	 * The number of structural features of the '<em>ITyped Entity</em>' class.
 	 * <!-- begin-user-doc -->
@@ -3903,7 +3921,7 @@ public interface DNIPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ITYPED_ENTITY_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 0;
+	int ITYPED_ENTITY_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of operations of the '<em>ITyped Entity</em>' class.
@@ -3942,6 +3960,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int NODE_TYPE__DESCRIPTION = ITYPED_ENTITY__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NODE_TYPE__UID = ITYPED_ENTITY__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NODE_TYPE__UID_GENERATED = ITYPED_ENTITY__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Entities</b></em>' reference list.
 	 * <!-- begin-user-doc -->
@@ -3997,6 +4033,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int END_PERFORMANCE_TYPE__DESCRIPTION = ITYPED_ENTITY__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_PERFORMANCE_TYPE__UID = ITYPED_ENTITY__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_PERFORMANCE_TYPE__UID_GENERATED = ITYPED_ENTITY__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Entities</b></em>' reference list.
 	 * <!-- begin-user-doc -->
@@ -4052,6 +4106,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int INTERMEDIATE_PERFORMANCE_TYPE__DESCRIPTION = ITYPED_ENTITY__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_PERFORMANCE_TYPE__UID = ITYPED_ENTITY__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_PERFORMANCE_TYPE__UID_GENERATED = ITYPED_ENTITY__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Entities</b></em>' reference list.
 	 * <!-- begin-user-doc -->
@@ -4107,6 +4179,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int SDN_NODE_PERFORMANCE_TYPE__DESCRIPTION = ITYPED_ENTITY__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SDN_NODE_PERFORMANCE_TYPE__UID = ITYPED_ENTITY__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SDN_NODE_PERFORMANCE_TYPE__UID_GENERATED = ITYPED_ENTITY__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Entities</b></em>' reference list.
 	 * <!-- begin-user-doc -->
@@ -4162,6 +4252,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int NETWORK_INTERFACE_TYPE__DESCRIPTION = ITYPED_ENTITY__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NETWORK_INTERFACE_TYPE__UID = ITYPED_ENTITY__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NETWORK_INTERFACE_TYPE__UID_GENERATED = ITYPED_ENTITY__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Entities</b></em>' reference list.
 	 * <!-- begin-user-doc -->
@@ -4217,6 +4325,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int NETWORK_INTERFACE_PERFORMANCE_TYPE__DESCRIPTION = ITYPED_ENTITY__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NETWORK_INTERFACE_PERFORMANCE_TYPE__UID = ITYPED_ENTITY__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NETWORK_INTERFACE_PERFORMANCE_TYPE__UID_GENERATED = ITYPED_ENTITY__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Entities</b></em>' reference list.
 	 * <!-- begin-user-doc -->
@@ -4272,6 +4398,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int LINK_TYPE__DESCRIPTION = ITYPED_ENTITY__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINK_TYPE__UID = ITYPED_ENTITY__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINK_TYPE__UID_GENERATED = ITYPED_ENTITY__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Entities</b></em>' reference list.
 	 * <!-- begin-user-doc -->
@@ -4327,6 +4471,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int LINK_PERFORMANCE_TYPE__DESCRIPTION = ITYPED_ENTITY__DESCRIPTION;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINK_PERFORMANCE_TYPE__UID = ITYPED_ENTITY__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINK_PERFORMANCE_TYPE__UID_GENERATED = ITYPED_ENTITY__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Entities</b></em>' reference list.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/ITypedEntity.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/ITypedEntity.java
index aaee1fc7fe9c9113bdd877092e4d9c99a14eda06..4e943ff43b05d1a160a829c8de566ba406105ff3 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/ITypedEntity.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/ITypedEntity.java
@@ -13,5 +13,5 @@ package tools.descartes.dni.dnimm3;
  * @model interface="true" abstract="true"
  * @generated
  */
-public interface ITypedEntity extends NamedElement {
+public interface ITypedEntity extends NamedElement, Identifier {
 } // ITypedEntity
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
index 760c16f3e4bb640f926c462949ed0380c2340989..50aa37a8629f5a64a151d1dbc57b42e9a5fa7af2 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
@@ -3075,6 +3075,7 @@ public class DNIPackageImpl extends EPackageImpl implements DNIPackage {
 		discreteFunctionEClass.getESuperTypes().add(this.getFunction());
 		exponentialFunctionEClass.getESuperTypes().add(this.getFunction());
 		iTypedEntityEClass.getESuperTypes().add(this.getNamedElement());
+		iTypedEntityEClass.getESuperTypes().add(this.getIdentifier());
 		nodeTypeEClass.getESuperTypes().add(this.getITypedEntity());
 		endPerformanceTypeEClass.getESuperTypes().add(this.getITypedEntity());
 		intermediatePerformanceTypeEClass.getESuperTypes().add(this.getITypedEntity());
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceTypeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceTypeImpl.java
index 9ac95d4e70a0e8f3749048c6b09c7c622f58a58a..388baf6f097ed4a73d6175c525a1d5cd84e0fe56 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceTypeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceTypeImpl.java
@@ -16,11 +16,13 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.EndPerformance;
 import tools.descartes.dni.dnimm3.EndPerformanceType;
+import tools.descartes.dni.dnimm3.Identifier;
 
 /**
  * <!-- begin-user-doc -->
@@ -32,6 +34,8 @@ import tools.descartes.dni.dnimm3.EndPerformanceType;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.EndPerformanceTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.EndPerformanceTypeImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.EndPerformanceTypeImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.EndPerformanceTypeImpl#getUid_generated <em>Uid generated</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.EndPerformanceTypeImpl#getEntities <em>Entities</em>}</li>
  * </ul>
  *
@@ -78,6 +82,45 @@ public class EndPerformanceTypeImpl extends MinimalEObjectImpl.Container impleme
 	 */
 	protected String description = DESCRIPTION_EDEFAULT;
 
+	/**
+	 * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uid = UID_EDEFAULT;
+
+	/**
+	 * This is true if the Uid attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uidESet;
+
+	/**
+	 * The default value of the '{@link #getUid_generated() <em>Uid generated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid_generated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_GENERATED_EDEFAULT = null;
+
 	/**
 	 * The cached value of the '{@link #getEntities() <em>Entities</em>}' reference list.
 	 * <!-- begin-user-doc -->
@@ -149,6 +192,64 @@ public class EndPerformanceTypeImpl extends MinimalEObjectImpl.Container impleme
 			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.END_PERFORMANCE_TYPE__DESCRIPTION, oldDescription, description));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid() {
+		return uid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUid(String newUid) {
+		String oldUid = uid;
+		uid = newUid;
+		boolean oldUidESet = uidESet;
+		uidESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.END_PERFORMANCE_TYPE__UID, oldUid, uid, !oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetUid() {
+		String oldUid = uid;
+		boolean oldUidESet = uidESet;
+		uid = UID_EDEFAULT;
+		uidESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIPackage.END_PERFORMANCE_TYPE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetUid() {
+		return uidESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid_generated() {
+		if (((this.getUid() == null) || this.getUid().isEmpty())) {
+			this.setUid(EcoreUtil.generateUUID().toString());
+		}
+		return this.getUid();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -202,6 +303,10 @@ public class EndPerformanceTypeImpl extends MinimalEObjectImpl.Container impleme
 				return getName();
 			case DNIPackage.END_PERFORMANCE_TYPE__DESCRIPTION:
 				return getDescription();
+			case DNIPackage.END_PERFORMANCE_TYPE__UID:
+				return getUid();
+			case DNIPackage.END_PERFORMANCE_TYPE__UID_GENERATED:
+				return getUid_generated();
 			case DNIPackage.END_PERFORMANCE_TYPE__ENTITIES:
 				return getEntities();
 		}
@@ -223,6 +328,9 @@ public class EndPerformanceTypeImpl extends MinimalEObjectImpl.Container impleme
 			case DNIPackage.END_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription((String)newValue);
 				return;
+			case DNIPackage.END_PERFORMANCE_TYPE__UID:
+				setUid((String)newValue);
+				return;
 			case DNIPackage.END_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				getEntities().addAll((Collection<? extends EndPerformance>)newValue);
@@ -245,6 +353,9 @@ public class EndPerformanceTypeImpl extends MinimalEObjectImpl.Container impleme
 			case DNIPackage.END_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
+			case DNIPackage.END_PERFORMANCE_TYPE__UID:
+				unsetUid();
+				return;
 			case DNIPackage.END_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				return;
@@ -264,12 +375,50 @@ public class EndPerformanceTypeImpl extends MinimalEObjectImpl.Container impleme
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case DNIPackage.END_PERFORMANCE_TYPE__DESCRIPTION:
 				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+			case DNIPackage.END_PERFORMANCE_TYPE__UID:
+				return isSetUid();
+			case DNIPackage.END_PERFORMANCE_TYPE__UID_GENERATED:
+				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
 			case DNIPackage.END_PERFORMANCE_TYPE__ENTITIES:
 				return entities != null && !entities.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == Identifier.class) {
+			switch (derivedFeatureID) {
+				case DNIPackage.END_PERFORMANCE_TYPE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIPackage.END_PERFORMANCE_TYPE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				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 == Identifier.class) {
+			switch (baseFeatureID) {
+				case DNIPackage.IDENTIFIER__UID: return DNIPackage.END_PERFORMANCE_TYPE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIPackage.END_PERFORMANCE_TYPE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -284,6 +433,8 @@ public class EndPerformanceTypeImpl extends MinimalEObjectImpl.Container impleme
 		result.append(name);
 		result.append(", description: ");
 		result.append(description);
+		result.append(", uid: ");
+		if (uidESet) result.append(uid); else result.append("<unset>");
 		result.append(')');
 		return result.toString();
 	}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceTypeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceTypeImpl.java
index ca0ab1b0372e66b9d1971ef8c9c66c9fb428e609..3da4144c0869d177a73e7817d5f3503b6d5dcafe 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceTypeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceTypeImpl.java
@@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
+import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.IntermediatePerformance;
 import tools.descartes.dni.dnimm3.IntermediatePerformanceType;
 
@@ -32,6 +34,8 @@ import tools.descartes.dni.dnimm3.IntermediatePerformanceType;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.IntermediatePerformanceTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.IntermediatePerformanceTypeImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.IntermediatePerformanceTypeImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.IntermediatePerformanceTypeImpl#getUid_generated <em>Uid generated</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.IntermediatePerformanceTypeImpl#getEntities <em>Entities</em>}</li>
  * </ul>
  *
@@ -78,6 +82,45 @@ public class IntermediatePerformanceTypeImpl extends MinimalEObjectImpl.Containe
 	 */
 	protected String description = DESCRIPTION_EDEFAULT;
 
+	/**
+	 * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uid = UID_EDEFAULT;
+
+	/**
+	 * This is true if the Uid attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uidESet;
+
+	/**
+	 * The default value of the '{@link #getUid_generated() <em>Uid generated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid_generated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_GENERATED_EDEFAULT = null;
+
 	/**
 	 * The cached value of the '{@link #getEntities() <em>Entities</em>}' reference list.
 	 * <!-- begin-user-doc -->
@@ -149,6 +192,64 @@ public class IntermediatePerformanceTypeImpl extends MinimalEObjectImpl.Containe
 			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__DESCRIPTION, oldDescription, description));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid() {
+		return uid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUid(String newUid) {
+		String oldUid = uid;
+		uid = newUid;
+		boolean oldUidESet = uidESet;
+		uidESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID, oldUid, uid, !oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetUid() {
+		String oldUid = uid;
+		boolean oldUidESet = uidESet;
+		uid = UID_EDEFAULT;
+		uidESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetUid() {
+		return uidESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid_generated() {
+		if (((this.getUid() == null) || this.getUid().isEmpty())) {
+			this.setUid(EcoreUtil.generateUUID().toString());
+		}
+		return this.getUid();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -202,6 +303,10 @@ public class IntermediatePerformanceTypeImpl extends MinimalEObjectImpl.Containe
 				return getName();
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__DESCRIPTION:
 				return getDescription();
+			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID:
+				return getUid();
+			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID_GENERATED:
+				return getUid_generated();
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__ENTITIES:
 				return getEntities();
 		}
@@ -223,6 +328,9 @@ public class IntermediatePerformanceTypeImpl extends MinimalEObjectImpl.Containe
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription((String)newValue);
 				return;
+			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID:
+				setUid((String)newValue);
+				return;
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				getEntities().addAll((Collection<? extends IntermediatePerformance>)newValue);
@@ -245,6 +353,9 @@ public class IntermediatePerformanceTypeImpl extends MinimalEObjectImpl.Containe
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
+			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID:
+				unsetUid();
+				return;
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				return;
@@ -264,12 +375,50 @@ public class IntermediatePerformanceTypeImpl extends MinimalEObjectImpl.Containe
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__DESCRIPTION:
 				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID:
+				return isSetUid();
+			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID_GENERATED:
+				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__ENTITIES:
 				return entities != null && !entities.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == Identifier.class) {
+			switch (derivedFeatureID) {
+				case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				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 == Identifier.class) {
+			switch (baseFeatureID) {
+				case DNIPackage.IDENTIFIER__UID: return DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -284,6 +433,8 @@ public class IntermediatePerformanceTypeImpl extends MinimalEObjectImpl.Containe
 		result.append(name);
 		result.append(", description: ");
 		result.append(description);
+		result.append(", uid: ");
+		if (uidESet) result.append(uid); else result.append("<unset>");
 		result.append(')');
 		return result.toString();
 	}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/LinkPerformanceTypeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/LinkPerformanceTypeImpl.java
index c3ab6aea115e07f69cf92e9ab77bae311b3c23de..eb9f8753fe53cf4bcab100add8b81fda4f4ee1fa 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/LinkPerformanceTypeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/LinkPerformanceTypeImpl.java
@@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
+import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.LinkPerformanceType;
 import tools.descartes.dni.dnimm3.PerformanceLink;
 
@@ -32,6 +34,8 @@ import tools.descartes.dni.dnimm3.PerformanceLink;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkPerformanceTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkPerformanceTypeImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkPerformanceTypeImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkPerformanceTypeImpl#getUid_generated <em>Uid generated</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkPerformanceTypeImpl#getEntities <em>Entities</em>}</li>
  * </ul>
  *
@@ -78,6 +82,45 @@ public class LinkPerformanceTypeImpl extends MinimalEObjectImpl.Container implem
 	 */
 	protected String description = DESCRIPTION_EDEFAULT;
 
+	/**
+	 * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uid = UID_EDEFAULT;
+
+	/**
+	 * This is true if the Uid attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uidESet;
+
+	/**
+	 * The default value of the '{@link #getUid_generated() <em>Uid generated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid_generated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_GENERATED_EDEFAULT = null;
+
 	/**
 	 * The cached value of the '{@link #getEntities() <em>Entities</em>}' reference list.
 	 * <!-- begin-user-doc -->
@@ -149,6 +192,64 @@ public class LinkPerformanceTypeImpl extends MinimalEObjectImpl.Container implem
 			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.LINK_PERFORMANCE_TYPE__DESCRIPTION, oldDescription, description));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid() {
+		return uid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUid(String newUid) {
+		String oldUid = uid;
+		uid = newUid;
+		boolean oldUidESet = uidESet;
+		uidESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.LINK_PERFORMANCE_TYPE__UID, oldUid, uid, !oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetUid() {
+		String oldUid = uid;
+		boolean oldUidESet = uidESet;
+		uid = UID_EDEFAULT;
+		uidESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIPackage.LINK_PERFORMANCE_TYPE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetUid() {
+		return uidESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid_generated() {
+		if (((this.getUid() == null) || this.getUid().isEmpty())) {
+			this.setUid(EcoreUtil.generateUUID().toString());
+		}
+		return this.getUid();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -202,6 +303,10 @@ public class LinkPerformanceTypeImpl extends MinimalEObjectImpl.Container implem
 				return getName();
 			case DNIPackage.LINK_PERFORMANCE_TYPE__DESCRIPTION:
 				return getDescription();
+			case DNIPackage.LINK_PERFORMANCE_TYPE__UID:
+				return getUid();
+			case DNIPackage.LINK_PERFORMANCE_TYPE__UID_GENERATED:
+				return getUid_generated();
 			case DNIPackage.LINK_PERFORMANCE_TYPE__ENTITIES:
 				return getEntities();
 		}
@@ -223,6 +328,9 @@ public class LinkPerformanceTypeImpl extends MinimalEObjectImpl.Container implem
 			case DNIPackage.LINK_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription((String)newValue);
 				return;
+			case DNIPackage.LINK_PERFORMANCE_TYPE__UID:
+				setUid((String)newValue);
+				return;
 			case DNIPackage.LINK_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				getEntities().addAll((Collection<? extends PerformanceLink>)newValue);
@@ -245,6 +353,9 @@ public class LinkPerformanceTypeImpl extends MinimalEObjectImpl.Container implem
 			case DNIPackage.LINK_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
+			case DNIPackage.LINK_PERFORMANCE_TYPE__UID:
+				unsetUid();
+				return;
 			case DNIPackage.LINK_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				return;
@@ -264,12 +375,50 @@ public class LinkPerformanceTypeImpl extends MinimalEObjectImpl.Container implem
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case DNIPackage.LINK_PERFORMANCE_TYPE__DESCRIPTION:
 				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+			case DNIPackage.LINK_PERFORMANCE_TYPE__UID:
+				return isSetUid();
+			case DNIPackage.LINK_PERFORMANCE_TYPE__UID_GENERATED:
+				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
 			case DNIPackage.LINK_PERFORMANCE_TYPE__ENTITIES:
 				return entities != null && !entities.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == Identifier.class) {
+			switch (derivedFeatureID) {
+				case DNIPackage.LINK_PERFORMANCE_TYPE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIPackage.LINK_PERFORMANCE_TYPE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				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 == Identifier.class) {
+			switch (baseFeatureID) {
+				case DNIPackage.IDENTIFIER__UID: return DNIPackage.LINK_PERFORMANCE_TYPE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIPackage.LINK_PERFORMANCE_TYPE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -284,6 +433,8 @@ public class LinkPerformanceTypeImpl extends MinimalEObjectImpl.Container implem
 		result.append(name);
 		result.append(", description: ");
 		result.append(description);
+		result.append(", uid: ");
+		if (uidESet) result.append(uid); else result.append("<unset>");
 		result.append(')');
 		return result.toString();
 	}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/LinkTypeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/LinkTypeImpl.java
index 02daa55c94050b3a46f5b64c55bb816a8ed54185..5ca4c2bf1bca09dba02dcfa2d4b3a9538d2bdaff 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/LinkTypeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/LinkTypeImpl.java
@@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
+import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.Link;
 import tools.descartes.dni.dnimm3.LinkType;
 
@@ -32,6 +34,8 @@ import tools.descartes.dni.dnimm3.LinkType;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkTypeImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkTypeImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkTypeImpl#getUid_generated <em>Uid generated</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.LinkTypeImpl#getEntities <em>Entities</em>}</li>
  * </ul>
  *
@@ -78,6 +82,45 @@ public class LinkTypeImpl extends MinimalEObjectImpl.Container implements LinkTy
 	 */
 	protected String description = DESCRIPTION_EDEFAULT;
 
+	/**
+	 * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uid = UID_EDEFAULT;
+
+	/**
+	 * This is true if the Uid attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uidESet;
+
+	/**
+	 * The default value of the '{@link #getUid_generated() <em>Uid generated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid_generated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_GENERATED_EDEFAULT = null;
+
 	/**
 	 * The cached value of the '{@link #getEntities() <em>Entities</em>}' reference list.
 	 * <!-- begin-user-doc -->
@@ -149,6 +192,64 @@ public class LinkTypeImpl extends MinimalEObjectImpl.Container implements LinkTy
 			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.LINK_TYPE__DESCRIPTION, oldDescription, description));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid() {
+		return uid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUid(String newUid) {
+		String oldUid = uid;
+		uid = newUid;
+		boolean oldUidESet = uidESet;
+		uidESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.LINK_TYPE__UID, oldUid, uid, !oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetUid() {
+		String oldUid = uid;
+		boolean oldUidESet = uidESet;
+		uid = UID_EDEFAULT;
+		uidESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIPackage.LINK_TYPE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetUid() {
+		return uidESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid_generated() {
+		if (((this.getUid() == null) || this.getUid().isEmpty())) {
+			this.setUid(EcoreUtil.generateUUID().toString());
+		}
+		return this.getUid();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -202,6 +303,10 @@ public class LinkTypeImpl extends MinimalEObjectImpl.Container implements LinkTy
 				return getName();
 			case DNIPackage.LINK_TYPE__DESCRIPTION:
 				return getDescription();
+			case DNIPackage.LINK_TYPE__UID:
+				return getUid();
+			case DNIPackage.LINK_TYPE__UID_GENERATED:
+				return getUid_generated();
 			case DNIPackage.LINK_TYPE__ENTITIES:
 				return getEntities();
 		}
@@ -223,6 +328,9 @@ public class LinkTypeImpl extends MinimalEObjectImpl.Container implements LinkTy
 			case DNIPackage.LINK_TYPE__DESCRIPTION:
 				setDescription((String)newValue);
 				return;
+			case DNIPackage.LINK_TYPE__UID:
+				setUid((String)newValue);
+				return;
 			case DNIPackage.LINK_TYPE__ENTITIES:
 				getEntities().clear();
 				getEntities().addAll((Collection<? extends Link>)newValue);
@@ -245,6 +353,9 @@ public class LinkTypeImpl extends MinimalEObjectImpl.Container implements LinkTy
 			case DNIPackage.LINK_TYPE__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
+			case DNIPackage.LINK_TYPE__UID:
+				unsetUid();
+				return;
 			case DNIPackage.LINK_TYPE__ENTITIES:
 				getEntities().clear();
 				return;
@@ -264,12 +375,50 @@ public class LinkTypeImpl extends MinimalEObjectImpl.Container implements LinkTy
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case DNIPackage.LINK_TYPE__DESCRIPTION:
 				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+			case DNIPackage.LINK_TYPE__UID:
+				return isSetUid();
+			case DNIPackage.LINK_TYPE__UID_GENERATED:
+				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
 			case DNIPackage.LINK_TYPE__ENTITIES:
 				return entities != null && !entities.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == Identifier.class) {
+			switch (derivedFeatureID) {
+				case DNIPackage.LINK_TYPE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIPackage.LINK_TYPE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				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 == Identifier.class) {
+			switch (baseFeatureID) {
+				case DNIPackage.IDENTIFIER__UID: return DNIPackage.LINK_TYPE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIPackage.LINK_TYPE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -284,6 +433,8 @@ public class LinkTypeImpl extends MinimalEObjectImpl.Container implements LinkTy
 		result.append(name);
 		result.append(", description: ");
 		result.append(description);
+		result.append(", uid: ");
+		if (uidESet) result.append(uid); else result.append("<unset>");
 		result.append(')');
 		return result.toString();
 	}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NetworkInterfacePerformanceTypeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NetworkInterfacePerformanceTypeImpl.java
index ca9d3ac334a3df296824a5cb1659dd68c1ce3182..b72707328a1d9bb573af467ad3eb50475f548dea 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NetworkInterfacePerformanceTypeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NetworkInterfacePerformanceTypeImpl.java
@@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
+import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.NetworkInterfacePerformanceType;
 import tools.descartes.dni.dnimm3.PerformanceNetworkInterface;
 
@@ -32,6 +34,8 @@ import tools.descartes.dni.dnimm3.PerformanceNetworkInterface;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfacePerformanceTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfacePerformanceTypeImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfacePerformanceTypeImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfacePerformanceTypeImpl#getUid_generated <em>Uid generated</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfacePerformanceTypeImpl#getEntities <em>Entities</em>}</li>
  * </ul>
  *
@@ -78,6 +82,45 @@ public class NetworkInterfacePerformanceTypeImpl extends MinimalEObjectImpl.Cont
 	 */
 	protected String description = DESCRIPTION_EDEFAULT;
 
+	/**
+	 * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uid = UID_EDEFAULT;
+
+	/**
+	 * This is true if the Uid attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uidESet;
+
+	/**
+	 * The default value of the '{@link #getUid_generated() <em>Uid generated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid_generated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_GENERATED_EDEFAULT = null;
+
 	/**
 	 * The cached value of the '{@link #getEntities() <em>Entities</em>}' reference list.
 	 * <!-- begin-user-doc -->
@@ -149,6 +192,64 @@ public class NetworkInterfacePerformanceTypeImpl extends MinimalEObjectImpl.Cont
 			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__DESCRIPTION, oldDescription, description));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid() {
+		return uid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUid(String newUid) {
+		String oldUid = uid;
+		uid = newUid;
+		boolean oldUidESet = uidESet;
+		uidESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID, oldUid, uid, !oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetUid() {
+		String oldUid = uid;
+		boolean oldUidESet = uidESet;
+		uid = UID_EDEFAULT;
+		uidESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetUid() {
+		return uidESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid_generated() {
+		if (((this.getUid() == null) || this.getUid().isEmpty())) {
+			this.setUid(EcoreUtil.generateUUID().toString());
+		}
+		return this.getUid();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -202,6 +303,10 @@ public class NetworkInterfacePerformanceTypeImpl extends MinimalEObjectImpl.Cont
 				return getName();
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__DESCRIPTION:
 				return getDescription();
+			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID:
+				return getUid();
+			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID_GENERATED:
+				return getUid_generated();
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__ENTITIES:
 				return getEntities();
 		}
@@ -223,6 +328,9 @@ public class NetworkInterfacePerformanceTypeImpl extends MinimalEObjectImpl.Cont
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription((String)newValue);
 				return;
+			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID:
+				setUid((String)newValue);
+				return;
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				getEntities().addAll((Collection<? extends PerformanceNetworkInterface>)newValue);
@@ -245,6 +353,9 @@ public class NetworkInterfacePerformanceTypeImpl extends MinimalEObjectImpl.Cont
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
+			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID:
+				unsetUid();
+				return;
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				return;
@@ -264,12 +375,50 @@ public class NetworkInterfacePerformanceTypeImpl extends MinimalEObjectImpl.Cont
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__DESCRIPTION:
 				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID:
+				return isSetUid();
+			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID_GENERATED:
+				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__ENTITIES:
 				return entities != null && !entities.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == Identifier.class) {
+			switch (derivedFeatureID) {
+				case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				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 == Identifier.class) {
+			switch (baseFeatureID) {
+				case DNIPackage.IDENTIFIER__UID: return DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -284,6 +433,8 @@ public class NetworkInterfacePerformanceTypeImpl extends MinimalEObjectImpl.Cont
 		result.append(name);
 		result.append(", description: ");
 		result.append(description);
+		result.append(", uid: ");
+		if (uidESet) result.append(uid); else result.append("<unset>");
 		result.append(')');
 		return result.toString();
 	}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NetworkInterfaceTypeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NetworkInterfaceTypeImpl.java
index 71491b55616b9993ff749e125ca6d023b1055272..32c2033dfa96546b06abfd27b2b2c590257cfe57 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NetworkInterfaceTypeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NetworkInterfaceTypeImpl.java
@@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
+import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.NetworkInterface;
 import tools.descartes.dni.dnimm3.NetworkInterfaceType;
 
@@ -32,6 +34,8 @@ import tools.descartes.dni.dnimm3.NetworkInterfaceType;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfaceTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfaceTypeImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfaceTypeImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfaceTypeImpl#getUid_generated <em>Uid generated</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NetworkInterfaceTypeImpl#getEntities <em>Entities</em>}</li>
  * </ul>
  *
@@ -78,6 +82,45 @@ public class NetworkInterfaceTypeImpl extends MinimalEObjectImpl.Container imple
 	 */
 	protected String description = DESCRIPTION_EDEFAULT;
 
+	/**
+	 * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uid = UID_EDEFAULT;
+
+	/**
+	 * This is true if the Uid attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uidESet;
+
+	/**
+	 * The default value of the '{@link #getUid_generated() <em>Uid generated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid_generated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_GENERATED_EDEFAULT = null;
+
 	/**
 	 * The cached value of the '{@link #getEntities() <em>Entities</em>}' reference list.
 	 * <!-- begin-user-doc -->
@@ -149,6 +192,64 @@ public class NetworkInterfaceTypeImpl extends MinimalEObjectImpl.Container imple
 			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.NETWORK_INTERFACE_TYPE__DESCRIPTION, oldDescription, description));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid() {
+		return uid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUid(String newUid) {
+		String oldUid = uid;
+		uid = newUid;
+		boolean oldUidESet = uidESet;
+		uidESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.NETWORK_INTERFACE_TYPE__UID, oldUid, uid, !oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetUid() {
+		String oldUid = uid;
+		boolean oldUidESet = uidESet;
+		uid = UID_EDEFAULT;
+		uidESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIPackage.NETWORK_INTERFACE_TYPE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetUid() {
+		return uidESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid_generated() {
+		if (((this.getUid() == null) || this.getUid().isEmpty())) {
+			this.setUid(EcoreUtil.generateUUID().toString());
+		}
+		return this.getUid();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -202,6 +303,10 @@ public class NetworkInterfaceTypeImpl extends MinimalEObjectImpl.Container imple
 				return getName();
 			case DNIPackage.NETWORK_INTERFACE_TYPE__DESCRIPTION:
 				return getDescription();
+			case DNIPackage.NETWORK_INTERFACE_TYPE__UID:
+				return getUid();
+			case DNIPackage.NETWORK_INTERFACE_TYPE__UID_GENERATED:
+				return getUid_generated();
 			case DNIPackage.NETWORK_INTERFACE_TYPE__ENTITIES:
 				return getEntities();
 		}
@@ -223,6 +328,9 @@ public class NetworkInterfaceTypeImpl extends MinimalEObjectImpl.Container imple
 			case DNIPackage.NETWORK_INTERFACE_TYPE__DESCRIPTION:
 				setDescription((String)newValue);
 				return;
+			case DNIPackage.NETWORK_INTERFACE_TYPE__UID:
+				setUid((String)newValue);
+				return;
 			case DNIPackage.NETWORK_INTERFACE_TYPE__ENTITIES:
 				getEntities().clear();
 				getEntities().addAll((Collection<? extends NetworkInterface>)newValue);
@@ -245,6 +353,9 @@ public class NetworkInterfaceTypeImpl extends MinimalEObjectImpl.Container imple
 			case DNIPackage.NETWORK_INTERFACE_TYPE__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
+			case DNIPackage.NETWORK_INTERFACE_TYPE__UID:
+				unsetUid();
+				return;
 			case DNIPackage.NETWORK_INTERFACE_TYPE__ENTITIES:
 				getEntities().clear();
 				return;
@@ -264,12 +375,50 @@ public class NetworkInterfaceTypeImpl extends MinimalEObjectImpl.Container imple
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case DNIPackage.NETWORK_INTERFACE_TYPE__DESCRIPTION:
 				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+			case DNIPackage.NETWORK_INTERFACE_TYPE__UID:
+				return isSetUid();
+			case DNIPackage.NETWORK_INTERFACE_TYPE__UID_GENERATED:
+				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
 			case DNIPackage.NETWORK_INTERFACE_TYPE__ENTITIES:
 				return entities != null && !entities.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == Identifier.class) {
+			switch (derivedFeatureID) {
+				case DNIPackage.NETWORK_INTERFACE_TYPE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIPackage.NETWORK_INTERFACE_TYPE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				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 == Identifier.class) {
+			switch (baseFeatureID) {
+				case DNIPackage.IDENTIFIER__UID: return DNIPackage.NETWORK_INTERFACE_TYPE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIPackage.NETWORK_INTERFACE_TYPE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -284,6 +433,8 @@ public class NetworkInterfaceTypeImpl extends MinimalEObjectImpl.Container imple
 		result.append(name);
 		result.append(", description: ");
 		result.append(description);
+		result.append(", uid: ");
+		if (uidESet) result.append(uid); else result.append("<unset>");
 		result.append(')');
 		return result.toString();
 	}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NodeTypeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NodeTypeImpl.java
index 0affacd3f12352a37cd6a6e0c35c2fc4780f2acf..0716427fc8d01b1326c9d21465a269f3a75ebd93 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NodeTypeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/NodeTypeImpl.java
@@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
+import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.Node;
 import tools.descartes.dni.dnimm3.NodeType;
 
@@ -32,6 +34,8 @@ import tools.descartes.dni.dnimm3.NodeType;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NodeTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NodeTypeImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.NodeTypeImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.NodeTypeImpl#getUid_generated <em>Uid generated</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.NodeTypeImpl#getEntities <em>Entities</em>}</li>
  * </ul>
  *
@@ -78,6 +82,45 @@ public class NodeTypeImpl extends MinimalEObjectImpl.Container implements NodeTy
 	 */
 	protected String description = DESCRIPTION_EDEFAULT;
 
+	/**
+	 * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uid = UID_EDEFAULT;
+
+	/**
+	 * This is true if the Uid attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uidESet;
+
+	/**
+	 * The default value of the '{@link #getUid_generated() <em>Uid generated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid_generated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_GENERATED_EDEFAULT = null;
+
 	/**
 	 * The cached value of the '{@link #getEntities() <em>Entities</em>}' reference list.
 	 * <!-- begin-user-doc -->
@@ -149,6 +192,64 @@ public class NodeTypeImpl extends MinimalEObjectImpl.Container implements NodeTy
 			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.NODE_TYPE__DESCRIPTION, oldDescription, description));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid() {
+		return uid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUid(String newUid) {
+		String oldUid = uid;
+		uid = newUid;
+		boolean oldUidESet = uidESet;
+		uidESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.NODE_TYPE__UID, oldUid, uid, !oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetUid() {
+		String oldUid = uid;
+		boolean oldUidESet = uidESet;
+		uid = UID_EDEFAULT;
+		uidESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIPackage.NODE_TYPE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetUid() {
+		return uidESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid_generated() {
+		if (((this.getUid() == null) || this.getUid().isEmpty())) {
+			this.setUid(EcoreUtil.generateUUID().toString());
+		}
+		return this.getUid();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -202,6 +303,10 @@ public class NodeTypeImpl extends MinimalEObjectImpl.Container implements NodeTy
 				return getName();
 			case DNIPackage.NODE_TYPE__DESCRIPTION:
 				return getDescription();
+			case DNIPackage.NODE_TYPE__UID:
+				return getUid();
+			case DNIPackage.NODE_TYPE__UID_GENERATED:
+				return getUid_generated();
 			case DNIPackage.NODE_TYPE__ENTITIES:
 				return getEntities();
 		}
@@ -223,6 +328,9 @@ public class NodeTypeImpl extends MinimalEObjectImpl.Container implements NodeTy
 			case DNIPackage.NODE_TYPE__DESCRIPTION:
 				setDescription((String)newValue);
 				return;
+			case DNIPackage.NODE_TYPE__UID:
+				setUid((String)newValue);
+				return;
 			case DNIPackage.NODE_TYPE__ENTITIES:
 				getEntities().clear();
 				getEntities().addAll((Collection<? extends Node>)newValue);
@@ -245,6 +353,9 @@ public class NodeTypeImpl extends MinimalEObjectImpl.Container implements NodeTy
 			case DNIPackage.NODE_TYPE__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
+			case DNIPackage.NODE_TYPE__UID:
+				unsetUid();
+				return;
 			case DNIPackage.NODE_TYPE__ENTITIES:
 				getEntities().clear();
 				return;
@@ -264,12 +375,50 @@ public class NodeTypeImpl extends MinimalEObjectImpl.Container implements NodeTy
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case DNIPackage.NODE_TYPE__DESCRIPTION:
 				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+			case DNIPackage.NODE_TYPE__UID:
+				return isSetUid();
+			case DNIPackage.NODE_TYPE__UID_GENERATED:
+				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
 			case DNIPackage.NODE_TYPE__ENTITIES:
 				return entities != null && !entities.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == Identifier.class) {
+			switch (derivedFeatureID) {
+				case DNIPackage.NODE_TYPE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIPackage.NODE_TYPE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				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 == Identifier.class) {
+			switch (baseFeatureID) {
+				case DNIPackage.IDENTIFIER__UID: return DNIPackage.NODE_TYPE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIPackage.NODE_TYPE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -284,6 +433,8 @@ public class NodeTypeImpl extends MinimalEObjectImpl.Container implements NodeTy
 		result.append(name);
 		result.append(", description: ");
 		result.append(description);
+		result.append(", uid: ");
+		if (uidESet) result.append(uid); else result.append("<unset>");
 		result.append(')');
 		return result.toString();
 	}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/SdnNodePerformanceTypeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/SdnNodePerformanceTypeImpl.java
index c072b0b7f5ff761b46b246638e02ca7d828709d5..e72966a2c5c788dd2d5c518ff62a62a0595f8b89 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/SdnNodePerformanceTypeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/SdnNodePerformanceTypeImpl.java
@@ -16,9 +16,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import tools.descartes.dni.dnimm3.DNIPackage;
+import tools.descartes.dni.dnimm3.Identifier;
 import tools.descartes.dni.dnimm3.PerformanceSdnNode;
 import tools.descartes.dni.dnimm3.SdnNodePerformanceType;
 
@@ -32,6 +34,8 @@ import tools.descartes.dni.dnimm3.SdnNodePerformanceType;
  * <ul>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.SdnNodePerformanceTypeImpl#getName <em>Name</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.SdnNodePerformanceTypeImpl#getDescription <em>Description</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.SdnNodePerformanceTypeImpl#getUid <em>Uid</em>}</li>
+ *   <li>{@link tools.descartes.dni.dnimm3.impl.SdnNodePerformanceTypeImpl#getUid_generated <em>Uid generated</em>}</li>
  *   <li>{@link tools.descartes.dni.dnimm3.impl.SdnNodePerformanceTypeImpl#getEntities <em>Entities</em>}</li>
  * </ul>
  *
@@ -78,6 +82,45 @@ public class SdnNodePerformanceTypeImpl extends MinimalEObjectImpl.Container imp
 	 */
 	protected String description = DESCRIPTION_EDEFAULT;
 
+	/**
+	 * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uid = UID_EDEFAULT;
+
+	/**
+	 * This is true if the Uid attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uidESet;
+
+	/**
+	 * The default value of the '{@link #getUid_generated() <em>Uid generated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUid_generated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String UID_GENERATED_EDEFAULT = null;
+
 	/**
 	 * The cached value of the '{@link #getEntities() <em>Entities</em>}' reference list.
 	 * <!-- begin-user-doc -->
@@ -149,6 +192,64 @@ public class SdnNodePerformanceTypeImpl extends MinimalEObjectImpl.Container imp
 			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.SDN_NODE_PERFORMANCE_TYPE__DESCRIPTION, oldDescription, description));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid() {
+		return uid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUid(String newUid) {
+		String oldUid = uid;
+		uid = newUid;
+		boolean oldUidESet = uidESet;
+		uidESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID, oldUid, uid, !oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetUid() {
+		String oldUid = uid;
+		boolean oldUidESet = uidESet;
+		uid = UID_EDEFAULT;
+		uidESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID, oldUid, UID_EDEFAULT, oldUidESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetUid() {
+		return uidESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUid_generated() {
+		if (((this.getUid() == null) || this.getUid().isEmpty())) {
+			this.setUid(EcoreUtil.generateUUID().toString());
+		}
+		return this.getUid();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -202,6 +303,10 @@ public class SdnNodePerformanceTypeImpl extends MinimalEObjectImpl.Container imp
 				return getName();
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__DESCRIPTION:
 				return getDescription();
+			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID:
+				return getUid();
+			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID_GENERATED:
+				return getUid_generated();
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__ENTITIES:
 				return getEntities();
 		}
@@ -223,6 +328,9 @@ public class SdnNodePerformanceTypeImpl extends MinimalEObjectImpl.Container imp
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription((String)newValue);
 				return;
+			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID:
+				setUid((String)newValue);
+				return;
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				getEntities().addAll((Collection<? extends PerformanceSdnNode>)newValue);
@@ -245,6 +353,9 @@ public class SdnNodePerformanceTypeImpl extends MinimalEObjectImpl.Container imp
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
+			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID:
+				unsetUid();
+				return;
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__ENTITIES:
 				getEntities().clear();
 				return;
@@ -264,12 +375,50 @@ public class SdnNodePerformanceTypeImpl extends MinimalEObjectImpl.Container imp
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__DESCRIPTION:
 				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID:
+				return isSetUid();
+			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID_GENERATED:
+				return UID_GENERATED_EDEFAULT == null ? getUid_generated() != null : !UID_GENERATED_EDEFAULT.equals(getUid_generated());
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__ENTITIES:
 				return entities != null && !entities.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == Identifier.class) {
+			switch (derivedFeatureID) {
+				case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID: return DNIPackage.IDENTIFIER__UID;
+				case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID_GENERATED: return DNIPackage.IDENTIFIER__UID_GENERATED;
+				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 == Identifier.class) {
+			switch (baseFeatureID) {
+				case DNIPackage.IDENTIFIER__UID: return DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID;
+				case DNIPackage.IDENTIFIER__UID_GENERATED: return DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID_GENERATED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -284,6 +433,8 @@ public class SdnNodePerformanceTypeImpl extends MinimalEObjectImpl.Container imp
 		result.append(name);
 		result.append(", description: ");
 		result.append(description);
+		result.append(", uid: ");
+		if (uidESet) result.append(uid); else result.append("<unset>");
 		result.append(')');
 		return result.toString();
 	}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceTypeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceTypeItemProvider.java
index 48e2ea69d0a63968be6ff96bb8df991548033ede..1cd8017aae241d5a5e8f2163b04c864553370b29 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceTypeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceTypeItemProvider.java
@@ -62,6 +62,8 @@ public class EndPerformanceTypeItemProvider
 
 			addNamePropertyDescriptor(object);
 			addDescriptionPropertyDescriptor(object);
+			addUidPropertyDescriptor(object);
+			addUid_generatedPropertyDescriptor(object);
 			addEntitiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -111,6 +113,50 @@ public class EndPerformanceTypeItemProvider
 				 null));
 	}
 
+	/**
+	 * This adds a property descriptor for the Uid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uid generated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUid_generatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_generated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_generated_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID_GENERATED,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Entities feature.
 	 * <!-- begin-user-doc -->
@@ -173,6 +219,8 @@ public class EndPerformanceTypeItemProvider
 		switch (notification.getFeatureID(EndPerformanceType.class)) {
 			case DNIPackage.END_PERFORMANCE_TYPE__NAME:
 			case DNIPackage.END_PERFORMANCE_TYPE__DESCRIPTION:
+			case DNIPackage.END_PERFORMANCE_TYPE__UID:
+			case DNIPackage.END_PERFORMANCE_TYPE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 		}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceTypeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceTypeItemProvider.java
index d0ddd0390f5996525269edc201661832c53487fc..625c646ba48d0f1279665926dcb45398a1107944 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceTypeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceTypeItemProvider.java
@@ -62,6 +62,8 @@ public class IntermediatePerformanceTypeItemProvider
 
 			addNamePropertyDescriptor(object);
 			addDescriptionPropertyDescriptor(object);
+			addUidPropertyDescriptor(object);
+			addUid_generatedPropertyDescriptor(object);
 			addEntitiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -111,6 +113,50 @@ public class IntermediatePerformanceTypeItemProvider
 				 null));
 	}
 
+	/**
+	 * This adds a property descriptor for the Uid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uid generated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUid_generatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_generated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_generated_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID_GENERATED,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Entities feature.
 	 * <!-- begin-user-doc -->
@@ -173,6 +219,8 @@ public class IntermediatePerformanceTypeItemProvider
 		switch (notification.getFeatureID(IntermediatePerformanceType.class)) {
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__NAME:
 			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__DESCRIPTION:
+			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID:
+			case DNIPackage.INTERMEDIATE_PERFORMANCE_TYPE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 		}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/LinkPerformanceTypeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/LinkPerformanceTypeItemProvider.java
index 5afba76f88b3bf75577e235ca11b45ec90a71e97..930305b9f3e3c918fd4f2abe2dfb278e2f2439ae 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/LinkPerformanceTypeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/LinkPerformanceTypeItemProvider.java
@@ -62,6 +62,8 @@ public class LinkPerformanceTypeItemProvider
 
 			addNamePropertyDescriptor(object);
 			addDescriptionPropertyDescriptor(object);
+			addUidPropertyDescriptor(object);
+			addUid_generatedPropertyDescriptor(object);
 			addEntitiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -111,6 +113,50 @@ public class LinkPerformanceTypeItemProvider
 				 null));
 	}
 
+	/**
+	 * This adds a property descriptor for the Uid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uid generated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUid_generatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_generated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_generated_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID_GENERATED,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Entities feature.
 	 * <!-- begin-user-doc -->
@@ -173,6 +219,8 @@ public class LinkPerformanceTypeItemProvider
 		switch (notification.getFeatureID(LinkPerformanceType.class)) {
 			case DNIPackage.LINK_PERFORMANCE_TYPE__NAME:
 			case DNIPackage.LINK_PERFORMANCE_TYPE__DESCRIPTION:
+			case DNIPackage.LINK_PERFORMANCE_TYPE__UID:
+			case DNIPackage.LINK_PERFORMANCE_TYPE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 		}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/LinkTypeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/LinkTypeItemProvider.java
index ed32866f1627f0cee1ff6fc0195dd360220cf3b4..50dcc4753e6bb0043bd78010e90466968e7f2847 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/LinkTypeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/LinkTypeItemProvider.java
@@ -62,6 +62,8 @@ public class LinkTypeItemProvider
 
 			addNamePropertyDescriptor(object);
 			addDescriptionPropertyDescriptor(object);
+			addUidPropertyDescriptor(object);
+			addUid_generatedPropertyDescriptor(object);
 			addEntitiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -111,6 +113,50 @@ public class LinkTypeItemProvider
 				 null));
 	}
 
+	/**
+	 * This adds a property descriptor for the Uid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uid generated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUid_generatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_generated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_generated_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID_GENERATED,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Entities feature.
 	 * <!-- begin-user-doc -->
@@ -173,6 +219,8 @@ public class LinkTypeItemProvider
 		switch (notification.getFeatureID(LinkType.class)) {
 			case DNIPackage.LINK_TYPE__NAME:
 			case DNIPackage.LINK_TYPE__DESCRIPTION:
+			case DNIPackage.LINK_TYPE__UID:
+			case DNIPackage.LINK_TYPE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 		}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NetworkInterfacePerformanceTypeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NetworkInterfacePerformanceTypeItemProvider.java
index 2b5deb952cbf6312c0276b465ddf44c2a32fafd0..22cb62ca49b51fa06d764913ab0de6e7e28cd920 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NetworkInterfacePerformanceTypeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NetworkInterfacePerformanceTypeItemProvider.java
@@ -62,6 +62,8 @@ public class NetworkInterfacePerformanceTypeItemProvider
 
 			addNamePropertyDescriptor(object);
 			addDescriptionPropertyDescriptor(object);
+			addUidPropertyDescriptor(object);
+			addUid_generatedPropertyDescriptor(object);
 			addEntitiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -111,6 +113,50 @@ public class NetworkInterfacePerformanceTypeItemProvider
 				 null));
 	}
 
+	/**
+	 * This adds a property descriptor for the Uid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uid generated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUid_generatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_generated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_generated_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID_GENERATED,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Entities feature.
 	 * <!-- begin-user-doc -->
@@ -173,6 +219,8 @@ public class NetworkInterfacePerformanceTypeItemProvider
 		switch (notification.getFeatureID(NetworkInterfacePerformanceType.class)) {
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__NAME:
 			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__DESCRIPTION:
+			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID:
+			case DNIPackage.NETWORK_INTERFACE_PERFORMANCE_TYPE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 		}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NetworkInterfaceTypeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NetworkInterfaceTypeItemProvider.java
index e30aea7863bb4b22bfe02a42eb57185c594a2dfb..abfd1a850d54f15a89180eea3824c56754c271c3 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NetworkInterfaceTypeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NetworkInterfaceTypeItemProvider.java
@@ -62,6 +62,8 @@ public class NetworkInterfaceTypeItemProvider
 
 			addNamePropertyDescriptor(object);
 			addDescriptionPropertyDescriptor(object);
+			addUidPropertyDescriptor(object);
+			addUid_generatedPropertyDescriptor(object);
 			addEntitiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -111,6 +113,50 @@ public class NetworkInterfaceTypeItemProvider
 				 null));
 	}
 
+	/**
+	 * This adds a property descriptor for the Uid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uid generated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUid_generatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_generated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_generated_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID_GENERATED,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Entities feature.
 	 * <!-- begin-user-doc -->
@@ -173,6 +219,8 @@ public class NetworkInterfaceTypeItemProvider
 		switch (notification.getFeatureID(NetworkInterfaceType.class)) {
 			case DNIPackage.NETWORK_INTERFACE_TYPE__NAME:
 			case DNIPackage.NETWORK_INTERFACE_TYPE__DESCRIPTION:
+			case DNIPackage.NETWORK_INTERFACE_TYPE__UID:
+			case DNIPackage.NETWORK_INTERFACE_TYPE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 		}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NodeTypeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NodeTypeItemProvider.java
index de0f167bf7f2d2b0083710018bb60f3eaac9fb0a..b377dc1c06fc58f786e83d69c69af54c6e5360b3 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NodeTypeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/NodeTypeItemProvider.java
@@ -62,6 +62,8 @@ public class NodeTypeItemProvider
 
 			addNamePropertyDescriptor(object);
 			addDescriptionPropertyDescriptor(object);
+			addUidPropertyDescriptor(object);
+			addUid_generatedPropertyDescriptor(object);
 			addEntitiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -111,6 +113,50 @@ public class NodeTypeItemProvider
 				 null));
 	}
 
+	/**
+	 * This adds a property descriptor for the Uid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uid generated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUid_generatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_generated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_generated_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID_GENERATED,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Entities feature.
 	 * <!-- begin-user-doc -->
@@ -173,6 +219,8 @@ public class NodeTypeItemProvider
 		switch (notification.getFeatureID(NodeType.class)) {
 			case DNIPackage.NODE_TYPE__NAME:
 			case DNIPackage.NODE_TYPE__DESCRIPTION:
+			case DNIPackage.NODE_TYPE__UID:
+			case DNIPackage.NODE_TYPE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 		}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/SdnNodePerformanceTypeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/SdnNodePerformanceTypeItemProvider.java
index f8abffca1b86174fa32301cbd519e9439eef255c..1fef2edbc9749e6ecdc9f1f79d98f55e0f84221f 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/SdnNodePerformanceTypeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/SdnNodePerformanceTypeItemProvider.java
@@ -62,6 +62,8 @@ public class SdnNodePerformanceTypeItemProvider
 
 			addNamePropertyDescriptor(object);
 			addDescriptionPropertyDescriptor(object);
+			addUidPropertyDescriptor(object);
+			addUid_generatedPropertyDescriptor(object);
 			addEntitiesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -111,6 +113,50 @@ public class SdnNodePerformanceTypeItemProvider
 				 null));
 	}
 
+	/**
+	 * This adds a property descriptor for the Uid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uid generated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUid_generatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Identifier_uid_generated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Identifier_uid_generated_feature", "_UI_Identifier_type"),
+				 DNIPackage.Literals.IDENTIFIER__UID_GENERATED,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Entities feature.
 	 * <!-- begin-user-doc -->
@@ -173,6 +219,8 @@ public class SdnNodePerformanceTypeItemProvider
 		switch (notification.getFeatureID(SdnNodePerformanceType.class)) {
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__NAME:
 			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__DESCRIPTION:
+			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID:
+			case DNIPackage.SDN_NODE_PERFORMANCE_TYPE__UID_GENERATED:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 		}
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
index abe9d3582b975fb3e0ebad444408bc3a641afa1a..72672c60c9510ebd4d12eb2821603b464cf7c06e 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
@@ -545,6 +545,7 @@ public class DNISwitch<T> extends Switch<T> {
 				ITypedEntity iTypedEntity = (ITypedEntity)theEObject;
 				T result = caseITypedEntity(iTypedEntity);
 				if (result == null) result = caseNamedElement(iTypedEntity);
+				if (result == null) result = caseIdentifier(iTypedEntity);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -553,6 +554,7 @@ public class DNISwitch<T> extends Switch<T> {
 				T result = caseNodeType(nodeType);
 				if (result == null) result = caseITypedEntity(nodeType);
 				if (result == null) result = caseNamedElement(nodeType);
+				if (result == null) result = caseIdentifier(nodeType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -561,6 +563,7 @@ public class DNISwitch<T> extends Switch<T> {
 				T result = caseEndPerformanceType(endPerformanceType);
 				if (result == null) result = caseITypedEntity(endPerformanceType);
 				if (result == null) result = caseNamedElement(endPerformanceType);
+				if (result == null) result = caseIdentifier(endPerformanceType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -569,6 +572,7 @@ public class DNISwitch<T> extends Switch<T> {
 				T result = caseIntermediatePerformanceType(intermediatePerformanceType);
 				if (result == null) result = caseITypedEntity(intermediatePerformanceType);
 				if (result == null) result = caseNamedElement(intermediatePerformanceType);
+				if (result == null) result = caseIdentifier(intermediatePerformanceType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -577,6 +581,7 @@ public class DNISwitch<T> extends Switch<T> {
 				T result = caseSdnNodePerformanceType(sdnNodePerformanceType);
 				if (result == null) result = caseITypedEntity(sdnNodePerformanceType);
 				if (result == null) result = caseNamedElement(sdnNodePerformanceType);
+				if (result == null) result = caseIdentifier(sdnNodePerformanceType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -585,6 +590,7 @@ public class DNISwitch<T> extends Switch<T> {
 				T result = caseNetworkInterfaceType(networkInterfaceType);
 				if (result == null) result = caseITypedEntity(networkInterfaceType);
 				if (result == null) result = caseNamedElement(networkInterfaceType);
+				if (result == null) result = caseIdentifier(networkInterfaceType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -593,6 +599,7 @@ public class DNISwitch<T> extends Switch<T> {
 				T result = caseNetworkInterfacePerformanceType(networkInterfacePerformanceType);
 				if (result == null) result = caseITypedEntity(networkInterfacePerformanceType);
 				if (result == null) result = caseNamedElement(networkInterfacePerformanceType);
+				if (result == null) result = caseIdentifier(networkInterfacePerformanceType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -601,6 +608,7 @@ public class DNISwitch<T> extends Switch<T> {
 				T result = caseLinkType(linkType);
 				if (result == null) result = caseITypedEntity(linkType);
 				if (result == null) result = caseNamedElement(linkType);
+				if (result == null) result = caseIdentifier(linkType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -609,6 +617,7 @@ public class DNISwitch<T> extends Switch<T> {
 				T result = caseLinkPerformanceType(linkPerformanceType);
 				if (result == null) result = caseITypedEntity(linkPerformanceType);
 				if (result == null) result = caseNamedElement(linkPerformanceType);
+				if (result == null) result = caseIdentifier(linkPerformanceType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}