diff --git a/data/input/northeastamerica/fishRIOBasin_Sapidissima_Rjava.xml b/data/input/northeastamerica/fishRIOBasin_Sapidissima_Rjava.xml
index 3925a60f892405add402592cbc24674b419f83cc..39977935441a569bcd8f7fb3d1accf7782f4781f 100644
--- a/data/input/northeastamerica/fishRIOBasin_Sapidissima_Rjava.xml
+++ b/data/input/northeastamerica/fishRIOBasin_Sapidissima_Rjava.xml
@@ -333,6 +333,16 @@
 					<exportSeason>SPRING</exportSeason>
 					<fileNameOutput>biomassFluxes</fileNameOutput>
 				</species.WriteBiomassFluxes>
+
+				<species.IdentifyPopulation>
+					<synchronisationMode>ASYNCHRONOUS</synchronisationMode>
+					<consoleDisplay>false</consoleDisplay>
+					<years>
+						<long>1813</long>
+					</years>
+					<fluxesSeason>SPRING</fluxesSeason>
+					<fileNameOutput>effectiveFluxes</fileNameOutput>
+				</species.IdentifyPopulation>
 			</processesAtEnd>
 		</processes>
 		<useCemetery>false</useCemetery>
diff --git a/exploration/NEA_sensitivity_analysis/tryFromRougier.R b/exploration/NEA_sensitivity_analysis/tryFromJava.R
similarity index 78%
rename from exploration/NEA_sensitivity_analysis/tryFromRougier.R
rename to exploration/NEA_sensitivity_analysis/tryFromJava.R
index fc903b0e77e85a12f9ce960b56bd716946bd635a..25e773922814aa504825b6e6bf6a4f00cac1726f 100644
--- a/exploration/NEA_sensitivity_analysis/tryFromRougier.R
+++ b/exploration/NEA_sensitivity_analysis/tryFromJava.R
@@ -32,13 +32,11 @@ timeStepDuration =1
 
 seed = 1
 
-
 parametersNames = c("processes.processesEachStep.8.tempMinRep",
                     "processes.processesEachStep.8.ratioS95_S50",
                     "processes.processesEachStep.6.pHomingAfterEquil")
 thetas = c(10, 2, 0.7)
 
