diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DOIImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DOIImpl.java
index 2d4b6784596e05998534358a4bbaa4e23e6a2d34..5f7e3aa6a347421deed7aacbe1ccabfcf612e480 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DOIImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DOIImpl.java
@@ -35,6 +35,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.AnyLN;
+import fr.centralesupelec.edf.riseclipse.iec61850.scl.DA;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.DAI;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.DO;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.DOI;
@@ -593,13 +594,50 @@ public class DOIImpl extends UnNamingImpl implements DOI {
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @generated
+     * @generated NOT
      */
     @Override
     public String getNamespace() {
-        // TODO: implement this method
-        // Ensure that you remove @generated or mark it @generated NOT
-        throw new UnsupportedOperationException();
+        //@formatter:off
+        List< DAI > ldNsDai =
+                 getDAI()
+                .stream()
+                .filter( dai -> "dataNs".equals( dai.getName() ))
+                .collect( Collectors.toList() );
+        if( ldNsDai.size() == 1 ) {
+            if((         ldNsDai.get( 0 ).getVal().size() == 1 )
+                    && ( ldNsDai.get( 0 ).getVal().get( 0 ).getValue() != null )
+                    && ( ldNsDai.get( 0 ).getVal().get( 0 ).getValue().length() != 0 )) {
+                return   ldNsDai.get( 0 ).getVal().get( 0 ).getValue();
+            }
+            if((         ldNsDai.get( 0 ).getRefersToAbstractDataAttribute() != null )
+                    && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().size() == 1 )
+                    && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue() != null )
+                    && ( ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue().length() != 0 )) {
+                return   ldNsDai.get( 0 ).getRefersToAbstractDataAttribute().getVal().get( 0 ).getValue();
+            }
+        }
+        
+        if( getRefersToDO() != null ) {
+            List< DA > lnNsDa =
+                     getRefersToDO()
+                    .getRefersToDOType()
+                    .getDA()
+                    .stream()
+                    .filter( da -> "dataNs".equals( da.getName() ))
+                    .collect( Collectors.toList() );
+            if( lnNsDa.size() == 1 ) {
+                if((         lnNsDa.get( 0 ).getVal().size() == 1 )
+                        && ( lnNsDa.get( 0 ).getVal().get( 0 ).getValue() != null )
+                        && ( lnNsDa.get( 0 ).getVal().get( 0 ).getValue().length() != 0 )) {
+                    return   lnNsDa.get( 0 ).getVal().get( 0 ).getValue();
+                }
+            }
+        }
+        
+        if( getParentAnyLN() == null ) return null;
+        return getParentAnyLN().getNamespace();
+        //@formatter:on
     }
 
     /**