diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1e3fd8d3f1cb0f097525d16c8aa08c7257c080ce..89e476c1d94834e7708eb2d40d3afa1df837e67e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -20,6 +20,32 @@
   # update apt
   - apt-get update
 
+.license_header_template: &license_header_definition
+  - echo "current year of the headers:" ${LICENSE_HEADER_YEAR}
+  - export LICENSE_HEADER_YEAR_NEW=$( date +'%Y' )
+  # UPDATE: check if license headers have to be updated
+  - if [ ! ${LICENSE_HEADER_YEAR} == ${LICENSE_HEADER_YEAR_NEW} ] ; then
+  -   echo "license headers should be changed!"
+  -   echo "Creating new file wolf_scripts/license_header_${LICENSE_HEADER_YEAR_NEW}.txt..."
+  -   cd wolf_scripts
+  -   cp license_header_${LICENSE_HEADER_YEAR}.txt license_header_${LICENSE_HEADER_YEAR_NEW}.txt
+  -   sed -e "s/${LICENSE_HEADER_YEAR}/'${LICENSE_HEADER_YEAR},${LICENSE_HEADER_YEAR_NEW}'/g" license_header_${LICENSE_HEADER_YEAR_NEW}.txt
+  -   ./license_manager.sh --update --path=. --license-header=license_header_${LICENSE_HEADER_YEAR_NEW}.txt
+  # ADD: add license headers 
+  - else
+  -   ./license_manager.sh --add --path=. --license-header=license_header_${LICENSE_HEADER_YEAR}.txt
+  - fi
+
+  # push changes (if any)
+  - git config --global user.email "${CI_EMAIL}"
+  - git config --global user.name "${CI_USERNAME}"
+  - if git commit -m "license headers added or modified" ; then
+  -   git remote set-url --push origin "ssh://git@gitlab.iri.upc.edu:2202/${CI_PROJECT_PATH}.git"
+  -   git push origin HEAD:${CI_COMMIT_REF_NAME}
+  - else
+  -   echo "No changes, nothing to commit!"
+  - fi
+
 .build_and_test_template: &build_and_test_definition
   - mkdir -pv build
   - cd build
@@ -42,20 +68,8 @@ license_header:
   image: labrobotica/wolf_deps:16.04
   before_script:  
     - *preliminaries_definition
-    
-  script:
-    - git config --global user.email "${CI_EMAIL}"
-    - git config --global user.name "${CI_USERNAME}"
-
-    - touch prova.txt
-    - git add -f prova.txt
-    - git commit -m "added prova.txt" || echo "No changes, nothing to commit!"
-
-    - git remote set-url --push origin "ssh://git@gitlab.iri.upc.edu:2202/${CI_PROJECT_PATH}.git"
-
-    # push changes
-    # always return true so that the build does not fail if there are no changes
-    - git push origin HEAD:${CI_COMMIT_REF_NAME}
+  script: 
+    - *license_header_definition
 
 build_and_test:xenial:
   stage: build_and_test