-
 arguments = c('','-simDuration',simDuration, '-simBegin',simBegin,
             '-timeStepDuration',timeStepDuration, 
             '-RNGStatusIndex', format(seed,scientific = FALSE),
@@ -46,12 +44,21 @@ arguments = c('','-simDuration',simDuration, '-simBegin',simBegin,
             '-env',"data/input/northeastamerica/RIOBNneaBasins_Rjava.xml",
             '-observers',"data/input/northeastamerica/RIO_obs_empty.xml")
 
-outputFile = paste0("Avirer",seed)
-.jinit(classpath = "", force.init = TRUE)
+outputFile = paste0("SA/",seed)
 .jinit(classpath = jarfile, force.init = TRUE)
 .jcall("miscellaneous.EasyRun","V","runSimulation",arguments, outputFile,.jarray(parametersNames),.jarray(thetas))
 .jcall("miscellaneous.EasyRun","[D","getValuesFromEnvironement","getMeanLastPercOfAut")
 .jcall("miscellaneous.EasyRun","[D","getValuesFromAquanismGroup","getRangeDistribution")
-
-
-
+# truc  = .jcall("miscellaneous.EasyRun","Ljava/util/List;",
+#                "getAListFromAquanismGroupProcess","processes.processesAtEnd.1.getRecords")
+# 
+# trucMieux = .jcast(truc, "ljava/util/ArrayList", convert.array = FALSE)
+# 
+# i <- .jnew("java/lang/Integer", as.integer(10))
+# print(i)
+# print(.jsimplify(i))
+# .jcall(trucMieux, "java/lang/Object", "get", i)
+# 
+# with(trucMieux, {get(0)})
+# ArrayList = J("java.util.ArrayList")
+# .jclassPath()
diff --git a/src/main/java/miscellaneous/EasyRun.java b/src/main/java/miscellaneous/EasyRun.java
index 1beb5fda3895a266d203b3e55d4553481863ea3d..c29a463ddd9c644f8cb7893471b3806b0fe19298 100644
--- a/src/main/java/miscellaneous/EasyRun.java
+++ b/src/main/java/miscellaneous/EasyRun.java
@@ -1,6 +1,6 @@
 /*
- * Copyright (C) 2014 dumoulin
- *
+ * Copyright (C) 2021 lambert Dumoulin
+ * *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
@@ -17,6 +17,7 @@
 package miscellaneous;
 
 import java.util.Arrays;
+import java.util.List;
 
 import fr.cemagref.simaqualife.extensions.pilot.BatchRunner;
 import fr.cemagref.simaqualife.pilot.Pilot;
@@ -25,7 +26,6 @@ public class EasyRun {
 
 	static Pilot pilot;
 
-
 	public static void runSimulation(String[] batchArgs, String outputfilename, String[] paramNames, double[] paramValues)
 			throws Exception {
 
@@ -55,13 +55,18 @@ public class EasyRun {
 	}
 
 
-	public static double[] getValuesFromEnvironement(String outputName) throws Exception {
-		return (double[]) ReflectUtils.getValueFromPath(pilot.getAquaticWorld().getEnvironment(), outputName);
+	public static double[] getValuesFromEnvironement(String targetName) throws Exception {
+		return (double[]) ReflectUtils.getValueFromPath(pilot.getAquaticWorld().getEnvironment(), targetName);
+	}
+
+
+	public static double[] getValuesFromAquanismGroup(String targetName) throws Exception {
+		return (double[]) ReflectUtils.getValueFromPath(pilot.getAquaticWorld().getAquaNismsGroupsList().get(0), targetName);
 	}
 
 
-	public static double[] getValuesFromAquanismGroup(String outputName) throws Exception {
-		return (double[]) ReflectUtils.getValueFromPath(pilot.getAquaticWorld().getAquaNismsGroupsList().get(0), outputName);
+	public static List getAListFromAquanismGroupProcess(String targetPath) throws Exception {
+		return (List) ReflectUtils.getValueFromPath(pilot.getAquaticWorld().getAquaNismsGroupsList().get(0), targetPath);
 	}
 
 
@@ -78,6 +83,10 @@ public class EasyRun {
 
 		runSimulation(batchArguments, "tsointsoin", parameterNames, parameterValues);
 
+		List truc = getAListFromAquanismGroupProcess("processes.processesAtEnd.1.getRecords");
+		System.out.println(truc.get(0).toString());
+		// System.out.println(getAListFromAquanismGroupProcess("processes.processesAtEnd.1.getRecords"));
+
 		System.out.println(Arrays.toString(getValuesFromEnvironement("getMeanLastPercOfAut")));
 
 		System.out.println(Arrays.toString(getValuesFromAquanismGroup("getRangeDistribution")));
diff --git a/src/main/java/species/IdentifyPopulation.java b/src/main/java/species/IdentifyPopulation.java
index a1ef3a7f3b8254b730d76caf618beb37d3eacc98..d6d5961157ba0dc8f7e01e5120a39b1aa6818e33 100644
--- a/src/main/java/species/IdentifyPopulation.java
+++ b/src/main/java/species/IdentifyPopulation.java
@@ -23,12 +23,13 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
 
-import environment.RIOBasinNetwork;
 import environment.RiverBasin;
 import environment.Time;
 import environment.Time.Season;
@@ -39,17 +40,76 @@ import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
  */
 public class IdentifyPopulation extends AquaNismsGroupProcess<DiadromousFish, DiadromousFishGroup> {
 
+	/**
+	 *
+	 */
+	public class Record implements Serializable {
+		long year;
+		String migrationBasin;
+		String originBasin;
+		long effective;
+
+		public Record(long year, String migrationBasin, String originBasin, long effective) {
+			super();
+			this.year = year;
+			this.migrationBasin = migrationBasin;
+			this.originBasin = originBasin;
+			this.effective = effective;
+		}
+
+
+		@Override
+		public String toString() {
+			return "[" + this.year + "; " + this.migrationBasin + "; " + this.originBasin + "; " + this.effective + "]";
+		}
+
+
+		/**
+		 * @return the year
+		 */
+		public long getYear() {
+			return this.year;
+		}
+
+
+		/**
+		 * @return the migrationBasin
+		 */
+		public String getMigrationBasin() {
+			return this.migrationBasin;
+		}
+
+
+		/**
+		 * @return the originBasin
+		 */
+		public String getOriginBasin() {
+			return this.originBasin;
+		}
+
+
+		/**
+		 * @return the effective
+		 */
+		public long getEffective() {
+			return this.effective;
+		}
+
+	}
+
 	private boolean consoleDisplay = false;
 	private List<Long> years;
 	private Season fluxesSeason = Season.SPRING;
-	private String fileNameOutput = "data/output/fluxes";
+	private String fileNameOutput = "effectiveFluxes";
+
+	private transient List<Record> records;
 
 	private transient BufferedWriter bW;
-	private String sep;
+	private transient String sep;
+
 	// @Observable(description = "fluxes")
 	// private transient long[] fluxes;
 
-
 	public static void main(String[] args) {
 		System.out.println((new XStream(new DomDriver())).toXML(new IdentifyPopulation()));
 	}
@@ -64,18 +124,13 @@ public class IdentifyPopulation extends AquaNismsGroupProcess<DiadromousFish, Di
 	public void doProcess(DiadromousFishGroup group) {
 		if (bW == null) {
 			if (fileNameOutput != null) {
-				sep = ";";
+				sep = ",";
 				try {
 					new File(group.getOutputPath() + fileNameOutput).getParentFile().mkdirs();
 					bW = new BufferedWriter(
 							new FileWriter(new File(group.getOutputPath() + fileNameOutput + group.getSimulationId() + ".csv")));
 
-					// BasinNetworkReal nbr= (BasinNetworkReal) pilot.getAquaticWorld().getEnvironment();
-					RIOBasinNetwork nbr = group.getEnvironment();
-					bW.write("year" + sep + "migrationBasin");
-					for (String basinName : nbr.getRiverBasinNames()) {
-						bW.write(sep + basinName);
-					}
+					bW.write("year" + sep + "migrationBasin" + sep + "originBasin" + sep + "effective");
 					bW.write("\n");
 				} catch (IOException e) {
 					e.printStackTrace();
@@ -87,20 +142,33 @@ public class IdentifyPopulation extends AquaNismsGroupProcess<DiadromousFish, Di
 
 			String[] basinNames = group.getEnvironment().getRiverBasinNames();
 
+			// put in hasmap
+			if (records == null)
+				records = new ArrayList<Record>();
+
+			for (RiverBasin basin : group.getEnvironment().getRiverBasins()) {
+				for (RiverBasin originBasin : group.getEnvironment().getRiverBasins()) {
+					long effective = Math.round(basin.getSpawnerOrigins().getMeans().get(originBasin.getName()));
+					records.add(new Record(time.getYear(group.getPilot()), basin.getName(), originBasin.getName(), effective));
+				}
+			}
+
+			// write in file
 			if (fileNameOutput != null) {
 				try {
-					for (RiverBasin basin : group.getEnvironment().getRiverBasins()) {
-						bW.write(time.getYear(group.getPilot()) + sep + basin.getName());
-
-						for (String basinName : basinNames) {
-							bW.write(sep + Math.round(basin.getSpawnerOrigins().getMeans().get(basinName)));
+					for (RiverBasin migrationBasin : group.getEnvironment().getRiverBasins()) {
+						for (String originBasinName : basinNames) {
+							bW.write(time.getYear(group.getPilot()) + sep + migrationBasin.getName() + sep + originBasinName);
+							bW.write(sep + Math.round(migrationBasin.getSpawnerOrigins().getMeans().get(originBasinName)));
+							bW.write("\n");
 						}
-						bW.write("\n");
 					}
+					bW.flush();
 				} catch (IOException e) {
 					e.printStackTrace();
 				}
 
+				// display in console
 				if (consoleDisplay) {
 					System.out.print("MIGRATION" + "\t");
 					for (String basinName : basinNames) {
@@ -128,4 +196,13 @@ public class IdentifyPopulation extends AquaNismsGroupProcess<DiadromousFish, Di
 			}
 		}
 	}
+
+
+	/**
+	 * @return the records
+	 */
+	public List<Record> getRecords() {
+		return this.records;
+	}
+
 }