diff --git a/silecs_cli/silecs.py b/silecs_cli/silecs.py
index b97fa9e3584c9eb41b5618a6252a29cf826a4b98..000f24d8d07792d23e10d44de1a653bc9a6f1606 100644
--- a/silecs_cli/silecs.py
+++ b/silecs_cli/silecs.py
@@ -6,6 +6,7 @@ import datetime
 import shutil
 import subprocess
 
+import lxml.etree
 from xml.dom import minidom
 
 from packaging import version
@@ -151,6 +152,13 @@ def create_backup_file(filepath):
     with open(backup_file, 'w+'):
         shutil.copyfile(src=filepath, dst=backup_file)
 
+def get_version_underscored_tiny_as_x(version):
+    version_splitted = version.split(".")
+    major = version_splitted[0]
+    minor = version_splitted[1]
+    return major + "_" + minor + "_x" 
+
+
 ##### Validate silecs design deploy ######
 
 def validate(silecs_design_deploy_path, xsd_path):
@@ -450,11 +458,57 @@ def silecs_release(file_paths):
             print("Error during release. Check errors above.")
 
 
+def is_silecs_design_file(filepath):
+    return get_extension(filepath) == SILECSDESIGN
+
+def is_silecs_deploy_file(filepath):
+    return get_extension(filepath) == SILECSDEPLOY
+
+def get_silecs_version_from_silecsdesign_file(silecsdesign_file):
+    silecs_design_document = minidom.parse(silecsdesign_file)
+    silecs_design_element = silecs_design_document.getElementsByTagName("SILECS-Design")[0]
+    version = silecs_design_element.getAttribute("silecs-version")
+    return version
+
+
+def get_silecs_version_from_silecsdeploy_file(silecsdeploy_file):
+    silecs_deploy_document = minidom.parse(silecsdeploy_file)
+    silecs_deploy_element = silecs_deploy_document.getElementsByTagName("SILECS-Depoloy")[0]
+    version = silecs_deploy_element.getAttribute("silecs-version")
+    return version
+
+
+def get_silecs_version_from_file(filepath):
+    if is_silecs_design_file(filepath):
+        return get_silecs_version_from_silecsdesign_file(filepath)
+    else:
+        return get_silecs_version_from_silecsdeploy_file(filepath)
+
+
+def get_silecs_desing_deploy_file(project_path):
+    project_path_src = os.path.join(project_path, "src")
+    is_silecs_deploy_design = lambda f: f.split(".")[-1] == SILECSDESIGN or f.split(".")[-1] == SILECSDEPLOY
+    silecs_design_deploy_files = [f for f in os.listdir(project_path) if os.path.isfile(os.path.join(project_path, f)) and is_silecs_deploy_design(f)]
+    if not silecs_design_deploy_files:
+        return Exception("No silecs design/deploy files found for that project")
+    # elif len(silecs_design_deploy_files) > 1 :
+    #     return Exception("In directory should be one silecs design/deploy file") 
+    return os.path.abspath(os.path.join(project_path, silecs_design_deploy_files[0]))
+
+def get_silecs_version_from_project(project_path):
+    try:
+        silecs_desing_deploy_file = get_silecs_desing_deploy_file(project_path)
+        return get_silecs_version_from_file(silecs_desing_deploy_file)
+    except Exception as e:
+        print(e)
+
 ##### Migrate file to new silecs version ######
+def silecs_migrate(project_path, new_version):
+    old_version = get_silecs_version_from_project(project_path)
+
+    old_version_underscored = get_version_underscored_tiny_as_x(old_version)
+    new_version_underscored = get_version_underscored_tiny_as_x(new_version)
 
-def silecs_migrate(file_paths):
-# TODO -  See here for details: https://gitlab.com/al.schwinn/silecs-cli/-/issues/7
-    print("Not implemented yet .. please update/migrate by hand for now")
 
 ##### Parse arguments ######
 
@@ -514,8 +568,9 @@ def _parse_arguments():
     parser.add_argument(
         "-m",
         "--migrate",
-        metavar="file",
-        help="migrate silecs design/deploy to new silecs version (TODO)"
+        nargs=2,
+        metavar=("file", "new_version"),
+        help="migrate silecs design/deploy to new silecs version"
     )
 
     return parser
@@ -545,7 +600,9 @@ def run():
     if options.release:
         silecs_release(options.release)
     if options.migrate:
-        silecs_migrate(options.migrate)
+        project_path=options.migrate[0]
+        new_version=options.migrate[1]
+        silecs_migrate(project_path, new_version)
 
 if __name__ == "__main__":
     run()