From 2a10cb74496c99093d2a2bebf8d0141aa0bd36b1 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Thu, 19 Dec 2024 15:42:35 +0100
Subject: [PATCH] Modifications pour migration sous Git/GitLab

---
 .gitlab-ci.yml                                | 124 +++++++
 README.md                                     |  10 +-
 bin/sloccount.sh                              |  41 +--
 bin/tokei2cloc.py                             |  18 +-
 cli/bin/results_csv.r                         |   2 -
 cli/bin/sloccount.sh                          |  28 +-
 cli/bin/tokei2cloc.py                         |  73 +---
 cli/config/sun_checks.xml                     | 201 +----------
 cli/pom.xml                                   |   2 +-
 .../agroclim/season/cli/version.properties    |   1 -
 .../agroclim/season/cli/CliConfiguration.java |   5 +-
 .../inrae/agroclim/season/cli/CliHelper.java  |   5 +-
 .../fr/inrae/agroclim/season/cli/Main.java    |   5 +-
 .../fr/inrae/agroclim/season/cli/Version.java |   5 +-
 .../CancelCliOptionHandler.java               |   5 +-
 .../ConfigCliOptionHandler.java               |   5 +-
 .../ErrorCodesOptionHandler.java              |   5 +-
 .../IndicatorsOptionHandler.java              |   5 +-
 .../InfoCliOptionHandler.java                 |   5 +-
 .../PurgeCliOptionHandler.java                |   5 +-
 .../ReceiversCliOptionHandler.java            |   5 +-
 .../SimulationCliOptionHandler.java           |   5 +-
 .../VerboseCliOptionHandler.java              |   5 +-
 .../agroclim/season/cli/di/DaoModule.java     |   5 +-
 .../agroclim/season/cli/di/DiHelper.java      |   5 +-
 .../agroclim/season/cli/di/GeneralModule.java |   5 +-
 .../cli/error/ComputationErrorType.java       |  11 +-
 .../season/cli/error/EvaluationErrorType.java |   6 +-
 .../cli/error/SeasonCliErrorCategory.java     |   6 +-
 .../season/cli/error/package-info.java        |   3 +-
 .../agroclim/season/cli/jms/Receiver.java     |   5 +-
 .../inrae/agroclim/season/cli/mail/Mail.java  |   4 +-
 .../agroclim/season/cli/mail/MailService.java |   3 +-
 .../season/cli/mail/SendMailException.java    |   1 -
 .../season/cli/output/AbstractOutput.java     |   4 -
 .../agroclim/season/cli/output/CsvOutput.java |   4 -
 .../agroclim/season/cli/output/DbOutput.java  |   4 -
 .../agroclim/season/cli/output/LogOutput.java |   4 -
 .../agroclim/season/cli/messages.properties   |   1 -
 .../season/cli/messages_fr.properties         |   1 -
 .../season/cli/CliConfigurationTest.java      |   5 +-
 .../cli/error/SeasonCliErrorTypeTest.java     |   5 +-
 codemeta.json                                 |   3 +-
 config/sun_checks.xml                         | 334 +++++++++---------
 core-test/bin/sloccount.sh                    |  28 +-
 core-test/bin/tokei2cloc.py                   |  73 +---
 core-test/config/checkstyle-suppressions.xml  |   6 +
 core-test/config/sun_checks.xml               | 194 +---------
 .../src/main/resources/schema.tables.sql      |   2 +-
 core/bin/sloccount.sh                         |  28 +-
 core/bin/tokei2cloc.py                        |  73 +---
 core/config/sun_checks.xml                    | 201 +----------
 .../agroclim/season/core/version.properties   |   1 -
 .../agroclim/season/core/DatabaseRoles.java   |   4 -
 .../agroclim/season/core/IndicatorHelper.java |   5 +-
 .../agroclim/season/core/InputHelper.java     |   5 +-
 .../agroclim/season/core/SeasonVersion.java   |  17 +-
 .../season/core/SimulationLauncher.java       |   5 +-
 .../core/climate/CacheClimateDbLoader.java    |   5 +-
 .../season/core/climate/ClimateDbLoader.java  |   5 +-
 .../climate/PhenologyCalculatorBuilder.java   |   5 +-
 .../core/climate/SoilCalculatorBuilder.java   |   5 +-
 .../season/core/climate/SqlBuilder.java       |   4 -
 .../agroclim/season/core/dao/AccountDao.java  |   4 -
 .../season/core/dao/AccountDaoHibernate.java  |   4 -
 .../dao/CO2ConcentrationDaoHibernate.java     |   5 +-
 .../agroclim/season/core/dao/CellDao.java     |   4 -
 .../season/core/dao/CellDaoHibernate.java     |   4 -
 .../season/core/dao/ClimaticBaseDao.java      |   4 -
 .../core/dao/ClimaticBaseDaoHibernate.java    |   4 -
 .../season/core/dao/ClimaticModelDao.java     |   4 -
 .../core/dao/ClimaticModelDaoHibernate.java   |   4 -
 .../season/core/dao/ClimaticScenarioDao.java  |   4 -
 .../dao/ClimaticScenarioDaoHibernate.java     |   4 -
 .../season/core/dao/Co2ConcentrationDao.java  |   5 +-
 .../agroclim/season/core/dao/CrudDao.java     |   4 -
 .../inrae/agroclim/season/core/dao/Dao.java   |   4 -
 .../season/core/dao/DaoHibernate.java         |   4 -
 .../season/core/dao/DbConnectionDao.java      |   5 +-
 .../core/dao/DbConnectionDaoHibernate.java    |   5 +-
 .../season/core/dao/DbConnectionManager.java  |   4 -
 .../core/dao/FileFormatConversionDao.java     |   5 +-
 .../dao/FileFormatConversionDaoHibernate.java |   5 +-
 .../season/core/dao/GeoAttributeDao.java      |   4 -
 .../core/dao/GeoAttributeDaoHibernate.java    |   4 -
 .../agroclim/season/core/dao/HasTableDao.java |   4 -
 .../agroclim/season/core/dao/JdbcUtils.java   |   4 -
 .../agroclim/season/core/dao/LocaleDao.java   |   5 +-
 .../season/core/dao/LocaleDaoHibernate.java   |   4 -
 .../season/core/dao/PersistenceManager.java   |   4 -
 .../season/core/dao/PhenologicalModelDao.java |   4 -
 .../dao/PhenologicalModelDaoHibernate.java    |   4 -
 .../season/core/dao/SimulationDao.java        |   4 -
 .../core/dao/SimulationDaoHibernate.java      |   4 -
 .../season/core/dao/SimulationErrorDao.java   |   4 -
 .../core/dao/SimulationErrorDaoHibernate.java |   4 -
 .../core/dao/SimulationEvaluationDao.java     |   4 -
 .../dao/SimulationEvaluationDaoHibernate.java |   4 -
 .../season/core/dao/SimulationResultDao.java  |   4 -
 .../dao/SimulationResultDaoHibernate.java     |   4 -
 .../season/core/dao/SimulationSoilDao.java    |   4 -
 .../core/dao/SimulationSoilDaoHibernate.java  |   4 -
 .../agroclim/season/core/dao/VarietyDao.java  |   4 -
 .../season/core/dao/VarietyDaoHibernate.java  |   4 -
 .../season/core/dao/VarietyParameterDao.java  |   4 -
 .../dao/VarietyParameterDaoHibernate.java     |   4 -
 .../agroclim/season/core/dao/VersionDao.java  |  13 +-
 .../season/core/dao/VersionDaoHibernate.java  |  27 +-
 .../core/error/SeasonErrorCategory.java       |   6 +-
 .../error/SimulationPropertiesErrorType.java  |   5 +-
 .../agroclim/season/core/jms/JMSUtils.java    |   5 +-
 .../agroclim/season/core/jms/Sender.java      |   5 +-
 .../season/core/jms/SimulationDoneSender.java |   5 +-
 .../core/jms/SimulationProgressSender.java    |   5 +-
 .../season/core/jms/SimulationSender.java     |   5 +-
 .../agroclim/season/core/model/Account.java   |   5 +-
 .../season/core/model/Aggregation.java        |   5 +-
 .../agroclim/season/core/model/Cell.java      |   5 +-
 .../season/core/model/CellGeometry.java       |   5 +-
 .../season/core/model/ClimaticBase.java       |   5 +-
 .../season/core/model/ClimaticModel.java      |   5 +-
 .../season/core/model/ClimaticScenario.java   |   5 +-
 .../season/core/model/Co2Concentration.java   |   5 +-
 .../season/core/model/Computation.java        |   5 +-
 .../season/core/model/DbConnection.java       |   5 +-
 .../core/model/FileFormatConversion.java      |   5 +-
 .../season/core/model/GeoAttribute.java       |   5 +-
 .../core/model/LocalDateTimeConverter.java    |   4 -
 .../season/core/model/LocaleEntity.java       |   5 +-
 .../agroclim/season/core/model/Period.java    |   5 +-
 .../season/core/model/PhenologicalModel.java  |   5 +-
 .../season/core/model/Simulation.java         |   5 +-
 .../season/core/model/SimulationError.java    |   4 -
 .../core/model/SimulationEvaluation.java      |   5 +-
 .../season/core/model/SimulationResult.java   |   4 -
 .../season/core/model/SimulationSettings.java |   5 +-
 .../season/core/model/SimulationSoil.java     |   4 -
 .../core/model/SimulationTreatment.java       |   5 +-
 .../agroclim/season/core/model/Species.java   |   5 +-
 .../agroclim/season/core/model/Treatment.java |   5 +-
 .../season/core/model/TreatmentPhase.java     |   5 +-
 .../agroclim/season/core/model/Variety.java   |   5 +-
 .../season/core/model/VarietyParameter.java   |   5 +-
 .../agroclim/season/core/model/Version.java   |  12 +-
 .../core/service/SimulationService.java       |  10 +-
 .../AggregationValidator.java                 |   5 +-
 .../simulationproperties/FileValidator.java   |   5 +-
 .../PhenologicalModelValidator.java           |   5 +-
 .../RequiredKeysValidator.java                |   5 +-
 .../SimulationProperties.java                 |   5 +-
 .../core/simulationproperties/Validator.java  |   5 +-
 .../agroclim/season/core/messages.properties  |   1 -
 .../season/core/messages_fr.properties        |   1 -
 .../agroclim/season/core/AggregationTest.java |   5 +-
 .../core/IndicatorHelperAllVariablesTest.java |   5 +-
 .../season/core/IndicatorHelperTest.java      |   5 +-
 .../season/core/JdbcTestInitialization.java   |   5 +-
 .../agroclim/season/core/PeriodTest.java      |   5 +-
 .../season/core/SeasonErrorTypeTest.java      |   5 +-
 .../season/core/SeasonVersionTest.java        |   5 +-
 .../season/core/SimulationLauncherTest.java   |   5 +-
 .../core/climate/ClimateDbLoaderTest.java     |   5 +-
 .../core/dao/AccountDaoHibernateTest.java     |   5 +-
 .../dao/ClimaticScenarioDaoHibernateTest.java |   5 +-
 ...cVariableClimaticDataDaoHibernateTest.java |   3 +-
 .../dao/ClimaticVariableDaoHibernateTest.java |   5 +-
 .../season/core/dao/DaoHibernateTest.java     |   5 +-
 .../core/dao/DbConnectionManagerTest.java     |   5 +-
 .../season/core/dao/JdbcUtilsTest.java        |   5 +-
 .../core/dao/LocaleDaoHibernateTest.java      |   5 +-
 .../PhenologicalModelDaoHibernateTest.java    |   5 +-
 .../core/dao/SimulationDaoHibernateTest.java  |   5 +-
 .../dao/SimulationErrorDaoHibernateTest.java  |   5 +-
 .../dao/SimulationResultDaoHibernateTest.java |   5 +-
 .../dao/SimulationSoilDaoHibernateTest.java   |   5 +-
 .../dao/VarietyParameterDaoHibernateTest.java |   5 +-
 .../core/dao/VersionDaoHibernateTest.java     |   7 +-
 .../core/model/SimulationResultTest.java      |   4 -
 .../AggregationValidatorTest.java             |   5 +-
 .../FileValidatorTest.java                    |   5 +-
 .../RequiredKeysValidatorTest.java            |   5 +-
 .../SimulationPropertiesTest.java             |   5 +-
 pom.xml                                       |  22 +-
 publiccode.yml                                |   2 +-
 sql/migration.sql                             |  10 +
 src/site/markdown/astuces-dev.md              |   4 -
 src/site/markdown/composants.md               |  22 +-
 src/site/markdown/donnees.md                  | 120 +++----
 src/site/markdown/execution.md                |  10 +-
 src/site/markdown/index.md.vm                 |   4 -
 src/site/markdown/install.md                  |  27 +-
 src/site/markdown/postgresql.md               |  31 +-
 src/site/markdown/simulationproperties.md     |  36 +-
 src/site/markdown/update.md                   |  18 +-
 src/site/resources/images/cls-schema.puml     |   7 +-
 src/site/resources/images/cmp-cdt.puml        |   6 +-
 src/site/resources/images/seq-facade.puml     |   5 +-
 .../resources/images/seq-utilisateur.puml     |   5 +-
 src/site/site.xml                             |  12 +-
 199 files changed, 644 insertions(+), 1936 deletions(-)
 create mode 100644 .gitlab-ci.yml
 mode change 100755 => 120000 cli/bin/sloccount.sh
 mode change 100755 => 120000 cli/bin/tokei2cloc.py
 mode change 100644 => 120000 cli/config/sun_checks.xml
 mode change 100755 => 120000 core-test/bin/sloccount.sh
 mode change 100755 => 120000 core-test/bin/tokei2cloc.py
 create mode 100644 core-test/config/checkstyle-suppressions.xml
 mode change 100644 => 120000 core-test/config/sun_checks.xml
 mode change 100755 => 120000 core/bin/sloccount.sh
 mode change 100755 => 120000 core/bin/tokei2cloc.py
 mode change 100644 => 120000 core/config/sun_checks.xml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000..7948381b
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,124 @@
+# To use the registry, DOCKER_AUTH_CONFIG must be set
+image: registry.forgemia.inra.fr/agroclim/common/docker-projets-java:latest
+variables:
+  MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"
+  MAVEN_CLI_OPTS: "-s $CI_PROJECT_DIR/ci_settings.xml"
+default:
+  # Cache downloaded dependencies and plugins between builds.
+  cache:
+    key: maven-repository
+    paths:
+      - $CI_PROJECT_DIR/.m2/repository
+  tags:
+    - agroclim
+stages:
+    - build
+    - test
+    - install
+    - code-check
+    - deploy
+.settingsxml:
+  before_script:
+    - echo "Maven settings.xml"
+    - echo "$M2_SETTINGS_XML" > $CI_PROJECT_DIR/ci_settings.xml
+dependencies_job:
+  stage: build
+  extends: .settingsxml
+  script:
+    - echo "Download all dependencies (dependencies, plugins, reports)"
+    - mvn $MAVEN_CLI_OPTS dependency:go-offline --projects=.,cli,core,core-test
+build_job:
+  stage: build
+  extends: .settingsxml
+  needs: ["dependencies_job"]
+  script:
+    - echo "Maven compile started"
+    - mvn $MAVEN_CLI_OPTS clean compile test-compile
+    - /usr/bin/tokei --version
+  artifacts:
+    expire_in: 1 week
+    when: always
+    paths:
+      - target
+      - "*/target"
+test_job:
+  stage: test
+  extends: .settingsxml
+  needs: ["build_job"]
+  script:
+    - echo "Maven test started"
+    - mvn $MAVEN_CLI_OPTS test org.jacoco:jacoco-maven-plugin:report-aggregate
+  artifacts:
+    expire_in: 1 week
+    when: always
+    paths:
+      - target
+      - "*/target"
+    reports:
+      junit:
+        - "*/target/surefire-reports/TEST-*.xml"
+        - "*/target/failsafe-reports/TEST-*.xml"
+
+install_job:
+  stage: install
+  extends: .settingsxml
+  needs: ["test_job"]
+  script:
+    - echo "Maven packaging started"
+    - mvn $MAVEN_CLI_OPTS install -Dcheckstyle.skip=true -Dcpd.skip=true -Dpmd.skip=true -DskipTests
+  artifacts:
+    expire_in: 1 week
+    when: always
+    paths:
+      - .m2/repository
+      - target
+      - "*/target"
+checkstyle_job:
+  stage: code-check
+  extends: .settingsxml
+  needs: ["install_job"]
+  script:
+    - mvn $MAVEN_CLI_OPTS checkstyle:checkstyle
+pmd_job:
+  stage: code-check
+  extends: .settingsxml
+  needs: ["install_job"]
+  script:
+    - mvn $MAVEN_CLI_OPTS pmd:pmd
+cpd_job:
+  stage: code-check
+  extends: .settingsxml
+  needs: ["install_job"]
+  script:
+    - mvn $MAVEN_CLI_OPTS pmd:cpd
+cobertura_job:
+  stage: deploy
+  needs: ["test_job"]
+  script:
+    # convert report from jacoco to cobertura, using relative project path
+    - python /opt/cover2cover.py
+      cli/target/site/jacoco-aggregate/jacoco.xml
+      core/target/site/jacoco-aggregate/jacoco.xml
+      core-test/target/site/jacoco-aggregate/jacoco.xml
+      $CI_PROJECT_DIR/cli/src/main/java/
+      $CI_PROJECT_DIR/core/src/main/java/
+      $CI_PROJECT_DIR/core-test/src/main/java/
+      > target/cobertura.xml
+# https://agroclim.pages.mia.inra.fr/Indicators/season
+pages:
+  stage: deploy
+  extends: .settingsxml
+  needs: ["checkstyle_job", "pmd_job", "cpd_job"]
+  script:
+    - mvn $MAVEN_CLI_OPTS site -DskipTests
+    - rm -fr target/site/cli target/site/core target/site/core-test
+    - mv cli/target/site/ target/site/cli
+    - mv core/target/site/ target/site/core
+    - mv core-test/target/site/ target/site/core-test
+  artifacts:
+    expire_in: 1 week
+    when: always
+    paths:
+      - target
+      - "*/target"
+  publish: target/site
diff --git a/README.md b/README.md
index 7ff48b40..8bb3ce6f 100644
--- a/README.md
+++ b/README.md
@@ -4,19 +4,25 @@
 
 SEASON (*System for Evaluation of Agriculture faiSability using indicatOrs combiNation*) is a workflow developed at INRAE AgroClim to compute agro- and eco-climatic indicators using daily grid climatik datasets, grid soil properties data, variety parameters.
 
