diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DAIImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DAIImpl.java
index ca512f3b06d61de98898b654a8310c45f8402b76..c8e785ab1eb3f6f5c7b8fada8627b0dbe822f40b 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DAIImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.scl/src/fr/centralesupelec/edf/riseclipse/iec61850/scl/impl/DAIImpl.java
@@ -44,6 +44,7 @@ import fr.centralesupelec.edf.riseclipse.iec61850.scl.DO;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.DOI;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.DOType;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.SDI;
+import fr.centralesupelec.edf.riseclipse.iec61850.scl.SDO;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.SclPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.Val;
 import fr.centralesupelec.edf.riseclipse.iec61850.scl.ValKindEnum;
@@ -1062,7 +1063,33 @@ public class DAIImpl extends UnNamingImpl implements DAI {
     private void doBuildExplicitLinkWithParentSDI( IRiseClipseConsole console, String messagePrefix ) {
         // No error or warning messages here: if this happens, error should have been detected before
         AbstractDataAttribute att = getParentSDI().getRefersToAbstractDataAttribute();
-        if( att == null ) return;
+        if( att == null ) {
+            // SDI may refers also to an SDO
+            SDO sdo = getParentSDI().getRefersToSDO();
+            if( sdo == null ) return;
+            sdo.buildExplicitLinks( console, false );
+            console.verbose( messagePrefix, "found SDO on line ", sdo.getLineNumber() );
+            DOType dot = sdo.getRefersToDOType();
+            // No error or warning message here: if this happens, error should have been detected before
+            if( dot == null ) return;
+            console.verbose( messagePrefix, "found DOType on line ", dot.getLineNumber() );
+            
+            List< DA > res = dot
+                    .getDA()
+                    .stream()
+                    .filter( d -> getName().equals( d.getName() ) )
+                    .collect( Collectors.toList() );
+
+            String mess = "DA( name = " + getName() + " )";
+            if( res.size() != 1 ) {
+                SclUtilities.displayNotFoundWarning( console, messagePrefix, mess, res.size() );
+                return;
+            }
+            setRefersToAbstractDataAttribute( res.get( 0 ) );
+            console.info( "[SCL links] DAI on line ", getLineNumber(), " refers to ", mess, " on line ",
+                    getRefersToAbstractDataAttribute().getLineNumber() );
+            return;
+        }
         att.buildExplicitLinks( console, false );
         console.verbose( messagePrefix, "found AbstractDataAttribute on line ", att.getLineNumber() );