diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..ca90588770a82157f85630d2b5083dded841ea7c
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,9 @@
+[submodule "component/oai-amf"]
+	path = component/oai-amf
+	url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-amf.git
+[submodule "component/oai-smf"]
+	path = component/oai-smf
+	url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-smf.git
+[submodule "component/oai-upf-equivalent"]
+	path = component/oai-upf-equivalent
+	url = https://github.com/OPENAIRINTERFACE/openair-spgwu-tiny.git
diff --git a/component/oai-amf b/component/oai-amf
new file mode 160000
index 0000000000000000000000000000000000000000..8341c82073923601091f59803fe6c066cd8a68d8
--- /dev/null
+++ b/component/oai-amf
@@ -0,0 +1 @@
+Subproject commit 8341c82073923601091f59803fe6c066cd8a68d8
diff --git a/component/oai-smf b/component/oai-smf
new file mode 160000
index 0000000000000000000000000000000000000000..e43b4429ce0eb8e754dd2bfbaa2c620cfa36ac49
--- /dev/null
+++ b/component/oai-smf
@@ -0,0 +1 @@
+Subproject commit e43b4429ce0eb8e754dd2bfbaa2c620cfa36ac49
diff --git a/component/oai-upf-equivalent b/component/oai-upf-equivalent
new file mode 160000
index 0000000000000000000000000000000000000000..e812920bc48dcedb0e8f3811f3dbbe2ebebeb899
--- /dev/null
+++ b/component/oai-upf-equivalent
@@ -0,0 +1 @@
+Subproject commit e812920bc48dcedb0e8f3811f3dbbe2ebebeb899
diff --git a/scripts/syncComponents.sh b/scripts/syncComponents.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8b004583608e0fa1bcfed50dbdaf4d7383bb9330
--- /dev/null
+++ b/scripts/syncComponents.sh
@@ -0,0 +1,127 @@
+#!/bin/bash
+#/*
+# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+# * contributor license agreements.  See the NOTICE file distributed with
+# * this work for additional information regarding copyright ownership.
+# * The OpenAirInterface Software Alliance licenses this file to You under
+# * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+# * except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *      http://www.openairinterface.org/?page_id=698
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *-------------------------------------------------------------------------------
+# * For more information about the OpenAirInterface (OAI) Software Alliance:
+# *      contact@openairinterface.org
+# */
+
+function usage {
+    echo "Openair-CN components synchronization"
+    echo "   Original Author: Raphael Defosseux"
+    echo ""
+    echo "   Requirement: git shall be installed"
+    echo ""
+    echo "   By default (no options) all components will be synchronized to"
+    echo "     the 'develop' branch."
+    echo "   Each component can be synchronized a dedicated branch."
+    echo ""
+    echo "Usage:"
+    echo "------"
+    echo "    syncComponents.sh [OPTIONS]"
+    echo ""
+    echo "Options:"
+    echo "--------"
+    echo "    --amf-branch ####"
+    echo "    Specify the source branch for the OAI-AMF component"
+    echo ""
+    echo "    --smf-branch ####"
+    echo "    Specify the source branch for the OAI-SMF component"
+    echo ""
+    echo "    --spgwu-tiny-branch ####"
+    echo "    Specify the source branch for the OAI-SPGW-U-TINY component"
+    echo ""
+    echo "    --help OR -h"
+    echo "    Print this help message."
+    echo ""
+}
+
+AMF_BRANCH='develop'
+SMF_BRANCH='develop'
+SPGWU_BRANCH='develop'
+
+doDefault=1
+
+while [[ $# -gt 0 ]]
+do
+key="$1"
+
+case $key in
+    -h|--help)
+    shift
+    usage
+    exit 0
+    ;;
+    --amf-branch)
+    AMF_BRANCH="$2"
+    doDefault=0
+    shift
+    shift
+    ;;
+    --smf-branch)
+    SMF_BRANCH="$2"
+    doDefault=0
+    shift
+    shift
+    ;;
+    --spgwc-branch)
+    SPGWC_BRANCH="$2"
+    doDefault=0
+    shift
+    shift
+    ;;
+    --spgwu-tiny-branch)
+    SPGWU_BRANCH="$2"
+    doDefault=0
+    shift
+    shift
+    ;;
+    *)
+    echo "Syntax Error: unknown option: $key"
+    echo ""
+    usage
+    exit 1
+esac
+
+done
+
+echo "---------------------------------------------------------"
+echo "OAI-AMF    component branch : ${AMF_BRANCH}"
+echo "OAI-SMF    component branch : ${SMF_BRANCH}"
+echo "OAI-SPGW-U component branch : ${SPGWU_BRANCH}"
+echo "---------------------------------------------------------"
+
+# First do a clean-up
+git submodule deinit --all --force
+
+git submodule init
+git submodule update
+
+if [ $doDefault -eq 1 ]
+then
+    git submodule foreach 'git fetch --prune && git checkout develop && git pull origin develop'
+else
+    pushd component/oai-amf
+    git fetch --prune && git checkout $AMF_BRANCH && git pull origin $AMF_BRANCH
+    popd
+    pushd component/oai-smf
+    git fetch --prune && git checkout $SMF_BRANCH && git pull origin $SMF_BRANCH
+    popd
+    pushd component/oai-upf-equivalent
+    git fetch --prune && git checkout $SPGWU_BRANCH && git pull origin $SPGWU_BRANCH
+    popd
+fi