-It uses the Indicators library with its phenological models in case of eco-climatic indicators or fixed stages in case of agro-climatic indicators.
+It uses the [Indicators library](https://forgemia.inra.fr/agroclim/Indicators/indicators-java) with its phenological models in case of eco-climatic indicators or fixed stages in case of agro-climatic indicators.
 
 PostgreSQL databases are used to get climatic data and grid data and to store the application data and results.
 
 ## Documentation
 
-Documentation (in French) is written in the directory `/src/site/markdown/`.
+Documentation (in French) is written in the directory [`/src/site/markdown/`](src/site/markdown/index.md) and available online at <https://agroclim.pages.mia.inra.fr/Indicators/season/>.
+
+Documentation is handled by `maven-site-plugin`.
 
 To view it, with JDK 17:
 
 - run `mvn site` and open `target/site/index.html` or
 - run `mvn site:run` and browse the link, generally <http://localhost:8080/>.
 
+## License
+
+[GNU GENERAL PUBLIC LICENSE Version 3](License.txt).
+
 ## Cite SEASON
 
 > Maury, Olivier; Garcia de Cortazar Atauri, Iñaki; Bertuzzi, Patrick; Lagier, Marc; Clastre, Philippe, 2021, "SEASON : System for Evaluation of Agriculture faiSability using indicatOrs combiNation", https://doi.org/10.15454/LAPNHT, Recherche Data Gouv, V3
diff --git a/bin/sloccount.sh b/bin/sloccount.sh
index 17ac45ee..41aed14e 100755
--- a/bin/sloccount.sh
+++ b/bin/sloccount.sh
@@ -1,27 +1,28 @@
 #!/bin/bash
+ROOT_DIR=$(dirname $(dirname $0))
 TOKEI2CLOC=$(dirname $0)/tokei2cloc.py
-TOKEITGZ=tokei-v7.0.3-x86_64-unknown-linux-gnu.tar.gz
-if [ ! -f bin/tokei ]; then
-	mkdir -p ~/tmp
-	if [ ! -f ~/tmp/$TOKEITGZ ]; then
-		wget "https://github.com/Aaronepower/tokei/releases/download/v7.0.3/$TOKEITGZ" -O ~/tmp/$TOKEITGZ
+TOKEI=$(command -v tokei)
+if [ ! -x "$TOKEI" ]; then
+	TOKEITGZ=tokei-x86_64-unknown-linux-gnu.tar.gz
+	if [ ! -f bin/tokei ]; then
+		mkdir -p ~/tmp
+		if [ ! -f ~/tmp/$TOKEITGZ ]; then
+			wget "https://github.com/Aaronepower/tokei/releases/download/v12.1.2/$TOKEITGZ" -O ~/tmp/$TOKEITGZ
+		fi
+		tar zxf ~/tmp/$TOKEITGZ -C bin
 	fi
-	tar zxf ~/tmp/$TOKEITGZ -C bin
+	TOKEI=bin/tokei
 fi
-if [ -f bin/tokei ]; then
-	mkdir -p target
-	bin/tokei -f -o json src | $TOKEI2CLOC > target/cloc.xml
-	exit
+if [ ! -f $TOKEI ]; then
+	echo "Strange, $TOKEI does not exist!"
+	exit 1
 fi
 
-SLOCCOUNT=$(which sloccount);
-if [ "$SLOCCOUNT" != "" ]; then
-	DATADIR=$(dirname $0)/.slocdata;
-	if [ ! -f $DATADIR ]; then
-		mkdir -p $DATADIR;
-	fi
-	mkdir -p target ;
-	/usr/bin/sloccount --datadir $DATADIR --duplicates --wide --details src > target/sloccount.sc;
-else 
-	echo "sloccount not found!";
+echo "tokei is installed at $TOKEI"
+$TOKEI --version
+mkdir -p $ROOT_DIR/target
+if [ ! -d $ROOT_DIR/www-client ]; then
+	$TOKEI -f -o json $ROOT_DIR/src | $TOKEI2CLOC > $ROOT_DIR/target/cloc.xml
+	exit
 fi
+$TOKEI -f -o json $ROOT_DIR/www-client/src $ROOT_DIR/www-server/src $ROOT_DIR/www-shared/src | $TOKEI2CLOC > $ROOT_DIR/target/cloc.xml
diff --git a/bin/tokei2cloc.py b/bin/tokei2cloc.py
index a6ec8993..bde43be2 100755
--- a/bin/tokei2cloc.py
+++ b/bin/tokei2cloc.py
@@ -1,12 +1,8 @@
 #!/usr/bin/env python3
 # -*- coding: UTF-8 -*-
 
-# $Id$
-#
 # Author : Olivier Maury
 # Creation Date : 2019-01-15 10:30:29 +0200
-# Last Revision : $Date$
-# Revision : $Rev$
 u"""
 NOM
         %prog - Tokei2Cloc
@@ -35,8 +31,10 @@ results = json.loads(sys.stdin.read())
 nb_files = 0
 nb_lines = 0
 for lang in results:
-    nb_files += len(results[lang]['stats'])
-    nb_lines += int(results[lang]['lines'])
+    nb_files += len(results[lang]['reports'])
+    nb_lines += int(results[lang]['blanks'])
+    nb_lines += int(results[lang]['code'])
+    nb_lines += int(results[lang]['comments'])
 
 print("""<?xml version="1.0"?><results>
 <header>
@@ -56,10 +54,10 @@ total_blank = 0
 total_comment = 0
 total_code = 0
 for lang in results:
-    for result in results[lang]['stats']:
-        blank = int(result['blanks'])
-        comment = int(result['comments'])
-        code = int(result['code'])
+    for result in results[lang]['reports']:
+        blank = int(result['stats']['blanks'])
+        comment = int(result['stats']['comments'])
+        code = int(result['stats']['code'])
         print("""  <file name="%s" blank="%d" comment="%d" code="%d"  language="%s" />""" % 
             (result['name'], blank, comment, code, lang))
         total_blank += blank
diff --git a/cli/bin/results_csv.r b/cli/bin/results_csv.r
index 999689c6..ee6194bd 100755
--- a/cli/bin/results_csv.r
+++ b/cli/bin/results_csv.r
@@ -3,8 +3,6 @@
 
 #' Load or install a package.
 #'
-#' $Id$
-#' 
 #' @param packagename string package name
 require.install.package <- function(packagename) {
   if (FALSE == require(packagename, quietly=TRUE, character.only=TRUE)) {
diff --git a/cli/bin/sloccount.sh b/cli/bin/sloccount.sh
deleted file mode 100755
index 17ac45ee..00000000
--- a/cli/bin/sloccount.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-TOKEI2CLOC=$(dirname $0)/tokei2cloc.py
-TOKEITGZ=tokei-v7.0.3-x86_64-unknown-linux-gnu.tar.gz
-if [ ! -f bin/tokei ]; then
-	mkdir -p ~/tmp
-	if [ ! -f ~/tmp/$TOKEITGZ ]; then
-		wget "https://github.com/Aaronepower/tokei/releases/download/v7.0.3/$TOKEITGZ" -O ~/tmp/$TOKEITGZ
-	fi
-	tar zxf ~/tmp/$TOKEITGZ -C bin
-fi
-if [ -f bin/tokei ]; then
-	mkdir -p target
-	bin/tokei -f -o json src | $TOKEI2CLOC > target/cloc.xml
-	exit
-fi
-
-SLOCCOUNT=$(which sloccount);
-if [ "$SLOCCOUNT" != "" ]; then
-	DATADIR=$(dirname $0)/.slocdata;
-	if [ ! -f $DATADIR ]; then
-		mkdir -p $DATADIR;
-	fi
-	mkdir -p target ;
-	/usr/bin/sloccount --datadir $DATADIR --duplicates --wide --details src > target/sloccount.sc;
-else 
-	echo "sloccount not found!";
-fi
diff --git a/cli/bin/sloccount.sh b/cli/bin/sloccount.sh
new file mode 120000
index 00000000..9665874d
--- /dev/null
+++ b/cli/bin/sloccount.sh
@@ -0,0 +1 @@
+../../bin/sloccount.sh
\ No newline at end of file
diff --git a/cli/bin/tokei2cloc.py b/cli/bin/tokei2cloc.py
deleted file mode 100755
index a6ec8993..00000000
--- a/cli/bin/tokei2cloc.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: UTF-8 -*-
-
-# $Id$
-#
-# Author : Olivier Maury
-# Creation Date : 2019-01-15 10:30:29 +0200
-# Last Revision : $Date$
-# Revision : $Rev$
-u"""
-NOM
-        %prog - Tokei2Cloc
-
-DESCRIPTION
-        Formate la sortie de tokei dans le format de Cloc
-
-EXEMPLE
-        tokei -f -o json bin src | %prog
-
-AUTEUR
-        Olivier Maury
-
-VERSION
-        $Date$
-"""
-
-__revision__ = "$Rev$"
-__author__ = "Olivier Maury"
-import json
-import sys
-
-results = json.loads(sys.stdin.read())
-
-# header
-nb_files = 0
-nb_lines = 0
-for lang in results:
-    nb_files += len(results[lang]['stats'])
-    nb_lines += int(results[lang]['lines'])
-
-print("""<?xml version="1.0"?><results>
-<header>
-  <cloc_url>http://cloc.sourceforge.net</cloc_url>
-  <cloc_version>1.60</cloc_version>
-  <elapsed_seconds>0.348630905151367</elapsed_seconds>
-  <n_files>%d</n_files>
-  <n_lines>%d</n_lines>
-  <files_per_second>510.568619619987</files_per_second>
-  <lines_per_second>88902.0438005723</lines_per_second>
-  <report_file>target/cloc.xml</report_file>
-</header>
-<files> """ % (nb_files, nb_lines))
-
-# files
-total_blank = 0
-total_comment = 0
-total_code = 0
-for lang in results:
-    for result in results[lang]['stats']:
-        blank = int(result['blanks'])
-        comment = int(result['comments'])
-        code = int(result['code'])
-        print("""  <file name="%s" blank="%d" comment="%d" code="%d"  language="%s" />""" % 
-            (result['name'], blank, comment, code, lang))
-        total_blank += blank
-        total_comment += comment
-        total_code += code
-
-# total
-print("""  <total blank="%d" comment="%d" code="%d" />
-</files>
-</results>""" % (total_blank, total_comment, total_code))
diff --git a/cli/bin/tokei2cloc.py b/cli/bin/tokei2cloc.py
new file mode 120000
index 00000000..9adeef3a
--- /dev/null
+++ b/cli/bin/tokei2cloc.py
@@ -0,0 +1 @@
+../../bin/tokei2cloc.py
\ No newline at end of file
diff --git a/cli/config/sun_checks.xml b/cli/config/sun_checks.xml
deleted file mode 100644
index 762bf178..00000000
--- a/cli/config/sun_checks.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module PUBLIC
-		  "-//Checkstyle//DTD Check Configuration 1.3//EN"
-		  "https://checkstyle.org/dtds/configuration_1_3.dtd">
-<!-- This is a checkstyle configuration file derived from Sun coding conventions. 
-	For descriptions of what the following rules do, please see the checkstyle 
-	configuration page at http://checkstyle.sourceforge.net/config.html -->
-
-
-<!--
-
-  Checkstyle configuration that checks the sun coding conventions from:
-
-  - the Java Language Specification at
-    http://java.sun.com/docs/books/jls/second_edition/html/index.html
-
-  - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
-
-  - the Javadoc guidelines at
-   http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
-
-  - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
-
- - some best practices
-
-  Checkstyle is very configurable. Be sure to read the documentation at
-  http://checkstyle.sf.net (or in your downloaded distribution).
-
-  Most Checks are configurable, be sure to consult the documentation.
-
-  To completely disable a check, just comment it out or delete it from the file.
-
-  Finally, it is worth reading the documentation.
-
--->
-<module name="Checker">
-	<!--
-		If you set the basedir property below, then all reported file
-		names will be relative to the specified directory. See
-		http://checkstyle.sourceforge.net/5.x/config.html#Checker
-
-		<property name="basedir" value="${basedir}"/>
-	-->
-
-	<!--
-	-->
-	<property name="fileExtensions" value="java, xml"/>
-
-	<!-- Checks that a package-info.java file exists for each package. -->
-	<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
-	<module name="JavadocPackage" />
-
-	<!-- Checks whether files end with a new line. -->
-	<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
-	<module name="NewlineAtEndOfFile" />
-
-	<!-- Checks that property files contain the same keys. -->
-	<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
-	<module name="Translation" />
-
-	<!-- Checks for Size Violations. -->
-	<!-- See http://checkstyle.sf.net/config_sizes.html -->
-	<module name="FileLength" />
-
-	<!-- Checks for whitespace -->
-	<!-- See http://checkstyle.sf.net/config_whitespace.html -->
-	<module name="FileTabCharacter" />
-
-	<!-- https://checkstyle.sourceforge.io/config_sizes.html#LineLength -->
-	<module name="LineLength">
-		<property name="ignorePattern" value="^import " />
-		<property name="max" value="120" />
-	</module>
-  
-	<!-- Miscellaneous other checks. -->
-	<!-- See http://checkstyle.sf.net/config_misc.html -->
-	<module name="RegexpSingleline">
-		<property name="format" value="\s+$" />
-		<property name="minimum" value="0" />
-		<property name="maximum" value="0" />
-		<property name="message" value="Line has trailing spaces." />
-	</module>
-
-	<module name="SuppressionFilter">
-		<property name="file"
-			value="${basedir}/config/checkstyle-suppressions.xml" />
-	</module>
-
-	<!-- Adding to Sun convention: -->
-	<module name="SuppressWarningsFilter" />
-	<!-- <module name="SuppressionCommentFilter"> <property name="offCommentFormat" 
-		value="CHECKSTYLE.OFF\: ([\w\|]+)" /> <property name="onCommentFormat" value="CHECKSTYLE.ON\: 
-		([\w\|]+)" /> <property name="checkFormat" value="$1" /> </module> -->
-
-	<!-- Checks for Headers -->
-	<!-- See http://checkstyle.sf.net/config_header.html -->
-	<!-- <module name="Header"> -->
-	<!-- <property name="headerFile" value="${checkstyle.header.file}"/> -->
-	<!-- <property name="fileExtensions" value="java"/> -->
-	<!-- </module> -->
-	<module name="TreeWalker">
-
-		<!-- Checks for Javadoc comments. -->
-		<!-- See http://checkstyle.sf.net/config_javadoc.html -->
-		<module name="JavadocMethod" />
-		<module name="JavadocType" />
-		<module name="JavadocVariable" />
-		<module name="JavadocStyle" />
-
-
-		<!-- Checks for Naming Conventions. -->
-		<!-- See http://checkstyle.sf.net/config_naming.html -->
-		<module name="ConstantName" />
-		<module name="LocalFinalVariableName" />
-		<module name="LocalVariableName" />
-		<module name="MemberName" />
-		<module name="MethodName" />
-		<module name="PackageName" />
-		<module name="ParameterName" />
-		<module name="StaticVariableName" />
-		<module name="TypeName" />
-
-
-		<!-- Checks for imports -->
-		<!-- See http://checkstyle.sf.net/config_import.html -->
-		<module name="AvoidStarImport" />
-		<module name="IllegalImport" /> <!-- defaults to sun.* packages -->
-		<module name="RedundantImport" />
-		<module name="UnusedImports" />
-
-
-		<!-- Checks for Size Violations. -->
-		<!-- See http://checkstyle.sf.net/config_sizes.html -->
-		<module name="MethodLength" />
-		<module name="ParameterNumber">
-	        <property name="max" value="9"/>
-		</module>
-
-		<!-- Checks for whitespace -->
-		<!-- See http://checkstyle.sf.net/config_whitespace.html -->
-		<module name="EmptyForIteratorPad" />
-		<module name="GenericWhitespace" />
-		<module name="MethodParamPad" />
-		<module name="NoWhitespaceAfter" />
-		<module name="NoWhitespaceBefore" />
-		<module name="OperatorWrap" />
-		<module name="ParenPad" />
-		<module name="TypecastParenPad" />
-		<module name="WhitespaceAfter" />
-		<module name="WhitespaceAround" />
-
-
-		<!-- Modifier Checks -->
-		<!-- See http://checkstyle.sf.net/config_modifiers.html -->
-		<module name="ModifierOrder" />
-		<module name="RedundantModifier" />
-
-
-		<!-- Checks for blocks. You know, those {}'s -->
-		<!-- See http://checkstyle.sf.net/config_blocks.html -->
-		<module name="AvoidNestedBlocks" />
-		<module name="EmptyBlock" />
-		<module name="LeftCurly" />
-		<module name="NeedBraces" />
-		<module name="RightCurly" />
-
-
-		<!-- Checks for common coding problems -->
-		<!-- See http://checkstyle.sf.net/config_coding.html -->
-		<module name="AvoidInlineConditionals" />
-		<module name="EmptyStatement" />
-		<module name="EqualsHashCode" />
-		<module name="HiddenField" />
-		<module name="IllegalInstantiation" />
-		<module name="InnerAssignment" />
-		<module name="MagicNumber" />
-		<module name="MissingSwitchDefault" />
-		<module name="SimplifyBooleanExpression" />
-		<module name="SimplifyBooleanReturn" />
-
-		<!-- Checks for class design -->
-		<!-- See http://checkstyle.sf.net/config_design.html -->
-		<module name="DesignForExtension" />
-		<module name="FinalClass" />
-		<module name="HideUtilityClassConstructor" />
-		<module name="InterfaceIsType" />
-		<module name="VisibilityModifier" />
-
-
-		<!-- Miscellaneous other checks. -->
-		<!-- See http://checkstyle.sf.net/config_misc.html -->
-		<module name="ArrayTypeStyle" />
-		<module name="FinalParameters" />
-		<module name="TodoComment" />
-		<module name="UpperEll" />
-
-		<!-- Adding to Sun convention: -->
-		<module name="SuppressWarningsHolder" />
-	</module>
-</module>
diff --git a/cli/config/sun_checks.xml b/cli/config/sun_checks.xml
new file mode 120000
index 00000000..63587434
--- /dev/null
+++ b/cli/config/sun_checks.xml
@@ -0,0 +1 @@
+../../config/sun_checks.xml
\ No newline at end of file
diff --git a/cli/pom.xml b/cli/pom.xml
index 75876935..6b3e9786 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -323,7 +323,7 @@
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>jdepend-maven-plugin</artifactId>
-                <version>2.0</version>
+                <version>2.1</version>
             </plugin>
 
             <!-- Generates a cross-reference of the project's sources. -->
diff --git a/cli/src/main/filtered/fr/inrae/agroclim/season/cli/version.properties b/cli/src/main/filtered/fr/inrae/agroclim/season/cli/version.properties
index 6081d964..bc59c784 100644
--- a/cli/src/main/filtered/fr/inrae/agroclim/season/cli/version.properties
+++ b/cli/src/main/filtered/fr/inrae/agroclim/season/cli/version.properties
@@ -1,5 +1,4 @@
 # Version info set when season-cli is packaged.
-# $Id$
 version=${pom.version}
 build.date=${build.date}
 build.number=${buildNumber}
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/CliConfiguration.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/CliConfiguration.java
index 0ec27107..2fd50eb2 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/CliConfiguration.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/CliConfiguration.java
@@ -18,10 +18,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Configuration properties for CLI.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class CliConfiguration {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/CliHelper.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/CliHelper.java
index 722b4b03..032009b6 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/CliHelper.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/CliHelper.java
@@ -20,10 +20,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Helper with methods to load data.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class CliHelper {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/Main.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/Main.java
index 474cc978..7dfe45a0 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/Main.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/Main.java
@@ -39,10 +39,7 @@ import picocli.CommandLine.IVersionProvider;
 /**
  * Main class for CLI.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Command(//
         name = "SEASON-cli", //
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/Version.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/Version.java
index f78fb630..b0976a66 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/Version.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/Version.java
@@ -7,10 +7,7 @@ import fr.inrae.agroclim.indicators.resources.Resources;
 /**
  * Information on version of SEASON-CLI.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class Version {
 
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/CancelCliOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/CancelCliOptionHandler.java
index 9fb11532..8cfc3ba1 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/CancelCliOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/CancelCliOptionHandler.java
@@ -8,10 +8,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Handler for the option "--cancel" of the command line interface.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class CancelCliOptionHandler implements Consumer<Integer> {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ConfigCliOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ConfigCliOptionHandler.java
index 572962ab..fb716656 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ConfigCliOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ConfigCliOptionHandler.java
@@ -15,10 +15,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Handler for the option "--config" of the command line interface.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class ConfigCliOptionHandler implements Consumer<String> {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ErrorCodesOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ErrorCodesOptionHandler.java
index b191cdae..fc449a0b 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ErrorCodesOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ErrorCodesOptionHandler.java
@@ -29,10 +29,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Handler for the option "--list-error-codes" of the command line interface.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 @RequiredArgsConstructor
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/IndicatorsOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/IndicatorsOptionHandler.java
index e340978d..cab6ca48 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/IndicatorsOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/IndicatorsOptionHandler.java
@@ -14,10 +14,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Handler for the option "--list-indicators" of the command line interface.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 @RequiredArgsConstructor
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/InfoCliOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/InfoCliOptionHandler.java
index 5da0a3f4..65bf99e9 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/InfoCliOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/InfoCliOptionHandler.java
@@ -11,10 +11,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Handler for the option "--info" of the command line interface.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class InfoCliOptionHandler implements Consumer<Integer> {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/PurgeCliOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/PurgeCliOptionHandler.java
index cf1a4a9f..bf29b4ca 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/PurgeCliOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/PurgeCliOptionHandler.java
@@ -20,10 +20,7 @@ import lombok.extern.log4j.Log4j2;
  *
  * Drop table results.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 @RequiredArgsConstructor
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ReceiversCliOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ReceiversCliOptionHandler.java
index 35af73b7..43efa25e 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ReceiversCliOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/ReceiversCliOptionHandler.java
@@ -10,10 +10,7 @@ import lombok.RequiredArgsConstructor;
  *
  * Starts JMS receivers.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @RequiredArgsConstructor
 public final class ReceiversCliOptionHandler implements Consumer<Integer> {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/SimulationCliOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/SimulationCliOptionHandler.java
index 9caec63b..c9774909 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/SimulationCliOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/SimulationCliOptionHandler.java
@@ -39,10 +39,7 @@ import lombok.extern.log4j.Log4j2;
  *
  * Starts JMS receivers.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 @RequiredArgsConstructor
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/VerboseCliOptionHandler.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/VerboseCliOptionHandler.java
index 81a1fbcf..198aaec3 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/VerboseCliOptionHandler.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/clioptionhandlers/VerboseCliOptionHandler.java
@@ -14,10 +14,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Handler for the option "--verbose" of the command line interface.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class VerboseCliOptionHandler implements Consumer<String> {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/di/DaoModule.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/di/DaoModule.java
index eca2e61b..cf53fd79 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/di/DaoModule.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/di/DaoModule.java
@@ -37,10 +37,7 @@ import fr.inrae.agroclim.season.core.service.SimulationService;
 /**
  * Module for Dagger dependency injection.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class DaoModule {
 
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/di/DiHelper.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/di/DiHelper.java
index 4104e7ec..54d09dbc 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/di/DiHelper.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/di/DiHelper.java
@@ -7,10 +7,7 @@ import fr.inrae.agroclim.season.core.dao.PersistenceManager;
 /**
  * Helper for dependency injections.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class DiHelper {
 
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/di/GeneralModule.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/di/GeneralModule.java
index 182eebab..527aaf18 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/di/GeneralModule.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/di/GeneralModule.java
@@ -11,10 +11,7 @@ import fr.inrae.agroclim.season.cli.mail.MailService;
 /**
  * Module for Dagger dependency injection.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class GeneralModule {
 
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/error/ComputationErrorType.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/error/ComputationErrorType.java
index 89ecc274..e0e2db5a 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/error/ComputationErrorType.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/error/ComputationErrorType.java
@@ -11,22 +11,23 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public enum ComputationErrorType implements CommonErrorType {
     /**
-     * {@link Treatment#computation} is null.
+     * {@link fr.inrae.agroclim.season.core.model.Treatment}{@code #getComputation()}
+     * is null.
      *
      * parameter 0 : cell id.
      */
     COMPUTATION_NULL(null, "001"),
     /**
-     * {@link Treatment#evaluation} is null.
+     * {@link fr.inrae.agroclim.season.core.model.Treatment}{@code #getEvaluation()}
+     * is null.
      *
      * parameter 0 : cell id.
      */
     EVALUATION_NULL(null, "002"),
     /**
-     * Error while {@link Evaluation#compute()}.
+     * Error while {@link fr.inrae.agroclim.indicators.model.Evaluation#compute()}.
      *
-     * parameter 0 : cell id.
-     * parameter 1 : localized message of cause.
+     * parameter 0 : cell id. parameter 1 : localized message of cause.
      */
     COMPUTATION(null, "003"),
     /**
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/error/EvaluationErrorType.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/error/EvaluationErrorType.java
index a56144b7..ff2f6cef 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/error/EvaluationErrorType.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/error/EvaluationErrorType.java
@@ -11,11 +11,13 @@ import lombok.RequiredArgsConstructor;
 @RequiredArgsConstructor
 public enum EvaluationErrorType implements CommonErrorType {
     /**
-     * From {@link Evaluation#toAggregate(boolean)}.
+     * From
+     * {@link fr.inrae.agroclim.indicators.model.Evaluation#isAggregationMissing(boolean)}.
      */
     AGGREGATION_MISSING(null, "002"),
     /**
-     * From {@link Evaluation#isAggregationValid()}.
+     * From
+     * {@link fr.inrae.agroclim.indicators.model.Evaluation#isAggregationValid()}.
      */
     AGGREGATION_INVALID(null, "003"),
     /**
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/error/SeasonCliErrorCategory.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/error/SeasonCliErrorCategory.java
index 1d94ee2d..61debc3e 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/error/SeasonCliErrorCategory.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/error/SeasonCliErrorCategory.java
@@ -8,11 +8,7 @@ import lombok.RequiredArgsConstructor;
 /**
  * Category for error types in the SEASON-core library.
  *
- * Last change $Date$
- *
- * @author omaury
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @RequiredArgsConstructor
 public enum SeasonCliErrorCategory implements ErrorCategory {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/error/package-info.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/error/package-info.java
index c1f27f59..11028707 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/error/package-info.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/error/package-info.java
@@ -1,4 +1,5 @@
 /**
- * {@link ErrorType} implementations for error handling.
+ * {@link fr.inrae.agroclim.indicators.exception.ErrorType} implementations for
+ * error handling.
  */
 package fr.inrae.agroclim.season.cli.error;
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/jms/Receiver.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/jms/Receiver.java
index 77ff428e..6ab31587 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/jms/Receiver.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/jms/Receiver.java
@@ -43,10 +43,7 @@ import org.semver4j.Semver;
  *
  * Implements Runnable to be run by Thread.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class Receiver implements MessageListener, Runnable {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/Mail.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/Mail.java
index 8ec6981f..79bace1e 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/Mail.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/Mail.java
@@ -7,10 +7,8 @@ import java.util.List;
 /**
  * E-mail data.
  *
- * Last changed : $Date$
- *
  * @author ddelannoy
- * @version $Id$
+ * @author Olivier Maury
  */
 public final class Mail {
 
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/MailService.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/MailService.java
index 5bf1e99f..ea5a2a8b 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/MailService.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/MailService.java
@@ -34,8 +34,7 @@ import lombok.extern.log4j.Log4j2;
  * MailService is used to send e-mails.
  *
  * @author ddelannoy
- * @author omaury
- * @version $Id$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class MailService {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/SendMailException.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/SendMailException.java
index 9ff3a9b5..cb03571d 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/SendMailException.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/mail/SendMailException.java
@@ -4,7 +4,6 @@ package fr.inrae.agroclim.season.cli.mail;
  * Exception levée lors de l'envoi d'un mail par le service de mail.
  *
  * @author asorbier
- * @version $Id$
  */
 public class SendMailException extends Exception {
 
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/output/AbstractOutput.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/output/AbstractOutput.java
index 3687d81a..d97940a0 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/output/AbstractOutput.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/output/AbstractOutput.java
@@ -26,11 +26,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Managing outputs.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public abstract class AbstractOutput {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/output/CsvOutput.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/output/CsvOutput.java
index 8c9e663f..9595028f 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/output/CsvOutput.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/output/CsvOutput.java
@@ -18,11 +18,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Saving outputs into CSV file.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public final class CsvOutput extends AbstractOutput {
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/output/DbOutput.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/output/DbOutput.java
index 3dc7b0b5..831491fe 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/output/DbOutput.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/output/DbOutput.java
@@ -43,11 +43,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Saving outputs into database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 @RequiredArgsConstructor
diff --git a/cli/src/main/java/fr/inrae/agroclim/season/cli/output/LogOutput.java b/cli/src/main/java/fr/inrae/agroclim/season/cli/output/LogOutput.java
index a7a3633c..2b52ef38 100644
--- a/cli/src/main/java/fr/inrae/agroclim/season/cli/output/LogOutput.java
+++ b/cli/src/main/java/fr/inrae/agroclim/season/cli/output/LogOutput.java
@@ -10,11 +10,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Printing outputs into log.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public final class LogOutput extends AbstractOutput {
diff --git a/cli/src/main/resources/fr/inrae/agroclim/season/cli/messages.properties b/cli/src/main/resources/fr/inrae/agroclim/season/cli/messages.properties
index ed88ecf0..79dee7dc 100644
--- a/cli/src/main/resources/fr/inrae/agroclim/season/cli/messages.properties
+++ b/cli/src/main/resources/fr/inrae/agroclim/season/cli/messages.properties
@@ -1,5 +1,4 @@
 # Strings for season-cli
-# $Id$
 error.category.computation=Computation error
 error.category.evaluation=Evaluation definition
 error.computation.null=Treatment.computation must not be null (cell #{0})!
diff --git a/cli/src/main/resources/fr/inrae/agroclim/season/cli/messages_fr.properties b/cli/src/main/resources/fr/inrae/agroclim/season/cli/messages_fr.properties
index 09b71c8c..c39b1e05 100644
--- a/cli/src/main/resources/fr/inrae/agroclim/season/cli/messages_fr.properties
+++ b/cli/src/main/resources/fr/inrae/agroclim/season/cli/messages_fr.properties
@@ -1,5 +1,4 @@
 # Textes pour season-cli
-# $Id$
 error.category.computation=Erreur de calcul
 error.category.evaluation=D\u00e9finition de l\u2019\u00e9valuation
 error.computation.null=Treatment.computation ne doit pas \u00eatre nul (maille n\u00b0{0}) !
diff --git a/cli/src/test/java/fr/inrae/agroclim/season/cli/CliConfigurationTest.java b/cli/src/test/java/fr/inrae/agroclim/season/cli/CliConfigurationTest.java
index 893e86f0..42d9a56d 100644
--- a/cli/src/test/java/fr/inrae/agroclim/season/cli/CliConfigurationTest.java
+++ b/cli/src/test/java/fr/inrae/agroclim/season/cli/CliConfigurationTest.java
@@ -8,10 +8,7 @@ import org.junit.jupiter.api.Test;
 /**
  * Test the CLI configuration.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 class CliConfigurationTest {
 
diff --git a/cli/src/test/java/fr/inrae/agroclim/season/cli/error/SeasonCliErrorTypeTest.java b/cli/src/test/java/fr/inrae/agroclim/season/cli/error/SeasonCliErrorTypeTest.java
index 0689f9a3..be2c4996 100644
--- a/cli/src/test/java/fr/inrae/agroclim/season/cli/error/SeasonCliErrorTypeTest.java
+++ b/cli/src/test/java/fr/inrae/agroclim/season/cli/error/SeasonCliErrorTypeTest.java
@@ -16,10 +16,7 @@ import fr.inrae.agroclim.indicators.util.ErrorTypeUtils;
 /**
  * Ensure all implementations of {@link ErrorType} are well defined.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 class SeasonCliErrorTypeTest {
     /**
diff --git a/codemeta.json b/codemeta.json
index a6bf28dc..8eb1d532 100644
--- a/codemeta.json
+++ b/codemeta.json
@@ -19,7 +19,7 @@
             "givenName": "Olivier"
         }
     ],
-    "codeRepository": "https://w3.avignon.inrae.fr/svn/cdt/trunk/",
+    "codeRepository": "https://forgemia.inra.fr/agroclim/Indicators/season/",
     "contIntegration": "http://jenkins:8080/job/SEASON/",
     "description": "SEASON, workflow to compute agro- and eco-climatic indicators with grid data.",
     "identifier": "fr.inrae.agroclim.season",
@@ -32,6 +32,7 @@
         "url": "https://agroclim.inrae.fr/"
     },
     "programmingLanguage": "Java",
+    "readme": "https://forgemia.inra.fr/agroclim/Indicators/indicators-java/-/blob/main/README.md",
     "runtimePlatform": "Java",
     "softwareRequirements": [
         {
diff --git a/config/sun_checks.xml b/config/sun_checks.xml
index 541aff47..bfa657d6 100644
--- a/config/sun_checks.xml
+++ b/config/sun_checks.xml
@@ -1,26 +1,26 @@
 <?xml version="1.0"?>
 <!DOCTYPE module PUBLIC
-          "-//Checkstyle//DTD Check Configuration 1.3//EN"
-          "https://checkstyle.org/dtds/configuration_1_3.dtd">
+		  "-//Checkstyle//DTD Check Configuration 1.3//EN"
+		  "https://checkstyle.org/dtds/configuration_1_3.dtd">
 <!-- This is a checkstyle configuration file derived from Sun coding conventions.
-     For descriptions of what the following rules do, please see the checkstyle
-     configuration page at http://checkstyle.sourceforge.net/config.html -->
+	For descriptions of what the following rules do, please see the checkstyle
+	configuration page at http://checkstyle.sourceforge.net/config.html -->
 
 <!--
 
   Checkstyle configuration that checks the sun coding conventions from:
 
-    - the Java Language Specification at
-      http://java.sun.com/docs/books/jls/second_edition/html/index.html
+  - the Java Language Specification at
+    http://java.sun.com/docs/books/jls/second_edition/html/index.html
 
-    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+  - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
 
-    - the Javadoc guidelines at
-      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+  - the Javadoc guidelines at
+   http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
 
-    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+  - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
 
-    - some best practices
+ - some best practices
 
   Checkstyle is very configurable. Be sure to read the documentation at
   http://checkstyle.sf.net (or in your downloaded distribution).
@@ -33,161 +33,167 @@
 
 -->
 <module name="Checker">
-    <!--
-        If you set the basedir property below, then all reported file
-        names will be relative to the specified directory. See
-        http://checkstyle.sourceforge.net/5.x/config.html#Checker
+	<!--
+		If you set the basedir property below, then all reported file
+		names will be relative to the specified directory. See
+		http://checkstyle.sourceforge.net/5.x/config.html#Checker
 
-        <property name="basedir" value="${basedir}"/>
-    -->
+		<property name="basedir" value="${basedir}"/>
+	-->
 
 	<!--
-    <property name="fileExtensions" value="java, properties, xml"/>
 	-->
-
-    <!-- Checks that a package-info.java file exists for each package.     -->
-    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
-  <module name="JavadocPackage" />
-
-    <!-- Checks whether files end with a new line.                        -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
-  <module name="NewlineAtEndOfFile" />
-
-    <!-- Checks that property files contain the same keys.         -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
-  <module name="Translation" />
-
-    <!-- Checks for Size Violations.                    -->
-    <!-- See http://checkstyle.sf.net/config_sizes.html -->
-  <module name="FileLength" />
-
-    <!-- Checks for whitespace                               -->
-    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-  <module name="FileTabCharacter" />
-
-  <!-- https://checkstyle.sourceforge.io/config_sizes.html#LineLength -->
-  <module name="LineLength">
-      <property name="ignorePattern" value="^import " />
-  </module>
-
-    <!-- Miscellaneous other checks.                   -->
-    <!-- See http://checkstyle.sf.net/config_misc.html -->
-  <module name="RegexpSingleline">
-    <property name="format" value="\s+$" />
-    <property name="minimum" value="0" />
-    <property name="maximum" value="0" />
-    <property name="message" value="Line has trailing spaces." />
-  </module>
-
-  <module name="SuppressionFilter">
-    <property name="file" value="config/checkstyle-suppressions.xml"/>
-  </module>
-
-    <!-- Adding to Sun convention: -->
-  <module name="SuppressWarningsFilter" />
-
-    <!-- Checks for Headers                                -->
-    <!-- See http://checkstyle.sf.net/config_header.html   -->
-    <!-- <module name="Header"> -->
-    <!--   <property name="headerFile" value="${checkstyle.header.file}"/> -->
-    <!--   <property name="fileExtensions" value="java"/> -->
-    <!-- </module> -->
-  <module name="TreeWalker">
-
-        <!-- Checks for Javadoc comments.                     -->
-        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
-    <module name="JavadocMethod" />
-    <module name="JavadocType" />
-    <module name="JavadocVariable" />
-    <module name="JavadocStyle" />
-
-
-        <!-- Checks for Naming Conventions.                  -->
-        <!-- See http://checkstyle.sf.net/config_naming.html -->
-    <module name="ConstantName" />
-    <module name="LocalFinalVariableName" />
-    <module name="LocalVariableName" />
-    <module name="MemberName" />
-    <module name="MethodName" />
-    <module name="PackageName" />
-    <module name="ParameterName" />
-    <module name="StaticVariableName" />
-    <module name="TypeName" />
-
-
-        <!-- Checks for imports                              -->
-        <!-- See http://checkstyle.sf.net/config_import.html -->
-    <module name="AvoidStarImport" />
-    <module name="IllegalImport" /> <!-- defaults to sun.* packages -->
-    <module name="RedundantImport" />
-    <module name="UnusedImports" />
-
-
-        <!-- Checks for Size Violations.                    -->
-    <!-- See http://checkstyle.sf.net/config_sizes.html -->
-    <module name="MethodLength" />
-    <module name="ParameterNumber" />
-
-
-        <!-- Checks for whitespace                               -->
-        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-    <module name="EmptyForIteratorPad" />
-    <module name="GenericWhitespace" />
-    <module name="MethodParamPad" />
-    <module name="NoWhitespaceAfter" />
-    <module name="NoWhitespaceBefore" />
-    <module name="OperatorWrap" />
-    <module name="ParenPad" />
-    <module name="TypecastParenPad" />
-    <module name="WhitespaceAfter" />
-    <module name="WhitespaceAround" />
-
-
-        <!-- Modifier Checks                                    -->
-        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
-    <module name="ModifierOrder" />
-    <module name="RedundantModifier" />
-
-
-        <!-- Checks for blocks. You know, those {}'s         -->
-        <!-- See http://checkstyle.sf.net/config_blocks.html -->
-    <module name="AvoidNestedBlocks" />
-    <module name="EmptyBlock" />
-    <module name="LeftCurly" />
-    <module name="NeedBraces" />
-    <module name="RightCurly" />
-
-
-        <!-- Checks for common coding problems               -->
-        <!-- See http://checkstyle.sf.net/config_coding.html -->
-    <module name="AvoidInlineConditionals" />
-    <module name="EmptyStatement" />
-    <module name="EqualsHashCode" />
-    <module name="HiddenField" />
-    <module name="IllegalInstantiation" />
-    <module name="InnerAssignment" />
-    <module name="MagicNumber" />
-    <module name="MissingSwitchDefault" />
-    <module name="SimplifyBooleanExpression" />
-    <module name="SimplifyBooleanReturn" />
-
-        <!-- Checks for class design                         -->
-        <!-- See http://checkstyle.sf.net/config_design.html -->
-    <module name="DesignForExtension" />
-    <module name="FinalClass" />
-    <module name="HideUtilityClassConstructor" />
-    <module name="InterfaceIsType" />
-    <module name="VisibilityModifier" />
-
-
-        <!-- Miscellaneous other checks.                   -->
-        <!-- See http://checkstyle.sf.net/config_misc.html -->
-    <module name="ArrayTypeStyle" />
-    <module name="FinalParameters" />
-    <module name="TodoComment" />
-    <module name="UpperEll" />
-
-        <!-- Adding to Sun convention: -->
-    <module name="SuppressWarningsHolder" />
-  </module>
+	<property name="fileExtensions" value="java, xml"/>
+
+	<!-- Checks that a package-info.java file exists for each package. -->
+	<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
+	<module name="JavadocPackage" />
+
+	<!-- Checks whether files end with a new line. -->
+	<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+	<module name="NewlineAtEndOfFile" />
+
+	<!-- Checks that property files contain the same keys. -->
+	<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+	<module name="Translation" />
+
+	<!-- Checks for Size Violations. -->
+	<!-- See http://checkstyle.sf.net/config_sizes.html -->
+	<module name="FileLength" />
+
+	<!-- Checks for whitespace -->
+	<!-- See http://checkstyle.sf.net/config_whitespace.html -->
+	<module name="FileTabCharacter" />
+
+	<!-- https://checkstyle.sourceforge.io/config_sizes.html#LineLength -->
+	<module name="LineLength">
+		<property name="ignorePattern" value="^import " />
+		<property name="max" value="120" />
+	</module>
+
+	<!-- Miscellaneous other checks. -->
+	<!-- See http://checkstyle.sf.net/config_misc.html -->
+	<module name="RegexpSingleline">
+		<property name="format" value="\s+$" />
+		<property name="minimum" value="0" />
+		<property name="maximum" value="0" />
+		<property name="message" value="Line has trailing spaces." />
+	</module>
+
+	<module name="SuppressionFilter">
+		<property name="file"
+			value="${basedir}/config/checkstyle-suppressions.xml" />
+	</module>
+
+	<!-- Adding to Sun convention: -->
+	<module name="SuppressWarningsFilter" />
+	<!-- <module name="SuppressionCommentFilter"> <property name="offCommentFormat"
+		value="CHECKSTYLE.OFF\: ([\w\|]+)" /> <property name="onCommentFormat" value="CHECKSTYLE.ON\:
+		([\w\|]+)" /> <property name="checkFormat" value="$1" /> </module> -->
+
+	<!-- Checks for Headers -->
+	<!-- See http://checkstyle.sf.net/config_header.html -->
+	<!-- <module name="Header"> -->
+	<!-- <property name="headerFile" value="${checkstyle.header.file}"/> -->
+	<!-- <property name="fileExtensions" value="java"/> -->
+	<!-- </module> -->
+	<module name="TreeWalker">
+
+		<!-- Checks for Javadoc comments. -->
+		<!-- See http://checkstyle.sf.net/config_javadoc.html -->
+		<module name="JavadocMethod" />
+		<module name="JavadocType" />
+		<module name="JavadocVariable" />
+		<module name="JavadocStyle" />
+
+
+		<!-- Checks for Naming Conventions. -->
+		<!-- See http://checkstyle.sf.net/config_naming.html -->
+		<module name="ConstantName" />
+		<module name="LocalFinalVariableName" />
+		<module name="LocalVariableName" />
+		<module name="MemberName" />
+		<module name="MethodName" />
+		<module name="PackageName" />
+		<module name="ParameterName" />
+		<module name="StaticVariableName" />
+		<module name="TypeName" />
+
+
+		<!-- Checks for imports -->
+		<!-- See http://checkstyle.sf.net/config_import.html -->
+		<module name="AvoidStarImport" />
+		<module name="IllegalImport" /> <!-- defaults to sun.* packages -->
+		<module name="RedundantImport" />
+		<module name="UnusedImports" />
+
+
+		<!-- Checks for Size Violations. -->
+		<!-- See http://checkstyle.sf.net/config_sizes.html -->
+		<module name="MethodLength" />
+		<module name="ParameterNumber">
+	        <property name="max" value="9"/>
+		</module>
+
+		<!-- Checks for whitespace -->
+		<!-- See http://checkstyle.sf.net/config_whitespace.html -->
+		<module name="EmptyForIteratorPad" />
+		<module name="GenericWhitespace" />
+		<module name="MethodParamPad" />
+		<module name="NoWhitespaceAfter" />
+		<module name="NoWhitespaceBefore" />
+		<module name="OperatorWrap" />
+		<module name="ParenPad" />
+		<module name="TypecastParenPad" />
+		<module name="WhitespaceAfter" />
+		<module name="WhitespaceAround" />
+
+
+		<!-- Modifier Checks -->
+		<!-- See http://checkstyle.sf.net/config_modifiers.html -->
+		<module name="ModifierOrder" />
+		<module name="RedundantModifier" />
+
+
+		<!-- Checks for blocks. You know, those {}'s -->
+		<!-- See http://checkstyle.sf.net/config_blocks.html -->
+		<module name="AvoidNestedBlocks" />
+		<module name="EmptyBlock" />
+		<module name="LeftCurly" />
+		<module name="NeedBraces" />
+		<module name="RightCurly" />
+
+
+		<!-- Checks for common coding problems -->
+		<!-- See http://checkstyle.sf.net/config_coding.html -->
+		<module name="AvoidInlineConditionals" />
+		<module name="EmptyStatement" />
+		<module name="EqualsHashCode" />
+		<module name="HiddenField" />
+		<module name="IllegalInstantiation" />
+		<module name="InnerAssignment" />
+		<module name="MagicNumber" />
+		<module name="MissingSwitchDefault" />
+		<module name="SimplifyBooleanExpression" />
+		<module name="SimplifyBooleanReturn" />
+
+		<!-- Checks for class design -->
+		<!-- See http://checkstyle.sf.net/config_design.html -->
+		<module name="DesignForExtension" />
+		<module name="FinalClass" />
+		<module name="HideUtilityClassConstructor" />
+		<module name="InterfaceIsType" />
+		<module name="VisibilityModifier" />
+
+
+		<!-- Miscellaneous other checks. -->
+		<!-- See http://checkstyle.sf.net/config_misc.html -->
+		<module name="ArrayTypeStyle" />
+		<module name="FinalParameters" />
+		<module name="TodoComment" />
+		<module name="UpperEll" />
+
+		<!-- Adding to Sun convention: -->
+		<module name="SuppressWarningsHolder" />
+	</module>
 </module>
diff --git a/core-test/bin/sloccount.sh b/core-test/bin/sloccount.sh
deleted file mode 100755
index 17ac45ee..00000000
--- a/core-test/bin/sloccount.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-TOKEI2CLOC=$(dirname $0)/tokei2cloc.py
-TOKEITGZ=tokei-v7.0.3-x86_64-unknown-linux-gnu.tar.gz
-if [ ! -f bin/tokei ]; then
-	mkdir -p ~/tmp
-	if [ ! -f ~/tmp/$TOKEITGZ ]; then
-		wget "https://github.com/Aaronepower/tokei/releases/download/v7.0.3/$TOKEITGZ" -O ~/tmp/$TOKEITGZ
-	fi
-	tar zxf ~/tmp/$TOKEITGZ -C bin
-fi
-if [ -f bin/tokei ]; then
-	mkdir -p target
-	bin/tokei -f -o json src | $TOKEI2CLOC > target/cloc.xml
-	exit
-fi
-
-SLOCCOUNT=$(which sloccount);
-if [ "$SLOCCOUNT" != "" ]; then
-	DATADIR=$(dirname $0)/.slocdata;
-	if [ ! -f $DATADIR ]; then
-		mkdir -p $DATADIR;
-	fi
-	mkdir -p target ;
-	/usr/bin/sloccount --datadir $DATADIR --duplicates --wide --details src > target/sloccount.sc;
-else 
-	echo "sloccount not found!";
-fi
diff --git a/core-test/bin/sloccount.sh b/core-test/bin/sloccount.sh
new file mode 120000
index 00000000..9665874d
--- /dev/null
+++ b/core-test/bin/sloccount.sh
@@ -0,0 +1 @@
+../../bin/sloccount.sh
\ No newline at end of file
diff --git a/core-test/bin/tokei2cloc.py b/core-test/bin/tokei2cloc.py
deleted file mode 100755
index a6ec8993..00000000
--- a/core-test/bin/tokei2cloc.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: UTF-8 -*-
-
-# $Id$
-#
-# Author : Olivier Maury
-# Creation Date : 2019-01-15 10:30:29 +0200
-# Last Revision : $Date$
-# Revision : $Rev$
-u"""
-NOM
-        %prog - Tokei2Cloc
-
-DESCRIPTION
-        Formate la sortie de tokei dans le format de Cloc
-
-EXEMPLE
-        tokei -f -o json bin src | %prog
-
-AUTEUR
-        Olivier Maury
-
-VERSION
-        $Date$
-"""
-
-__revision__ = "$Rev$"
-__author__ = "Olivier Maury"
-import json
-import sys
-
-results = json.loads(sys.stdin.read())
-
-# header
-nb_files = 0
-nb_lines = 0
-for lang in results:
-    nb_files += len(results[lang]['stats'])
-    nb_lines += int(results[lang]['lines'])
-
-print("""<?xml version="1.0"?><results>
-<header>
-  <cloc_url>http://cloc.sourceforge.net</cloc_url>
-  <cloc_version>1.60</cloc_version>
-  <elapsed_seconds>0.348630905151367</elapsed_seconds>
-  <n_files>%d</n_files>
-  <n_lines>%d</n_lines>
-  <files_per_second>510.568619619987</files_per_second>
-  <lines_per_second>88902.0438005723</lines_per_second>
-  <report_file>target/cloc.xml</report_file>
-</header>
-<files> """ % (nb_files, nb_lines))
-
-# files
-total_blank = 0
-total_comment = 0
-total_code = 0
-for lang in results:
-    for result in results[lang]['stats']:
-        blank = int(result['blanks'])
-        comment = int(result['comments'])
-        code = int(result['code'])
-        print("""  <file name="%s" blank="%d" comment="%d" code="%d"  language="%s" />""" % 
-            (result['name'], blank, comment, code, lang))
-        total_blank += blank
-        total_comment += comment
-        total_code += code
-
-# total
-print("""  <total blank="%d" comment="%d" code="%d" />
-</files>
-</results>""" % (total_blank, total_comment, total_code))
diff --git a/core-test/bin/tokei2cloc.py b/core-test/bin/tokei2cloc.py
new file mode 120000
index 00000000..9adeef3a
--- /dev/null
+++ b/core-test/bin/tokei2cloc.py
@@ -0,0 +1 @@
+../../bin/tokei2cloc.py
\ No newline at end of file
diff --git a/core-test/config/checkstyle-suppressions.xml b/core-test/config/checkstyle-suppressions.xml
new file mode 100644
index 00000000..c4261e13
--- /dev/null
+++ b/core-test/config/checkstyle-suppressions.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE suppressions PUBLIC
+    "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
+"https://checkstyle.org/dtds/suppressions_1_2.dtd">
+<suppressions>
+</suppressions>
diff --git a/core-test/config/sun_checks.xml b/core-test/config/sun_checks.xml
deleted file mode 100644
index 541aff47..00000000
--- a/core-test/config/sun_checks.xml
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module PUBLIC
-          "-//Checkstyle//DTD Check Configuration 1.3//EN"
-          "https://checkstyle.org/dtds/configuration_1_3.dtd">
-<!-- This is a checkstyle configuration file derived from Sun coding conventions.
-     For descriptions of what the following rules do, please see the checkstyle
-     configuration page at http://checkstyle.sourceforge.net/config.html -->
-
-<!--
-
-  Checkstyle configuration that checks the sun coding conventions from:
-
-    - the Java Language Specification at
-      http://java.sun.com/docs/books/jls/second_edition/html/index.html
-
-    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
-
-    - the Javadoc guidelines at
-      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
-
-    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
-
-    - some best practices
-
-  Checkstyle is very configurable. Be sure to read the documentation at
-  http://checkstyle.sf.net (or in your downloaded distribution).
-
-  Most Checks are configurable, be sure to consult the documentation.
-
-  To completely disable a check, just comment it out or delete it from the file.
-
-  Finally, it is worth reading the documentation.
-
--->
-<module name="Checker">
-    <!--
-        If you set the basedir property below, then all reported file
-        names will be relative to the specified directory. See
-        http://checkstyle.sourceforge.net/5.x/config.html#Checker
-
-        <property name="basedir" value="${basedir}"/>
-    -->
-
-	<!--
-    <property name="fileExtensions" value="java, properties, xml"/>
-	-->
-
-    <!-- Checks that a package-info.java file exists for each package.     -->
-    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
-  <module name="JavadocPackage" />
-
-    <!-- Checks whether files end with a new line.                        -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
-  <module name="NewlineAtEndOfFile" />
-
-    <!-- Checks that property files contain the same keys.         -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
-  <module name="Translation" />
-
-    <!-- Checks for Size Violations.                    -->
-    <!-- See http://checkstyle.sf.net/config_sizes.html -->
-  <module name="FileLength" />
-
-    <!-- Checks for whitespace                               -->
-    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-  <module name="FileTabCharacter" />
-
-  <!-- https://checkstyle.sourceforge.io/config_sizes.html#LineLength -->
-  <module name="LineLength">
-      <property name="ignorePattern" value="^import " />
-  </module>
-
-    <!-- Miscellaneous other checks.                   -->
-    <!-- See http://checkstyle.sf.net/config_misc.html -->
-  <module name="RegexpSingleline">
-    <property name="format" value="\s+$" />
-    <property name="minimum" value="0" />
-    <property name="maximum" value="0" />
-    <property name="message" value="Line has trailing spaces." />
-  </module>
-
-  <module name="SuppressionFilter">
-    <property name="file" value="config/checkstyle-suppressions.xml"/>
-  </module>
-
-    <!-- Adding to Sun convention: -->
-  <module name="SuppressWarningsFilter" />
-
-    <!-- Checks for Headers                                -->
-    <!-- See http://checkstyle.sf.net/config_header.html   -->
-    <!-- <module name="Header"> -->
-    <!--   <property name="headerFile" value="${checkstyle.header.file}"/> -->
-    <!--   <property name="fileExtensions" value="java"/> -->
-    <!-- </module> -->
-  <module name="TreeWalker">
-
-        <!-- Checks for Javadoc comments.                     -->
-        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
-    <module name="JavadocMethod" />
-    <module name="JavadocType" />
-    <module name="JavadocVariable" />
-    <module name="JavadocStyle" />
-
-
-        <!-- Checks for Naming Conventions.                  -->
-        <!-- See http://checkstyle.sf.net/config_naming.html -->
-    <module name="ConstantName" />
-    <module name="LocalFinalVariableName" />
-    <module name="LocalVariableName" />
-    <module name="MemberName" />
-    <module name="MethodName" />
-    <module name="PackageName" />
-    <module name="ParameterName" />
-    <module name="StaticVariableName" />
-    <module name="TypeName" />
-
-
-        <!-- Checks for imports                              -->
-        <!-- See http://checkstyle.sf.net/config_import.html -->
-    <module name="AvoidStarImport" />
-    <module name="IllegalImport" /> <!-- defaults to sun.* packages -->
-    <module name="RedundantImport" />
-    <module name="UnusedImports" />
-
-
-        <!-- Checks for Size Violations.                    -->
-    <!-- See http://checkstyle.sf.net/config_sizes.html -->
-    <module name="MethodLength" />
-    <module name="ParameterNumber" />
-
-
-        <!-- Checks for whitespace                               -->
-        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-    <module name="EmptyForIteratorPad" />
-    <module name="GenericWhitespace" />
-    <module name="MethodParamPad" />
-    <module name="NoWhitespaceAfter" />
-    <module name="NoWhitespaceBefore" />
-    <module name="OperatorWrap" />
-    <module name="ParenPad" />
-    <module name="TypecastParenPad" />
-    <module name="WhitespaceAfter" />
-    <module name="WhitespaceAround" />
-
-
-        <!-- Modifier Checks                                    -->
-        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
-    <module name="ModifierOrder" />
-    <module name="RedundantModifier" />
-
-
-        <!-- Checks for blocks. You know, those {}'s         -->
-        <!-- See http://checkstyle.sf.net/config_blocks.html -->
-    <module name="AvoidNestedBlocks" />
-    <module name="EmptyBlock" />
-    <module name="LeftCurly" />
-    <module name="NeedBraces" />
-    <module name="RightCurly" />
-
-
-        <!-- Checks for common coding problems               -->
-        <!-- See http://checkstyle.sf.net/config_coding.html -->
-    <module name="AvoidInlineConditionals" />
-    <module name="EmptyStatement" />
-    <module name="EqualsHashCode" />
-    <module name="HiddenField" />
-    <module name="IllegalInstantiation" />
-    <module name="InnerAssignment" />
-    <module name="MagicNumber" />
-    <module name="MissingSwitchDefault" />
-    <module name="SimplifyBooleanExpression" />
-    <module name="SimplifyBooleanReturn" />
-
-        <!-- Checks for class design                         -->
-        <!-- See http://checkstyle.sf.net/config_design.html -->
-    <module name="DesignForExtension" />
-    <module name="FinalClass" />
-    <module name="HideUtilityClassConstructor" />
-    <module name="InterfaceIsType" />
-    <module name="VisibilityModifier" />
-
-
-        <!-- Miscellaneous other checks.                   -->
-        <!-- See http://checkstyle.sf.net/config_misc.html -->
-    <module name="ArrayTypeStyle" />
-    <module name="FinalParameters" />
-    <module name="TodoComment" />
-    <module name="UpperEll" />
-
-        <!-- Adding to Sun convention: -->
-    <module name="SuppressWarningsHolder" />
-  </module>
-</module>
diff --git a/core-test/config/sun_checks.xml b/core-test/config/sun_checks.xml
new file mode 120000
index 00000000..63587434
--- /dev/null
+++ b/core-test/config/sun_checks.xml
@@ -0,0 +1 @@
+../../config/sun_checks.xml
\ No newline at end of file
diff --git a/core-test/src/main/resources/schema.tables.sql b/core-test/src/main/resources/schema.tables.sql
index 14ee6b72..c952faa0 100644
--- a/core-test/src/main/resources/schema.tables.sql
+++ b/core-test/src/main/resources/schema.tables.sql
@@ -423,7 +423,7 @@ COMMENT ON TABLE evaluation IS 'Content of evaluation file.';
 CREATE TABLE IF NOT EXISTS version (
     id SERIAL,
     version VARCHAR(30),
-    revision SMALLINT,
+    revision VARCHAR,
     builddate TIMESTAMP,
     created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     CONSTRAINT "UK_version" UNIQUE (version, revision, builddate),
diff --git a/core/bin/sloccount.sh b/core/bin/sloccount.sh
deleted file mode 100755
index 17ac45ee..00000000
--- a/core/bin/sloccount.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-TOKEI2CLOC=$(dirname $0)/tokei2cloc.py
-TOKEITGZ=tokei-v7.0.3-x86_64-unknown-linux-gnu.tar.gz
-if [ ! -f bin/tokei ]; then
-	mkdir -p ~/tmp
-	if [ ! -f ~/tmp/$TOKEITGZ ]; then
-		wget "https://github.com/Aaronepower/tokei/releases/download/v7.0.3/$TOKEITGZ" -O ~/tmp/$TOKEITGZ
-	fi
-	tar zxf ~/tmp/$TOKEITGZ -C bin
-fi
-if [ -f bin/tokei ]; then
-	mkdir -p target
-	bin/tokei -f -o json src | $TOKEI2CLOC > target/cloc.xml
-	exit
-fi
-
-SLOCCOUNT=$(which sloccount);
-if [ "$SLOCCOUNT" != "" ]; then
-	DATADIR=$(dirname $0)/.slocdata;
-	if [ ! -f $DATADIR ]; then
-		mkdir -p $DATADIR;
-	fi
-	mkdir -p target ;
-	/usr/bin/sloccount --datadir $DATADIR --duplicates --wide --details src > target/sloccount.sc;
-else 
-	echo "sloccount not found!";
-fi
diff --git a/core/bin/sloccount.sh b/core/bin/sloccount.sh
new file mode 120000
index 00000000..9665874d
--- /dev/null
+++ b/core/bin/sloccount.sh
@@ -0,0 +1 @@
+../../bin/sloccount.sh
\ No newline at end of file
diff --git a/core/bin/tokei2cloc.py b/core/bin/tokei2cloc.py
deleted file mode 100755
index a6ec8993..00000000
--- a/core/bin/tokei2cloc.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: UTF-8 -*-
-
-# $Id$
-#
-# Author : Olivier Maury
-# Creation Date : 2019-01-15 10:30:29 +0200
-# Last Revision : $Date$
-# Revision : $Rev$
-u"""
-NOM
-        %prog - Tokei2Cloc
-
-DESCRIPTION
-        Formate la sortie de tokei dans le format de Cloc
-
-EXEMPLE
-        tokei -f -o json bin src | %prog
-
-AUTEUR
-        Olivier Maury
-
-VERSION
-        $Date$
-"""
-
-__revision__ = "$Rev$"
-__author__ = "Olivier Maury"
-import json
-import sys
-
-results = json.loads(sys.stdin.read())
-
-# header
-nb_files = 0
-nb_lines = 0
-for lang in results:
-    nb_files += len(results[lang]['stats'])
-    nb_lines += int(results[lang]['lines'])
-
-print("""<?xml version="1.0"?><results>
-<header>
-  <cloc_url>http://cloc.sourceforge.net</cloc_url>
-  <cloc_version>1.60</cloc_version>
-  <elapsed_seconds>0.348630905151367</elapsed_seconds>
-  <n_files>%d</n_files>
-  <n_lines>%d</n_lines>
-  <files_per_second>510.568619619987</files_per_second>
-  <lines_per_second>88902.0438005723</lines_per_second>
-  <report_file>target/cloc.xml</report_file>
-</header>
-<files> """ % (nb_files, nb_lines))
-
-# files
-total_blank = 0
-total_comment = 0
-total_code = 0
-for lang in results:
-    for result in results[lang]['stats']:
-        blank = int(result['blanks'])
-        comment = int(result['comments'])
-        code = int(result['code'])
-        print("""  <file name="%s" blank="%d" comment="%d" code="%d"  language="%s" />""" % 
-            (result['name'], blank, comment, code, lang))
-        total_blank += blank
-        total_comment += comment
-        total_code += code
-
-# total
-print("""  <total blank="%d" comment="%d" code="%d" />
-</files>
-</results>""" % (total_blank, total_comment, total_code))
diff --git a/core/bin/tokei2cloc.py b/core/bin/tokei2cloc.py
new file mode 120000
index 00000000..9adeef3a
--- /dev/null
+++ b/core/bin/tokei2cloc.py
@@ -0,0 +1 @@
+../../bin/tokei2cloc.py
\ No newline at end of file
diff --git a/core/config/sun_checks.xml b/core/config/sun_checks.xml
deleted file mode 100644
index 762bf178..00000000
--- a/core/config/sun_checks.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module PUBLIC
-		  "-//Checkstyle//DTD Check Configuration 1.3//EN"
-		  "https://checkstyle.org/dtds/configuration_1_3.dtd">
-<!-- This is a checkstyle configuration file derived from Sun coding conventions. 
-	For descriptions of what the following rules do, please see the checkstyle 
-	configuration page at http://checkstyle.sourceforge.net/config.html -->
-
-
-<!--
-
-  Checkstyle configuration that checks the sun coding conventions from:
-
-  - the Java Language Specification at
-    http://java.sun.com/docs/books/jls/second_edition/html/index.html
-
-  - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
-
-  - the Javadoc guidelines at
-   http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
-
-  - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
-
- - some best practices
-
-  Checkstyle is very configurable. Be sure to read the documentation at
-  http://checkstyle.sf.net (or in your downloaded distribution).
-
-  Most Checks are configurable, be sure to consult the documentation.
-
-  To completely disable a check, just comment it out or delete it from the file.
-
-  Finally, it is worth reading the documentation.
-
--->
-<module name="Checker">
-	<!--
-		If you set the basedir property below, then all reported file
-		names will be relative to the specified directory. See
-		http://checkstyle.sourceforge.net/5.x/config.html#Checker
-
-		<property name="basedir" value="${basedir}"/>
-	-->
-
-	<!--
-	-->
-	<property name="fileExtensions" value="java, xml"/>
-
-	<!-- Checks that a package-info.java file exists for each package. -->
-	<!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
-	<module name="JavadocPackage" />
-
-	<!-- Checks whether files end with a new line. -->
-	<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
-	<module name="NewlineAtEndOfFile" />
-
-	<!-- Checks that property files contain the same keys. -->
-	<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
-	<module name="Translation" />
-
-	<!-- Checks for Size Violations. -->
-	<!-- See http://checkstyle.sf.net/config_sizes.html -->
-	<module name="FileLength" />
-
-	<!-- Checks for whitespace -->
-	<!-- See http://checkstyle.sf.net/config_whitespace.html -->
-	<module name="FileTabCharacter" />
-
-	<!-- https://checkstyle.sourceforge.io/config_sizes.html#LineLength -->
-	<module name="LineLength">
-		<property name="ignorePattern" value="^import " />
-		<property name="max" value="120" />
-	</module>
-  
-	<!-- Miscellaneous other checks. -->
-	<!-- See http://checkstyle.sf.net/config_misc.html -->
-	<module name="RegexpSingleline">
-		<property name="format" value="\s+$" />
-		<property name="minimum" value="0" />
-		<property name="maximum" value="0" />
-		<property name="message" value="Line has trailing spaces." />
-	</module>
-
-	<module name="SuppressionFilter">
-		<property name="file"
-			value="${basedir}/config/checkstyle-suppressions.xml" />
-	</module>
-
-	<!-- Adding to Sun convention: -->
-	<module name="SuppressWarningsFilter" />
-	<!-- <module name="SuppressionCommentFilter"> <property name="offCommentFormat" 
-		value="CHECKSTYLE.OFF\: ([\w\|]+)" /> <property name="onCommentFormat" value="CHECKSTYLE.ON\: 
-		([\w\|]+)" /> <property name="checkFormat" value="$1" /> </module> -->
-
-	<!-- Checks for Headers -->
-	<!-- See http://checkstyle.sf.net/config_header.html -->
-	<!-- <module name="Header"> -->
-	<!-- <property name="headerFile" value="${checkstyle.header.file}"/> -->
-	<!-- <property name="fileExtensions" value="java"/> -->
-	<!-- </module> -->
-	<module name="TreeWalker">
-
-		<!-- Checks for Javadoc comments. -->
-		<!-- See http://checkstyle.sf.net/config_javadoc.html -->
-		<module name="JavadocMethod" />
-		<module name="JavadocType" />
-		<module name="JavadocVariable" />
-		<module name="JavadocStyle" />
-
-
-		<!-- Checks for Naming Conventions. -->
-		<!-- See http://checkstyle.sf.net/config_naming.html -->
-		<module name="ConstantName" />
-		<module name="LocalFinalVariableName" />
-		<module name="LocalVariableName" />
-		<module name="MemberName" />
-		<module name="MethodName" />
-		<module name="PackageName" />
-		<module name="ParameterName" />
-		<module name="StaticVariableName" />
-		<module name="TypeName" />
-
-
-		<!-- Checks for imports -->
-		<!-- See http://checkstyle.sf.net/config_import.html -->
-		<module name="AvoidStarImport" />
-		<module name="IllegalImport" /> <!-- defaults to sun.* packages -->
-		<module name="RedundantImport" />
-		<module name="UnusedImports" />
-
-
-		<!-- Checks for Size Violations. -->
-		<!-- See http://checkstyle.sf.net/config_sizes.html -->
-		<module name="MethodLength" />
-		<module name="ParameterNumber">
-	        <property name="max" value="9"/>
-		</module>
-
-		<!-- Checks for whitespace -->
-		<!-- See http://checkstyle.sf.net/config_whitespace.html -->
-		<module name="EmptyForIteratorPad" />
-		<module name="GenericWhitespace" />
-		<module name="MethodParamPad" />
-		<module name="NoWhitespaceAfter" />
-		<module name="NoWhitespaceBefore" />
-		<module name="OperatorWrap" />
-		<module name="ParenPad" />
-		<module name="TypecastParenPad" />
-		<module name="WhitespaceAfter" />
-		<module name="WhitespaceAround" />
-
-
-		<!-- Modifier Checks -->
-		<!-- See http://checkstyle.sf.net/config_modifiers.html -->
-		<module name="ModifierOrder" />
-		<module name="RedundantModifier" />
-
-
-		<!-- Checks for blocks. You know, those {}'s -->
-		<!-- See http://checkstyle.sf.net/config_blocks.html -->
-		<module name="AvoidNestedBlocks" />
-		<module name="EmptyBlock" />
-		<module name="LeftCurly" />
-		<module name="NeedBraces" />
-		<module name="RightCurly" />
-
-
-		<!-- Checks for common coding problems -->
-		<!-- See http://checkstyle.sf.net/config_coding.html -->
-		<module name="AvoidInlineConditionals" />
-		<module name="EmptyStatement" />
-		<module name="EqualsHashCode" />
-		<module name="HiddenField" />
-		<module name="IllegalInstantiation" />
-		<module name="InnerAssignment" />
-		<module name="MagicNumber" />
-		<module name="MissingSwitchDefault" />
-		<module name="SimplifyBooleanExpression" />
-		<module name="SimplifyBooleanReturn" />
-
-		<!-- Checks for class design -->
-		<!-- See http://checkstyle.sf.net/config_design.html -->
-		<module name="DesignForExtension" />
-		<module name="FinalClass" />
-		<module name="HideUtilityClassConstructor" />
-		<module name="InterfaceIsType" />
-		<module name="VisibilityModifier" />
-
-
-		<!-- Miscellaneous other checks. -->
-		<!-- See http://checkstyle.sf.net/config_misc.html -->
-		<module name="ArrayTypeStyle" />
-		<module name="FinalParameters" />
-		<module name="TodoComment" />
-		<module name="UpperEll" />
-
-		<!-- Adding to Sun convention: -->
-		<module name="SuppressWarningsHolder" />
-	</module>
-</module>
diff --git a/core/config/sun_checks.xml b/core/config/sun_checks.xml
new file mode 120000
index 00000000..63587434
--- /dev/null
+++ b/core/config/sun_checks.xml
@@ -0,0 +1 @@
+../../config/sun_checks.xml
\ No newline at end of file
diff --git a/core/src/main/filtered/fr/inrae/agroclim/season/core/version.properties b/core/src/main/filtered/fr/inrae/agroclim/season/core/version.properties
index 7a959b45..79723d4b 100644
--- a/core/src/main/filtered/fr/inrae/agroclim/season/core/version.properties
+++ b/core/src/main/filtered/fr/inrae/agroclim/season/core/version.properties
@@ -1,5 +1,4 @@
 # Version info set when season-core is packaged.
-# $Id$
 doi=https://doi.org/10.15454/LAPNHT
 version=${pom.version}
 build.date=${build.date}
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/DatabaseRoles.java b/core/src/main/java/fr/inrae/agroclim/season/core/DatabaseRoles.java
index 9f301310..f858a2dc 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/DatabaseRoles.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/DatabaseRoles.java
@@ -7,11 +7,7 @@ import lombok.ToString;
 /**
  * Definition of used roles in SEASON database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @ToString
 public class DatabaseRoles {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/IndicatorHelper.java b/core/src/main/java/fr/inrae/agroclim/season/core/IndicatorHelper.java
index d1045418..09afde4f 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/IndicatorHelper.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/IndicatorHelper.java
@@ -20,10 +20,7 @@ import lombok.NonNull;
 /**
  * Helper to handle indicators.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class IndicatorHelper {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/InputHelper.java b/core/src/main/java/fr/inrae/agroclim/season/core/InputHelper.java
index 4e9b9ff7..05632390 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/InputHelper.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/InputHelper.java
@@ -52,10 +52,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Helper with methods to load data.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class InputHelper {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/SeasonVersion.java b/core/src/main/java/fr/inrae/agroclim/season/core/SeasonVersion.java
index 7f4715f3..cca8055d 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/SeasonVersion.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/SeasonVersion.java
@@ -2,18 +2,15 @@ package fr.inrae.agroclim.season.core;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeParseException;
+import java.time.temporal.ChronoUnit;
 import java.util.Locale;
 
 import fr.inrae.agroclim.indicators.resources.Resources;
-import java.time.temporal.ChronoUnit;
 
 /**
  * Information on version of SEASON-core.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class SeasonVersion {
 
@@ -44,14 +41,10 @@ public final class SeasonVersion {
     }
 
     /**
-     * @return Subversion revision number
+     * @return Git commit hash
      */
-    public static Integer getRevision() {
-        try {
-            return Integer.valueOf(RESOURCES.getString("build.number"));
-        } catch (final NumberFormatException ex) {
-            return null;
-        }
+    public static String getRevision() {
+        return RESOURCES.getString("build.number");
     }
 
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/SimulationLauncher.java b/core/src/main/java/fr/inrae/agroclim/season/core/SimulationLauncher.java
index 3e042290..9e0a9115 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/SimulationLauncher.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/SimulationLauncher.java
@@ -70,10 +70,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Facade to launch Simulation in SICLIMA.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 @ToString
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/climate/CacheClimateDbLoader.java b/core/src/main/java/fr/inrae/agroclim/season/core/climate/CacheClimateDbLoader.java
index 41edf433..5afcf194 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/climate/CacheClimateDbLoader.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/climate/CacheClimateDbLoader.java
@@ -30,10 +30,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * ClimateLoader on database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class CacheClimateDbLoader extends DataLoadingListenerHandler implements ClimateLoader {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/climate/ClimateDbLoader.java b/core/src/main/java/fr/inrae/agroclim/season/core/climate/ClimateDbLoader.java
index ae8fb3c9..c923ec3e 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/climate/ClimateDbLoader.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/climate/ClimateDbLoader.java
@@ -38,10 +38,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * ClimateLoader on database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class ClimateDbLoader extends DataLoadingListenerHandler implements ClimateLoader {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/climate/PhenologyCalculatorBuilder.java b/core/src/main/java/fr/inrae/agroclim/season/core/climate/PhenologyCalculatorBuilder.java
index 76e4f6ff..a3e79a02 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/climate/PhenologyCalculatorBuilder.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/climate/PhenologyCalculatorBuilder.java
@@ -16,10 +16,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Builder for PhenologyCalculatorBuilder on database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class PhenologyCalculatorBuilder {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/climate/SoilCalculatorBuilder.java b/core/src/main/java/fr/inrae/agroclim/season/core/climate/SoilCalculatorBuilder.java
index 00f2b3b9..9e509377 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/climate/SoilCalculatorBuilder.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/climate/SoilCalculatorBuilder.java
@@ -13,10 +13,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Builder for PhenologyCalculatorBuilder on database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class SoilCalculatorBuilder {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/climate/SqlBuilder.java b/core/src/main/java/fr/inrae/agroclim/season/core/climate/SqlBuilder.java
index 41a40a72..52e92724 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/climate/SqlBuilder.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/climate/SqlBuilder.java
@@ -19,11 +19,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Builder for the SQL query to load ClimaticDailyData from climatic base.
  *
- * Last change $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public class SqlBuilder {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/AccountDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/AccountDao.java
index 11875642..c0933dc2 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/AccountDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/AccountDao.java
@@ -5,11 +5,7 @@ import fr.inrae.agroclim.season.core.model.Account;
 /**
  * Managing Account in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface AccountDao extends Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/AccountDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/AccountDaoHibernate.java
index 8747a892..b4f0ec31 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/AccountDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/AccountDaoHibernate.java
@@ -8,11 +8,7 @@ import fr.inrae.agroclim.season.core.model.Account;
 /**
  * Managing Account in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class AccountDaoHibernate extends DaoHibernate
 implements AccountDao {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/CO2ConcentrationDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/CO2ConcentrationDaoHibernate.java
index c24d5a7e..8df6e54f 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/CO2ConcentrationDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/CO2ConcentrationDaoHibernate.java
@@ -9,10 +9,7 @@ import fr.inrae.agroclim.season.core.model.Co2Concentration;
 /**
  * Managing {@link Co2Concentration} in database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class CO2ConcentrationDaoHibernate extends DaoHibernate implements Co2ConcentrationDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/CellDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/CellDao.java
index 29c99147..e3fe138f 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/CellDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/CellDao.java
@@ -12,11 +12,7 @@ import fr.inrae.agroclim.season.core.model.Cell;
 /**
  * Managing Cell in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface CellDao extends Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/CellDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/CellDaoHibernate.java
index 35432841..ae293b49 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/CellDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/CellDaoHibernate.java
@@ -15,11 +15,7 @@ import fr.inrae.agroclim.season.core.model.Cell;
 /**
  * Managing Cell in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class CellDaoHibernate extends DaoHibernate implements CellDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticBaseDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticBaseDao.java
index 3f773e11..72e0abf0 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticBaseDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticBaseDao.java
@@ -7,11 +7,7 @@ import fr.inrae.agroclim.season.core.model.ClimaticBase;
 /**
  * Managing {@link ClimaticBase} in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface ClimaticBaseDao extends CrudDao<ClimaticBase>, Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticBaseDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticBaseDaoHibernate.java
index 1c115494..8ff1a1dc 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticBaseDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticBaseDaoHibernate.java
@@ -11,11 +11,7 @@ import fr.inrae.agroclim.season.core.model.ClimaticBase;
 /**
  * Managing ClimaticBase in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class ClimaticBaseDaoHibernate extends DaoHibernate implements ClimaticBaseDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticModelDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticModelDao.java
index e423f153..7e262002 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticModelDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticModelDao.java
@@ -8,11 +8,7 @@ import fr.inrae.agroclim.season.core.model.ClimaticModel;
 /**
  * Managing ClimaticModel in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface ClimaticModelDao extends Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticModelDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticModelDaoHibernate.java
index 02a66228..8d7685bd 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticModelDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticModelDaoHibernate.java
@@ -11,11 +11,7 @@ import fr.inrae.agroclim.season.core.model.ClimaticModel;
 /**
  * Managing ClimaticModel in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class ClimaticModelDaoHibernate extends DaoHibernate implements ClimaticModelDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDao.java
index 52ef0e9e..7fa5ad24 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDao.java
@@ -10,11 +10,7 @@ import lombok.NonNull;
 /**
  * Managing {@link ClimaticScenario} in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface ClimaticScenarioDao extends CrudDao<ClimaticScenario>, Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDaoHibernate.java
index 6733474f..44665838 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDaoHibernate.java
@@ -14,11 +14,7 @@ import lombok.NonNull;
 /**
  * Managing ClimaticScenario in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class ClimaticScenarioDaoHibernate extends DaoHibernate implements ClimaticScenarioDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/Co2ConcentrationDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/Co2ConcentrationDao.java
index 22b83463..aaa041e4 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/Co2ConcentrationDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/Co2ConcentrationDao.java
@@ -7,10 +7,7 @@ import fr.inrae.agroclim.season.core.model.Co2Concentration;
 /**
  * Managing {@link Co2Concentration} in database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public interface Co2ConcentrationDao {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/CrudDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/CrudDao.java
index a1441647..371b0eae 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/CrudDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/CrudDao.java
@@ -5,11 +5,7 @@ import java.util.List;
 /**
  * CRUD management of Entities in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  * @param <T> class of entity to manage
  */
 public interface CrudDao<T> {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/Dao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/Dao.java
index 95a62b96..99a1b9a2 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/Dao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/Dao.java
@@ -3,11 +3,7 @@ package fr.inrae.agroclim.season.core.dao;
 /**
  * Managing Entities in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/DaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/DaoHibernate.java
index 0f46fe45..97bb1e7b 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/DaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/DaoHibernate.java
@@ -25,11 +25,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Managing transactions in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 @RequiredArgsConstructor
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionDao.java
index 7bbd09a2..e6ee9088 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionDao.java
@@ -8,10 +8,7 @@ import fr.inrae.agroclim.season.core.model.DbConnection;
 /**
  * Managing {@link DbConnection} in database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public interface DbConnectionDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionDaoHibernate.java
index 0cc35f3b..d3331e36 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionDaoHibernate.java
@@ -13,10 +13,7 @@ import fr.inrae.agroclim.season.core.model.DbConnection;
 /**
  * Managing {@link DbConnection} in database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class DbConnectionDaoHibernate extends DaoHibernate implements DbConnectionDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionManager.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionManager.java
index b8a94d9b..534a1817 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionManager.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/DbConnectionManager.java
@@ -16,11 +16,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Manage JDBC connections according to {@link DbConnection}.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public final class DbConnectionManager {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/FileFormatConversionDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/FileFormatConversionDao.java
index 36fb85a5..7407d791 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/FileFormatConversionDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/FileFormatConversionDao.java
@@ -7,10 +7,7 @@ import fr.inrae.agroclim.season.core.model.FileFormatConversion;
 /**
  * Managing {@link FileFormatConversion} in database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public interface FileFormatConversionDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/FileFormatConversionDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/FileFormatConversionDaoHibernate.java
index 46ec6e92..430a22aa 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/FileFormatConversionDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/FileFormatConversionDaoHibernate.java
@@ -12,10 +12,7 @@ import fr.inrae.agroclim.season.core.model.FileFormatConversion;
 /**
  * Managing {@link FileFormatConversion} in database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class FileFormatConversionDaoHibernate extends DaoHibernate implements FileFormatConversionDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/GeoAttributeDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/GeoAttributeDao.java
index 701c517a..f4208ab3 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/GeoAttributeDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/GeoAttributeDao.java
@@ -7,11 +7,7 @@ import fr.inrae.agroclim.season.core.model.GeoAttribute;
 /**
  * Managing {@link GeoAttribute} in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface GeoAttributeDao {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/GeoAttributeDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/GeoAttributeDaoHibernate.java
index 449483fb..ba63965c 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/GeoAttributeDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/GeoAttributeDaoHibernate.java
@@ -10,11 +10,7 @@ import fr.inrae.agroclim.season.core.model.GeoAttribute;
 /**
  * Managing {@link GeoAttribute} in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class GeoAttributeDaoHibernate extends DaoHibernate implements GeoAttributeDao {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/HasTableDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/HasTableDao.java
index 2380fe37..7e192878 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/HasTableDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/HasTableDao.java
@@ -8,11 +8,7 @@ import fr.inrae.agroclim.season.core.model.Simulation;
 /**
  * Managing data related to a simulation in database in a side table.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface HasTableDao {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/JdbcUtils.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/JdbcUtils.java
index 1188e9a0..41408ef3 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/JdbcUtils.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/JdbcUtils.java
@@ -16,11 +16,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Helper class for JDBC.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public abstract class JdbcUtils {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/LocaleDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/LocaleDao.java
index 51ce142c..4fe9e085 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/LocaleDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/LocaleDao.java
@@ -6,10 +6,7 @@ import java.util.Locale;
 /**
  * Managing LocaleEntity in database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public interface LocaleDao {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/LocaleDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/LocaleDaoHibernate.java
index 97091049..8813ca5d 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/LocaleDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/LocaleDaoHibernate.java
@@ -11,11 +11,7 @@ import fr.inrae.agroclim.season.core.model.LocaleEntity;
 /**
  * Managing LocaleEntity in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class LocaleDaoHibernate extends DaoHibernate implements LocaleDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/PersistenceManager.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/PersistenceManager.java
index c17477db..8e929655 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/PersistenceManager.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/PersistenceManager.java
@@ -21,11 +21,7 @@ import lombok.Setter;
 /**
  * JPA persistence manager.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class PersistenceManager {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDao.java
index d3d82fcd..90a0997f 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDao.java
@@ -5,11 +5,7 @@ import fr.inrae.agroclim.season.core.model.PhenologicalModel;
 /**
  * Managing {@link PhenologicalModel} in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface PhenologicalModelDao {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDaoHibernate.java
index e0027197..04f3aa67 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDaoHibernate.java
@@ -9,11 +9,7 @@ import fr.inrae.agroclim.season.core.model.PhenologicalModel;
 /**
  * Managing {@link PhenologicalModel} in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class PhenologicalModelDaoHibernate extends DaoHibernate implements PhenologicalModelDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationDao.java
index 84e78a70..ac180107 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationDao.java
@@ -9,11 +9,7 @@ import fr.inrae.agroclim.season.core.model.Simulation;
 /**
  * Managing Simulation in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface SimulationDao extends Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationDaoHibernate.java
index 33ece3f1..bd58b177 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationDaoHibernate.java
@@ -15,11 +15,7 @@ import fr.inrae.agroclim.season.core.model.Simulation;
 /**
  * Managing Simulation in database using hibernate.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class SimulationDaoHibernate extends DaoHibernate implements SimulationDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDao.java
index e5aaa263..4dbc768e 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDao.java
@@ -7,11 +7,7 @@ import fr.inrae.agroclim.season.core.model.SimulationError;
 /**
  * Managing Simulation errors in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface SimulationErrorDao extends Dao, HasTableDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDaoHibernate.java
index bac1c5f3..c0082cbb 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDaoHibernate.java
@@ -16,11 +16,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Managing SimulationError in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public final class SimulationErrorDaoHibernate extends DaoHibernate implements SimulationErrorDao {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationEvaluationDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationEvaluationDao.java
index 01269f17..6730760f 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationEvaluationDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationEvaluationDao.java
@@ -5,11 +5,7 @@ import fr.inrae.agroclim.season.core.model.SimulationEvaluation;
 /**
  * Managing SimulationEvaluation in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface SimulationEvaluationDao extends Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationEvaluationDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationEvaluationDaoHibernate.java
index bcbe426c..4d898af2 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationEvaluationDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationEvaluationDaoHibernate.java
@@ -10,11 +10,7 @@ import jakarta.persistence.TypedQuery;
 /**
  * Managing SimulationEvaluation in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class SimulationEvaluationDaoHibernate extends DaoHibernate
         implements SimulationEvaluationDao {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationResultDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationResultDao.java
index db34d24f..30efb2f3 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationResultDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationResultDao.java
@@ -10,11 +10,7 @@ import fr.inrae.agroclim.season.core.model.SimulationTreatment;
 /**
  * Managing SimulationResult in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface SimulationResultDao extends Dao {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationResultDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationResultDaoHibernate.java
index 58ba645b..a9eb1357 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationResultDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationResultDaoHibernate.java
@@ -21,11 +21,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Managing SimulationResult in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public final class SimulationResultDaoHibernate extends DaoHibernate implements SimulationResultDao {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDao.java
index 2f7df528..704f4871 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDao.java
@@ -7,11 +7,7 @@ import fr.inrae.agroclim.season.core.model.SimulationSoil;
 /**
  * Managing computed soil data for simulation in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface SimulationSoilDao extends HasTableDao {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDaoHibernate.java
index 0cd88d59..828eb9d5 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDaoHibernate.java
@@ -18,11 +18,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Managing SimulationSoil in database in the fastest way with SQL.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public final class SimulationSoilDaoHibernate extends DaoHibernate implements SimulationSoilDao {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyDao.java
index 97d812e3..11ecb20d 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyDao.java
@@ -5,11 +5,7 @@ import fr.inrae.agroclim.season.core.model.Variety;
 /**
  * Managing {@link Variety} in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface VarietyDao extends CrudDao<Variety>, Dao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyDaoHibernate.java
index 54fc2f3d..634d185f 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyDaoHibernate.java
@@ -10,11 +10,7 @@ import fr.inrae.agroclim.season.core.model.Variety;
 /**
  * Managing Variety in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class VarietyDaoHibernate extends DaoHibernate implements VarietyDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDao.java
index ee732113..7ba50a2a 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDao.java
@@ -8,11 +8,7 @@ import fr.inrae.agroclim.season.core.model.VarietyParameter;
 /**
  * Managing varietal parameters in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface VarietyParameterDao extends CrudDao<VarietyParameter> {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDaoHibernate.java
index 1b912e1a..024fd09f 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDaoHibernate.java
@@ -13,11 +13,7 @@ import fr.inrae.agroclim.season.core.model.VarietyParameter;
 /**
  * Managing varietal parameters in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class VarietyParameterDaoHibernate extends DaoHibernate implements VarietyParameterDao {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VersionDao.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VersionDao.java
index 8eb155d4..3b95d847 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VersionDao.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VersionDao.java
@@ -1,26 +1,23 @@
 package fr.inrae.agroclim.season.core.dao;
 
-import fr.inrae.agroclim.season.core.model.Version;
 import java.time.LocalDateTime;
 
+import fr.inrae.agroclim.season.core.model.Version;
+
 /**
  * Managing Version in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public interface VersionDao extends Dao {
 
     /**
      * Find or create version according to its id.
      *
-     * @param version Version, ex.: 1.2.3
-     * @param revision Subversion revision
+     * @param version   Version, ex.: 1.2.3
+     * @param revision  Subversion revision number or Git commit hash
      * @param builddate Package build date
      * @return found or created version
      */
-    Version findOrCreate(String version, int revision, LocalDateTime builddate);
+    Version findOrCreate(String version, String revision, LocalDateTime builddate);
 }
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VersionDaoHibernate.java b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VersionDaoHibernate.java
index 34ce02c0..e9537f6f 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/dao/VersionDaoHibernate.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/dao/VersionDaoHibernate.java
@@ -2,19 +2,14 @@ package fr.inrae.agroclim.season.core.dao;
 
 import java.time.LocalDateTime;
 
+import fr.inrae.agroclim.season.core.model.Version;
 import jakarta.inject.Inject;
 import jakarta.persistence.TypedQuery;
 
-import fr.inrae.agroclim.season.core.model.Version;
-
 /**
  * Managing Version in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public final class VersionDaoHibernate extends DaoHibernate
 implements VersionDao {
@@ -32,13 +27,12 @@ implements VersionDao {
     /**
      * Create version according to its properties.
      *
-     * @param version Version, ex.: 1.2.3
-     * @param revision Subversion revision
+     * @param version   Version, ex.: 1.2.3
+     * @param revision  Subversion revision or Git commit hash
      * @param buildDate Package build date
      * @return created version
      */
-    private Version create(final String version, final int revision,
-            final LocalDateTime buildDate) {
+    private Version create(final String version, final String revision, final LocalDateTime buildDate) {
         final Version entity = new Version();
         entity.setVersion(version);
         entity.setRevision(revision);
@@ -59,14 +53,14 @@ implements VersionDao {
      * @param buildDate Package build date
      * @return found version
      */
-    private Version find(final String version, final int revision,
-            final LocalDateTime buildDate) {
+    private Version find(final String version, final String revision, final LocalDateTime buildDate) {
         Version entity;
         try (ScopedEntityManager em = getScopedEntityManager()) {
             final TypedQuery<Version> query = em.createQuery(
-                    "FROM Version t WHERE t.version = :version AND "
-                    + "t.revision = :revision AND t.buildDate = :buildDate",
-                            Version.class);
+                    """
+                    FROM Version t WHERE t.version = :version AND t.revision = :revision AND t.buildDate = :buildDate
+                    """,
+                    Version.class);
             entity = query.setParameter("version", version)
                     .setParameter("revision", revision)
                     .setParameter("buildDate", buildDate).getSingleResult();
@@ -77,8 +71,7 @@ implements VersionDao {
     }
 
     @Override
-    public Version findOrCreate(final String version, final int revision,
-            final LocalDateTime buildDate) {
+    public Version findOrCreate(final String version, final String revision, final LocalDateTime buildDate) {
         Version entity = find(version, revision, buildDate);
         if (entity == null) {
             entity = create(version, revision, buildDate);
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/error/SeasonErrorCategory.java b/core/src/main/java/fr/inrae/agroclim/season/core/error/SeasonErrorCategory.java
index c0d338e0..b11e642a 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/error/SeasonErrorCategory.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/error/SeasonErrorCategory.java
@@ -8,11 +8,7 @@ import lombok.RequiredArgsConstructor;
 /**
  * Category for error types in the SEASON-core library.
  *
- * Last change $Date$
- *
- * @author omaury
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @RequiredArgsConstructor
 public enum SeasonErrorCategory implements ErrorCategory {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/error/SimulationPropertiesErrorType.java b/core/src/main/java/fr/inrae/agroclim/season/core/error/SimulationPropertiesErrorType.java
index 976f8338..54150bc7 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/error/SimulationPropertiesErrorType.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/error/SimulationPropertiesErrorType.java
@@ -7,10 +7,7 @@ import fr.inrae.agroclim.season.core.simulationproperties.Validator;
 /**
  * Keys from messages.properties used to warn about errors.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public enum SimulationPropertiesErrorType implements CommonErrorType {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/jms/JMSUtils.java b/core/src/main/java/fr/inrae/agroclim/season/core/jms/JMSUtils.java
index 21751b3a..fbaa17c4 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/jms/JMSUtils.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/jms/JMSUtils.java
@@ -18,10 +18,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * JMS helper.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class JMSUtils {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/jms/Sender.java b/core/src/main/java/fr/inrae/agroclim/season/core/jms/Sender.java
index 622f1359..d77fc488 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/jms/Sender.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/jms/Sender.java
@@ -20,10 +20,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * JMS message sender.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class Sender implements AutoCloseable {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationDoneSender.java b/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationDoneSender.java
index 4d774041..e6f20b89 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationDoneSender.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationDoneSender.java
@@ -10,10 +10,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * JMS message sender on topic when all computations are done for a simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class SimulationDoneSender extends SimulationSender {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationProgressSender.java b/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationProgressSender.java
index 8608be10..af038fba 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationProgressSender.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationProgressSender.java
@@ -10,10 +10,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * JMS message sender on topic when all computations are done for a simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class SimulationProgressSender extends SimulationSender {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationSender.java b/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationSender.java
index c9365014..d05957b5 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationSender.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/jms/SimulationSender.java
@@ -16,10 +16,7 @@ import fr.inrae.agroclim.season.core.model.Simulation;
 /**
  * JMS 2.0 message sender on topic for a simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public abstract class SimulationSender implements AutoCloseable {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Account.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Account.java
index 7687e4c4..9bb5ce02 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Account.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Account.java
@@ -18,10 +18,7 @@ import lombok.ToString;
 /**
  * User account.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Entity
 @Table(name = "account")
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Aggregation.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Aggregation.java
index 5b28ebda..cdc8dd82 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Aggregation.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Aggregation.java
@@ -8,10 +8,7 @@ import lombok.Getter;
 /**
  * Aggregation of results to compute.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class Aggregation implements Cloneable, Serializable {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Cell.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Cell.java
index 1ebd1b1e..d65a5ff5 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Cell.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Cell.java
@@ -14,10 +14,7 @@ import lombok.Data;
  * A cell in a grid used by a climaticbase like SAFRAN, DRIAS (grid = France
  * 8 km x 8 km).
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/CellGeometry.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/CellGeometry.java
index f4002406..dac7b621 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/CellGeometry.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/CellGeometry.java
@@ -11,10 +11,7 @@ import lombok.Data;
  * {@link Cell} coordinates of 4 points (and center) defining the grid
  * cellbarycenter.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Embeddable
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticBase.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticBase.java
index d623c77c..40c9880a 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticBase.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticBase.java
@@ -23,10 +23,7 @@ import lombok.ToString;
 /**
  * A Climatic database.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticModel.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticModel.java
index 1a08a3e0..1fefe5ef 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticModel.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticModel.java
@@ -21,10 +21,7 @@ import lombok.ToString;
 /**
  * Entity for a climatic model.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticScenario.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticScenario.java
index 479d337c..5490c947 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticScenario.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/ClimaticScenario.java
@@ -20,10 +20,7 @@ import lombok.ToString;
 /**
  * A scenario of a climatic model.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Entity
 @EqualsAndHashCode
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Co2Concentration.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Co2Concentration.java
index 9b7a57e1..f6506c4b 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Co2Concentration.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Co2Concentration.java
@@ -12,10 +12,7 @@ import lombok.Data;
 /**
  * Annual CO2 concentrations for each scenario.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Computation.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Computation.java
index 28885602..445d613a 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Computation.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Computation.java
@@ -10,10 +10,7 @@ import lombok.Setter;
  *
  * It is sent to computation nodes with treatment.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public class Computation implements Cloneable, Serializable {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/DbConnection.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/DbConnection.java
index aefe62fd..c53636c4 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/DbConnection.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/DbConnection.java
@@ -15,10 +15,7 @@ import lombok.ToString;
 /**
  * Database connection definition for climatic data.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/FileFormatConversion.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/FileFormatConversion.java
index 46edf66d..4e34011e 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/FileFormatConversion.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/FileFormatConversion.java
@@ -14,10 +14,7 @@ import lombok.Data;
 /**
  * Conversion to match file format variables with climatic variables.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/GeoAttribute.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/GeoAttribute.java
index a7fc88a6..1baced9c 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/GeoAttribute.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/GeoAttribute.java
@@ -20,10 +20,7 @@ import lombok.Data;
 /**
  * A geographical attribute to describe a cell.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/LocalDateTimeConverter.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/LocalDateTimeConverter.java
index 27b5267a..13ca0c05 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/LocalDateTimeConverter.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/LocalDateTimeConverter.java
@@ -9,11 +9,7 @@ import java.time.LocalDateTime;
  *
  * https://dzone.com/articles/storing-java-8-localdatetime-as-timestamp-postgres
  *
- * Last change $Date$
- *
- * @author $Author$
  * @author Olivier Maury
- * @version $Revision$
  */
 public class LocalDateTimeConverter implements
         AttributeConverter<LocalDateTime, Timestamp> {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/LocaleEntity.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/LocaleEntity.java
index 6ef6766e..031a4f95 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/LocaleEntity.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/LocaleEntity.java
@@ -16,10 +16,7 @@ import lombok.ToString;
 /**
  * Locale used by user.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Entity
 @Table(name = "locale")
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Period.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Period.java
index 8a8dfa86..031336c9 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Period.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Period.java
@@ -6,10 +6,7 @@ import lombok.Getter;
 /**
  * Period for aggregation of results to compute.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public class Period implements Cloneable, Serializable {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/PhenologicalModel.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/PhenologicalModel.java
index d9b39bcc..442ac4f7 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/PhenologicalModel.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/PhenologicalModel.java
@@ -20,10 +20,7 @@ import lombok.Data;
 /**
  * Phenological model (eg.: curve).
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Simulation.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Simulation.java
index 0b5389c5..51ff3a72 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Simulation.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Simulation.java
@@ -20,10 +20,7 @@ import lombok.Setter;
  * A simulation is a run of several treatments : one evaluation is computed on
  * SAFRAN cells.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Entity
 @Table(name = "simulation")
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationError.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationError.java
index d030490f..b3664912 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationError.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationError.java
@@ -7,11 +7,7 @@ import lombok.Data;
 /**
  * Error occured while handling a {@link Treatment}. Line in treatmenterror_LOGIN_ID table.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Data
 public class SimulationError {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationEvaluation.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationEvaluation.java
index 14d35a09..cf1e92b7 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationEvaluation.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationEvaluation.java
@@ -15,10 +15,7 @@ import lombok.Setter;
 /**
  * Evaluation file used in simulation.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Entity
 @Table(name = "evaluation")
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationResult.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationResult.java
index d28ec0c0..788349f5 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationResult.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationResult.java
@@ -11,11 +11,7 @@ import lombok.ToString;
 /**
  * Line to add into simulationresult table.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @RequiredArgsConstructor
 @ToString
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationSettings.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationSettings.java
index 6992cb18..3e5dc0a7 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationSettings.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationSettings.java
@@ -7,10 +7,7 @@ import fr.inrae.agroclim.indicators.model.data.phenology.PhenologicalModelType;
 /**
  * The settings for a simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public interface SimulationSettings {
     /**
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationSoil.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationSoil.java
index 673218a9..2b78489d 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationSoil.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationSoil.java
@@ -10,11 +10,7 @@ import lombok.RequiredArgsConstructor;
 /**
  * Line to add into simulationsoil table.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @RequiredArgsConstructor
 public class SimulationSoil {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationTreatment.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationTreatment.java
index c1c9f931..c689cabb 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationTreatment.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/SimulationTreatment.java
@@ -8,10 +8,7 @@ import lombok.Setter;
 /**
  * A computation on one cell.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public class SimulationTreatment implements Serializable {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Species.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Species.java
index cf329f64..4616cab8 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Species.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Species.java
@@ -14,10 +14,7 @@ import lombok.Data;
 /**
  * A species.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Treatment.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Treatment.java
index d61c3e7e..5c1f7308 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Treatment.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Treatment.java
@@ -13,10 +13,7 @@ import lombok.Setter;
 /**
  * A treatment is an evaluation on cell, sent to computation nodes throw JMS.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class Treatment implements Cloneable, Serializable {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/TreatmentPhase.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/TreatmentPhase.java
index e2974bda..b581d3fc 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/TreatmentPhase.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/TreatmentPhase.java
@@ -10,10 +10,7 @@ import lombok.ToString;
 /**
  * Phase dates for a cell.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ToString
 public class TreatmentPhase implements Serializable {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Variety.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Variety.java
index f9520b2f..e4f98e01 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Variety.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Variety.java
@@ -21,10 +21,7 @@ import lombok.Data;
 /**
  * A species variety.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/VarietyParameter.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/VarietyParameter.java
index b87c2e50..a18ce2ef 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/VarietyParameter.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/VarietyParameter.java
@@ -14,10 +14,7 @@ import lombok.Data;
 /**
  * A variety parameter to use in indicator computation or phenological model.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Data
 @Entity
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/model/Version.java b/core/src/main/java/fr/inrae/agroclim/season/core/model/Version.java
index 49d7c3b1..4176e70b 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/model/Version.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/model/Version.java
@@ -3,6 +3,7 @@ package fr.inrae.agroclim.season.core.model;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+
 import jakarta.persistence.Column;
 import jakarta.persistence.Convert;
 import jakarta.persistence.Entity;
@@ -17,10 +18,7 @@ import lombok.ToString;
 /**
  * Version information for dependencies (SEASON-Core and Indicators).
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Entity
 @Table(name = "version")
@@ -50,12 +48,12 @@ public class Version implements Serializable {
     private String version;
 
     /**
-     * Revision. Ex.: 249.
+     * Subversion revision number or Git commit hash. Ex.: 249 or 6c37a5d.
      */
-    @Column(columnDefinition = "SMALLINT")
+    @Column
     @Getter
     @Setter
-    private int revision;
+    private String revision;
 
     /**
      * Build date.
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/service/SimulationService.java b/core/src/main/java/fr/inrae/agroclim/season/core/service/SimulationService.java
index f09a9022..125bde22 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/service/SimulationService.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/service/SimulationService.java
@@ -29,11 +29,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Handling Simulation with dependencies in database.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 @Log4j2
 public final class SimulationService {
@@ -190,9 +186,9 @@ public final class SimulationService {
         if (climaticScenario == null) {
             throw new RuntimeException("climaticScenario should not be null!");
         }
-        Integer rev = fr.inrae.agroclim.season.core.SeasonVersion.getRevision();
+        String rev = fr.inrae.agroclim.season.core.SeasonVersion.getRevision();
         if (rev == null) {
-            rev = -1;
+            rev = "00000000";
         }
         final Version coreVersion = versionDao.findOrCreate(
                 fr.inrae.agroclim.season.core.SeasonVersion.getString("version"),
@@ -202,7 +198,7 @@ public final class SimulationService {
         final Version indicatorsVersion = versionDao.findOrCreate(
                 fr.inrae.agroclim.indicators.resources.Version
                 .getString("version"),
-                fr.inrae.agroclim.indicators.resources.Version.getRevision(),
+                String.valueOf(fr.inrae.agroclim.indicators.resources.Version.getRevision()),
                 fr.inrae.agroclim.indicators.resources.Version.getBuildDate()
                 );
         SimulationEvaluation evaluation;
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/AggregationValidator.java b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/AggregationValidator.java
index 9c4233e8..70f29945 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/AggregationValidator.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/AggregationValidator.java
@@ -22,10 +22,7 @@ import fr.inrae.agroclim.season.core.model.Period;
  * Validator for the aggregation functions and periods specified in the config
  * file for simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class AggregationValidator implements Validator {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/FileValidator.java b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/FileValidator.java
index c84b300d..bd10e14a 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/FileValidator.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/FileValidator.java
@@ -14,10 +14,7 @@ import fr.inrae.agroclim.season.core.error.SimulationPropertiesErrorType;
 /**
  * Validator for the path specified in the config file for simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class FileValidator implements Validator {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/PhenologicalModelValidator.java b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/PhenologicalModelValidator.java
index aa8f47b9..0b405f10 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/PhenologicalModelValidator.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/PhenologicalModelValidator.java
@@ -16,10 +16,7 @@ import lombok.RequiredArgsConstructor;
  * Validator for the combination phenological model / variety / species specified in the config
  * file for simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @RequiredArgsConstructor
 public final class PhenologicalModelValidator implements Validator {
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/RequiredKeysValidator.java b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/RequiredKeysValidator.java
index c3eb6e4e..331abc5e 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/RequiredKeysValidator.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/RequiredKeysValidator.java
@@ -11,10 +11,7 @@ import fr.inrae.agroclim.season.core.error.SimulationPropertiesErrorType;
 /**
  * Validator for the required values in the config file for simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class RequiredKeysValidator implements Validator {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/SimulationProperties.java b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/SimulationProperties.java
index 572b5ead..53fbd389 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/SimulationProperties.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/SimulationProperties.java
@@ -39,10 +39,7 @@ import lombok.RequiredArgsConstructor;
 /**
  * The config file for simulation (a .properties file).
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public final class SimulationProperties implements SimulationSettings {
 
diff --git a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/Validator.java b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/Validator.java
index 4ce9aca3..f58fe8cc 100644
--- a/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/Validator.java
+++ b/core/src/main/java/fr/inrae/agroclim/season/core/simulationproperties/Validator.java
@@ -7,10 +7,7 @@ import fr.inrae.agroclim.indicators.exception.ErrorMessage;
 /**
  * Validator of values in the config file for simulation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public interface Validator {
 
diff --git a/core/src/main/resources/fr/inrae/agroclim/season/core/messages.properties b/core/src/main/resources/fr/inrae/agroclim/season/core/messages.properties
index 2ac15cc4..9f99e3db 100644
--- a/core/src/main/resources/fr/inrae/agroclim/season/core/messages.properties
+++ b/core/src/main/resources/fr/inrae/agroclim/season/core/messages.properties
@@ -1,5 +1,4 @@
 # Strings for season-core
-# $Id$
 error.category.properties=`.properties` file
 error.simulationproperties.aggregationFunctionDuplicated=The aggregation function "{0}" is defined multiple times.
 error.simulationproperties.aggregationFunctionMissing=Aggregation period is defined but aggregation function is not.
diff --git a/core/src/main/resources/fr/inrae/agroclim/season/core/messages_fr.properties b/core/src/main/resources/fr/inrae/agroclim/season/core/messages_fr.properties
index 6bbf71ab..9745e77e 100644
--- a/core/src/main/resources/fr/inrae/agroclim/season/core/messages_fr.properties
+++ b/core/src/main/resources/fr/inrae/agroclim/season/core/messages_fr.properties
@@ -1,5 +1,4 @@
 # Textes pour season-core
-# $Id$
 error.category.properties=Fichier `.properties`
 error.simulationproperties.aggregationFunctionDuplicated=La fonction d'agr\u00e9gation \u00ab\u00a0{0}\u00a0\u00bb est d\u00e9finie plusieurs fois.
 error.simulationproperties.aggregationFunctionMissing=La p\u00e9riode d'agr\u00e9gation est d\u00e9finie mais pas la fonction d'agr\u00e9gation.
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/AggregationTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/AggregationTest.java
index 75629ac7..23f8fbb6 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/AggregationTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/AggregationTest.java
@@ -15,10 +15,7 @@ import fr.inrae.agroclim.season.core.model.Period;
 /**
  * Test Aggregation.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 final class AggregationTest {
 
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/IndicatorHelperAllVariablesTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/IndicatorHelperAllVariablesTest.java
index 0345f6bc..f0da064a 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/IndicatorHelperAllVariablesTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/IndicatorHelperAllVariablesTest.java
@@ -22,10 +22,7 @@ import lombok.RequiredArgsConstructor;
 /**
  * Test IndicatorHelper for all climatic variables.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 public class IndicatorHelperAllVariablesTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/IndicatorHelperTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/IndicatorHelperTest.java
index 3bb00564..d56d96a6 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/IndicatorHelperTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/IndicatorHelperTest.java
@@ -29,10 +29,7 @@ import fr.inrae.agroclim.season.core.model.ClimaticVariable;
 /**
  * Test IndicatorHelper.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 final class IndicatorHelperTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/JdbcTestInitialization.java b/core/src/test/java/fr/inrae/agroclim/season/core/JdbcTestInitialization.java
index d2679a7f..1751f445 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/JdbcTestInitialization.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/JdbcTestInitialization.java
@@ -8,10 +8,7 @@ import lombok.extern.log4j.Log4j2;
 /**
  * Instantiate persistence managers for DRIAS Aladin and IPSL, for SAFRAN.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 public final class JdbcTestInitialization implements BeforeAllCallback {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/PeriodTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/PeriodTest.java
index 1c5a5390..f13f70cc 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/PeriodTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/PeriodTest.java
@@ -10,10 +10,7 @@ import fr.inrae.agroclim.season.core.model.Period;
 /**
  * Test Period.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 final class PeriodTest {
 
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/SeasonErrorTypeTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/SeasonErrorTypeTest.java
index 4b9ae17f..590db0be 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/SeasonErrorTypeTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/SeasonErrorTypeTest.java
@@ -17,10 +17,7 @@ import fr.inrae.agroclim.season.core.error.SimulationPropertiesErrorType;
 /**
  * Ensure all implementations of {@link ErrorType} are well defined.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 class SeasonErrorTypeTest {
     /**
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/SeasonVersionTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/SeasonVersionTest.java
index 5f7cbd27..147e415f 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/SeasonVersionTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/SeasonVersionTest.java
@@ -11,10 +11,7 @@ import org.junit.jupiter.api.Test;
  * Substitution could fail if Subversion repository was not upgraded: mvn can
  * get revision number and repository branch.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 class SeasonVersionTest {
 
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/SimulationLauncherTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/SimulationLauncherTest.java
index 6f008697..dd6c78aa 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/SimulationLauncherTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/SimulationLauncherTest.java
@@ -16,10 +16,7 @@ import fr.inrae.agroclim.indicators.model.data.Variable;
 /**
  * Test for SimulationLauncher.
  *
- * Last change $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 class SimulationLauncherTest {
 
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/climate/ClimateDbLoaderTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/climate/ClimateDbLoaderTest.java
index 4078938b..06145d52 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/climate/ClimateDbLoaderTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/climate/ClimateDbLoaderTest.java
@@ -40,10 +40,7 @@ import lombok.extern.log4j.Log4j2;
  *
  * Example to test JPA at https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @Log4j2
 @ExtendWith({JdbcTestInitialization.class})
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/AccountDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/AccountDaoHibernateTest.java
index 28d882b1..7cafe1c6 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/AccountDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/AccountDaoHibernateTest.java
@@ -19,10 +19,7 @@ import fr.inrae.agroclim.season.core.model.Account;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class AccountDaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDaoHibernateTest.java
index faf9a361..23bcf61d 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticScenarioDaoHibernateTest.java
@@ -18,10 +18,7 @@ import fr.inrae.agroclim.season.core.model.ClimaticScenario;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class ClimaticScenarioDaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticVariableClimaticDataDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticVariableClimaticDataDaoHibernateTest.java
index 72abfbea..a25d5959 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticVariableClimaticDataDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticVariableClimaticDataDaoHibernateTest.java
@@ -21,8 +21,7 @@ import fr.inrae.agroclim.season.core.model.ClimaticVariableClimaticData;
 /**
  * Test search/update of {@link ClimaticVariableClimaticData} in database.
  *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class ClimaticVariableClimaticDataDaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticVariableDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticVariableDaoHibernateTest.java
index 10d80754..3333b8d2 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticVariableDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/ClimaticVariableDaoHibernateTest.java
@@ -22,10 +22,7 @@ import fr.inrae.agroclim.season.core.model.ClimaticVariable;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class ClimaticVariableDaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/DaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/DaoHibernateTest.java
index b5d1f608..8255aa02 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/DaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/DaoHibernateTest.java
@@ -5,10 +5,7 @@ import jakarta.persistence.Query;
 /**
  * Common methods.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public abstract class DaoHibernateTest {
 
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/DbConnectionManagerTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/DbConnectionManagerTest.java
index 8d35c9ba..f9849bee 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/DbConnectionManagerTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/DbConnectionManagerTest.java
@@ -16,10 +16,7 @@ import fr.inrae.agroclim.season.core.model.DbConnection;
 /**
  * Test pool of connections in {@link DbConnectionManager}.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class DbConnectionManagerTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/JdbcUtilsTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/JdbcUtilsTest.java
index bfe780f8..ae0c23e2 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/JdbcUtilsTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/JdbcUtilsTest.java
@@ -15,10 +15,7 @@ import fr.inrae.agroclim.season.core.model.DbConnection;
 /**
  * Test common methods in {@link JdbcUtils}.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class JdbcUtilsTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/LocaleDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/LocaleDaoHibernateTest.java
index bea1fdee..5ea20b78 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/LocaleDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/LocaleDaoHibernateTest.java
@@ -20,10 +20,7 @@ import lombok.Getter;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class LocaleDaoHibernateTest extends DaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDaoHibernateTest.java
index acd1d3ec..035058ec 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/PhenologicalModelDaoHibernateTest.java
@@ -18,10 +18,7 @@ import lombok.Getter;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class PhenologicalModelDaoHibernateTest extends DaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationDaoHibernateTest.java
index 1d7da961..04e40932 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationDaoHibernateTest.java
@@ -20,10 +20,7 @@ import lombok.Getter;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class SimulationDaoHibernateTest extends DaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDaoHibernateTest.java
index 008fcb86..87c42d47 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationErrorDaoHibernateTest.java
@@ -19,10 +19,7 @@ import fr.inrae.agroclim.season.core.model.Simulation;
 /**
  * Test insertion of errors in database.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class SimulationErrorDaoHibernateTest extends DaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationResultDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationResultDaoHibernateTest.java
index 9e3cd25d..86fda1d7 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationResultDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationResultDaoHibernateTest.java
@@ -27,10 +27,7 @@ import fr.inrae.agroclim.season.core.service.SimulationService;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class SimulationResultDaoHibernateTest extends DaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDaoHibernateTest.java
index f0b30776..0216b24a 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/SimulationSoilDaoHibernateTest.java
@@ -27,10 +27,7 @@ import lombok.Getter;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 final class SimulationSoilDaoHibernateTest extends DaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDaoHibernateTest.java
index ee3d4ec2..b674752d 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/VarietyParameterDaoHibernateTest.java
@@ -16,10 +16,7 @@ import java.util.List;
 /**
  * Test query on variety parameters..
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 class VarietyParameterDaoHibernateTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/dao/VersionDaoHibernateTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/dao/VersionDaoHibernateTest.java
index f9fe2aa2..7138ec97 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/dao/VersionDaoHibernateTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/dao/VersionDaoHibernateTest.java
@@ -19,10 +19,7 @@ import fr.inrae.agroclim.season.core.model.Version;
  * Example to test JPA at
  * https://memorynotfound.com/unit-test-jpa-junit-in-memory-h2-database/.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 final class VersionDaoHibernateTest extends DaoHibernateTest {
@@ -45,7 +42,7 @@ final class VersionDaoHibernateTest extends DaoHibernateTest {
     void findOrCreate() {
         assertTrue(dao.tableExists("PUBLIC", "version"));
         final String version = "0.1.14";
-        final int revision = 42;
+        final String revision = "42";
         final LocalDateTime buildDate = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
         // Nothing in database
         Integer expected = 0;
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/model/SimulationResultTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/model/SimulationResultTest.java
index aeaa65fe..0ba8f8c4 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/model/SimulationResultTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/model/SimulationResultTest.java
@@ -12,11 +12,7 @@ import fr.inrae.agroclim.indicators.model.indicator.IndicatorCategory;
 /**
  * Test SimulationResult.
  *
- * Last changed : $Date$
- *
  * @author Olivier Maury
- * @author $Author$
- * @version $Revision$
  */
 public class SimulationResultTest {
 
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/AggregationValidatorTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/AggregationValidatorTest.java
index debed27e..3f6df49a 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/AggregationValidatorTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/AggregationValidatorTest.java
@@ -35,10 +35,7 @@ import fr.inrae.agroclim.season.core.model.PhenologicalModel;
 /**
  * Test the config validator.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 public class AggregationValidatorTest {
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/FileValidatorTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/FileValidatorTest.java
index 6a59d048..8c291882 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/FileValidatorTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/FileValidatorTest.java
@@ -21,10 +21,7 @@ import fr.inrae.agroclim.season.core.model.PhenologicalModel;
 /**
  * Test the config validator.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 class FileValidatorTest {
 
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/RequiredKeysValidatorTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/RequiredKeysValidatorTest.java
index 59069a55..17ee45c7 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/RequiredKeysValidatorTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/RequiredKeysValidatorTest.java
@@ -18,10 +18,7 @@ import fr.inrae.agroclim.season.core.model.PhenologicalModel;
 /**
  * Test the config validator.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 public class RequiredKeysValidatorTest {
 
diff --git a/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/SimulationPropertiesTest.java b/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/SimulationPropertiesTest.java
index fd15999e..2351a00e 100644
--- a/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/SimulationPropertiesTest.java
+++ b/core/src/test/java/fr/inrae/agroclim/season/core/simulationproperties/SimulationPropertiesTest.java
@@ -39,10 +39,7 @@ import fr.inrae.agroclim.season.core.model.PhenologicalModel;
 /**
  * Test the config file reader.
  *
- * Last changed : $Date$
- *
- * @author $Author$
- * @version $Revision$
+ * @author Olivier Maury
  */
 @ExtendWith({JdbcTestInitialization.class})
 final class SimulationPropertiesTest {
diff --git a/pom.xml b/pom.xml
index fb11e227..98b0795e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,11 +40,11 @@
         <name>INRAE AgroClim</name>
         <url>https://agroclim.inrae.fr/</url>
     </organization>
-    <url>https://agroclim.inrae.fr/</url>
+    <url>https://agroclim.pages.mia.inra.fr/indicators/season/</url>
     <scm>
-        <url>https://w3.avignon.inrae.fr/svn/cdt/trunk/</url>
-        <connection>scm:svn:https://w3.avignon.inrae.fr/svn/cdt/trunk/</connection>
-        <tag>trunk</tag>
+        <url>https://forgemia.inra.fr/agroclim/Indicators/season.git</url>
+	<connection>scm:git:https://forgemia.inra.fr/agroclim/Indicators/season.git</connection>
+        <tag>main</tag>
     </scm>
     <issueManagement>
         <system>Redmine</system>
@@ -191,7 +191,6 @@ Des bases de données PostgreSQL sont utilisées pour récupérer les données c
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>${compiler-plugin.version}</version>
                 <configuration>
                     <annotationProcessorPaths>
                         <!-- This plugin allows a Maven project to take advantage of Project Lombok -->
@@ -211,7 +210,7 @@ Des bases de données PostgreSQL sont utilisées pour récupérer les données c
                 <version>3.2.1</version>
                 <executions>
                     <execution>
-                        <phase>generate-resources</phase>
+                        <phase>validate</phase>
                         <goals>
                             <goal>create</goal>
                         </goals>
@@ -224,9 +223,7 @@ Des bases de données PostgreSQL sont utilisées pour récupérer les données c
                     <items>
                         <item>scmVersion</item>
                     </items>
-                    <providerImplementations>
-                        <svn>javasvn</svn>
-                    </providerImplementations>
+                    <shortRevisionLength>8</shortRevisionLength>
                 </configuration>
             </plugin>
             <!-- Add attributes to META-INF/MANIFEST.MF -->
@@ -368,7 +365,7 @@ Des bases de données PostgreSQL sont utilisées pour récupérer les données c
             <plugin>
                 <groupId>com.github.davidmoten</groupId>
                 <artifactId>plantuml-maven-plugin</artifactId>
-                <version>0.2.11</version>
+                <version>0.2.12</version>
                 <executions>
                     <!-- launch com.github.davidmoten:plantuml-maven-plugin:generate when running `mvn site` -->
                     <execution>
@@ -455,9 +452,6 @@ Des bases de données PostgreSQL sont utilisées pour récupérer les données c
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-site-plugin</artifactId>
                     <version>3.21.0</version>
-                    <configuration>
-                        <locales>fr</locales>
-                    </configuration>
                 </plugin>
                 <plugin>
                     <groupId>com.github.spotbugs</groupId>
@@ -486,7 +480,7 @@ Des bases de données PostgreSQL sont utilisées pour récupérer les données c
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>jdepend-maven-plugin</artifactId>
-                <version>2.0</version>
+                <version>2.1</version>
             </plugin>
 
             <!-- Generates a report regarding the code style used by the developers. -->
diff --git a/publiccode.yml b/publiccode.yml
index 66c6060f..80bed435 100644
--- a/publiccode.yml
+++ b/publiccode.yml
@@ -54,6 +54,6 @@ name: SEASON
 releaseDate: 2024-12-04
 softwareType: standalone/desktop
 softwareVersion: 1.4.2
-url: https://w3.avignon.inrae.fr/svn/cdt/trunk/
+url: https://forgemia.inra.fr/agroclim/Indicators/season/
 usedBy:
 - INRAE AgroClim
diff --git a/sql/migration.sql b/sql/migration.sql
index fca0e187..bb8dc99e 100644
--- a/sql/migration.sql
+++ b/sql/migration.sql
@@ -305,6 +305,16 @@ END
 $BODY$
 language plpgsql;
 
+--
+-- Migration to git
+--
+CREATE OR REPLACE FUNCTION upgrade20241219() RETURNS boolean AS $BODY$
+BEGIN
+	ALTER TABLE "version" ALTER COLUMN revision TYPE VARCHAR USING revision::VARCHAR;
+	RETURN true;
+END
+$BODY$;
+
 --
 -- Keep this call at the end to apply migration functions.
 --
diff --git a/src/site/markdown/astuces-dev.md b/src/site/markdown/astuces-dev.md
index e1564737..763d4be8 100644
--- a/src/site/markdown/astuces-dev.md
+++ b/src/site/markdown/astuces-dev.md
@@ -16,7 +16,3 @@ done | grep ^0
 `mvn versions:set -DnewVersion=1.0.1-SNAPSHOT`
 
 et confirmer les changements effectués aux fichiers `pom.xml` avec `mvn versions:commit`.
-
-----
-
-`$Id$`
diff --git a/src/site/markdown/composants.md b/src/site/markdown/composants.md
index a6d83131..69622e2a 100644
--- a/src/site/markdown/composants.md
+++ b/src/site/markdown/composants.md
@@ -3,19 +3,15 @@
 Les composants de la chaîne sont :
 
 - un ensemble de [données](donnees.html),
-    - les données climatiques DRIAS,
-    - données géographiques avec les données de sol,
-    - [les traitements et leurs résultats](postgresql.html),
+  - les données climatiques DRIAS,
+  - données géographiques avec les données de sol,
+  - [les traitements et leurs résultats](postgresql.html),
 - un ensemble de logiciels :
-    - [QGis](https://qgis.org/), logiciel de bureau de système d'information géographique (SIG) pour la sélection des mailles, disponible sur la plateforme GeOpen4s,
-    - un client (module `cli`) lit les paramètres de la simulation et envoie un traitement par maille en file d'attente,
-    - [ActiveMQ](http://activemq.apache.org/) Artemis, ce gestionnaire de file de messages reçoit et répartit les traitements,
-    - un client *unité de calcul* (module `cli`) travaille par maille : il récupère les données climatiques et paramètres pour chaque maille, les traitements sont répartis sur plusieurs processus légers,
-    - [QGis](https://qgis.org/) pour la visualisation des résultats,
-    - un script R `bin/results_csv.r` pour récupérer les résultats d'un traitement.
+  - [QGis](https://qgis.org/), logiciel de bureau de système d'information géographique (SIG) pour la sélection des mailles, disponible sur la plateforme GeOpen4s,
+  - un client (module `cli`) lit les paramètres de la simulation et envoie un traitement par maille en file d'attente,
+  - [ActiveMQ](http://activemq.apache.org/) Artemis, ce gestionnaire de file de messages reçoit et répartit les traitements,
+  - un client _unité de calcul_ (module `cli`) travaille par maille : il récupère les données climatiques et paramètres pour chaque maille, les traitements sont répartis sur plusieurs processus légers,
+  - [QGis](https://qgis.org/) pour la visualisation des résultats,
+  - un script R `bin/results_csv.r` pour récupérer les résultats d'un traitement.
 
 ![Diagramme](images/cmp-cdt.png)
-
-----
-
-`$Id$`
diff --git a/src/site/markdown/donnees.md b/src/site/markdown/donnees.md
index de34aae2..fef1d036 100644
--- a/src/site/markdown/donnees.md
+++ b/src/site/markdown/donnees.md
@@ -4,23 +4,23 @@
 
 La chaîne de traitement manipule les variables climatiques quotidiennes suivantes :
 
-| variable    | description  |   unité |
-|:------------|:------------:|:-------:|
-| `TMIN`      | Température minimale de l'air | °C |
-| `TMAX`      | Température maximale de l'air | °C |
-| `RADIATION` | Rayonnement global | W/m² |
-| `RAIN`      | Précipitations | mm/j |
-| `WIND`      | Vitesse du vent | m/s |
-| `CO2`       | Concentration en COâ‚‚ | ppm |
-| `ETP`       | Évapotranspiration potentielle | mm/j |
-| `RH`        | Humidité relative | % |
+| variable    |          description           | unité |
+| :---------- | :----------------------------: | :---: |
+| `TMIN`      | Température minimale de l'air  |  °C   |
+| `TMAX`      | Température maximale de l'air  |  °C   |
+| `RADIATION` |       Rayonnement global       | W/m²  |
+| `RAIN`      |         Précipitations         | mm/j  |
+| `WIND`      |        Vitesse du vent         |  m/s  |
+| `CO2`       |      Concentration en COâ‚‚      |  ppm  |
+| `ETP`       | Évapotranspiration potentielle | mm/j  |
+| `RH`        |       Humidité relative        |   %   |
 
 ainsi que les variables quotidiennes relatives au sol :
 
-| variable           | description  |   unité |
-|:-------------------|:------------:|:-------:|
-| `WATER_RESERVE`    | Réserve en eau du sol | mm |
-| `SOILWATERCONTENT` | Teneur en eau du sol | % massique |
+| variable           |      description      |   unité    |
+| :----------------- | :-------------------: | :--------: |
+| `WATER_RESERVE`    | Réserve en eau du sol |     mm     |
+| `SOILWATERCONTENT` | Teneur en eau du sol  | % massique |
 
 Ces variables peuvent être directement lues dans une base de données climatiques ou converties ou recalculées (telle `ETP`).
 Les variables relatives au sol sont calculées.
@@ -29,12 +29,13 @@ Les variables relatives au sol sont calculées.
 
 ### SAFRAN
 
-Citation de [Météo-France](https://donneespubliques.meteofrance.fr/?fond=produit&amp;id_produit=230&amp;id_rubrique=40) :
-> Le système SAFRAN (Système d’analyse fournissant des renseignements atmosphériques à la neige) originalement développé pour la prévision d’avalanche sur le massif alpin a été étendu et évalué sur la France métropolitaine. SAFRAN utilise à la fois les observations sol et altitude des réseaux français et une ébauche provenant d'un modèle de prévision numérique du temps.  
+Citation de [Météo-France](https://donneespubliques.meteofrance.fr/?fond=produit&id_produit=230&id_rubrique=40) :
+
+> Le système SAFRAN (Système d’analyse fournissant des renseignements atmosphériques à la neige) originalement développé pour la prévision d’avalanche sur le massif alpin a été étendu et évalué sur la France métropolitaine. SAFRAN utilise à la fois les observations sol et altitude des réseaux français et une ébauche provenant d'un modèle de prévision numérique du temps.
 >
-> L’analyse SAFRAN est basée sur une méthode d’interpolation optimale à l’échelle de massifs, définis à partir d'un découpage de la France en zones climatologiquement homogènes. Les données sont dans un premier temps analysées par massif et par tranche d’altitude (par pas de 300m) via une interpolation optimale (au pas de temps 06h pour température, vent, humidité et au pas de temps 24h pour les precipitations). 
+> L’analyse SAFRAN est basée sur une méthode d’interpolation optimale à l’échelle de massifs, définis à partir d'un découpage de la France en zones climatologiquement homogènes. Les données sont dans un premier temps analysées par massif et par tranche d’altitude (par pas de 300m) via une interpolation optimale (au pas de temps 06h pour température, vent, humidité et au pas de temps 24h pour les precipitations).
 >
-> Les analyses ainsi obtenues sont ensuite interpolées pour obtenir une analyse horaire (température, vent, humidité, précipitations, nébulosité) et des données de rayonnement (infrarouge et visible) sont obtenues via l'utilisation d'un schéma de transfert radiatif. 
+> Les analyses ainsi obtenues sont ensuite interpolées pour obtenir une analyse horaire (température, vent, humidité, précipitations, nébulosité) et des données de rayonnement (infrarouge et visible) sont obtenues via l'utilisation d'un schéma de transfert radiatif.
 >
 > Une interpolation spatiale est enfin réalisée pour projeter ces données sur une grille régulière de 8km
 
@@ -45,33 +46,33 @@ Les données plus récentes sont mises à disposition environ tous les deux mois
 
 Les variables climatiques disponibles sont :
 
-| variable        | description  |   unité | correspondance dans la chaîne de traitement |
-|:----------------|:------------:|:-------:|--------------------------------------------:|
-| `prenei_q`      | Précipitations solides (cumul quotidien 06-06 UTC) | mm | `prenei_q + preli_q = RAIN` |
-| `preliq_q`      | Précipitations liquides (cumul quotidien 06-06 UTC) | mm | `preliq_q + prenei_q = RAIN` |
-| `pe_q`          | Pluies efficaces (cumul quotidien) | mm | |
-| `t_q`           | Température (moyenne quotidienne) | °C | `TMEAN` |
-| `tinf_h_q`      | Température minimale des 24 températures horaires | °C | `TMIN` |
-| `tsup_h_q`      | Température maximale des 24 températures horaires | °C | `TMAX` |
-| `ff_q`          | Vent (moyenne quotidienne) | m/s | `WIND` |
-| `dli_q`         | Rayonnement atmosphérique (cumul quotidien) | J/cm² | |
-| `ssi_q`         | Rayonnement visible (cumul quotidien) | J/cm² | `ssi_q*60*60*24/10000 = RADIATION` |
-| `evap_q`        | Evapotranspiration réelle (cumul quotidien 06-06 UTC) | mm | |
-| `etp_q`         | Evapotranspiration potentielle (formule de Penman-Monteith) | mm | `ETP` |
-| `q_q`           | Humidité spécifique (moyenne quotidienne) | kg/kg | |
-| `hu_q`          | Humidité relative (moyenne quotidienne) | % | `RH` |
-| `swi_q`         | Indice d’humidité des sols (moyenne quotidienne 06-06 UTC) | % | |
-| `drainc_q`      | Drainage (cumul quotidien 06-06 UTC) | mm | |
-| `runc_q`        | Ruissellement (cumul quotidien 06-06 UTC) | mm | |
-| `wg_racine_q`   | Contenu en eau liquide dans la couche racinaire à 06 UTC | m³/m³ | |
-| `wgi_racine_q`  | Contenu en eau gelée dans la couche de racinaire à 06 UTC | m³/m³ | |
-| `hteurneige_q`  | Epaisseur du manteau neigeux (moyenne quotidienne 06-06 UTC) | m | |
-| `hteurneige6_q` | Epaisseur du manteau à 06 UTC | m | |
-| `hteurneigex_q` | Epaisseur du manteau neigeux maximum au cours de la journée | m | |
-| `snow_frac_q`   | Fraction de maille recouverte par la neige (moyenne quotidienne 06-06 UTC) | % | |
-| `ecoulement_q`  | Ecoulement à la base du manteau neigeux | mm | |
-| `resr_neige_q`  | Equivalent en eau du manteau neigeux (moyenne quotidienne 06-06 UTC) | mm | |
-| `resr_neige6_q` | Equivalent en eau du manteau neigeux à 06 UTC | mm | |
+| variable        |                                description                                 | unité | correspondance dans la chaîne de traitement |
+| :-------------- | :------------------------------------------------------------------------: | :---: | ------------------------------------------: |
+| `prenei_q`      |             Précipitations solides (cumul quotidien 06-06 UTC)             |  mm   |                 `prenei_q + preli_q = RAIN` |
+| `preliq_q`      |            Précipitations liquides (cumul quotidien 06-06 UTC)             |  mm   |                `preliq_q + prenei_q = RAIN` |
+| `pe_q`          |                     Pluies efficaces (cumul quotidien)                     |  mm   |                                             |
+| `t_q`           |                     Température (moyenne quotidienne)                      |  °C   |                                     `TMEAN` |
+| `tinf_h_q`      |             Température minimale des 24 températures horaires              |  °C   |                                      `TMIN` |
+| `tsup_h_q`      |             Température maximale des 24 températures horaires              |  °C   |                                      `TMAX` |
+| `ff_q`          |                         Vent (moyenne quotidienne)                         |  m/s  |                                      `WIND` |
+| `dli_q`         |                Rayonnement atmosphérique (cumul quotidien)                 | J/cm² |                                             |
+| `ssi_q`         |                   Rayonnement visible (cumul quotidien)                    | J/cm² |          `ssi_q*60*60*24/10000 = RADIATION` |
+| `evap_q`        |           Evapotranspiration réelle (cumul quotidien 06-06 UTC)            |  mm   |                                             |
+| `etp_q`         |        Evapotranspiration potentielle (formule de Penman-Monteith)         |  mm   |                                       `ETP` |
+| `q_q`           |                 Humidité spécifique (moyenne quotidienne)                  | kg/kg |                                             |
+| `hu_q`          |                  Humidité relative (moyenne quotidienne)                   |   %   |                                        `RH` |
+| `swi_q`         |         Indice d’humidité des sols (moyenne quotidienne 06-06 UTC)         |   %   |                                             |
+| `drainc_q`      |                    Drainage (cumul quotidien 06-06 UTC)                    |  mm   |                                             |
+| `runc_q`        |                 Ruissellement (cumul quotidien 06-06 UTC)                  |  mm   |                                             |
+| `wg_racine_q`   |          Contenu en eau liquide dans la couche racinaire à 06 UTC          | m³/m³ |                                             |
+| `wgi_racine_q`  |         Contenu en eau gelée dans la couche de racinaire à 06 UTC          | m³/m³ |                                             |
+| `hteurneige_q`  |        Epaisseur du manteau neigeux (moyenne quotidienne 06-06 UTC)        |   m   |                                             |
+| `hteurneige6_q` |                       Epaisseur du manteau à 06 UTC                        |   m   |                                             |
+| `hteurneigex_q` |        Epaisseur du manteau neigeux maximum au cours de la journée         |   m   |                                             |
+| `snow_frac_q`   | Fraction de maille recouverte par la neige (moyenne quotidienne 06-06 UTC) |   %   |                                             |
+| `ecoulement_q`  |                  Ecoulement à la base du manteau neigeux                   |  mm   |                                             |
+| `resr_neige_q`  |    Equivalent en eau du manteau neigeux (moyenne quotidienne 06-06 UTC)    |  mm   |                                             |
+| `resr_neige6_q` |               Equivalent en eau du manteau neigeux à 06 UTC                |  mm   |                                             |
 
 Pour respecter la convention signée avec Météo-France, nous ne pouvons permettre l’accès à ces données qu’à des agents des unités/UMR INRA, et que dans le cadre d’un projet d’enseignement et/ou recherche pour lequel une demande a été déposée auprès de Météo-France qui a ensuite donné son accord pour l’utilisation des données.
 
@@ -91,7 +92,7 @@ Les données [DRIAS](http://www.drias-climat.fr/) sont des projections climatiqu
 
 Citation de [Météo-France](http://www.meteofrance.fr/actualites/209908-portail-drias-les-futurs-du-climat-des-projections-regionalisees-sur-la-france) :
 
-> Différents scénarios. L'évolution du climat est incertaine en raison notamment de l'évolution de la concentration des gaz à effet de serre dans l'atmosphère. Les projections climatiques tiennent ainsi compte de différents scénarios d'émission. 
+> Différents scénarios. L'évolution du climat est incertaine en raison notamment de l'évolution de la concentration des gaz à effet de serre dans l'atmosphère. Les projections climatiques tiennent ainsi compte de différents scénarios d'émission.
 >
 > Différents modèles. Les modèles numériques globaux et les calculs effectués pour affiner les projections climatiques fournissent des résultats cohérents mais présentant des écarts. Cette part d'incertitude est étudiée grâce à la comparaison de plusieurs expériences modèles. Ainsi, la robustesse d'une analyse peut être évaluée à la concordance des résultats produits par différents modèles. Actuellement, les données accessibles sur DRIAS les futurs du climat sont principalement issues des modèles français, mais aussi canadien, allemand ou encore américains, analysés par les équipes françaises.
 
@@ -108,19 +109,19 @@ Ces données sont obtenues par interrogation du site [DRIAS, les futurs du clima
 
 Les variables climatiques disponibles sont :
 
-| variable  | description  |   unité | correspondance dans la chaîne de traitement |
-|:----------|:------------:|:-------:|--------------------------------------------:|
-| `tasmin`  | Température minimale journalière à 2m | °C | `TMIN` |
-| `tasmax`  | Température maximale journalière à 2m | °C | `TMAX` |
-| `prsnls`  | Chute de neige journalière à grande échelle | mm | `rstr+prsnls = RAIN` |
-| `huss`    | Humidité spécifique à 2m | g/kg | |
-| `rstr`    | Précipitations liquides journalière à grande échelle | mm | `rstr+prsnls = RAIN` |
-| `rsds`    | Rayonnement visible incident à la surface | W/m² | `rsds*60*60*24/1000000 = RADIATION` |
-| `rlds`    | Rayonnement infra-rouge incident à la surface | W/m² | |
-| `tmean`   | Température moyenne | °C | |
-| `hr`      | Humidité relative | % | `RH` |
-| `wsgsmax` | Maximum journalier des rafales de vent à 10m | m/s | |
-| `sfcwind` | Vitesse du vent à 10m | m/s | `WIND` |
+| variable  |                     description                      | unité | correspondance dans la chaîne de traitement |
+| :-------- | :--------------------------------------------------: | :---: | ------------------------------------------: |
+| `tasmin`  |        Température minimale journalière à 2m         |  °C   |                                      `TMIN` |
+| `tasmax`  |        Température maximale journalière à 2m         |  °C   |                                      `TMAX` |
+| `prsnls`  |     Chute de neige journalière à grande échelle      |  mm   |                        `rstr+prsnls = RAIN` |
+| `huss`    |               Humidité spécifique à 2m               | g/kg  |                                             |
+| `rstr`    | Précipitations liquides journalière à grande échelle |  mm   |                        `rstr+prsnls = RAIN` |
+| `rsds`    |      Rayonnement visible incident à la surface       | W/m²  |         `rsds*60*60*24/1000000 = RADIATION` |
+| `rlds`    |    Rayonnement infra-rouge incident à la surface     | W/m²  |                                             |
+| `tmean`   |                 Température moyenne                  |  °C   |                                             |
+| `hr`      |                  Humidité relative                   |   %   |                                        `RH` |
+| `wsgsmax` |     Maximum journalier des rafales de vent à 10m     |  m/s  |                                             |
+| `sfcwind` |                Vitesse du vent à 10m                 |  m/s  |                                      `WIND` |
 
 On a calculé et rajouté en base les deux valeurs : `tmean = ((tasmin+tasmax)/2)` et `hr` calculée selon la formule :
 
@@ -139,4 +140,3 @@ La grille SAFRAN dans DRIAS est un ensemble de 143 x 134 points, numérotés de
 Seuls les 8602 points terrestres sur la France Métropolitaine sont utilisés.
 
 Pour SAFRAN et DRIAS, les mailles sont identiques, mais les numéros de mailles sont différents.
-
diff --git a/src/site/markdown/execution.md b/src/site/markdown/execution.md
index 6c8b5be7..33a7a759 100644
--- a/src/site/markdown/execution.md
+++ b/src/site/markdown/execution.md
@@ -6,7 +6,7 @@
 
 À partir de la version 1.0.0, l'application prend le nom de `season`.
 
-À partir de la version 0.1.8, le fichier de paramètres de simulation est passé par l'argument `--simulation` ;  l'argument `--config` est destiné à surcharger la configuration de l'application `cdt-cli` (paramètres JPA et SMTP).
+À partir de la version 0.1.8, le fichier de paramètres de simulation est passé par l'argument `--simulation` ; l'argument `--config` est destiné à surcharger la configuration de l'application `cdt-cli` (paramètres JPA et SMTP).
 
 La version 0.1.10 ajoute deux options sur une simulation : `--cancel` et `--info`.
 
@@ -26,7 +26,7 @@ La version 1.4.0 utilise la bibliothèque d'indicateurs 2.1.0 et par conséquent
 
 ## ActiveMQ
 
-[ActiveMQ](http://activemq.apache.org/) Artemis est le gestionnaire de file de messages - *message broker* -.
+[ActiveMQ](http://activemq.apache.org/) Artemis est le gestionnaire de file de messages - _message broker_ -.
 
 Ne pas utiliser le paquet activemq qui correspond à ActiveMQ Classic et est incomplet (pas de console web notamment).
 Télécharger l'archive ActiveMQ Artemis 2.35.0 depuis https://activemq.apache.org/components/artemis/download/ :
@@ -65,7 +65,7 @@ Les fichiers nécessaires au lancement d'une simulation :
 - fichier listant les mailles, fourni par QGis,
 - fichier décrivant les indicateurs à calculer, fichier XML `.gri` fourni par Getari.
 
-## Lancer le client en ligne de commande - *CLI* - de la chaîne de traitement
+## Lancer le client en ligne de commande - _CLI_ - de la chaîne de traitement
 
 Le même paquet `.jar` sert pour envoyer la simulation et effectuer le traitement.
 Il permet aussi d'autres opérations.
@@ -192,7 +192,3 @@ Exécuter le script `results_csv.r` :
 
 - en ligne de commande, par exemple : `bin/results_csv.r -o test.csv -p phases.csv -r results.csv -i 102`,
 - dans RStudio, avec le bouton `Source`, en renseignant le chemin des fichiers CSV et le numéro de la simulation dont les résultats sont à exporter.
-
-----
-
-`$Id$`
diff --git a/src/site/markdown/index.md.vm b/src/site/markdown/index.md.vm
index 6d63401a..344af01a 100644
--- a/src/site/markdown/index.md.vm
+++ b/src/site/markdown/index.md.vm
@@ -60,7 +60,3 @@ généralement http://localhost:8080/.
 
 Au besoin, regénérer les diagrammes UML avec la commande
 `mvn com.github.jeluard:plantuml-maven-plugin:generate`.
-
-----
-
-`$Id$`
diff --git a/src/site/markdown/install.md b/src/site/markdown/install.md
index 9e2b29da..cf38cc47 100644
--- a/src/site/markdown/install.md
+++ b/src/site/markdown/install.md
@@ -10,12 +10,11 @@ Télécharger l'archive ActiveMQ Artemis 2.29.0 depuis <https://activemq.apache.
     wget https://dlcdn.apache.org/activemq/activemq-artemis/2.25.0/apache-artemis-2.29.0-bin.tar.gz
     sudo tar zxvf apache-artemis-2.29.0-bin.tar.gz -C /opt/
 
-
 Créer une instance d'Artemis :
 
     sudo /opt/artemis/bin/artemis create --user admin --password admin --role admins --allow-anonymous false --relax-jolokia /opt/artemis-broker
 
-Ajouter l'utilisateur *artemis*
+Ajouter l'utilisateur _artemis_
 
     sudo groupadd -r artemis
     sudo useradd -r -s /bin/false -g artemis artemis
@@ -44,7 +43,7 @@ Installer sur le serveur, modifier le chemin vers l'exécutable Java 17 si néce
 
 ## Installation rapide des bases de données
 
-Le script `sql/sample/create.sh` automatise la création d'une base de données comportant la structure de SEASON ainsi que les données climatiques *DRIAS – 2020* | *CNRM-CM5 / ALADIN63* | *Reference + RCP8.5* pour une maille.
+Le script `sql/sample/create.sh` automatise la création d'une base de données comportant la structure de SEASON ainsi que les données climatiques _DRIAS – 2020_ | _CNRM-CM5 / ALADIN63_ | _Reference + RCP8.5_ pour une maille.
 
 Lancez ce script en spécifiant le nom de la base de données à mettre en place.
 
@@ -58,15 +57,15 @@ Suivre les instructions du fichier [Base de données PostgreSQL](postgresql.html
 
 Pour installer d'autres bases de données climatiques, il faut remplir différentes tables :
 
-* dans `dbconnection` : les connexions JDBC aux différentes instances PostgreSQL comportant les données climatiques ;
-* dans `maillage` : la définition de la grille ;
-* dans `maille` : les valeurs des attributs géographiques de chacune des mailles ;
-* dans `climaticbase` : la base de données climatique avec le lien vers la grille ;
-* dans `numeromaille` : la correspondance des mailles définies dans `maille` et de la base de données climatique ;
-* dans `climaticmodel` : la clef étrangère de la connexion JDBC à utiliser ainsi que le schéma de la base de données ;
-* dans `climaticscenario` : les scénarios climatiques ;
-* dans `climaticvariable` : les descriptions des colonnes des tables des scénarios climatiques ;
-* dans `fileformatclimaticvariable` et `climaticvariable_climaticdata` : les correspondances entre les colonnes des tables climatiques et les variables climatiques et colonnes des formats de fichier.
+- dans `dbconnection` : les connexions JDBC aux différentes instances PostgreSQL comportant les données climatiques ;
+- dans `maillage` : la définition de la grille ;
+- dans `maille` : les valeurs des attributs géographiques de chacune des mailles ;
+- dans `climaticbase` : la base de données climatique avec le lien vers la grille ;
+- dans `numeromaille` : la correspondance des mailles définies dans `maille` et de la base de données climatique ;
+- dans `climaticmodel` : la clef étrangère de la connexion JDBC à utiliser ainsi que le schéma de la base de données ;
+- dans `climaticscenario` : les scénarios climatiques ;
+- dans `climaticvariable` : les descriptions des colonnes des tables des scénarios climatiques ;
+- dans `fileformatclimaticvariable` et `climaticvariable_climaticdata` : les correspondances entre les colonnes des tables climatiques et les variables climatiques et colonnes des formats de fichier.
 
 ## Tester
 
@@ -79,7 +78,3 @@ java -jar cli/target/season-cli-1.1.0-jar-with-dependencies.jar --receivers=1
 ```
 
 Pour plus d’exemples, voir [Exécution](execution.html).
-
-----
-
-`$Id$`
diff --git a/src/site/markdown/postgresql.md b/src/site/markdown/postgresql.md
index 5b0991e6..9e412397 100644
--- a/src/site/markdown/postgresql.md
+++ b/src/site/markdown/postgresql.md
@@ -40,19 +40,19 @@ Différents fichiers sont présents dans le dossier `sql/` pour :
 - la création des tables, vues et fonctions de la base de données de résultats : `schema.tables.sql`, `schema.views.sql`, `schema.functions.sql`,
 - les mises à jour du schéma au fil du développement : `migration.sql`,
 - l'insertion de données dans l'ordre :
-    1. les tables de bases, modèles, scénarios et variables climatiques :
-       * `scenarios_variables-1-tmp.sql` : la structure temporaire pour l'insertion des métadonnées,
-       * `scenarios_variables-2-drias2014.sql` : les métadonnées pour DRIAS - 2014,
-       * `scenarios_variables-2-drias2020.sql` : les métadonnées pour DRIAS - 2020,
-       * `scenarios_variables-2-explore2.sql` : les métadonnées pour Explore2,
-       * `scenarios_variables-2-safran.sql` : les métadonnées pour SAFRAN,
-       * `scenarios_variables-3-insert.sql` : le processus d'insertion des métadonnées,
-    2. les tables des attributs géographiques : `geoattributes.sql`,
-    3. les tables de paramètres variétaux `varietyparam.sql`,
-    4. les tables de gestion des maillages utilisés par les bases climatiques, et leurs mailles avec détails : `maille_safran_drias.sql`,
+  1. les tables de bases, modèles, scénarios et variables climatiques :
+     - `scenarios_variables-1-tmp.sql` : la structure temporaire pour l'insertion des métadonnées,
+     - `scenarios_variables-2-drias2014.sql` : les métadonnées pour DRIAS - 2014,
+     - `scenarios_variables-2-drias2020.sql` : les métadonnées pour DRIAS - 2020,
+     - `scenarios_variables-2-explore2.sql` : les métadonnées pour Explore2,
+     - `scenarios_variables-2-safran.sql` : les métadonnées pour SAFRAN,
+     - `scenarios_variables-3-insert.sql` : le processus d'insertion des métadonnées,
+  2. les tables des attributs géographiques : `geoattributes.sql`,
+  3. les tables de paramètres variétaux `varietyparam.sql`,
+  4. les tables de gestion des maillages utilisés par les bases climatiques, et leurs mailles avec détails : `maille_safran_drias.sql`,
 - différentes actions lors du développement :
-    - suppression des tables, vues et fonctions de la base de données : `drop.sql`,
-    - autorisations : `grant.sql`.
+  - suppression des tables, vues et fonctions de la base de données : `drop.sql`,
+  - autorisations : `grant.sql`.
 
 ## Suppression et création du schéma
 
@@ -69,6 +69,7 @@ psql -d season -U season -h localhost -f maille_safran_drias.sql
 ```
 
 lorsque des migrations seront à appliquer, il faudra exécuter :
+
 ```
 psql -d season -U season -f migration.sql
 ```
@@ -79,12 +80,8 @@ ou en pré-production
 
 ou en production
 
-    PGOPTIONS='--search_path=season' psql -h siclima1.sgbd.inra.fr -p 54321 -d siclima1 -U siclima -f sql/migration.sql    
+    PGOPTIONS='--search_path=season' psql -h siclima1.sgbd.inra.fr -p 54321 -d siclima1 -U siclima -f sql/migration.sql
 
 ## Diagrammes de classe
 
 ![Diagramme](images/cls-schema.png)
-
-----
-
-`$Id$`
diff --git a/src/site/markdown/simulationproperties.md b/src/site/markdown/simulationproperties.md
index 654a5522..64688cf7 100644
--- a/src/site/markdown/simulationproperties.md
+++ b/src/site/markdown/simulationproperties.md
@@ -23,28 +23,24 @@ store_soil_data = false
 
 Voici les explications sur les clefs, avec un astérisque pour signifier les valeurs obligatoires (non vides).
 
-| clef                 | description | valeurs possibles |
-|:---------------------|:-----------:|:-----------------:|
-| `evaluation`*        | chemin du fichier issu de Getari | chemin relatif (commence par `./` ou `../`) ou absolu (commence par `/`). |
-| `climatic_model`*    | nom du modèle climatique | pour [DRIAS](/apidocs/fr/inrae/agroclim/season/core/climate/drias/DriasModel.html) : `ALADIN` et pour [SAFRAN](/apidocs/fr/inrae/agroclim/season/core/climate/safran/SafranModel.html) : `SAFRAN`. Ces noms correspondent à ceux définis dans les `enum` héritant [ClimaticModel](/apidocs/fr/inrae/agroclim/season/core/climate/ClimaticModel.html). |
-| `climatic_scenario`* | nom du scénario climatique | scénario climatique appartenant au modèle climatique ci-dessus défini, soit pour [DRIAS](/apidocs/fr/inrae/agroclim/season/core/climate/drias/DriasScenario.html) : `Reference + RCP2.6`, `Reference + RCP4.5`, `Reference + RCP8.5` et `Reference` ; soit pour [SAFRAN](/apidocs/fr/inrae/agroclim/season/core/climate/safran/SafranScenario.html) : `SAFRAN`. |
-| `start_year`*        | première année des données climatiques | entre 2006 et 2100 pour les scénarios DRIAS, de 1950 à 2005 pour la référence DRIAS, de 1958 à 2016 pour SAFRAN. Voir `scenarios_variables.sql` pour les valeurs en base. |
-| `end_year`*          | dernière année des données climatiques | entre 2006 et 2100 pour les scénarios DRIAS, de 1950 à 2005 pour la référence DRIAS, de 1958 à 2016 pour SAFRAN. Voir `scenarios_variables.sql` pour les valeurs en base. |
-| `compute_each_date`*     | si les résultats de calcul de chaque date de chaque phase sont souhaités en sortie | `true`, `false` |
-| `species`*           | espèce | `blé`, `vigne`, `maïs`. Voir `varietyparam.sql` pour les valeurs en base. |
-| `variety`*           | variété | `soissons`... , `Chardonnay`... , `meribel`... Voir `varietyparam.sql` pour les valeurs en base. |
-| `cells`*             | chemin du fichier au format JSON issu du script de QGis pour la sélection des mailles |  chemin relatif (commence par `./` ou `../`) ou absolu (commence par `/`). |
-| `phenological_model`*| nom du modèle phénologique | `curve`, `curve_grapevine`, `curve_grapevine_sw`, `linear`. Plusieurs fonctions peuvent être spécifiées : `average, median,`. Ces noms correspondent aux valeurs de l'`enum` `PhenologicalModelType` de la bibliothèque des indicateurs. |
-| `aggregations`       | la ou les noms de fonction d'agrégation de résultats | `average`, `median`, `quantile05`, `quantile25`, `quantile75`, `quantile95`, `standard_deviation`. Ces noms correspondent aux valeurs (en minuscule) de l'`enum` [`Aggregation.Function`](/apidocs/fr/inrae/agroclim/season/core/model/Aggregation.Function.html). |
-| `aggregation_period` | la ou les périodes sur lesquelles appliquer les agrégations | Les périodes doivent être comprisent dans les années climatiques. Exemples : `1980-1990` ou `1980-1990, 1990-2000` |
-| `stages`             | définition des jours de l'année pour chaque stade phénologique de l'évaluation, au lieu d'appliquer le modèle phénologique | Exemple : `s0:30, s1:60` |
-| `store_soil_data`    | activer l'enregistrement des résultats de calcul du bilan hydrique. À n'activer qu'en cas de besoin car cet enregistrement peut être très volumineux. | `true`, `false` (`true` par défault) |
+| clef                   |                                                                      description                                                                      |                                                                                                                                                                        valeurs possibles                                                                                                                                                                        |
+| :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
+| `evaluation`\*         |                                                           chemin du fichier issu de Getari                                                            |                                                                                                                                            chemin relatif (commence par `./` ou `../`) ou absolu (commence par `/`).                                                                                                                                            |
+| `climatic_model`\*     |                                                               nom du modèle climatique                                                                |      pour [DRIAS](/apidocs/fr/inrae/agroclim/season/core/climate/drias/DriasModel.html) : `ALADIN` et pour [SAFRAN](/apidocs/fr/inrae/agroclim/season/core/climate/safran/SafranModel.html) : `SAFRAN`. Ces noms correspondent à ceux définis dans les `enum` héritant [ClimaticModel](/apidocs/fr/inrae/agroclim/season/core/climate/ClimaticModel.html).      |
+| `climatic_scenario`\*  |                                                              nom du scénario climatique                                                               | scénario climatique appartenant au modèle climatique ci-dessus défini, soit pour [DRIAS](/apidocs/fr/inrae/agroclim/season/core/climate/drias/DriasScenario.html) : `Reference + RCP2.6`, `Reference + RCP4.5`, `Reference + RCP8.5` et `Reference` ; soit pour [SAFRAN](/apidocs/fr/inrae/agroclim/season/core/climate/safran/SafranScenario.html) : `SAFRAN`. |
+| `start_year`\*         |                                                        première année des données climatiques                                                         |                                                                                            entre 2006 et 2100 pour les scénarios DRIAS, de 1950 à 2005 pour la référence DRIAS, de 1958 à 2016 pour SAFRAN. Voir `scenarios_variables.sql` pour les valeurs en base.                                                                                            |
+| `end_year`\*           |                                                        dernière année des données climatiques                                                         |                                                                                            entre 2006 et 2100 pour les scénarios DRIAS, de 1950 à 2005 pour la référence DRIAS, de 1958 à 2016 pour SAFRAN. Voir `scenarios_variables.sql` pour les valeurs en base.                                                                                            |
+| `compute_each_date`\*  |                                  si les résultats de calcul de chaque date de chaque phase sont souhaités en sortie                                   |                                                                                                                                                                         `true`, `false`                                                                                                                                                                         |
+| `species`\*            |                                                                        espèce                                                                         |                                                                                                                                            `blé`, `vigne`, `maïs`. Voir `varietyparam.sql` pour les valeurs en base.                                                                                                                                            |
+| `variety`\*            |                                                                        variété                                                                        |                                                                                                                                `soissons`... , `Chardonnay`... , `meribel`... Voir `varietyparam.sql` pour les valeurs en base.                                                                                                                                 |
+| `cells`\*              |                                 chemin du fichier au format JSON issu du script de QGis pour la sélection des mailles                                 |                                                                                                                                            chemin relatif (commence par `./` ou `../`) ou absolu (commence par `/`).                                                                                                                                            |
+| `phenological_model`\* |                                                              nom du modèle phénologique                                                               |                                                            `curve`, `curve_grapevine`, `curve_grapevine_sw`, `linear`. Plusieurs fonctions peuvent être spécifiées : `average, median,`. Ces noms correspondent aux valeurs de l'`enum` `PhenologicalModelType` de la bibliothèque des indicateurs.                                                             |
+| `aggregations`         |                                                 la ou les noms de fonction d'agrégation de résultats                                                  |                                               `average`, `median`, `quantile05`, `quantile25`, `quantile75`, `quantile95`, `standard_deviation`. Ces noms correspondent aux valeurs (en minuscule) de l'`enum` [`Aggregation.Function`](/apidocs/fr/inrae/agroclim/season/core/model/Aggregation.Function.html).                                                |
+| `aggregation_period`   |                                              la ou les périodes sur lesquelles appliquer les agrégations                                              |                                                                                                                       Les périodes doivent être comprisent dans les années climatiques. Exemples : `1980-1990` ou `1980-1990, 1990-2000`                                                                                                                        |
+| `stages`               |              définition des jours de l'année pour chaque stade phénologique de l'évaluation, au lieu d'appliquer le modèle phénologique               |                                                                                                                                                                    Exemple : `s0:30, s1:60`                                                                                                                                                                     |
+| `store_soil_data`      | activer l'enregistrement des résultats de calcul du bilan hydrique. À n'activer qu'en cas de besoin car cet enregistrement peut être très volumineux. |                                                                                                                                                              `true`, `false` (`true` par défault)                                                                                                                                                               |
 
 L'espèce et la variété permettent de récupérer :
 
 - les coefficients culturaux pour le calcul du bilan hydrique,
 - les paramètres pour le modèle phénologique.
-
-----
-
-`$Id$`
\ No newline at end of file
diff --git a/src/site/markdown/update.md b/src/site/markdown/update.md
index debf8cf4..904146f5 100644
--- a/src/site/markdown/update.md
+++ b/src/site/markdown/update.md
@@ -7,23 +7,19 @@
 
 ## Mettre à jour la base et déployer SEASON
 
-1. Compiler et installer `season-core` avec `mvn install` 
+1. Compiler et installer `season-core` avec `mvn install`
 2. Enpaqueter `season-cli` avec le profil `preprod` ou `prod` : `mvn package -Ppreprod`
 3. Envoyer le jar `season-cli` dans le dossier `/opt/season` du serveur
 4. Exécuter la migration de la base de données SEASON
 
-    * préprod : `psql -h siclima-preprod -d season -U season -f sql/migration.sql`
-    * production :
-    
-       1. lancer le VPN (`globalprotect connect` ou `sudo vpnc`) pour accéder à la base
-       2. `PGOPTIONS="--search_path=season" psql -h siclima1.sgbd.inra.fr -p 54321 -d siclima1 -U siclima -f sql/migration.sql`
-       3. arrêter le VPN (`globalprotect disconnect` ou `sudo vpnc-disconnect)`
+   - préprod : `psql -h siclima-preprod -d season -U season -f sql/migration.sql`
+   - production :
+
+     1. lancer le VPN (`globalprotect connect` ou `sudo vpnc`) pour accéder à la base
+     2. `PGOPTIONS="--search_path=season" psql -h siclima1.sgbd.inra.fr -p 54321 -d siclima1 -U siclima -f sql/migration.sql`
+     3. arrêter le VPN (`globalprotect disconnect` ou `sudo vpnc-disconnect)`
 
 5. Mettre à jour les paramètres variétaux si besoin
 6. Remplacer le lien `/opt/season/season-cli.jar` :
    `cd /opt/season/; sudo ln -snf season-cli-1.0.8-jar-with-dependencies.jar season-cli.jar`
 7. Relancer le démon SEASON : `sudo systemctl restart season`
-
-----
-
-`$Id$`
diff --git a/src/site/resources/images/cls-schema.puml b/src/site/resources/images/cls-schema.puml
index f7d3f41f..628c1045 100644
--- a/src/site/resources/images/cls-schema.puml
+++ b/src/site/resources/images/cls-schema.puml
@@ -1,7 +1,4 @@
 @startuml
-' Last changed : $Date$
-' @author $Author$
-' @version $Revision$
 title Base de données de\nsimulation et résultats
 
 package Metadata <<Rectangle>> {
@@ -122,7 +119,7 @@ ClimaticBase -- "*" GeoAttribute
 ClimaticBase -- "*" ClimaticVariable
 ClimaticModel -- "*" ClimaticScenario
 FileFormat "*" -- "*" ClimaticVariable : fileformatclimaticvariable
-Variety "*" -- "*" PhenologicalModel : varietyphenologicalmodel 
+Variety "*" -- "*" PhenologicalModel : varietyphenologicalmodel
 Simulation -- "*" Account
 Simulation -- "*" Evaluation
 Simulation -- "*" Treatment
@@ -132,7 +129,7 @@ Treatment -- "*" TreatmentPhase
 Phase -- "*" TreatmentPhase
 
 legend right
-  $Id$
+  2018-08-03
 endlegend
 
 @enduml
diff --git a/src/site/resources/images/cmp-cdt.puml b/src/site/resources/images/cmp-cdt.puml
index 922d8fe3..a3496bb6 100644
--- a/src/site/resources/images/cmp-cdt.puml
+++ b/src/site/resources/images/cmp-cdt.puml
@@ -1,7 +1,4 @@
 @startuml
-' Last changed : $Date$
-' @author $Author$
-' @version $Revision$
 title Composants de SEASON
 skinparam componentStyle uml2
 
@@ -37,9 +34,8 @@ package "Fichiers" {
 
 JMS -- [ActiveMQ]
 
-
 legend right
-  $Id$
+  2023-07-05
 endlegend
 
 @enduml
diff --git a/src/site/resources/images/seq-facade.puml b/src/site/resources/images/seq-facade.puml
index 3d4d6806..41151436 100644
--- a/src/site/resources/images/seq-facade.puml
+++ b/src/site/resources/images/seq-facade.puml
@@ -1,7 +1,4 @@
 @startuml
-' Last changed : $Date$
-' @author $Author$
-' @version $Revision$
 title Séquence d'exécution de la façade
 
 actor SeasonIntegration
@@ -29,7 +26,7 @@ Receiver --> Simulation : incrémentation du nombre de mailles traitées
 Receiver --> Simulation : résultats
 
 legend right
-  $Id$
+  2019-02-05
 endlegend
 
 @enduml
diff --git a/src/site/resources/images/seq-utilisateur.puml b/src/site/resources/images/seq-utilisateur.puml
index 79122777..8de5ef4b 100644
--- a/src/site/resources/images/seq-utilisateur.puml
+++ b/src/site/resources/images/seq-utilisateur.puml
@@ -1,7 +1,4 @@
 @startuml
-' Last changed : $Date$
-' @author $Author$
-' @version $Revision$
 title Séquence d'utilisation de SEASON
 
 actor Utilisateur
@@ -24,7 +21,7 @@ Receiver <-- Simulation : données variétales
 Receiver --> Simulation : résultats
 
 legend right
-  $Id$
+  2019-02-05
 endlegend
 
 @enduml
diff --git a/src/site/site.xml b/src/site/site.xml
index 47951e2c..377a8a03 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE xml>
-<!-- Last changed : $Date$ -->
-<!-- @author $Author$ -->
-<!-- @version $Revision$ -->
-<project name="${project.name}">
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd"
+         name="${project.name}">
     <skin>
         <groupId>org.apache.maven.skins</groupId>
         <artifactId>maven-fluido-skin</artifactId>
@@ -24,6 +24,10 @@
     <version position="bottom" />
 
     <body>
+        <breadcrumbs>
+            <item name="${project.name}" href="/index.html" />
+        </breadcrumbs>
+
         <menu name="Documentation" inherit="top">
             <item name="Accueil" href="index.html" />
             <item name="Pré-requis" href="prerequis.html" />
-- 
GitLab