diff -Nur libexec.orig/InfosysCluster.pm libexec/InfosysCluster.pm
--- libexec.orig/InfosysCluster.pm	2007-02-27 15:50:52.547509003 +0100
+++ libexec/InfosysCluster.pm	2007-02-27 15:58:49.293303753 +0100
@@ -9,6 +9,8 @@
 use lib "$ENV{PWD}/";
 use File::Basename;
 use lib dirname($0);
+use lib "/opt/janitor";
+use RuntimeEnvironments qw(list_of_rte);
 #use warnings;
 
 # Module to initialize Grid Manager dependent variables, to process the configuration file
@@ -444,19 +446,8 @@
     }
 
     #nordugrid-cluster-runtimeenvironment
-     if ($config{runtimedir}){
-        unless (opendir DIR, $config{runtimedir}) {
-	    $loglevel and  &infosys_shared::write_log("Can't acess $config{runtimedir}");
-	    die "Can't acess $config{runtimedir}\n";
-	}
-        @runtimeenvironment= `find $config{runtimedir} -type f ! -name ".*" ! -name "*~"` ;
-        closedir DIR;
-
-        foreach my $listentry (@runtimeenvironment) {
-    	  chomp($listentry);	
-    	  $listentry=~s/$config{runtimedir}\/*//;
-    	  print "nordugrid-cluster-runtimeenvironment: $listentry\n";
-        }
+    foreach my $listentry (&list_of_rte) {
+        print "nordugrid-cluster-runtimeenvironment: $listentry\n";
     }
 
     #Mds-validfrom/to
diff -Nur libexec.orig/scan-pbs-job libexec/scan-pbs-job
--- libexec.orig/scan-pbs-job	2007-02-27 15:50:35.898468503 +0100
+++ libexec/scan-pbs-job	2007-02-27 16:14:34.826039346 +0100
@@ -9,6 +9,8 @@
 
 if [ -z "$1" ] ; then exit 1 ; fi
 
+JANITOR=/opt/janitor/rjanitor
+
 
 # These should be set automatically
 # Paths to pbs commands and logs
@@ -281,6 +283,7 @@
         echo "$exitcode Executable finished with exit code $exitcode" > "$donefile"
 	${ARC_LOCATION}/libexec/gm-kick "$statusfile"
         echo "Job $gridid finished with exit code $exitcode"
+	${JANITOR} remove $gridid
         continue
       fi
     fi
@@ -297,6 +300,7 @@
       echo "$exitcode Job was lost with unknown exit code" > "$donefile"
       ${ARC_LOCATION}/libexec/gm-kick "$statusfile"
       echo "Job $gridid finished with unknown exit code"
+      ${JANITOR} remove $gridid
     else
       echo "$counter" > "$countfile"
     fi
diff -Nur libexec.orig/submit-pbs-job libexec/submit-pbs-job
--- libexec.orig/submit-pbs-job	2007-02-27 15:50:35.886467753 +0100
+++ libexec/submit-pbs-job	2007-02-27 16:12:35.706594846 +0100
@@ -9,6 +9,7 @@
 # The temporary job script is created for the submission and then removed 
 # at the end of this script. 
 
+JANITOR=/opt/janitor/rjanitor
 
 echo "----- starting submit_pbs_job -----" 1>&2
 joboption_lrms=PBS
@@ -99,6 +100,20 @@
 fi
 
 ##############################################################
+# Install runtime environments
+##############################################################
+joboption_num=0
+rte_list=""
+eval "var_is_set=\${joboption_runtime_$joboption_num+yes}"
+while [ ! -z "${var_is_set}" ] ; do
+  eval "var_value=\${joboption_runtime_$joboption_num}"
+  rte_list="$rte_list $var_value";
+  joboption_num=$(( joboption_num + 1 ))
+  eval "var_is_set=\${joboption_runtime_$joboption_num+yes}"
+done
+${JANITOR} new ${joboption_gridid} ${rte_list}
+
+##############################################################
 # combine arguments to command -  easier to use
 ##############################################################
 i=0
@@ -115,24 +130,20 @@
 ##############################################################
 # Zero stage of runtime environments
 ##############################################################
-joboption_num=0
-eval "var_is_set=\${joboption_runtime_$joboption_num+yes}"
-while [ ! -z "${var_is_set}" ] ; do
-  eval "var_value=\${joboption_runtime_$joboption_num}"
-  if [ -r "$RUNTIME_CONFIG_DIR/${var_value}" ] ; then
-    . "$RUNTIME_CONFIG_DIR/${var_value}" "0"
+${JANITOR} info ${joboption_gridid} | sed -n "s/^uses: *\([^ ]*\) *$/\1/p" | while read RTE
+do
+  if [ -r "$RTE" ] ; then
+    . "$RTE" "0"
     if [ $? -ne '0' ] ; then
-      echo "ERROR: runtime script ${var_value} failed" 1>&2
-      echo "Submission: runtime script ${var_value} failed.">>"$failures_file"
+      echo "ERROR: runtime script ${$RTE} failed" 1>&2
+      echo "Submission: runtime script ${$RTE} failed.">>"$failures_file"
       exit 1
     fi
   else
-    echo "ERROR: runtime script ${var_value} is missing" 1>&2
-    echo "Submission: runtime script ${var_value} is missing.">>"$failures_file"
+    echo "ERROR: runtime script ${RTE} is missing" 1>&2
+    echo "Submission: runtime script ${RTE} is missing.">>"$failures_file"
     exit 1
   fi
-  joboption_num=$(( joboption_num + 1 ))
-  eval "var_is_set=\${joboption_runtime_$joboption_num+yes}"
 done
 
 PBS_QSUB='qsub -r n -S /bin/sh -m n '
@@ -538,26 +549,15 @@
 i=0
 eval "var_is_set=\${joboption_runtime_$i+yes}"
 echo "runtimeenvironments=" >> $PBS_JOB_SCRIPT
-while [ ! -z "${var_is_set}" ] ; do
-  if [ "$i" = '0' ] ; then
-    echo "if [ ! -z \"\$RUNTIME_CONFIG_DIR\" ] ; then" >> $PBS_JOB_SCRIPT
-  fi
-  eval "  var_value=\"\${joboption_runtime_$i}\""
-  echo "  if [ -r \"\${RUNTIME_CONFIG_DIR}/${var_value}\" ] ; then" >> $PBS_JOB_SCRIPT
-  echo "    runtimeenvironments=\"\${runtimeenvironments}${var_value};\"" >> $PBS_JOB_SCRIPT
-  echo "    source \${RUNTIME_CONFIG_DIR}/${var_value} 1 " >> $PBS_JOB_SCRIPT
+${JANITOR} info ${joboption_gridid} | sed -n "s/^uses: *\([^ ]*\) *$/\1/p" | while read RTE
+do
+  echo "    source ${RTE} 1 " >> $PBS_JOB_SCRIPT
   echo "    if [ \$? -ne '0' ] ; then " >> $PBS_JOB_SCRIPT
-  echo "      echo \"Runtime ${var_value} script failed \" 1>&2 " >> $PBS_JOB_SCRIPT
-  echo "      echo \"Runtime ${var_value} script failed \" 1>\"\$RUNTIME_JOB_DIAG\" " >> $PBS_JOB_SCRIPT
+  echo "      echo \"Runtime ${RTE} script failed \" 1>&2 " >> $PBS_JOB_SCRIPT
+  echo "      echo \"Runtime ${RTE} script failed \" 1>\"\$RUNTIME_JOB_DIAG\" " >> $PBS_JOB_SCRIPT
   echo "      RESULT=1 " >> $PBS_JOB_SCRIPT
   echo "    fi " >> $PBS_JOB_SCRIPT
-  echo "  fi" >> $PBS_JOB_SCRIPT
-  i=$(( i + 1 ))
-  eval "var_is_set=\${joboption_runtime_$i+yes}"
 done
-if [ ! "$i" = '0' ] ; then
-  echo "fi" >> $PBS_JOB_SCRIPT
-fi
 echo "" >> $PBS_JOB_SCRIPT
 
 
@@ -620,22 +620,12 @@
 ##############################################################
 #  Runtime (post)configuration at computing node
 ##############################################################
-i=0
-eval "var_is_set=\${joboption_runtime_$i+yes}"
-while [ ! -z "${var_is_set}" ] ; do
-  if [ "$i" = '0' ] ; then
-    echo "if [ ! -z \"\$RUNTIME_CONFIG_DIR\" ] ; then" >> $PBS_JOB_SCRIPT
-  fi
-  eval "var_value=\"\${joboption_runtime_$i}\""
-  echo "  if [ -r \"\${RUNTIME_CONFIG_DIR}/${var_value}\" ] ; then" >> $PBS_JOB_SCRIPT
-  echo "    source \${RUNTIME_CONFIG_DIR}/${var_value} 2 " >> $PBS_JOB_SCRIPT
+${JANITOR} info ${joboption_gridid} | sed -n "s/^uses: *\([^ ]*\) *$/\1/p" | while read RTE
+do
+  echo "  if [ -r \"${RTE}\" ] ; then" >> $PBS_JOB_SCRIPT
+  echo "    source ${RTE} 2 " >> $PBS_JOB_SCRIPT
   echo "  fi" >> $PBS_JOB_SCRIPT
-  i=$(( i + 1 ))
-  eval "var_is_set=\${joboption_runtime_$i+yes}"
 done
-if [ ! "$i" = '0' ] ; then
-  echo "fi" >> $PBS_JOB_SCRIPT
-fi
 echo "" >> $PBS_JOB_SCRIPT
 
 #####################################################

