diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7948381be68152257a30b43853f4de84f02bd213
--- /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 7ff48b407f98df585fc5c85b03d27cff6b1420bc..8bb3ce6f386ea2c812a5b5ff9eaa5d3f507924d2 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 17ac45eeca226c5279e58e6c242192df4ec52973..41aed14ea0f8c5c79791e5e73a8d16a9aa995695 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 a6ec899320b0a77ce81fb77518f638069bda96ee..bde43be2e787907417bee9a59c509d4787f0fc62 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 999689c672d072c1c72ae0243f0a34b3efd1191c..ee6194bd73e02af2a3caae60f569741cb77477f1 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 17ac45eeca226c5279e58e6c242192df4ec52973..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..9665874d05f4db4647ea6a51f8b3894d79c9e453
--- /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 a6ec899320b0a77ce81fb77518f638069bda96ee..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..9adeef3aaaf0abcdbca2d03ac819a3d9fe3f4f87
--- /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 762bf178cfbd75eef1113df4b4d62ca19f44aef5..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..63587434cca65d7b02081aca08fc81f82d0446a8
--- /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 758769353c319b40ff671a8cfd9fdc8a9a310ebd..6b3e9786d053ea9028791012acce7e759062f141 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 6081d964552b40764c4b6e32aca3c69f1149c1f7..bc59c784547cf72b2726fcf11f8c0cef0b44da54 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 0ec27107afd5c2aa8c384808815221526708342f..2fd50eb26b8f2646e086f45fc0be17a33a183407 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 722b4b03d2b85e5afe18fdef746473fa1d478e37..032009b634dbcdb01749a1651181b530574c3924 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 474cc97817ea7df3118bf1a153511205052ebbe9..7dfe45a079b16a6c23af2fa461100bd198063510 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 f78fb630fb8b15d717052f365f60bb1a6a23cba8..b0976a66976ea686a6fcfbb6a6fed7463de8fa25 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 9fb115321fc5e9aba2c8706ed8b1563310f5d1e6..8cfc3ba169f4ec7f751cdf279a6f7bfb1ccbbbe6 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 572962ab6c08ff5f112fb44e15c9824c0a338506..fb716656b3e522dd96878b45424dc9488b6b8710 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 b191cdaeb53b3eeef75f6733353bf61613b0b92e..fc449a0b9cdff451196637ffa7bf0d7949fd4e14 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 e340978da438d3b18d39f2a482b2bacd3985ba2c..cab6ca48d6e6f166abd87cfd544b615882cc363f 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 5da0a3f4427acb68a53484d3edf60667ec4f0ecd..65bf99e98d692e4c9f3f2180d3093ddde9e180cf 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 cf1a4a9f69e3c017beab59a6b58ab4a8fff9a336..bf29b4ca4bd9684797b24d3e79134e25d17fdc4b 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 35af73b761a8b2b4323a787cbb8f3de4be5b73d0..43efa25e22ec17aab9e02941a098d72f6e736b84 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 9caec63b374222831e39ad10139ff01e44549ddf..c97749097cb8d54608772656c61115eb2092fea4 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 81a1fbcfa524004412f59db912f80b445728302a..198aaec3113de8fa56fbc6e46c60b04cdf963803 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 eca2e61bf2df88c3fc301a106753bf12c1f1b2e9..cf53fd79767e33ba079ea5ee5087bd8ef0080dd4 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 4104e7ec7acdf193331d3c1b1d98452fc549aa00..54d09dbc104c1c7db172e6e2f45817adb31d5bc5 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 182eebab055283ed56bc85d4c3280e98976f7e65..527aaf18bb67e4a1d5075a47328ab0b7b1843259 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 89ecc274ca1130a8100223847df2fa22a18b4cba..e0e2db5ae6643fcca0673fcc0722fcb2fde3dab8 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 a56144b75926d5cecfcd9af31f7cbf0bd3e2b46a..ff2f6cef0f6d7f8596b9eda36b11cfbafb7a648f 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 1d94ee2d43ada8b6a870445a2239c4b99acd5a09..61debc3e02ba2bdfd5057ed92884307fb1a9c5c5 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 c1f27f59fb4c2c05cecbc0ca28cd06f8d38f1f38..110287070b0ebf9eac9dca415d551a7637701428 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 77ff428e86a887061e7845f61a1ae8dc4ec04d02..6ab3158717e7780cd7107bfd9d48fe413a7244b8 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 8ec6981f3705531d004164063504d19cf331e8b2..79bace1e8c65b0b2117a4eca38c7f29efe2f0ab9 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 5bf1e99f77ebc595199126612615ca2cc925c488..ea5a2a8b2bb039bb1a4ee8bcd9bd973a50f62fcd 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 9ff3a9b5c0aca4a9bbf4f2fd12c6227fb909d35f..cb03571dcddf9952ef8e8a4edbce4a4a82845e07 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 3687d81a5f3e45e7dac977348c00580f18718fca..d97940a0ac7853bd11c880273f4f9accebdc9b91 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 8c9e663fcfde4b4654f9237e64b7ca870d284419..9595028f0d376184c0594d61b146197a5483b619 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 3dc7b0b5bb00c00ec64b5e0ae753faf12ef5751a..831491fe056ea907935e666b114afb5ff4c54ab0 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 a7a3633c4a264a6f3a5419c1ffb6feba30ff7257..2b52ef386940e3fd33f182354f54cbb12db30130 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 ed88ecf0057ba04853a859ec834398367607e021..79dee7dcb7c143aba6651680a7058e15e48ba71a 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 09b71c8c8a6437eed42930f9f9a8d02d99c7f5e4..c39b1e05beed56db10d4c9f70982ba6dccbb54a7 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 893e86f08d6588d04a3faa9f2dd1a59633e268fa..42d9a56d518990188a7a13100c25903de9bbf08a 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 0689f9a37631728411fccc07497bff9812a90089..be2c4996ef175b00bee98e7b8b15c390852a8828 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 a6bf28dced7ba26c222be4a56f19276fcc693397..8eb1d532dee93a3514a030fe5652f92e80cce492 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 541aff47fa6d3e5302493c471ce450c26e8df7c5..bfa657d6969ae259684f96739ff3fcc37f85bc5b 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 17ac45eeca226c5279e58e6c242192df4ec52973..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..9665874d05f4db4647ea6a51f8b3894d79c9e453
--- /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 a6ec899320b0a77ce81fb77518f638069bda96ee..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..9adeef3aaaf0abcdbca2d03ac819a3d9fe3f4f87
--- /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 0000000000000000000000000000000000000000..c4261e13c8fd95af3a664352d652ac4171243f85
--- /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 541aff47fa6d3e5302493c471ce450c26e8df7c5..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..63587434cca65d7b02081aca08fc81f82d0446a8
--- /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 14ee6b724db68677c686c7a3f92ceb36ad5b8585..c952faa0fb068d98845badae6c256a759ad2cbc6 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 17ac45eeca226c5279e58e6c242192df4ec52973..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..9665874d05f4db4647ea6a51f8b3894d79c9e453
--- /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 a6ec899320b0a77ce81fb77518f638069bda96ee..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..9adeef3aaaf0abcdbca2d03ac819a3d9fe3f4f87
--- /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 762bf178cfbd75eef1113df4b4d62ca19f44aef5..0000000000000000000000000000000000000000
--- 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 0000000000000000000000000000000000000000..63587434cca65d7b02081aca08fc81f82d0446a8
--- /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 7a959b4504e6143d3af29c4ee9d9932cdd1f866a..79723d4ba682b51c791e01ee0d5893546fc2790c 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 9f301310d1ccf5b9f85302c14c34ad6b0fda42aa..f858a2dc4652697b87d5b5e8d6d8216a18f5d977 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 d10454185471a6edd6cf92713a2fd711381ba2af..09afde4f0f0f16496edee95821ff7ca1ad61aef4 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 4e9b9ff7e56dc65453b7ea682c9270ecb36a2c72..056323907da992ce5b50f25d72d21d51b20e4d02 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 7f4715f304feab9504d22435a832267490d3ebbc..cca8055df97717b303da083aeb82d740a9a4b64d 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 3e0422903d217cc8adc22df9c9cd12a89a6e9d04..9e0a9115b0be5aa4d6d45885c056a0e496b66ddf 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 41edf4335661b0bb1efb8b5c5122ea0c2706347b..5afcf194d02c0beeb1526880b5f3e471e089de06 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 ae8fb3c99d2abc13df0e07c6403d9afed247679e..c923ec3eb684a476963c75029067bc0afaf8b34b 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 76e4f6ff8fc58fd1b5863fcd144d2574f210f8ed..a3e79a020d0b95aa366fb11f4d1dca675f63932c 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 00f2b3b99fffa5243673852894c8919a4330cec7..9e5093778c47d2cd88bf010b9a7710408db58dbe 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 41a40a72a1eb68d668e4e5558448275b2bd8319c..52e92724adb59a6c8e8c4d9f7fefff1b9a208c65 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 118756424926a16a3482536321326bbaa5366dfb..c0933dc21c525fd9efd4138e7f8f4a36198e16d7 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 8747a89240d45f8dede8ba4b11e5d34ee5ed00e4..b4f0ec319a77c35f571d571de92e766b0061ac16 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 c24d5a7ef55472e2df127cbe8c3526ae542e9bd5..8df6e54f12c42a05321747a908884894be281f55 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 29c99147cc0fed14fb78dac8e3e3684c1e41a1da..e3fe138fef05b2e3dd086ef9b76b54b543767c8c 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 35432841ae6d8e5178c561d5274f59d04c4a6088..ae293b4938529305aab93a65be98737dd3c944f2 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 3f773e11afbc815b1051964140dca1d3049b7724..72e0abf038ba4e070ac8f5a6f91fd656426f8731 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 1c115494cd64d2e4b5c42fdce0eee12a77d0e8c8..8ff1a1dc707bbf41cb0bf59b84a909254edc266d 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 e423f153cb4e17289e0f702c361c4c4e8bed9527..7e262002e8351aa6740a3f49cb5569c551d02080 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 02a662289010f25dc25c7992f2903d7213a7a726..8d7685bda6270ddaab7bad7f80b09ce738802b0b 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 52ef0e9e21ae0c972ff06049c583da3a231883b0..7fa5ad24baf0236cc5e2430868369930104b25b8 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 6733474f43662b73e7841f3745eee84db3c06d8e..446658389edf71944e7ba28b55f1ec7a7ab27e51 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 22b83463a9f44ed79fcfa28058fce7b050829ddf..aaa041e4162c988d3f3803778483be16570042e8 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 a1441647ba9e7881e98b3b181b3d09c66b91c09c..371b0eaeb98afbf2d174c1f60a01dc2db7e810ee 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 95a62b9606ee87b6cd8738b0fc341ef8ae51405a..99a1b9a2a70dc122ce54788cf3436d51e187a265 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 0f46fe45f4f5643971fda12eccd73c9edd8dcaa9..97bb1e7b70a97202d62e8b1441190731c5b2babc 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 7bbd09a273a8cadac6872d75fee193354942e505..e6ee9088a04781f6eccf91a622afc0cc61590143 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 0cc35f3b1f5994fac550d0e654c320bd1527d66b..d3331e36febac9c3ddadc261bd42b0c5f234b96c 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 b8a94d9bfe3c4f6cbc7480cda9fe4c22d095dccc..534a1817a86c748ea150970d1fca6706228d2261 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 36fb85a5defdac16d49e72ae8270ac9be2a0f2d5..7407d7917164146abea7585472c927bc60ea04df 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 46ec6e9294429f2b29c968804f1210babe655038..430a22aabe1380087146f15daa6f135846b69d64 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 701c517a5c27b2ce128f31a864099235e63c9a97..f4208ab36a6fd9218d0102a20ff2739814ca5cda 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 449483fb163c787389b213c30b323da7bf5314d9..ba63965ce7b0e64ad00497efb5184fde0acd9a64 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 2380fe37fe55bf59d89e78dd538d53823e83c3c3..7e192878d2dc9e0701f62e60cf0d5420136e5dc0 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 1188e9a09be51244eb2153eaf93140f1ca9fdf9b..41408ef363a79a616a6dd89af3a88883e14934ff 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 51ce142c88ba1abcab912d23f9d6d9572805a5c7..4fe9e085a5155a2f31e001814e2aa9223f42b8b9 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 97091049d856addfe4c90576c7602fa2dc0b7673..8813ca5d93dee3960e5fb8b50cd05742d90954e5 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 c17477dbf471280cf4b7a68c3b9646e67afa9c3a..8e92965550daa55230cad085f4cba9d2e4dd3244 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 d3d82fcdf9bc43a6ec1b0e9fb56dc39e44ef2072..90a0997f3f5e2d193649e486bf0db2b1e105a5f8 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 e0027197e8507a91115844de365375f12b73efae..04f3aa670c38fa8eb6c1929eb505026f6cd03d28 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 84e78a709b60b08b7073757df13f9ac86ac7d6f2..ac1801074ba4687fb7d3f0088b0a05260aa2bd47 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 33ece3f114e35b26a0922fd8003a7152c692ce9f..bd58b1770d71a211af89a8d97a00c6b55100b943 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 e5aaa263a52f5c3fca3a590d89b8a7ae08a9c796..4dbc768e4ad5f636afc9db58f6b1e67eee09a3e4 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 bac1c5f3357be13d907c5a3c3323a49c37fffc21..c0082cbb2a129460820fa18feb67f6b3b355dd35 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 01269f17d65603cda78f28316ae4c8a919b4c08b..6730760f99dfb863c282a1e33252d1d642d4c0f2 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 bcbe426c48883b9da03c359c98ad967437d01e13..4d898af28b547440e79253aed13786e6b83bb813 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 db34d24f686aad0941a54e96c572e8376a87a848..30efb2f34a49ffdc05cc200082080c46304788de 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 58ba645b5720dada38e78578fdfa632e563a655b..a9eb13570fc9afb7ae2401b0a8ab519fdf5843f1 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 2f7df528900fab2faf235718096cce4c7050fca8..704f4871c905696100039a80e14a9342a1a353f5 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 0cd88d595210d135e604b3b11c88c77e7b0c6874..828eb9d59e959f6655e6464489d4e91aa141bf8f 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 97d812e31be00b9e5d063a9704551598b39ba67d..11ecb20d62eeda2be96c5dc216cdc40d3c7f2c6d 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 54fc2f3d925eb1a7dd2e6223adefac753b42d0f7..634d185fa42f0f9f384408f2d1d9e571ab759cba 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 ee7321136f7084c531e11de43e028138c0656ebc..7ba50a2a2b220284c3dfc70c512b9c0230d8c705 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 1b912e1a77062768819dfd53c482d3d8079a3253..024fd09faf013c9c40f6b353369040d39d658206 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 8eb155d4f0724bf5d4fdf4fb7f428b9827f6ac3e..3b95d847bbc06007b723893be52fff484bbc5ddd 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 34ce02c0999f142614b917ded3c5e3aee77c0a58..e9537f6f25c7de0b065e8a288cdfbaf7dc69fe2b 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 c0d338e0796d302d29105e820bc1d9c958654291..b11e642aa994b2ca065065732b7d6ec1d8f39b97 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 976f833873acbd5f8bb70f6ef612027bfd48ddd9..54150bc7b573e47f6ed0db4c26b8839f8884923a 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 21751b3a7ba87d8ed6d41f1a70c7551a8bc82351..fbaa17c4687870d658f712c5e48c8a34ad7fa3cd 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 622f135992e523aabab4cad485b502c06276960a..d77fc488e33db15a68befc5e977f5fefd05809f0 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 4d774041dc7c4571106e3451ae90db341394f0ad..e6f20b89f3598529bc37669df4d688174b2e1fe8 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 8608be10d9bb8f6d78b55c38eb4aa481c728b936..af038fbac17964e4dc122a05cca490565795e452 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 c93650141ea49e48c5a07bd74ede0d6e148affba..d05957b5e0193f652e99e3b1938499df132063ed 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 7687e4c48da7060173b2228e2466c91f60942a97..9bb5ce0203d67238d249db025fabb81a8358fa52 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 5b28ebda255023d5eedf2a8cad86cfcf2c915db7..cdc8dd82a2e6e601c46402fb26f5b03038da5ca7 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 1ebd1b1ef9e016c218681c85f4c771901afc9a2e..d65a5ff55d4ad09263b01e1cec8d3cd65c61bfe5 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 f4002406873a101b74d994535cfa1f3a5ff7cdf5..dac7b621256a419ba35ada8f604fb796b83112b4 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 d623c77c46cc68a72b22c941461f417f64952c72..40c9880a6b21526b9712e163946c41effc7673c0 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 1a08a3e0595e48b2499211ab9efaf985940212b5..1fefe5ef5b5c9182db08ff7ec3ad0d726c5931f2 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 479d337c2bef4bae1a3b3a345cf522d16b532a38..5490c94702f1731bc56d0fbff4e3966527b9386b 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 9b7a57e17d9e43b59990a52006a71cffa24b8e92..f6506c4b28d384b36303885ef15cba4d29dfc002 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 28885602107ed12e10e2af17402d16ec3f5a787e..445d613a36e94926b9c9123cf4a5003bd37c3d5e 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 aefe62fdcbd3005debd4d679bbb2152a360b7c1f..c53636c4027d4059c550cb78449bc5fe49714d5e 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 46edf66d3958825f3ef7946d7a5ecb9b9c1559e1..4e34011ec0e4eaf0be0bb69ca61466564d5c00c9 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 a7fc88a6c95a2490a0158d14e58bf8fe4755ee5b..1baced9ce5ccbc8eae95ad9e550a30246917d0c1 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 27b5267ad38027a343dd2230ce8cae9c39e2c3b2..13ca0c059add7d485615ba581e0fb5165d0c6686 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 6ef6766e0888bed68eb785e40cbe9d743fef7aa1..031a4f95d3b21566075d085cd9982bb80d4a1b6d 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 8a8dfa8613c579a4a2c7aa38c530f071bbc85206..031336c90f60d47fcc456ae093837f71ed235a1f 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 d9b39bcc2b836ba760d9cbc3aa12ee38974b8197..442ac4f7833b15f8bd9ba8ebfb69651c428ae878 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 0b5389c503f4c127a4322fb741ea9c9130d93288..51ff3a723604247a695d5efdde99eba37620b0de 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 d030490f9cf896da65c2c7517c52b180744de36f..b36649120b30aa74945c114dc51d1b8a1fe5586b 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 14d35a095b3f1652756f31b968bd7ca03234ed28..cf1e92b76c50c82c1467156f118ba877cf568790 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 d28ec0c0c01a97a0af35cc823504a2957c12ec30..788349f5667245a4d4d452e7eb4ad57091bd1b1e 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 6992cb18b95109d55c5d9e1b8edefeb804063fba..3e5dc0a7bd0a9ddf59d37368724c8953a9a33bf2 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 673218a93910bef53a2c12c4d8bd2f6c1da6af98..2b78489db147eb019503fbce4368370c74f0c1ac 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 c1c9f93170ef225ceb72c83c237cdcb565b20e5a..c689cabb119be462500c66eb5770136d42757ca2 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 cf329f64d0ecb03bfa5b10ddb0bd6cabfcd6de12..4616cab862b549f5e67d3dada17c374653aca674 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 d61c3e7efbb44e3fff5d9763c82cc1b7427ae932..5c1f73086e04c75180a244f455e9d3b058f35b6f 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 e2974bda08ab9f95f2ba363062029acf268a70ab..b581d3fcc10d2a5b314c9b6de7ec8302a4ae275b 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 f9520b2ff33812e20801b88758b9599e1fc249ff..e4f98e01ed0c587a573ab8b972c60e7e3100c833 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 b87c2e50ce2a075b393cb21431e241179de0d2bc..a18ce2eff01ef24631a45723cb10ba030385b08f 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 49d7c3b18f7e8881b0624f0e6dc2dab32602ff7c..4176e70b2ed1685b6758aeb5af67154933ed6acc 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 f09a90226f5f0a951f1233249ff26ffbe6a40b88..125bde2235e861daf1be73110a0a2e3ef36e82cc 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 9c4233e8728f2c446317d4cd1eac451bc34c9822..70f299455e56569e89ba52416b8397e5e2efb0cb 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 c84b300de08c18f2667b63fdd794bef0d27cae8d..bd10e14a0887fc57b39e7c864c52845b7b27d7a2 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 aa8f47b9026634f7c726a34cc612d114d613bdc9..0b405f10701e2e3e1ccb7a18c345f344aa234479 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 c3eb6e4e0366bac4fc4228ea92a548c165152886..331abc5e2d6a75aeb9a744be113549439f983085 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 572b5ead99ba87bf2f2134a3dc7349adb11266db..53fbd389f983c8ac3a1a9e518162c82316f37161 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 4ce9aca355f26750a33dfd2ac79489f7bc1e01ce..f58fe8ccc408a2af6cde2aa787d96d124b9f1692 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 2ac15cc44131d15885497872312b6e34432ecddb..9f99e3dbacbc747ba6ac6e4857a833903a1d3287 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 6bbf71ab4bc36fcfbe50350c8c5e3a419311d723..9745e77ef5db2b1918adcfec73f14e23b4dab482 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 75629ac7bf9ab363bdc3635cf6666338bf0f33a4..23f8fbb69e91dfd73fc67c996ed11e5d304e2e1b 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 0345f6bc31c526c28537ce6fcf73313ee33cdb9d..f0da064abfeea75a48565f7b9c471abf49f2c870 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 3bb0056426f67be19671c22a731897be6572842e..d56d96a664533ed964dc733b8bc5e84e9e6c7d66 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 d2679a7faaf7ff0cbc5421200cf39f99089a6cb1..1751f445ed1d09df1431bb43164b32bf2abd127a 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 1c5a539037ea3ddfdb262ac48bc2c50224df0667..f13f70ccddec8105d6764fdee98fec4f5a9c0b56 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 4b9ae17f95f312c08947a23e6f14908cf47ec29e..590db0be1f8b9e26dc4b6afdf55184d05a2dea44 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 5f7cbd27f9e6a33886ba15b015bd613134a01672..147e415f1c8d4394a4769e838e595c5fd1477b7b 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 6f0086979e7bf6f0a481150a07511481f34a0826..dd6c78aa17043807de5618c8315cb11cdda152bc 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 4078938b5200dc5e5dc4af0495a5ebf72bb30e15..06145d5263ed68827413ec9464084564a7a80319 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 28d882b15315a8d8541f855391a66eb0fc3161b2..7cafe1c67ca9037dd3bd3635725ab25824e3b1ab 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 faf9a361cce8dee0879f71d2918f34da3b9b65c8..23bcf61dbb97031dde9e95c982ed02327014c1eb 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 72abfbea54c5ebfea76223922763e6fe4a623a6f..a25d5959cc394d5d56533cadc3b880d5d81b75b9 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 10d80754679c854cde91f2ada5e678c5ee2e0323..3333b8d278a8dce5875385ae6b7c3db7a8944934 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 b5d1f608617faf0e71b9443046ce58901b8b661b..8255aa02cf32359f879c29bc3cd97cb5c7e48285 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 8d35c9ba91e9805c4a10c8fcc5f1181ac8fcd514..f9849bee371bf2b5174362836c1468c4e1d73b44 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 bfe780f840bc6bd802782b290ba3e6e860b5e454..ae0c23e2a9873e6d17995a9f027c372b344e30a5 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 bea1fdeed96c579715b15806a559521a0606821c..5ea20b785af90fdbb7e3849db9a2b26c898d5a31 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 acd1d3ecd7c26f3c3498b5a5a512316f6d401f88..035058ec38190c44deff24b8f197c6931ca2eb25 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 1d7da961d03aeb7ce6ce436318267315bc39190e..04e4093267f67271567db92a95ed744ef01423ec 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 008fcb860fd4c831b21122a7b2138c04664d24fb..87c42d47d0884d8b5231924db2c395e52957bea5 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 9e3cd25d24eaafdab83cb6186d32a128ce6c767f..86fda1d781a042e76bd64aab4e9de0832dbe0094 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 f0b307762b3babaff4e30c7c0ecd3db52e8ec1e2..0216b24aab5ae15e0439c8f04160f17eee69c022 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 ee3d4ec29ed9c99b0eb24cd6bfd5ef110a171a18..b674752d6cde96cc205b30bc3f1df8b90397c7fc 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 f9fe2aa25908ea4698f3d54ba90a6210465c3e70..7138ec975a615606605a3e2d0a0f53a2995bef4f 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 aeaa65fe66b9fc19f8a3bf345dcc45fefac17eb8..0ba8f8c44f928d7771b6df44ee951cf1864934ac 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 debed27ef9dfd126e16d9d34e370a7e774c8dc9f..3f6df49a60bc2425aaac263faa2c33d395f711c8 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 6a59d048b1f71cf863c003ca0721fd0e866e95e7..8c2918822bdff3df4533586acc2a8e4da179eaf4 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 59069a5548203ca7a6f6a4c351fc21185eb7f855..17ee45c70b06e9a6b0cb864e398e99deca6cd145 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 fd15999e3ff3104f187d997834c1e69f2609b8bd..2351a00e83c0db407ed26a64695bfb178638a6ad 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 fb11e227dbd874d77cfc77e21e77f89c8ecdff7b..98b0795e87e299df6679c863f8a9dbee5f311713 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 66c6060f80857596abbf0d3f4aabc206921d238e..80bed4350bda681dc533815821a7d596e1f7b544 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 fca0e187e8d264829a0fb66e8ff060d6a9878185..bb8dc99e4a8ffa843714d198ba8945f8899e01e3 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 e15647371ee03133c684d8284eaa3b76bdec5a9f..763d4be84f5b645161cae8c5308a269227fbd401 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 a6d831318e40e5a16a7dc7dab871d4c54f7bf49d..69622e2a9ad05cd47709d604bc61395a5973a040 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 de34aae2ba48a8802975bb16d424254ec981ca02..fef1d03670aed1ef3fb231fe05f931f6cb4f2b2b 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 6c8b5be7e25e6cbc7abc71d74524a5883989e08d..33a7a759cb57da9cd55b49961050fc0ad7c67c92 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 6d63401adf9a8187117b3b4a6afc17d4247ff740..344af01a5b5b896b85696f566fc074f0b0c5f63f 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 9e2b29daec396eaf9f5b018e2b2f15ca0ed6d7fe..cf38cc47ebbb0d3058c9de58667d011aee041ffe 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 5b0991e65d6e0c1ff65c36e5fa2dff9bd145cee7..9e4123970e897f8c495b6ec06e478120e4598743 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 654a552286c234f41840f2dac5b949790c0ee7d0..64688cf7ce3d326837e3a1e6e8f9b7612dcae6b9 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 debf8cf48f77f9d4ad0c8de9eb1a59f9b26c6ce5..904146f5097370dbf7319aab4672fbf9860da304 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 f7d3f41ff08eca077d9ae33bf067a64f5853f139..628c1045a0df00057a12879c0f62c1fdb77c02ea 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 922d8fe3842cc6c14286f07dc8b69807680e3dd2..a3496bb6b1fba518037d365d0c5d51ad96f7eedd 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 3d4d6806223e5f05c684187f111b6935f326cb80..411514364394c1d24a83735124b55d5f9f66ba1a 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 7912277736cc16f52eff89a96884a2587311e0c3..8de5ef4bfc55c18dbfb1806e92a43e9c3ddcf071 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 47951e2caf82ad712980ae066ce30370e69d3729..377a8a03289e3178640084471ca5cc2482a8345c 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" />