diff --git a/.gitlab-industrial-ci-kinetic-no-rosinstall.yml b/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
index f8ed382ca877eca5d547399ac062bb02417df3f9..75393edbd7b547da05db2eefaf179d5983893313 100644
--- a/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
+++ b/.gitlab-industrial-ci-kinetic-no-rosinstall.yml
@@ -1,4 +1 @@
-include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/.gitlab-industrial-ci-no-rosinstall.yml'
-
-variables:
-  DEFAULT_DISTRO: kinetic
\ No newline at end of file
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/kinetic-default.yml'
\ No newline at end of file
diff --git a/.gitlab-industrial-ci-kinetic-with-rosinstall.yml b/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
index 4a367e36706b4eee8e485b0aeeaa21e70495b486..366ea7a1dcc9e721f5a374c46941e914b5462d1c 100644
--- a/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
+++ b/.gitlab-industrial-ci-kinetic-with-rosinstall.yml
@@ -1,4 +1 @@
-include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/.gitlab-industrial-ci-with-rosinstall.yml'
-
-variables:
-  DEFAULT_DISTRO: kinetic
\ No newline at end of file
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/with_rosinstall/kinetic-default.yml'
\ No newline at end of file
diff --git a/.gitlab-industrial-ci-melodic-no-rosinstall.yml b/.gitlab-industrial-ci-melodic-no-rosinstall.yml
deleted file mode 100644
index 99ab2071723525e2c554211b1449fc38024b14a1..0000000000000000000000000000000000000000
--- a/.gitlab-industrial-ci-melodic-no-rosinstall.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/.gitlab-industrial-ci-no-rosinstall.yml'
-
-variables:
-  DEFAULT_DISTRO: melodic
\ No newline at end of file
diff --git a/.gitlab-industrial-ci-melodic-with-rosinstall.yml b/.gitlab-industrial-ci-melodic-with-rosinstall.yml
deleted file mode 100644
index cd3db8afab445e1ff415ff1dc7a7b9f3de16a7fc..0000000000000000000000000000000000000000
--- a/.gitlab-industrial-ci-melodic-with-rosinstall.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/.gitlab-industrial-ci-with-rosinstall.yml'
-
-variables:
-  DEFAULT_DISTRO: melodic
\ No newline at end of file
diff --git a/.gitlab-industrial-ci-no-rosinstall.yml b/.gitlab-industrial-ci-no-rosinstall.yml
deleted file mode 100644
index a893c926acdd5a9182cbab45e40f856f9f74257d..0000000000000000000000000000000000000000
--- a/.gitlab-industrial-ci-no-rosinstall.yml
+++ /dev/null
@@ -1,142 +0,0 @@
-image: tecnalia-docker-dev.artifact.tecnalia.com/docker:git
-
-variables:
-  TMPDIR: /builds/${CI_PROJECT_NAMESPACE}
-  GIT_LFS_SKIP_SMUDGE: 1 # Avoid fetching the files from LFS when doing git fetch
-
-services:
-  - name: tecnalia-docker-dev.artifact.tecnalia.com/docker:dind
-    alias: docker
-
-stages:
-  - build
-
-workflow:
-  rules:
-    - if: $CI_COMMIT_BRANCH && $CI_COMMIT_REF_NAME =~ /^kinetic-.*/
-      variables:
-        DEFAULT_DISTRO: "kinetic"
-    - if: $CI_COMMIT_BRANCH && $CI_COMMIT_REF_NAME =~ /^melodic-.*/
-      variables:
-        DEFAULT_DISTRO: "melodic"
-    - if: $CI_COMMIT_BRANCH && $CI_COMMIT_REF_NAME =~ /^noetic-.*/
-      variables:
-        DEFAULT_DISTRO: "noetic"
-    - if: $CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^kinetic-.*/
-      variables:
-        DEFAULT_DISTRO: "kinetic"
-        DEPLOY: "true"
-    - if: $CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^melodic-.*/
-      variables:
-        DEFAULT_DISTRO: "melodic"
-        DEPLOY: "true"
-    - if: $CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^noetic-.*/
-      variables:
-        DEFAULT_DISTRO: "noetic"
-        DEPLOY: "true"
-    - if: $CI_COMMIT_TAG
-      variables:
-        DEPLOY: "true"
-    - if: $CI_COMMIT_BRANCH
-
-before_script:
-  - apk add --update bash coreutils tar wget
-  - docker login tecnalia-docker-dev.artifact.tecnalia.com -u ${ARTIFACT_CI_USER} -p ${ARTIFACT_CI_TOKEN}
-
-.industrial_ci:
-  stage: build
-  before_script:
-    - apk add --update bash coreutils tar
-    - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci.git .ci_config
-    - docker login ${ARTIFACT_DOCKER_URL} -u ${ARTIFACT_CI_USER} -p ${ARTIFACT_CI_TOKEN}
-    - docker login tecnalia-docker-dev.artifact.tecnalia.com -u ${ARTIFACT_CI_USER} -p ${ARTIFACT_CI_TOKEN}
-  script: .ci_config/gitlab.sh
-  variables:
-    ADDITIONAL_DEBS: curl
-    PARALLEL_BUILDS: 2 # keep this for now, since there seems to be memory limit issues in the ci VM
-    AFTER_SETUP_TARGET_WORKSPACE: rosenv && bash <(curl -Ls https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/scripts/ci_run_entry_points.sh) $$current_ws
-    CMAKE_ARGS: -DCMAKE_CXX_FLAGS=-Wno-ignored-attributes -Wno-int-in-bool-context
-  tags:
-    - docker
-
-industrial_ci_kinetic:
-  extends: .industrial_ci
-  variables:
-    ROS_DISTRO: kinetic
-    DOCKER_IMAGE: "${ARTIFACT_DOCKER_URL}/flexbotics-base-devel:${ROS_DISTRO}"
-  rules:
-    - if: $DEPLOY
-      when: never
-    - if: $DEFAULT_DISTRO == "kinetic"
-    - if: $BUILD_KINETIC
-
-industrial_ci_melodic:
-  extends: .industrial_ci
-  variables:
-    ROS_DISTRO: melodic
-    DOCKER_IMAGE: "${ARTIFACT_DOCKER_URL}/flexbotics-base-devel:${ROS_DISTRO}"
-  rules:
-    - if: $DEPLOY
-      when: never
-    - if: $DEFAULT_DISTRO == "melodic"
-    - if: $BUILD_MELODIC
-
-industrial_ci_noetic:
-  extends: .industrial_ci
-  variables:
-    ROS_DISTRO: noetic
-    DOCKER_IMAGE: "${ARTIFACT_DOCKER_URL}/flexbotics-base-devel:${ROS_DISTRO}"
-  rules:
-    - if: $DEPLOY
-      when: never
-    - if: $DEFAULT_DISTRO == "noetic"
-    - if: $BUILD_NOETIC
-
-.industrial_ci_deploy:
-  extends: .industrial_ci
-  variables:
-    AFTER_SCRIPT: "wget -q -O - https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/scripts/pre-deploy-cleanup.bash | bash"
-    DOCKER_COMMIT: industrial_ci_image
-  script:
-    - .ci_config/gitlab.sh
-    - cd $(mktemp -d)
-    - wget https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/archive/master/gitlab_templates-master.zip
-    - unzip gitlab_templates-master.zip && cd gitlab_templates-master/deploy
-    - cd base
-    - chmod a+x ros_entrypoint.bash
-    - docker build -t ${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME} .
-    - docker push ${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}
-    - cd ..
-    - cd dev
-    - docker build --build-arg APPLICATION_IMAGE=${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME} -t ${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}-dev .
-    - docker push ${ARTIFACT_DOCKER_URL}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}-dev
-    - cd ..
-  rules:
-    - if: $DEPLOY
-
-
-industrial_kinetic_deploy:
-  extends:
-    - industrial_ci_kinetic
-    - .industrial_ci_deploy
-  rules:
-    - if: $DEPLOY && $DEFAULT_DISTRO == "kinetic"
-    - if: $DEPLOY && $BUILD_KINETIC
-
-industrial_melodic_deploy:
-  extends:
-    - industrial_ci_melodic
-    - .industrial_ci_deploy
-  rules:
-    - if: $DEPLOY && $DEFAULT_DISTRO == "melodic"
-    - if: $DEPLOY && $BUILD_MELODIC
-
-industrial_noetic_deploy:
-  extends:
-    - industrial_ci_noetic
-    - .industrial_ci_deploy
-  rules:
-    - if: $DEPLOY && $DEFAULT_DISTRO == "noetic"
-    - if: $DEPLOY && $BUILD_NOETIC
-
-include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/gitlab-ci/post-check.yml'
\ No newline at end of file
diff --git a/.gitlab-industrial-ci-noetic-no-rosinstall.yml b/.gitlab-industrial-ci-noetic-no-rosinstall.yml
deleted file mode 100644
index 342021af32664712d371bf27c4068c7e7d3e8c59..0000000000000000000000000000000000000000
--- a/.gitlab-industrial-ci-noetic-no-rosinstall.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/.gitlab-industrial-ci-no-rosinstall.yml'
-
-variables:
-  DEFAULT_DISTRO: noetic
\ No newline at end of file
diff --git a/.gitlab-industrial-ci-noetic-with-rosinstall.yml b/.gitlab-industrial-ci-noetic-with-rosinstall.yml
deleted file mode 100644
index 6c4cc86b931dc1e00c0600539333ca79e698a3b6..0000000000000000000000000000000000000000
--- a/.gitlab-industrial-ci-noetic-with-rosinstall.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/.gitlab-industrial-ci-with-rosinstall.yml'
-
-variables:
-  DEFAULT_DISTRO: noetic
\ No newline at end of file
diff --git a/.gitlab-industrial-ci-with-rosinstall.yml b/.gitlab-industrial-ci-with-rosinstall.yml
deleted file mode 100644
index a3fa1300f42d07a012e9619a01ab80d7830adb0b..0000000000000000000000000000000000000000
--- a/.gitlab-industrial-ci-with-rosinstall.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/.gitlab-industrial-ci-kinetic-no-rosinstall.yml'
-
-.industrial_ci:
-  stage: build
-  before_script:
-    - apk add --update bash coreutils tar
-    - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci.git .ci_config
-    - docker login ${ARTIFACT_DOCKER_URL} -u ${ARTIFACT_CI_USER} -p ${ARTIFACT_CI_TOKEN}
-    - docker login tecnalia-docker-dev.artifact.tecnalia.com -u ${ARTIFACT_CI_USER} -p ${ARTIFACT_CI_TOKEN}
-  script: .ci_config/gitlab.sh
-  variables:
-    ADDITIONAL_DEBS: curl
-    PARALLEL_BUILDS: 2 # keep this for now, since there seems to be memory limit issues in the ci VM
-    UPSTREAM_WORKSPACE: .rosinstall
-    AFTER_SETUP_UPSTREAM_WORKSPACE: "rosenv && bash <(curl -Ls https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/scripts/ci_run_entry_points.sh) $$current_ws"
-    AFTER_SETUP_TARGET_WORKSPACE: "rosenv && bash <(curl -Ls https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/scripts/ci_run_entry_points.sh) $$current_ws"
-    CMAKE_ARGS: '-DCMAKE_CXX_FLAGS=-Wno-ignored-attributes -Wno-int-in-bool-context'
-  tags:
-    - docker
\ No newline at end of file
diff --git a/auto-rules/kinetic-default.yml b/auto-rules/kinetic-default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0c04cd5b092c3cfaef92b395068496c635408868
--- /dev/null
+++ b/auto-rules/kinetic-default.yml
@@ -0,0 +1,4 @@
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/no-default.yml'
+
+variables:
+  DEFAULT_DISTRO: kinetic
\ No newline at end of file
diff --git a/auto-rules/melodic-default.yml b/auto-rules/melodic-default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..023a8ea82ea6364ad40db1cdf29ce36311d7a293
--- /dev/null
+++ b/auto-rules/melodic-default.yml
@@ -0,0 +1,4 @@
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/no-default.yml'
+
+variables:
+  DEFAULT_DISTRO: melodic
\ No newline at end of file
diff --git a/auto-rules/no-default.yml b/auto-rules/no-default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..85581fb2da065bdc4bcf9cc8584f7abc0ea06b8c
--- /dev/null
+++ b/auto-rules/no-default.yml
@@ -0,0 +1,89 @@
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/core.yml'
+
+workflow:
+  rules:
+    - if: $CI_COMMIT_BRANCH && $CI_COMMIT_REF_NAME =~ /^kinetic-.*/
+      variables:
+        DEFAULT_DISTRO: "kinetic"
+    - if: $CI_COMMIT_BRANCH && $CI_COMMIT_REF_NAME =~ /^melodic-.*/
+      variables:
+        DEFAULT_DISTRO: "melodic"
+    - if: $CI_COMMIT_BRANCH && $CI_COMMIT_REF_NAME =~ /^noetic-.*/
+      variables:
+        DEFAULT_DISTRO: "noetic"
+    - if: $CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^kinetic-.*/
+      variables:
+        DEFAULT_DISTRO: "kinetic"
+        DEPLOY: "true"
+    - if: $CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^melodic-.*/
+      variables:
+        DEFAULT_DISTRO: "melodic"
+        DEPLOY: "true"
+    - if: $CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^noetic-.*/
+      variables:
+        DEFAULT_DISTRO: "noetic"
+        DEPLOY: "true"
+    - if: $CI_COMMIT_TAG
+      variables:
+        DEPLOY: "true"
+    - if: $CI_COMMIT_BRANCH
+
+
+industrial_ci_kinetic:
+  extends: .industrial_ci
+  variables:
+    ROS_DISTRO: kinetic
+    DOCKER_IMAGE: "${ARTIFACT_DOCKER_URL}/flexbotics-base-devel:${ROS_DISTRO}"
+  rules:
+    - if: $DEPLOY
+      when: never
+    - if: $DEFAULT_DISTRO == "kinetic"
+    - if: $BUILD_KINETIC
+
+industrial_ci_melodic:
+  extends: .industrial_ci
+  variables:
+    ROS_DISTRO: melodic
+    DOCKER_IMAGE: "${ARTIFACT_DOCKER_URL}/flexbotics-base-devel:${ROS_DISTRO}"
+  rules:
+    - if: $DEPLOY
+      when: never
+    - if: $DEFAULT_DISTRO == "melodic"
+    - if: $BUILD_MELODIC
+
+industrial_ci_noetic:
+  extends: .industrial_ci
+  variables:
+    ROS_DISTRO: noetic
+    DOCKER_IMAGE: "${ARTIFACT_DOCKER_URL}/flexbotics-base-devel:${ROS_DISTRO}"
+  rules:
+    - if: $DEPLOY
+      when: never
+    - if: $DEFAULT_DISTRO == "noetic"
+    - if: $BUILD_NOETIC
+
+
+
+industrial_kinetic_deploy:
+  extends:
+    - industrial_ci_kinetic
+    - .industrial_ci_deploy
+  rules:
+    - if: $DEPLOY && $DEFAULT_DISTRO == "kinetic"
+    - if: $DEPLOY && $BUILD_KINETIC
+
+industrial_melodic_deploy:
+  extends:
+    - industrial_ci_melodic
+    - .industrial_ci_deploy
+  rules:
+    - if: $DEPLOY && $DEFAULT_DISTRO == "melodic"
+    - if: $DEPLOY && $BUILD_MELODIC
+
+industrial_noetic_deploy:
+  extends:
+    - industrial_ci_noetic
+    - .industrial_ci_deploy
+  rules:
+    - if: $DEPLOY && $DEFAULT_DISTRO == "noetic"
+    - if: $DEPLOY && $BUILD_NOETIC
diff --git a/auto-rules/noetic-default.yml b/auto-rules/noetic-default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8239a7164315518a8f4deddedf2e70037825eff1
--- /dev/null
+++ b/auto-rules/noetic-default.yml
@@ -0,0 +1,4 @@
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/no-default.yml'
+
+variables:
+  DEFAULT_DISTRO: noetic
\ No newline at end of file
diff --git a/auto-rules/with-rosinstall/kinetic-default.yml b/auto-rules/with-rosinstall/kinetic-default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..20f6e8a380d9d67373fe6849c15e628244800bcc
--- /dev/null
+++ b/auto-rules/with-rosinstall/kinetic-default.yml
@@ -0,0 +1,4 @@
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/with-rosinstall/no-default.yml'
+
+variables:
+  DEFAULT_DISTRO: kinetic
\ No newline at end of file
diff --git a/auto-rules/with-rosinstall/melodic-default.yml b/auto-rules/with-rosinstall/melodic-default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..69519f9197c8828582ff2c066fb19141a7c74b3e
--- /dev/null
+++ b/auto-rules/with-rosinstall/melodic-default.yml
@@ -0,0 +1,4 @@
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/with-rosinstall/no-default.yml'
+
+variables:
+  DEFAULT_DISTRO: melodic
\ No newline at end of file
diff --git a/auto-rules/with-rosinstall/no-default.yml b/auto-rules/with-rosinstall/no-default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..cdc30c9b29e8e4ecde583816758e718e72cf919f
--- /dev/null
+++ b/auto-rules/with-rosinstall/no-default.yml
@@ -0,0 +1,6 @@
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/no-default'
+
+
+.industrial_ci:
+  variables:
+    UPSTREAM_WORKSPACE: .rosinstall
\ No newline at end of file
diff --git a/auto-rules/with-rosinstall/noetic-default.yml b/auto-rules/with-rosinstall/noetic-default.yml
new file mode 100644
index 0000000000000000000000000000000000000000..bf3d10cb520455f5a166c5d4d0f37849b039bc7b
--- /dev/null
+++ b/auto-rules/with-rosinstall/noetic-default.yml
@@ -0,0 +1,4 @@
+include : 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/-/raw/35-improve-ci-template-organization/auto-rules/with-rosinstall/no-default.yml'
+
+variables:
+  DEFAULT_DISTRO: noetic
\ No newline at end of file
diff --git a/core.yml b/core.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6f71cf5aeb7a5ad160a9ad17574bbed16195db33
--- /dev/null
+++ b/core.yml
@@ -0,0 +1,31 @@
+
+image: tecnalia-docker-dev.artifact.tecnalia.com/docker:git
+
+
+workflow:
+  rules:
+    - if: $CI_COMMIT_TAG
+    - if: $CI_COMMIT_BRANCH
+
+variables:
+  TMPDIR: /builds/${CI_PROJECT_NAMESPACE}
+  GIT_LFS_SKIP_SMUDGE: 1 # Avoid fetching the files from LFS when doing git fetch
+
+services:
+  - name: tecnalia-docker-dev.artifact.tecnalia.com/docker:dind
+    alias: docker
+
+stages:
+  - build
+
+before_script:
+  - apk add --update bash coreutils tar wget
+  - docker login tecnalia-docker-dev.artifact.tecnalia.com -u ${ARTIFACT_CI_USER} -p ${ARTIFACT_CI_TOKEN}
+
+include :
+  - project: tecnalia_robotics-public/gitlab_templates
+    ref: 35-improve-ci-template-organization
+    file:
+      - post-check.yml
+      - industrial-ci-templates.yml
+
diff --git a/industrial-ci-templates.yml b/industrial-ci-templates.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/gitlab-ci/post-check.yml b/post-check.yml
similarity index 100%
rename from gitlab-ci/post-check.yml
rename to post-check.yml