diff --git a/src/nextflow_building_blocks.py b/src/nextflow_building_blocks.py
index 5f8de682353448b24f7f38794320c4e3d259907e..0c600056b09d2a1acee8413b0126147c2f505a61 100644
--- a/src/nextflow_building_blocks.py
+++ b/src/nextflow_building_blocks.py
@@ -80,6 +80,11 @@ class Nextflow_Building_Blocks:
     def get_rocrate_key(self, dico):
         return f"{self.get_file_address()[len(dico['temp_directory'])+1:]}#{self.get_name()}"
 
+    def get_address(self):
+        return self.origin.get_address()
+    
+    def get_workflow_address(self):
+        return self.origin.get_workflow_address()
 
     
 
diff --git a/src/nextflow_file.py b/src/nextflow_file.py
index 5eadc6e8a676d75238c67460a14eb14408092712..4a43c443131d603a9a19ff822af9615ef9a3528c 100644
--- a/src/nextflow_file.py
+++ b/src/nextflow_file.py
@@ -115,6 +115,13 @@ class Nextflow_File(Nextflow_Building_Blocks):
                 return self.display_info 
             else:
                 return self.origin.get_display_info()
+            
+
+    def get_workflow_address(self):
+        if(self.origin==None):
+                return self.workflow.get_workflow_directory() 
+        else:
+            return self.origin.get_workflow_address()
                 
 
 
@@ -259,6 +266,7 @@ class Nextflow_File(Nextflow_Building_Blocks):
     def get_DSL(self):
         return self.DSL
     
+    
     #Method which returns the DSL of the workflow -> by default it's DSL2
     #I use the presence of include, subworkflows and into/from in processes as a proxy
     def which_DSL(self):
diff --git a/src/process.py b/src/process.py
index ef3d22233b8f77adad3512ebaedbe7b0210e922e..78f39e444f36c579bf939e81abaa4da4936f3002 100644
--- a/src/process.py
+++ b/src/process.py
@@ -1,4 +1,5 @@
 import re
+import glob
 
 from .code_ import Code
 from .nextflow_building_blocks import Nextflow_Building_Blocks
@@ -53,6 +54,36 @@ class Process(Nextflow_Building_Blocks):
             return self.tools
     
 
+    def get_external_scripts_call(self):
+        code = self.get_script_code()
+        tab = []
+        for match in re.finditer(r"([^\s\\\*]+\.(sh|py|R|r|pl))[^\w]", code):
+            tab.append(match.group(1))
+        return list(set(tab))
+    
+    def get_external_scripts_code(self):
+        calls = self.get_external_scripts_call()
+        #workflow_directory = self.origin.get_address()
+        #print(workflow_directory)
+        #import os
+        #print(os.getcwd(), self.origin.get_address(), self.get_workflow_address())
+
+        for call in calls:
+            #Check first if the file is in the bin
+            file = glob.glob(f'{self.get_workflow_address()}/bin/**/{call}', recursive=True)
+            if(len(file)>1):
+                print(file)
+                print("More than one file found!")
+            #If not we search again
+            if(len(file)==0):
+                file = glob.glob(f'{self.get_workflow_address()}/**/{call}', recursive=True)
+                if(len(file)>1):
+                    print(file)
+                    print("More than one file found!")
+                
+
+
+
     #def get_source(self):
     #    return [self]
     
diff --git a/src/workflow.py b/src/workflow.py
index c3b6dae565ba33e0fd84e2c14470360bc9fa9245..5565d677579040ffcd5ed16334d91112185d9212 100644
--- a/src/workflow.py
+++ b/src/workflow.py
@@ -67,6 +67,7 @@ class Workflow:
             output_dir=output_dir,
             workflow = self
         )
+        self.workflow_directory = '/'.join(file.split('/')[:-1])
         self.output_dir = Path(output_dir)
         self.rocrate = None
         self.name = name
@@ -133,6 +134,15 @@ class Workflow:
         
         """
         return self.address
+    
+    def get_workflow_directory(self):
+        """Method that returns the workflow directory 
+
+        Keyword arguments:
+        
+        """
+        return self.workflow_directory
+    
 
     def set_address(self):
         """Method that sets the adress of the workflow main